Adjacency matrix
Encyclopedia : A : AD : ADJ : Adjacency matrix
In mathematics and computer science, the adjacency matrix for a finite graph [G] on n vertices is an n × n matrix where the nondiagonal entry aij is the number of edges joining vertex [i] and vertex [j], and the diagonal entry aii is either twice the number of loops at vertex [i] or just the number of loops (usages differ; this article follows the former; directed graphs always follow the latter). There exists a unique adjacency matrix for each graph, and it is not the adjacency matrix of any other graph. In the special case of a finite, simple graph, the adjacency matrix is a (0,1)-matrix with zeros on its diagonal. If the graph is undirected, the adjacency matrix is symmetric.
For sparse graphs, that is graphs with few edges, an adjacency list is often the preferred representation because it uses less space. An alternative matrix representation for a graph is the incidence matrix.
The relationship between a graph and its adjacency matrix is studied in spectral graph theory.
Examples
The adjacency matrix for the following vertex labeled graph
- [\begin2 & 1 & 0 & 0 & 1 & 0\\1 & 0 & 1 & 0 & 1 & 0\\0 & 1 & 0 & 1 & 0 & 0\\0 & 0 & 1 & 0 & 1 & 1\\1 & 1 & 0 & 1 & 0 & 0\\0 & 0 & 0 & 1 & 0 & 0\\\end.]
Properties
The adjacency matrix of an undirected graph is symmetric, and therefore has a complete set of eigenvalues and orthogonal eigenvector basis. The set of eigenvalues of a graph is the spectrum of the graph.
Suppose two directed or undirected graphs G1 and G2 with adjacency matrices A1 and A2 are given. G1 and G2 are isomorphic if and only if there exists a permutation matrix P such that
- PA1P −1 = A2.
If A is the adjacency matrix of the directed or undirected graph G, then the matrix An (i.e. the matrix product of n copies of A) has an interesting interpretation: the entry in row i and column j gives the number of (directed or undirected) paths of length n from vertex i to vertex j.
The matrix I − A (where I denotes the n-by-n identity matrix) is invertible if and only if there are no directed cycles in the graph G. In this case, the inverse (I − A)−1 has the following interpretation: the entry in row i and column j gives the number of directed paths from vertex i to vertex j (which is always finite if there are no directed cycles). This can be understood using the geometric series for matrices:
- (I − A)−1 = I + A + A2 + A3 + ...
Variations
The (0,−1,1)-adjacency matrix of a simple graph has zero on the diagonal and entry aij = −1 if ij is an edge and 1 if it is not. This matrix is used in studying strongly regular graphs and two-graphs.
A distance matrix is basically the same as a adjacency matrix with the difference that, instead of only providing information whether or not two vertices are connected, also tells about the costs or distances (depending on context) between them.
Trade-offs as a data structure
When used as a data structure, the main competitor for the adjacency matrix is the adjacency list. Because each entry in the adjacency matrix requires only one bit, they can be represented in a very compact way, occupying only n2/8 bytes of contiguous space, where n is the number of vertices. Besides just avoiding wasted space, this compactness encourages locality of reference.
On the other hand, for a sparse graph, adjacency lists win out, because they do not use any space to represent edges which are not present. Using a naive linked list implementation on a 32-bit computer, an adjacency list for an undirected graph requires about 16e bytes of storage, where e is the number of edges.
Noting that a simple graph can have at most n2 edges, allowing loops, we can let d = e/n2 denote the density of the graph. Then, 16e > n2/8, or the adjacency list representation occupies more space, precisely when d > 1/128. Thus a graph must be sparse indeed to justify an adjacency list representation.
Besides the space tradeoff, the different data structures also facilitate different operations. Finding all vertices adjacent to a given vertex in an adjacency list is as simple as reading the list. With an adjacency matrix, an entire row must instead be scanned, which takes O(n) time. Whether there is an edge between two given vertices can be determined at once with an adjacency matrix, while requiring time proportional to the minimum degree of the two vertices with the adjacency list.
References
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0262032937. Section 22.1: Representations of graphs, pp.527–531.
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.

