Bird
Raised Fist0
DSA Cprogramming~5 mins

Topological Sort Using Kahn's Algorithm BFS in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind Kahn's Algorithm for Topological Sort?
Kahn's Algorithm uses BFS and repeatedly removes nodes with zero incoming edges, adding them to the sorted order until all nodes are processed.
Click to reveal answer
beginner
In Kahn's Algorithm, what does a node with zero in-degree represent?
A node with zero in-degree has no dependencies and can be safely added next in the topological order.
Click to reveal answer
intermediate
Why does Kahn's Algorithm detect cycles in a graph?
If after processing all nodes with zero in-degree, some nodes remain unprocessed, it means a cycle exists because those nodes still have dependencies.
Click to reveal answer
beginner
What data structure is primarily used in Kahn's Algorithm to manage nodes with zero in-degree?
A queue is used to store and process nodes with zero in-degree in FIFO order.
Click to reveal answer
intermediate
How does Kahn's Algorithm update the in-degree of nodes during processing?
When a node is removed from the queue, the in-degree of its neighbors is decreased by one. If any neighbor's in-degree becomes zero, it is added to the queue.
Click to reveal answer
What is the first step in Kahn's Algorithm for topological sorting?
ASort nodes alphabetically
BFind all nodes with zero in-degree and add them to a queue
CRemove edges randomly
DStart DFS from any node
What does it mean if after running Kahn's Algorithm, not all nodes are included in the topological order?
AThe graph has a cycle
BThe graph is disconnected
CThe graph is empty
DThe graph is fully sorted
Which data structure is used to keep track of nodes with zero in-degree in Kahn's Algorithm?
AQueue
BStack
CSet
DLinked list
How is the in-degree of a node defined?
ANumber of edges going out from the node
BNumber of neighbors
CNumber of nodes in the graph
DNumber of edges coming into the node
What happens when a node's in-degree becomes zero during Kahn's Algorithm?
AIt is deleted from the graph
BIt is ignored
CIt is added to the queue for processing
DIt is marked as visited but not processed
Explain step-by-step how Kahn's Algorithm performs a topological sort on a directed graph.
Think about how dependencies are removed one by one.
You got /6 concepts.
    How does Kahn's Algorithm help in detecting cycles in a directed graph?
    Focus on what happens when no nodes can be processed next.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of Kahn's Algorithm in graph theory?
      easy
      A. To calculate the minimum spanning tree
      B. To find a topological ordering of a Directed Acyclic Graph (DAG)
      C. To detect cycles in an undirected graph
      D. To find the shortest path between two nodes

      Solution

      1. Step 1: Understand Kahn's Algorithm goal

        Kahn's Algorithm is designed to produce a linear ordering of vertices in a Directed Acyclic Graph (DAG) such that for every directed edge u -> v, u comes before v in the ordering.
      2. Step 2: Compare with other graph algorithms

        Other options like shortest path, cycle detection, and minimum spanning tree solve different problems unrelated to topological sorting.
      3. Final Answer:

        To find a topological ordering of a Directed Acyclic Graph (DAG) -> Option B
      4. Quick Check:

        Topological sort = Kahn's Algorithm purpose [OK]
      Hint: Kahn's Algorithm always finds order in DAGs [OK]
      Common Mistakes:
      • Confusing topological sort with shortest path
      • Thinking it detects cycles in undirected graphs
      • Mixing it up with minimum spanning tree algorithms
      2. Which data structure is primarily used in Kahn's Algorithm to keep track of nodes with zero incoming edges?
      easy
      A. Priority Queue
      B. Stack
      C. Queue
      D. Hash Map

      Solution

      1. Step 1: Identify the data structure for zero in-degree nodes

        Kahn's Algorithm uses a queue to process nodes with zero incoming edges in a first-in-first-out manner, ensuring correct topological order.
      2. Step 2: Why not other data structures?

        A stack would reverse the order, a priority queue is not necessary for basic Kahn's Algorithm, and a hash map stores key-value pairs, not order.
      3. Final Answer:

        Queue -> Option C
      4. Quick Check:

        Zero in-degree nodes stored in queue [OK]
      Hint: Use queue for BFS order in Kahn's Algorithm [OK]
      Common Mistakes:
      • Using stack instead of queue
      • Confusing priority queue with normal queue
      • Thinking hash map manages order
      3. Consider the directed graph with edges: 5->2, 5->0, 4->0, 4->1, 2->3, 3->1. What is the topological order produced by Kahn's Algorithm?
      medium
      A. [4, 5, 2, 0, 3, 1]
      B. [5, 4, 2, 3, 1, 0]
      C. [4, 5, 0, 2, 3, 1]
      D. [5, 4, 0, 2, 3, 1]

      Solution

      1. Step 1: Calculate in-degree of each node

        Nodes: 0(in-degree 2),1(2),2(1),3(1),4(0),5(0). Start with nodes 4 and 5 in queue (pushed in ascending order: queue [4,5]).
      2. Step 2: Process nodes in queue and update in-degree

        Pop 4: output [4], reduce 0->1, 1->1. Queue: [5]
        Pop 5: output [4,5], reduce 2->0 (push 2), 0->0 (push 0). Queue: [2,0]
        Pop 2: output [4,5,2], reduce 3->0 (push 3). Queue: [0,3]
        Pop 0: output [4,5,2,0], no neighbors. Queue: [3]
        Pop 3: output [4,5,2,0,3], reduce 1->0 (push 1). Queue: [1]
        Pop 1: output [4,5,2,0,3,1]. All nodes processed.
      3. Final Answer:

        [4, 5, 2, 0, 3, 1] -> Option A
      4. Quick Check:

        Topological order = [4, 5, 2, 0, 3, 1] [OK]
      Hint: Start with zero in-degree nodes, update neighbors' in-degree [OK]
      Common Mistakes:
      • Not updating in-degree after removing nodes
      • Wrong initial zero in-degree nodes
      • Mixing order of nodes in queue
      4. Given the following code snippet for Kahn's Algorithm, what is the error?
      int indegree[V] = {0};
      for (int i = 0; i < V; i++) {
        for (int j = 0; j < adj[i].size(); j++) {
          indegree[adj[i][j]]++;
        }
      }
      queue<int> q;
      for (int i = 0; i < V; i++) {
        if (indegree[i] == 0) q.push(i);
      }
      while (!q.empty()) {
        int u = q.front(); q.pop();
        cout << u << " ";
        for (int v : adj[u]) {
          indegree[v]--;
          if (indegree[v] == 0) q.push(v);
        }
      }
      medium
      A. No error, the code is correct
      B. The adjacency list is not declared properly
      C. The indegree array is not initialized correctly
      D. The loop to push zero indegree nodes is missing

      Solution

      1. Step 1: Check indegree initialization

        Indegree array is initialized to zero for all vertices correctly using {0} syntax.
      2. Step 2: Verify adjacency list and loops

        Loops correctly calculate indegree, push zero indegree nodes, and process queue with BFS logic.
      3. Final Answer:

        No error, the code is correct -> Option A
      4. Quick Check:

        Code matches Kahn's Algorithm steps [OK]
      Hint: Check initialization and loops carefully for correctness [OK]
      Common Mistakes:
      • Forgetting to initialize indegree array
      • Incorrect adjacency list declaration
      • Missing zero indegree node insertion
      5. You have a graph with edges: 1->2, 1->3, 3->4, 2->4, 4->5, and 5->3. What will Kahn's Algorithm detect when run on this graph?
      hard
      A. A valid topological order exists
      B. The algorithm will run infinitely without stopping
      C. The graph is disconnected but topological order exists
      D. The graph contains a cycle, so no topological order

      Solution

      1. Step 1: Identify cycle in the graph

        The edges 3->4, 4->5, and 5->3 form a cycle (3->4->5->3), so the graph is not a DAG.
      2. Step 2: Understand Kahn's Algorithm behavior on cycles

        Kahn's Algorithm fails to process all nodes if a cycle exists because some nodes never reach zero in-degree, indicating no valid topological order.
      3. Final Answer:

        The graph contains a cycle, so no topological order -> Option D
      4. Quick Check:

        Cycle detected = no topological order [OK]
      Hint: Cycle means no topological order in Kahn's Algorithm [OK]
      Common Mistakes:
      • Assuming topological order exists despite cycle
      • Thinking disconnected graph always causes failure
      • Believing algorithm runs infinitely on cycle
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard