Skip to content

AdjacencyGraph ​

A Graph built from an n x n 0/1 adjacency matrix.

✓ checked against that system · ! checked, with disagreements (hover a chip)Wolfram LanguageAdjacencyGraph✓
AdjacencyGraph(matrix)vertices 1..n; a SYMMETRIC matrix gives an undirected graph (one edge per i < j with a nonzero entry), anything else gives a directed graph (one edge per nonzero (i, j), including self-loops).
AdjacencyGraph(vertices, matrix)the same, with vertices labelled by the given list instead of 1..n.
Typed signatures
TypePackageApplies
(any, any?) -> valuecombinatoricsalways

Domain: Collections

Examples

Basic #
live ↗
InEdgeList(AdjacencyGraph([[0,1,1],[1,0,0],[1,0,0]]))\mathrm{EdgeList}(\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 1\bigr\rbrack, \bigl\lbrack1, 0, 0\bigr\rbrack, \bigl\lbrack1, 0, 0\bigr\rbrack\bigr\rbrack))Out[UndirectedEdge(1,2),UndirectedEdge(1,3)]\bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3)\bigr\rbrack
live ↗
InEdgeList(AdjacencyGraph([[0,1],[0,0]]))\mathrm{EdgeList}(\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1\bigr\rbrack, \bigl\lbrack0, 0\bigr\rbrack\bigr\rbrack))Out[DirectedEdge(1,2)]\bigl\lbrack\mathrm{DirectedEdge}(1, 2)\bigr\rbrack

A symmetric 0/1 matrix with zero diagonal gives a triangle

live ↗
InAdjacencyGraph([[0,1,1],[1,0,1],[1,1,0]])\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 1\bigr\rbrack, \bigl\lbrack1, 0, 1\bigr\rbrack, \bigl\lbrack1, 1, 0\bigr\rbrack\bigr\rbrack)OutGraph([1,2,3],[UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(2,3)])\mathrm{Graph}(\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(2, 3)\bigr\rbrack)
live ↗
InAdjacencyGraph([[0,1,0],[0,0,1],[1,0,0]])\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 0\bigr\rbrack, \bigl\lbrack0, 0, 1\bigr\rbrack, \bigl\lbrack1, 0, 0\bigr\rbrack\bigr\rbrack)OutGraph([1,2,3],[DirectedEdge(1,2),DirectedEdge(2,3),DirectedEdge(3,1)])\mathrm{Graph}(\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack\mathrm{DirectedEdge}(1, 2), \mathrm{DirectedEdge}(2, 3), \mathrm{DirectedEdge}(3, 1)\bigr\rbrack)
Scope #

Vertices default to 1,…,n1,\dots,n

live ↗
InVertexList(AdjacencyGraph([[1,1,1,0],[1,0,1,1],[1,1,0,1],[0,1,1,0]]))\mathrm{VertexList}(\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack1, 1, 1, 0\bigr\rbrack, \bigl\lbrack1, 0, 1, 1\bigr\rbrack, \bigl\lbrack1, 1, 0, 1\bigr\rbrack, \bigl\lbrack0, 1, 1, 0\bigr\rbrack\bigr\rbrack))Out[1,2,3,4]\bigl\lbrack1, 2, 3, 4\bigr\rbrack

Explicit vertex names replace the integers

live ↗
InVertexList(AdjacencyGraph([a,b,c,d],[[1,1,1,0],[1,0,1,1],[1,1,0,1],[0,1,1,0]]))\mathrm{VertexList}(\mathrm{AdjacencyGraph}(\bigl\lbrack a, b, c, d\bigr\rbrack, \bigl\lbrack\bigl\lbrack1, 1, 1, 0\bigr\rbrack, \bigl\lbrack1, 0, 1, 1\bigr\rbrack, \bigl\lbrack1, 1, 0, 1\bigr\rbrack, \bigl\lbrack0, 1, 1, 0\bigr\rbrack\bigr\rbrack))Out[a,b,c,d]\bigl\lbrack a, b, c, d\bigr\rbrack

Five undirected edges on four vertices: K4K_4 minus an edge

