Function Repository Resource:

AdjacencyHypergraph

Source Notebook

Compute the hypergraph with a specified adjacency tensor

Contributed by: Jonathan Gorard

ResourceFunction["AdjacencyHypergraph"][atens]

gives the (ordered or orderless) hypergraph with adjacency tensor atens.

Details and Options

An adjacency tensor is a generalization of the concept of an adjacency matrix from graphs to hypergraphs, in which hyperedges may be of arbitrary arity.
The arity of the hyperedges in the hypergraph is equal to the rank of the adjacency tensor.
The number of vertices will be equal to n, where the dimensions of the adjacency tensor are n×n××n.
ResourceFunction["AdjacencyHypergraph"] accepts adjacency tensors specified both as SparseArray objects, and as ordinary nested lists.
The number of hyperedges of the form {vi,vj,,vk} is specified by the entry aij…k of the adjacency tensor.
The number of self-loops for the vertex vi is given by the diagonal entry aii…i.
ResourceFunction["AdjacencyHypergraph"] has the following option:
"OrderedHyperedges"Automaticwhether to treat hyperedges as being ordered (directed)
The following settings for "OrderedHyperedges" can be used in ResourceFunction["AdjacencyHypergraph"]:
Automaticconstruct an orderless hypergraph if and only if the adjacency tensor is symmetric across all indices
Trueconstruct an ordered hypergraph
Falseconstruct an orderless hypergraph
When the adjacency tensor is of rank 2, the output of ResourceFunction["AdjacencyHypergraph"] is identical to that of AdjacencyGraph.

Examples

Basic Examples (3) 

Construct an ordered hypergraph automatically from an asymmetric adjacency tensor:

In[1]:=
ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}]
Out[1]=

Construct an orderless hypergraph automatically from a symmetric adjacency tensor:

In[2]:=
ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0}, {0, 0, 1, 0}, {0, 1, 0, 1}, {0, 0, 1, 0}}, {{0, 0, 1, 0}, {0, 0, 0, 0}, {1, 0, 0, 1}, {0, 0, 1, 0}}, {{0, 1, 0, 1}, {1, 0, 0, 1}, {0, 0, 0, 0}, {1, 1, 0, 0}}, {{0, 0, 1, 0}, {0, 0, 1, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}}}]
Out[2]=

Treat the hypergraph as being ordered instead:

In[3]:=
ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0}, {0, 0, 1, 0}, {0, 1, 0, 1}, {0, 0, 1, 0}}, {{0, 0, 1, 0}, {0, 0, 0, 0}, {1, 0, 0, 1}, {0, 0, 1, 0}}, {{0, 1, 0, 1}, {1, 0, 0, 1}, {0, 0, 0, 0}, {1, 1, 0, 0}}, {{0, 0, 1, 0}, {0, 0, 1, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}}}, "OrderedHyperedges" -> True]
Out[3]=

Construct an ordered hypergraph of arity 5 automatically from an asymmetric adjacency tensor specified as a SparseArray:

In[4]:=
ResourceFunction["AdjacencyHypergraph"][SparseArray[ Automatic, {10, 10, 10, 10, 10}, 0, { 1, {{0, 24, 96, 168, 240, 288, 336, 408, 432, 456, 480}, CompressedData[" 1:eJwllNGh3DAIBG1AYLuLtJQSXgNp+ZWSneXn7haGPQkJ/fn59/cnruv6va+r 9B1ZJ/JUVJ6ok3Gy4lTmikItAiHMsEJOUoKDhI0UcSEWgBm3wrd+3UrdytxK 3vivKNQiEMIM40+SEhwkbIQ/hVgApqI9WdPZNdlTOdU5XbWiUYtACDOskJOU 4CBhI0VciAUg4v16vrff+fr9pr95+3tnVryoRSCEGVbISUpwkLCRIi7EAnD6 VrvuYOPBZuNWE7W5iBWFWgSC/vCpkJPuT5i0kSIudH84A0V7QjsJbS20s9Dm gv6saNQiEMIM0x+SlOAgYSP6QyEWgFremafOMzXnqXlOPWfqmXNWDGoRCGGG FXKSEhwkbKSIC7EAZBfJ5nXQwSWhP9wh9cciUYtACDOskJO+V5HbnzTiQiwA 1R+dcCQbTzaboUugzen+WzRqEQj6w6dCTro/adJGirjQ/eEO6U/nSe0ktbXU zlKbS/qzYlCLQAgzTH9IUoKDhI3oD4VYALILDUMwCDp0zZ2ugCbE/UHQn1oE wv0ph5ykBIe4/QXiQiwAEfrbYmHFYip1SPpzzZfFoBaBYP18PszRsyU4SNhI ERd6/Zyx1lc0l/eHS0j/uaO8Pwjen1kEwu/POOSk723W9r+MuBALQPVBYxea tNDohSYvNHzB/K54UYtACDPM/JKkBAcJGzG/FGIBOKG/1UkzCDp0vRu6ApoQ rx/B+nsRCK+/HXKSEhwy/AXiQiwAtX49F9EsrFlMhx4R/Xn3ihe1CATr51Mh J73+NmkjRVzo9fMG8WpzeEePKZeQ8+WO6nwtDmoRCGGGFXLS97bOnu8x4kIs ANUHzbVOBn/dWL/PusH2R+A/i0DYfxxykhIc/D4fIy7EApAuDpsfDRyHSH84 Y/XHYlCLQAgzrJCTPvee7c8YcSEWgK3+67D1biulE1fD9G7rGuCPwP9dBML+ r0NOUoJDh79AXIgFYMd/GbInTg== "]}, CompressedData[" 1:eJxTTMoPSmJkYGB4ACQYR8GwBgCZcgRp "]}]]
Out[4]=

