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
✗ Incorrect
Kahn's Algorithm begins by finding all nodes with zero in-degree to start processing them.
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
✗ Incorrect
If some nodes remain unprocessed, it means a cycle exists, preventing a full topological sort.
Which data structure is used to keep track of nodes with zero in-degree in Kahn's Algorithm?
AQueue
BStack
CSet
DLinked list
✗ Incorrect
A queue is used to process nodes in the order they become free of dependencies.
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
✗ Incorrect
In-degree counts how many edges point to 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
✗ Incorrect
Nodes with zero in-degree are ready to be processed and added to the queue.
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
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.
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.
Final Answer:
To find a topological ordering of a Directed Acyclic Graph (DAG) -> Option B
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
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.
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.
Final Answer:
Queue -> Option C
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
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]).
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.
Final Answer:
[4, 5, 2, 0, 3, 1] -> Option A
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
Step 1: Check indegree initialization
Indegree array is initialized to zero for all vertices correctly using {0} syntax.
Step 2: Verify adjacency list and loops
Loops correctly calculate indegree, push zero indegree nodes, and process queue with BFS logic.
Final Answer:
No error, the code is correct -> Option A
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
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.
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.
Final Answer:
The graph contains a cycle, so no topological order -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.