What is the main idea behind Kahn's Algorithm for topological sorting?
Kahn's Algorithm repeatedly removes nodes with zero incoming edges (in-degree 0) and adds them to the sorted order, updating in-degrees of neighbors until all nodes are processed.
Click to reveal answer
beginner
In Kahn's Algorithm, what does a node with in-degree zero represent?
A node with in-degree zero has no dependencies and can be safely placed next in the topological order.
Click to reveal answer
intermediate
Why does Kahn's Algorithm use a queue data structure?
The queue stores nodes with in-degree zero to process them in order, ensuring BFS traversal and correct topological order.
Click to reveal answer
intermediate
What does it mean if after running Kahn's Algorithm, not all nodes are included in the topological order?
It means the graph has a cycle, so a valid topological order does not exist.
Click to reveal answer
beginner
How do you update the in-degree of neighbors in Kahn's Algorithm?
After removing a node, decrease the in-degree of each of its neighbors by one. If any neighbor's in-degree becomes zero, add it to the queue.
Click to reveal answer
What data structure is primarily used in Kahn's Algorithm to store nodes with zero in-degree?
AQueue
BStack
CPriority Queue
DSet
✗ Incorrect
Kahn's Algorithm uses a queue to process nodes with zero in-degree in BFS order.
What does a non-empty graph with no nodes of in-degree zero indicate in Kahn's Algorithm?
AGraph is disconnected
BGraph is empty
CGraph is a tree
DGraph has a cycle
✗ Incorrect
If no node has in-degree zero, it means there is a cycle preventing topological sorting.
What is the time complexity of Kahn's Algorithm for topological sorting?
AO(V^2)
BO(E^2)
CO(V + E)
DO(log V)
✗ Incorrect
Kahn's Algorithm visits each vertex and edge once, so time complexity is O(V + E).
Which of the following is NOT a step in Kahn's Algorithm?
AUse DFS to visit nodes
BInitialize in-degree of all nodes
CAdd nodes with zero in-degree to queue
DRemove nodes and update neighbors' in-degree
✗ Incorrect
Kahn's Algorithm uses BFS with a queue, not DFS.
What happens when a neighbor's in-degree becomes zero during Kahn's Algorithm?
AIt is ignored
BIt is added to the queue
CAlgorithm stops
DIt is removed from the graph immediately
✗ Incorrect
Neighbors with in-degree zero are added to the queue to be processed next.
Explain step-by-step how Kahn's Algorithm performs topological sorting on a directed graph.
Think about how dependencies are removed layer by layer.
You got /6 concepts.
How does Kahn's Algorithm detect if a directed graph contains a cycle?
Consider what happens if no node 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 find the shortest path between two nodes
B. To calculate the minimum spanning tree
C. To detect cycles in an undirected graph
D. To find a topological ordering of a Directed Acyclic Graph (DAG)
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 describe different algorithms: shortest path (Dijkstra's or BFS), cycle detection in undirected graphs (DFS), and minimum spanning tree (Kruskal's or Prim's) are unrelated to Kahn's Algorithm.
Final Answer:
To find a topological ordering of a Directed Acyclic Graph (DAG) -> Option D
Quick Check:
Topological sort = Kahn's Algorithm purpose [OK]
Hint: Kahn's Algorithm always finds topological order in DAGs [OK]
Common Mistakes:
Confusing topological sort with shortest path
Thinking it works on undirected graphs
Assuming it detects cycles directly
2. Which of the following C++ STL containers is best suited to implement the queue used in Kahn's Algorithm?
easy
A. std::queue
B. std::set
C. std::vector
D. std::stack
Solution
Step 1: Identify the data structure needed
Kahn's Algorithm uses a queue to process nodes with zero incoming edges in FIFO order.
Step 2: Match with C++ STL containers
std::queue provides FIFO behavior, suitable for this purpose. std::stack is LIFO, std::vector is dynamic array without FIFO, std::set is ordered but not FIFO.
Final Answer:
std::queue -> Option A
Quick Check:
Queue = std::queue [OK]
Hint: Use std::queue for FIFO processing in Kahn's Algorithm [OK]
Common Mistakes:
Using std::stack instead of std::queue
Using std::vector without queue operations
Using std::set which is ordered but not FIFO
3. What is the output of the following code snippet implementing Kahn's Algorithm on the graph with edges: 5->0, 5->2, 4->0, 4->1, 2->3, 3->1?
std::vector graph = {{}, {}, {}, {}, {}, {}};
// Edges added as graph[5].push_back(0), etc.
// After running Kahn's Algorithm, which topological order is printed?
// Options are sequences of node numbers.
medium
A. [0, 1, 2, 3, 4, 5]
B. [5, 4, 2, 3, 1, 0]
C. [4, 5, 0, 2, 3, 1]
D. [1, 3, 2, 0, 4, 5]
Solution
Step 1: Build indegree and initialize queue
Nodes 4 and 5 have zero indegree, so queue starts with [4,5].
Step 2: Process nodes in queue order
Process 4: remove edges 4->0, 4->1; indegree of 0 and 1 decrease. Process 5: remove edges 5->0, 5->2; indegree of 0 and 2 decrease. When indegree of 0 and 2 become zero, add to queue. Continue processing 0, 2, 3, 1 in order.
Final Answer:
[4, 5, 0, 2, 3, 1] -> Option C
Quick Check:
Topological order = [4,5,0,2,3,1] [OK]
Hint: Start with nodes having zero indegree in queue [OK]
Common Mistakes:
Starting queue with wrong nodes
Not updating indegree correctly
Mixing order of nodes with zero indegree
4. What is missing from this Kahn's Algorithm implementation:
std::vector<int> indegree(V, 0);
for (int u = 0; u < V; u++) {
for (int v : graph[u]) {
indegree[v]++;
}
}
std::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();
for (int v : graph[u]) {
indegree[v]--;
if (indegree[v] == 0) q.push(v);
}
// Missing code here
}
medium
A. Not decrementing indegree[v] inside the loop
B. Not printing or storing the topological order nodes
C. Not checking if the graph has cycles before running
D. Not pushing nodes with zero indegree into the queue initially
Solution
Step 1: Analyze the loop behavior
The code correctly calculates indegree and pushes zero indegree nodes into the queue. It decrements indegree and pushes new zero indegree nodes inside the loop.
Step 2: Identify missing action
The missing code is to store the popped node u into a topological order vector, e.g., topo.push_back(u); after q.pop();. Without it, the algorithm processes correctly but does not output the order.
Final Answer:
Not printing or storing the topological order nodes -> Option B
Quick Check:
Missing topo.push_back(u) [OK]
Hint: Always record nodes when popping from queue [OK]
Common Mistakes:
Forgetting to store or print topological order
Incorrect indegree decrement logic
Not initializing queue with zero indegree nodes
5. Given a Directed Acyclic Graph (DAG) with 6 nodes and edges: 0->1, 0->2, 1->3, 2->3, 3->4, 4->5, how can Kahn's Algorithm be modified to detect if the graph contains a cycle?
hard
A. Count processed nodes; if count < total nodes, a cycle exists
B. Check if queue becomes empty
C. Use a visited array to mark nodes and detect back edges
D. Run DFS instead of BFS to find cycles
Solution
Step 1: Understand Kahn's Algorithm processing
Kahn's Algorithm processes nodes with zero indegree and removes edges. If a cycle exists, some nodes never reach zero indegree and remain unprocessed.
Step 2: Detect cycle by counting processed nodes
If the number of processed nodes is less than total nodes, it means some nodes are stuck due to cycles. This is a standard cycle detection method using Kahn's Algorithm.
Final Answer:
Count processed nodes; if count < total nodes, a cycle exists -> Option A
Quick Check:
Processed nodes count < total nodes = cycle [OK]
Hint: Compare processed nodes count with total nodes [OK]
Common Mistakes:
Assuming Kahn's Algorithm alone detects cycles without counting
Confusing BFS with DFS cycle detection methods
Not tracking processed nodes count
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.