Complexities of Graph Operations

Let's discuss the performance of the two graph representation approaches.

Time Complexities #

Below, you can find the time complexities for the 4 basic graph functions.

Note, that in this table V means the total number of vertices and E means the total number of edges in the Graph.

Operation Adjacency List Adjacency Matrix
Add Vertex O(1) O(V2)
Remove Vertex O(V+E) O(V2)
Add Edge O(1) O(1)
Remove Edge O(E) O(1)

Adjacency List #

  • Addition operations in adjacency lists take constant time as we only need to insert at the head node of the corresponding vertex.

  • Removing an edge takes O(E) time, because in the worst case, all the edges could be at a single vertex and, hence, we would have to traverse all E edges to reach the last one.

  • Removing a vertex takes O(V + E) time because we have to delete all its edges and then reindex the rest of the list one step back in order to fill the deleted spot.

Adjacency Matrix #

  • Edge operations are performed in constant time as we only need to manipulate the value in the particular cell.

  • Vertex operations are performed in O(V2) since we need to add rows and columns. We will also need to fill all the new cells.

Comparison #

Both representations are suitable for different situations. If your model frequently manipulates vertices, the adjacency list is a better choice.

If you are dealing primarily with edges, the adjacency matrix is the more efficient approach.

Keep these complexities in mind because they will give you a better idea about the time complexities of the several algorithms we’ll see in this section.

In the next lesson, we will look at a special type of graph called the bipartite graph.

Level up your interview prep. Join Educative to access 70+ hands-on prep courses.