Adjacency matrix
In mathematics and computer science, an adjacency matrix is a means of representing which vertices (or nodes) of a graph are adjacent to which other vertices. Another matrix representation for a graph is the incidence matrix.
Specifically, the adjacency matrix of a finite graph G on n vertices is the n × n matrix where the nondiagonal entry a_{ij} is the number of edges from vertex i to vertex j, and the diagonal entry a_{ii}, depending on the convention, is either once or twice the number of edges (loops) from vertex i to itself. Undirected graphs often use the latter convention of counting loops twice, whereas directed graphs typically use the former convention. There exists a unique adjacency matrix for each isomorphism class of graphs (up to permuting rows and columns), and it is not the adjacency matrix of any other isomorphism class of graphs. 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.
The relationship between a graph and the eigenvalues and eigenvectors of its adjacency matrix is studied in spectral graph theory.
Examples
The convention followed here is that an adjacent edge counts 1 in the matrix for an undirected graph.
Labeled graph  Adjacency matrix 

Coordinates are 16.  




 The adjacency matrix of a complete graph contains all ones except along the diagonal where there are only zeros.
 The adjacency matrix of an empty graph is a zero matrix.
Adjacency matrix of a bipartite graph
The adjacency matrix of a bipartite graph whose parts have and vertices has the form
where is an matrix, and represents the zero matrix. Clearly, the matrix uniquely represents the bipartite graphs. It is sometimes called the biadjacency matrix. Formally, let be a bipartite graph with parts and . The biadjacency matrix is the 01 matrix in which iff .
If is a bipartite multigraph or weighted graph then the elements are taken to be the number of edges between the vertices or the weight of the edge respectively.
Properties
The adjacency matrix of an undirected simple graph is symmetric, and therefore has a complete set of real eigenvalues and an orthogonal eigenvector basis. The set of eigenvalues of a graph is the spectrum of the graph.
Suppose two directed or undirected graphs and with adjacency matrices and are given. and are isomorphic if and only if there exists a permutation matrix such that
In particular, and are similar and therefore have the same minimal polynomial, characteristic polynomial, eigenvalues, determinant and trace. These can therefore serve as isomorphism invariants of graphs. However, two graphs may possess the same set of eigenvalues but not be isomorphic. ^{[1]}Specifically,such linear operator are called isospectral
If A is the adjacency matrix of the directed or undirected graph G, then the matrix A^{n} (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) walks of length n from vertex i to vertex j. If n is smallest nonnegative integer,such that for all i ,j ,(i,j)entry of A^{n} >0,such n is called distance of vertex i and vertex j . This implies, for example, that the number of triangles in an undirected graph G is exactly the trace of A^{3} divided by 6.Note that, the adjacent matrix can determine the graph whether connected.
The main diagonal of every adjacency matrix corresponding to a graph without loops has all zero entries. Note that here 'loops' means, for example A→A, not 'cycles' such as A→B→A.
For regular graphs, d is also an eigenvalue of A for the vector , and is connected if and only if the multiplicity of is 1. It can be shown that is also an eigenvalue of A if G is a connected bipartite graph. The above are results of Perron–Frobenius theorem.
Variations
An (a, b, c)adjacency matrix A of a simple graph has A_{ij} = a if ij is an edge, b if it is not, and c on the diagonal. The Seidel adjacency matrix is a (−1,1,0)adjacency matrix. This matrix is used in studying strongly regular graphs and twographs.^{[2]}
The distance matrix has in position (i,j) the distance between vertices v_{i} and v_{j} . The distance is the length of a shortest path connecting the vertices. Unless lengths of edges are explicitly provided, the length of a path is the number of edges in it. The distance matrix resembles a high power of the adjacency matrix, but instead of telling only whether or not two vertices are connected (i.e., the connection matrix, which contains boolean values), it gives the exact distance between them.
Data structures
Template:Ref improve section For use as a data structure, the main alternative to the adjacency matrix is the adjacency list. Because each entry in the adjacency matrix requires only one bit, it can be represented in a very compact way, occupying only bytes of contiguous space, where is the number of vertices. Besides avoiding wasted space, this compactness encourages locality of reference.
However, for a sparse graph, adjacency lists require less storage space, because they do not waste any space to represent edges that are not present. Using a naïve array implementation on a 32bit computer, an adjacency list for an undirected graph requires about bytes of storage, where is the number of edges.
Noting that a simple graph can have at most edges, allowing loops, we can let denote the density of the graph. Then, , or the adjacency list representation occupies more space precisely when . 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
 ↑ Godsil, Chris; Royle, Gordon Algebraic Graph Theory, Springer (2001), ISBN 0387952411, p.164
 ↑ {{#invoke:Citation/CS1citation CitationClass=journal }}
Further reading
 {{#invoke:citation/CS1citation
CitationClass=book }}
 {{#invoke:citation/CS1citation
CitationClass=book }}
External links
 Fluffschack — an educational Java web start game demonstrating the relationship between adjacency matrices and graphs.
 Open Data Structures  Section 12.1  AdjacencyMatrix: Representing a Graph by a Matrix
 Template:Cite web
 Café math : Adjacency Matrices of Graphs : Application of the adjacency matrices to the computation generating series of walks.