An adjacency list is a data structure used to represent a graph where each node in the graph stores a list of its neighboring vertices.
1. Adjacency List for Directed graph:
Consider an Directed and Unweighted graph G with 3 vertices and 3 edges. For the graph G, the adjacency list would look like:
OutputAdjacency List Representation:
0:
1: 0 2
2: 0
2. Adjacency List for Undirected graph:
Consider an Undirected and Unweighted graph G with 3 vertices and 3 edges. For the graph G, the adjacency list would look like:
OutputAdjacency List Representation:
0: 1 2
1: 0 2
2: 1 0
3. Adjacency List for Directed and Weighted graph:
Consider an Directed and Weighted graph G with 3 vertices and 3 edges. For the graph G, the adjacency list would look like:
OutputAdjacency List Representation:
0:
1: {0, 4} {2, 3}
2: {0, 1}
4. Adjacency List for Undirected and Weighted graph:
Consider an Undirected and Weighted graph G with 3 vertices and 3 edges. For the graph G, the adjacency list would look like:
OutputAdjacency List Representation:
0: {1, 4} {2, 1}
1: {0, 4} {2, 3}
2: {1, 3} {0, 1}
Characteristics of the Adjacency List:
- An adjacency list representation uses a list of lists. We store all adjacent of every node together.
- The size of the list is determined by the number of vertices in the graph.
- All adjacent of a vertex are easily available. To find all adjacent, we need only O(n) time where is the number of adjacent vertices.
Applications of the Adjacency List:
Advantages of using an Adjacency list:
- An adjacency list is simple and easy to understand.
- Requires less space compared to adjacency matrix for sparse graphs.
- Easy to traverse through all edges of a graph.
- Adding an vertex is easier compared to adjacency matrix representation.
- Most of the graph algorithms are implemented faster with this representation. For example, BFS and DFS implementations take OIV x V) time, but with Adjacency List representation, we get these in linear time. Similarly Prim's and Dijskstra's algorithms are implemented faster with Adjacency List representation.
Disadvantages of using an Adjacency list:
- Checking if there is an edge between two vertices is costly as we have traverse the adjacency list.
- Not suitable for dense graphs.
What else can you read?