live ↗
InAdjacencyGraph([[0,1,1,0],[1,0,1,1],[1,1,0,1],[0,1,1,0]])\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 1, 0\bigr\rbrack, \bigl\lbrack1, 0, 1, 1\bigr\rbrack, \bigl\lbrack1, 1, 0, 1\bigr\rbrack, \bigl\lbrack0, 1, 1, 0\bigr\rbrack\bigr\rbrack)OutGraph([1,2,3,4],[UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(2,3),UndirectedEdge(2,4),UndirectedEdge(3,4)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(2, 3), \mathrm{UndirectedEdge}(2, 4), \mathrm{UndirectedEdge}(3, 4)\bigr\rbrack)

All off-diagonal ones give the complete graph K5K_5

live ↗
InAdjacencyGraph([[0,1,1,1,1],[1,0,1,1,1],[1,1,0,1,1],[1,1,1,0,1],[1,1,1,1,0]])\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 1, 1, 1\bigr\rbrack, \bigl\lbrack1, 0, 1, 1, 1\bigr\rbrack, \bigl\lbrack1, 1, 0, 1, 1\bigr\rbrack, \bigl\lbrack1, 1, 1, 0, 1\bigr\rbrack, \bigl\lbrack1, 1, 1, 1, 0\bigr\rbrack\bigr\rbrack)OutGraph([1,2,3,4,5],[UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(1,4),UndirectedEdge(1,5),UndirectedEdge(2,3),UndirectedEdge(2,4),UndirectedEdge(2,5),UndirectedEdge(3,4),UndirectedEdge(3,5),UndirectedEdge(4,5)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4, 5\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(1, 4), \mathrm{UndirectedEdge}(1, 5), \mathrm{UndirectedEdge}(2, 3), \mathrm{UndirectedEdge}(2, 4), \mathrm{UndirectedEdge}(2, 5), \mathrm{UndirectedEdge}(3, 4), \mathrm{UndirectedEdge}(3, 5), \mathrm{UndirectedEdge}(4, 5)\bigr\rbrack)
live ↗
InAdjacencyGraph([[0,1,0,0],[1,0,0,0],[1,1,0,0],[1,1,0,0]])\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 0, 0\bigr\rbrack, \bigl\lbrack1, 0, 0, 0\bigr\rbrack, \bigl\lbrack1, 1, 0, 0\bigr\rbrack, \bigl\lbrack1, 1, 0, 0\bigr\rbrack\bigr\rbrack)OutGraph([1,2,3,4],[DirectedEdge(1,2),DirectedEdge(2,1),DirectedEdge(3,1),DirectedEdge(3,2),DirectedEdge(4,1),DirectedEdge(4,2)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4\bigr\rbrack, \bigl\lbrack\mathrm{DirectedEdge}(1, 2), \mathrm{DirectedEdge}(2, 1), \mathrm{DirectedEdge}(3, 1), \mathrm{DirectedEdge}(3, 2), \mathrm{DirectedEdge}(4, 1), \mathrm{DirectedEdge}(4, 2)\bigr\rbrack)
live ↗
In[AdjacencyGraph([[1,1,1,0],[1,0,1,1],[1,1,0,1],[0,1,1,0]]),AdjacencyGraph([[0,1,0,0],[1,0,0,0],[1,1,1,0],[1,1,0,0]])]\bigl\lbrack\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack1, 1, 1, 0\bigr\rbrack, \bigl\lbrack1, 0, 1, 1\bigr\rbrack, \bigl\lbrack1, 1, 0, 1\bigr\rbrack, \bigl\lbrack0, 1, 1, 0\bigr\rbrack\bigr\rbrack), \mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 0, 0\bigr\rbrack, \bigl\lbrack1, 0, 0, 0\bigr\rbrack, \bigl\lbrack1, 1, 1, 0\bigr\rbrack, \bigl\lbrack1, 1, 0, 0\bigr\rbrack\bigr\rbrack)\bigr\rbrackOut[Graph([1,2,3,4],[UndirectedEdge(1,1),UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(2,3),UndirectedEdge(2,4),UndirectedEdge(3,4)]),Graph([1,2,3,4],[DirectedEdge(1,2),DirectedEdge(2,1),DirectedEdge(3,1),DirectedEdge(3,2),DirectedEdge(3,3),DirectedEdge(4,1),DirectedEdge(4,2)])]\bigl\lbrack\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 1), \mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(2, 3), \mathrm{UndirectedEdge}(2, 4), \mathrm{UndirectedEdge}(3, 4)\bigr\rbrack), \mathrm{Graph}(\bigl\lbrack1, 2, 3, 4\bigr\rbrack, \bigl\lbrack\mathrm{DirectedEdge}(1, 2), \mathrm{DirectedEdge}(2, 1), \mathrm{DirectedEdge}(3, 1), \mathrm{DirectedEdge}(3, 2), \mathrm{DirectedEdge}(3, 3), \mathrm{DirectedEdge}(4, 1), \mathrm{DirectedEdge}(4, 2)\bigr\rbrack)\bigr\rbrack
live ↗
InAdjacencyGraph([[0,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]])\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack0, 1, 1, 1, 1\bigr\rbrack, \bigl\lbrack0, 0, 0, 0, 0\bigr\rbrack, \bigl\lbrack0, 0, 0, 0, 0\bigr\rbrack, \bigl\lbrack0, 0, 0, 0, 0\bigr\rbrack, \bigl\lbrack0, 0, 0, 0, 0\bigr\rbrack\bigr\rbrack)OutGraph([1,2,3,4,5],[DirectedEdge(1,2),DirectedEdge(1,3),DirectedEdge(1,4),DirectedEdge(1,5)])\mathrm{Graph}(\bigl\lbrack1, 2, 3, 4, 5\bigr\rbrack, \bigl\lbrack\mathrm{DirectedEdge}(1, 2), \mathrm{DirectedEdge}(1, 3), \mathrm{DirectedEdge}(1, 4), \mathrm{DirectedEdge}(1, 5)\bigr\rbrack)
Properties #

Diagonal ones become self-loops

live ↗
InAdjacencyGraph([[1,1,1],[1,0,1],[1,1,1]])\mathrm{AdjacencyGraph}(\bigl\lbrack\bigl\lbrack1, 1, 1\bigr\rbrack, \bigl\lbrack1, 0, 1\bigr\rbrack, \bigl\lbrack1, 1, 1\bigr\rbrack\bigr\rbrack)OutGraph([1,2,3],[UndirectedEdge(1,1),UndirectedEdge(1,2),UndirectedEdge(1,3),UndirectedEdge(2,3),UndirectedEdge(3,3)])\mathrm{Graph}(\bigl\lbrack1, 2, 3\bigr\rbrack, \bigl\lbrack\mathrm{UndirectedEdge}(1, 1), \mathrm{UndirectedEdge}(1, 2), \mathrm{UndirectedEdge}(1, 3), \mathrm{UndirectedEdge}(2, 3), \mathrm{UndirectedEdge}(3, 3)\bigr\rbrack)
About
Examples12
Checked againstWolfram Language 12 agree
CrosswalkWolfram Language

See also: AdjacencyMatrix, Graph