Bird
Raised Fist0
Data Structures Theoryknowledge~5 mins

Directed vs undirected graphs in Data Structures Theory - Performance Comparison

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Time Complexity: Directed vs undirected graphs
O(n + m)
Understanding Time Complexity

When working with graphs, it is important to understand how the direction of edges affects the time it takes to process them.

We want to see how the number of edges and their direction influence the work done when exploring a graph.

Scenario Under Consideration

Analyze the time complexity of traversing a graph using Depth-First Search (DFS).


function DFS(node, visited, graph) {
  visited.add(node);
  for (const neighbor of graph[node]) {
    if (!visited.has(neighbor)) {
      DFS(neighbor, visited, graph);
    }
  }
}

// graph can be directed or undirected
// visited is a set to track visited nodes
// graph[node] gives neighbors of node
    

This code visits all nodes reachable from a starting node by following edges.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Visiting each node and exploring its neighbors.
  • How many times: Each node is visited once; each edge is checked once in directed graphs, twice in undirected graphs.
How Execution Grows With Input

As the number of nodes and edges grows, the work to visit all nodes and edges grows roughly in proportion to their total count.

Input Size (n nodes, m edges)Approx. Operations
10 nodes, 15 edges~25 (10 nodes + 15 edges)
100 nodes, 200 edges~300 (100 + 200)
1000 nodes, 5000 edges~6000 (1000 + 5000)

Pattern observation: The total work grows roughly with the sum of nodes and edges.

Final Time Complexity

Time Complexity: O(n + m)

This means the time to traverse the graph grows linearly with the number of nodes plus the number of edges.

Common Mistake

[X] Wrong: "Directed and undirected graphs always take the same time to traverse because they have the same number of edges."

[OK] Correct: In undirected graphs, each edge connects two nodes and is counted twice during traversal (once from each node), so the traversal checks edges differently than in directed graphs.

Interview Connect

Understanding how graph direction affects traversal time helps you explain your approach clearly and choose the right algorithms in real problems.

Self-Check

"What if the graph is represented using an adjacency matrix instead of adjacency lists? How would the time complexity change?"

Practice

(1/5)
1. Which of the following best describes a directed graph?
easy
A. Edges have a direction from one vertex to another
B. Edges connect vertices without any direction
C. Edges are weighted but have no direction
D. Edges connect only vertices of the same type

Solution

  1. Step 1: Understand edge direction in graphs

    Directed graphs have edges that point from one vertex to another, showing direction.
  2. Step 2: Compare with undirected graphs

    Undirected graphs have edges without direction, connecting vertices both ways equally.
  3. Final Answer:

    Edges have a direction from one vertex to another -> Option A
  4. Quick Check:

    Directed graph = edges with direction [OK]
Hint: Directed means edges point one way only [OK]
Common Mistakes:
  • Confusing directed with weighted edges
  • Thinking undirected edges have direction
  • Assuming all graphs have directions
2. Which of the following is the correct way to represent an undirected edge between vertices A and B?
easy
A. (A → B) only
B. (A, B) only
C. (B, A) only
D. (A, B) and (B, A) both included

Solution

  1. Step 1: Understand undirected edge representation

    Undirected edges connect two vertices both ways, so both (A, B) and (B, A) are included.
  2. Step 2: Compare with directed edge representation

    Directed edges include only one direction, like (A → B), not both.
  3. Final Answer:

    (A, B) and (B, A) both included -> Option D
  4. Quick Check:

    Undirected edge = both directions stored [OK]
Hint: Undirected edges need both directions listed [OK]
Common Mistakes:
  • Listing only one direction for undirected edges
  • Confusing directed arrow notation with undirected
  • Assuming undirected edges are stored once only
3. Given the directed graph edges: [(1, 2), (2, 3), (3, 1)], what is the result of checking if there is a path from vertex 3 to vertex 2?
medium
A. Only if the graph is undirected
B. Yes, there is a path
C. No, there is no path
D. Cannot determine without weights

Solution

  1. Step 1: Analyze edges for path from 3 to 2

    Edges are (1 → 2), (2 → 3), (3 → 1). From 3, you can go to 1 only.
  2. Step 2: Check if path leads to 2

    From 3 to 1, then from 1 to 2 is possible, so path exists: 3 → 1 → 2.
  3. Final Answer:

    Yes, there is a path -> Option B
  4. Quick Check:

    Path 3->1->2 exists [OK]
Hint: Follow edges direction step-by-step [OK]
Common Mistakes:
  • Ignoring indirect paths
  • Assuming no path if direct edge missing
  • Confusing directed with undirected paths
4. Identify the error in this undirected graph edge list representation: edges = [(1, 2), (2, 3), (3, 1)] used as is for an undirected graph.
medium
A. Edges should be duplicated in reverse order
B. Edges must be tuples of length 3
C. Edges cannot connect vertex 3 to 1
D. No error, this is correct

Solution

  1. Step 1: Understand undirected edge storage

    Undirected edges require both (u, v) and (v, u) to represent two-way connection.
  2. Step 2: Check given edge list

    Edges are only listed one way, missing reverse edges like (2, 1), (3, 2), (1, 3).
  3. Final Answer:

    Edges should be duplicated in reverse order -> Option A
  4. Quick Check:

    Undirected edges need both directions [OK]
Hint: Undirected edges must appear both ways [OK]
Common Mistakes:
  • Assuming one direction is enough
  • Thinking tuples need 3 elements
  • Believing given list is complete
5. You want to model a social network where friendships are mutual. Which graph type should you use and why?
hard
A. Directed graph, to track who follows whom
B. Directed graph, because friendships have direction
C. Undirected graph, because friendships go both ways
D. Weighted graph, to show friendship strength

Solution

  1. Step 1: Understand the nature of friendships

    Mutual friendships mean if A is friend with B, then B is friend with A.
  2. Step 2: Choose graph type matching mutual connections

    Undirected graphs represent mutual connections naturally, with edges having no direction.
  3. Final Answer:

    Undirected graph, because friendships go both ways -> Option C
  4. Quick Check:

    Mutual relations = undirected graph [OK]
Hint: Mutual means undirected edges [OK]
Common Mistakes:
  • Choosing directed graph for mutual relations
  • Confusing following with friendship
  • Ignoring edge direction meaning