Scope (7) 

AdjacencyHypergraph accepts both SparseArray and nested list specifications of adjacency tensors:

In[5]:=
ResourceFunction["AdjacencyHypergraph"][SparseArray[ Automatic, {4, 4, 4}, 0, { 1, {{0, 4, 8, 14, 18}, {{2, 3}, {3, 2}, {3, 4}, {4, 3}, {1, 3}, {3, 1}, {3, 4}, {4, 3}, {1, 2}, {2, 1}, {1, 4}, {4, 1}, {2, 4}, {4, 2}, {1, 3}, {3, 1}, {2, 3}, {3, 2}}}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}]]
Out[5]=
In[6]:=
ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0}, {0, 0, 1, 0}, {0, 1, 0, 1}, {0, 0, 1, 0}}, {{0, 0, 1, 0}, {0, 0, 0, 0}, {1, 0, 0, 1}, {0, 0, 1, 0}}, {{0, 1, 0, 1}, {1, 0, 0, 1}, {0, 0, 0, 0}, {1, 1, 0, 0}}, {{0, 0, 1, 0}, {0, 0, 1, 0}, {1, 1, 0, 0}, {0, 0, 0, 0}}}]
Out[6]=

AdjacencyHypergraph supports multihypergraphs, with adjacency tensor entries representing hyperedge multiplicities:

In[7]:=
ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0}, {0, 0, 3, 2}, {0, 3, 0, 1}, {0, 2, 1, 0}}, {{0, 0, 3, 2}, {0, 0, 0, 0}, {3, 0, 0, 0}, {2, 0, 0, 0}}, {{0, 3, 0, 1}, {3, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}}, {{0, 2, 1, 0}, {2, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}}}]
Out[7]=

When the rank of the adjacency tensor is equal to 2, the output of AdjacencyHypergraph is identical to the output of AdjacencyGraph:

In[8]:=
hypergraph = ResourceFunction[ "AdjacencyHypergraph"][{{0, 1, 1, 0}, {1, 0, 1, 1}, {1, 1, 0, 1}, {0, 1, 1, 0}}]
Out[8]=
In[9]:=
graph = List @@@ EdgeList[AdjacencyGraph[{{0, 1, 1, 0}, {1, 0, 1, 1}, {1, 1, 0, 1}, {0, 1, 1, 0}}]]
Out[9]=
In[10]:=
hypergraph == graph
Out[10]=

When the adjacency tensor is symmetric across all indices, the hypergraph is automatically orderless:

In[11]:=
hypergraph1 = ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 1, 0}}, {{0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 1, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1}, {0, 0, 0, 0, 1, 0}}, {{0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0}}, {{0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}}}]
Out[11]=
In[12]:=
hypergraph2 = ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 1, 0}}, {{0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 1, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1}, {0, 0, 0, 0, 1, 0}}, {{0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0}}, {{0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}}}, "OrderedHyperedges" -> False]
Out[12]=
In[13]:=
hypergraph1 == hypergraph2
Out[13]=

When the adjacency tensor is asymmetric across any pair of indices, the hypergraph is automatically ordered:

In[14]:=
hypergraph1 = ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}}]
Out[14]=
In[15]:=
hypergraph2 = ResourceFunction[ "AdjacencyHypergraph"][{{{0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}}}, "OrderedHyperedges" -> True]
Out[15]=
In[16]:=
hypergraph1 == hypergraph2
Out[16]=

Diagonal entries of the adjacency tensor specify self-loops in the hypergraph:

In[17]:=
ResourceFunction[ "AdjacencyHypergraph"][{{{1, 0, 0, 0, 0}, {0, 0, 1, 0, 1}, {0, 1, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 1, 0, 0, 0}}, {{0, 0, 1, 0, 1}, {0, 1, 0, 0, 0}, {1, 0, 0, 1, 0}, {0, 0, 1, 0, 0}, {1, 0, 0, 0, 0}}, {{0, 1, 0, 0, 0}, {1, 0, 0, 1, 0}, {0, 0, 0, 0, 0}, {0, 1, 0, 0, 1}, {0, 0, 0, 1, 0}}, {{0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 1, 0, 0, 1}, {0, 0, 0, 0, 0}, {0, 0, 1, 0, 0}}, {{0, 1, 0, 0, 0}, {1, 0, 0, 0, 0}, {0, 0, 0, 1, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 0, 0}}}]
Out[17]=

