Wolfram Function Repository
Instantuse addon functions for the Wolfram Language
Function Repository Resource:
Compute the hypergraph with a specified adjacency tensor
ResourceFunction["AdjacencyHypergraph"][atens] gives the (ordered or orderless) hypergraph with adjacency tensor atens. 
"OrderedHyperedges"  Automatic  whether to treat hyperedges as being ordered (directed) 
Automatic  construct an orderless hypergraph if and only if the adjacency tensor is symmetric across all indices 
True  construct an ordered hypergraph 
False  construct an orderless hypergraph 
Construct an ordered hypergraph automatically from an asymmetric adjacency tensor:
In[1]:= 

Out[1]= 

Construct an orderless hypergraph automatically from a symmetric adjacency tensor:
In[2]:= 

Out[2]= 

Treat the hypergraph as being ordered instead:
In[3]:= 

Out[3]= 

Construct an ordered hypergraph of arity 5 automatically from an asymmetric adjacency tensor specified as a SparseArray:
In[4]:= 

Out[4]= 

AdjacencyHypergraph accepts both SparseArray and nested list specifications of adjacency tensors:
In[5]:= 

Out[5]= 

In[6]:= 

Out[6]= 

AdjacencyHypergraph supports multihypergraphs, with adjacency tensor entries representing hyperedge multiplicities:
In[7]:= 

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]:= 

Out[8]= 

In[9]:= 

Out[9]= 

In[10]:= 

Out[10]= 

When the adjacency tensor is symmetric across all indices, the hypergraph is automatically orderless:
In[11]:= 

Out[11]= 

In[12]:= 

Out[12]= 

In[13]:= 

Out[13]= 

When the adjacency tensor is asymmetric across any pair of indices, the hypergraph is automatically ordered:
In[14]:= 

Out[14]= 

In[15]:= 

Out[15]= 

In[16]:= 

Out[16]= 

Diagonal entries of the adjacency tensor specify selfloops in the hypergraph:
In[17]:= 

Out[17]= 

Adjacency tensors can be of arbitrary rank:
In[18]:= 

Out[18]= 

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

Out[19]= 

Use "OrderedHyperedges"→True to treat hyperedges as ordered (i.e. directed):
In[20]:= 

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]:= 

Out[21]= 

This work is licensed under a Creative Commons Attribution 4.0 International License