Adjacency tensors can be of arbitrary rank:

In[18]:=
ResourceFunction["AdjacencyHypergraph"][SparseArray[ Automatic, {12, 12, 12, 12, 12, 12}, 0, { 1, {{0, 240, 600, 960, 1440, 1800, 2040, 2160, 2280, 2400, 2640, 2760, 2880}, CompressedData[" 1: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 oJfC2gcbC5jMY0rGLCEcGYzmaED3QTkAu4yQfXA1+XCF0pJd9sEVQa/Cs5q5 cQQq9JfHWY2verG8h4oGn3DNPXS2lDgIx2jKPXSu3gf9wfyAZR9cCdNOgBki 2QdXmxu+sAy33BZnG5cc2snSVf1Xp/ugFBkfOdkHV0R1GgCKFdkHV6ctZkEi xuS2ODtNkWQnS/pmVqpzDBoYg/bDoIsxaFMMuhRjen2aXCGml6Hp7acAv9Ob zhw0OgY9jUG3g1tF/dt3eh+Zg17JoE0y6IFwk6h/qyncGqquGguYzGNKxlxC ODIYzdGAEA0HWztGkLdkIR+uNmBkpxZVcB/sQZ+rmRtHoA8+h8fnanzVi+V9 UDT4hGvug7OlxEE4RlPugzMa22Pvg4KpQHkVpp2wuyURfVWI90H5wjLcch+c bVxyCNm4mvvgjJJOsPdB5eiNAQqn02B3SyvMmOS8D2oWJGJM7oOz0xRJqAn9 3AdtYlHNtelynJ/cCibH/smpfy6PI4steXm4WJ4mqmjrKsF+uiYXh8kdYXJ7 YJeuf6srB3vxmtw9JteOyZ2Cnbn+raawC6/1YgGTeUzJmCOEI4PRHA0I0XDw qmQEeUsW8uHqhUZ2alEF56se9DvN3DgC/eh7h8fvNL7qxfJ8JRp8wjXnq9VS 4iAcoynnqxWN7bHnK8FUoLwK0054W5SIvirE85V8YRluOV+tNi45hGxczflq RUkn2POVcvTGAIXTafC2qBVmTHKerzQLEjEm56vVaYok1IR+zldeCvnT87fY KBd78GJDXWygi31ysSUvdtDFvrzYjBeb72I/XWzTi913sVcvdunFJr3Yixe7 9WKjXuzMi015sQsvz1cvFjCZx5SMuYVwZDCaowEhGg6er4wgb8lCPlw9X8lO LaooQa/C527mxhGI81XzeO7GV71YWBBnPF/JVUe0EClx0POVmnRJb+t3e8z8 gKlAeZyv4oTnK4noq0IwN3w9X8lNrw0H4eTQ85Wu6r86a3QnmPGRozcG4HyV NHi+0gozJjnSFrM8X2mMWVQEPCLJ85X0zaxU2Q5pvfLIZ/Ckh6uj5yubDZyv ticMGl3TnrfnK1vydblkm+a51eBJFJ1XuxC25D1fcTe2884ddNlIYBfenq+C BUzmeb5yzBLCkcFojgaEaDgAu4yQLsRq8uHqE0rZqUUVnq8yaK9mnvPVTrCX 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 "]}, CompressedData[" 1:eJxTTMoPSmJkYGBw4GZgYBwFo2AUjIJRMApGwSgYBaNgFBANAFNBDTM= "]}]]
Out[18]=

Options (3) 

By default ("OrderedHyperedges"Automatic), all hyperedges are treated as orderless (i.e. undirected) if the adjacency tensor is symmetric across all indices:

In[19]:=
ResourceFunction[ "AdjacencyHypergraph"][{{0, 1, 1, 0}, {1, 0, 1, 1}, {1, 1, 0, 1}, {0, 1, 1, 0}}]
Out[19]=

Use "OrderedHyperedges"True to treat hyperedges as ordered (i.e. directed):

In[20]:=
ResourceFunction[ "AdjacencyHypergraph"][{{0, 1, 1, 0}, {1, 0, 1, 1}, {1, 1, 0, 1}, {0, 1, 1, 0}}, "OrderedHyperedges" -> True]
Out[20]=

Conversely, all hyperedges are treated as ordered (i.e. directed) if the adjacency tensor is asymmetric across any pair of indices:

In[21]:=
ResourceFunction[ "AdjacencyHypergraph"][{{0, 1, 1, 0}, {0, 0, 1, 1}, {0, 0, 0, 1}, {0, 0, 0, 0}}]
Out[21]=

Publisher

Jonathan Gorard

Version History

  • 1.0.0 – 17 March 2021

Related Resources

License Information