Bird
Raised Fist0
DSA C#programming~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 sorting?
Kahn's Algorithm uses BFS to repeatedly remove nodes with zero incoming edges (in-degree) and adds them to the sorted order, ensuring dependencies come before dependents.
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 placed next in the topological order.
Click to reveal answer
intermediate
Why does Kahn's Algorithm detect a cycle if not all nodes are processed?
If some nodes remain with non-zero in-degree after processing, it means there is a cycle, so no valid topological order exists.
Click to reveal answer
beginner
What data structure is commonly used to keep track of nodes with zero in-degree in Kahn's Algorithm?
A queue is used to store nodes with zero in-degree for BFS processing in Kahn's Algorithm.
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 algorithm decreases the in-degree of its neighbors by one, adding neighbors with zero in-degree to the queue.
Click to reveal answer
What does Kahn's Algorithm use to find the topological order?
ABFS with queue and in-degree tracking
BDFS with recursion stack
CSorting nodes by value
DRandom node selection
What happens if a graph has a cycle when using Kahn's Algorithm?
AAll nodes have zero in-degree
BAlgorithm completes normally
CSome nodes remain unprocessed due to non-zero in-degree
DAlgorithm ignores cycles
Which node is added first in Kahn's Algorithm?
ANode with highest value
BNode with zero in-degree
CNode with maximum edges
DRandom node
What data structure is used to store nodes with zero in-degree in Kahn's Algorithm?
AStack
BList
CSet
DQueue
How is the in-degree of neighbors updated after removing a node in Kahn's Algorithm?
AIn-degree is decreased by one
BIn-degree is increased by one
CIn-degree remains the same
DIn-degree is reset to zero
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 /7 concepts.
    Describe how Kahn's Algorithm detects if a graph contains a cycle.
    Focus on what happens to nodes with dependencies that never get resolved.
    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 detect cycles in an undirected graph
      C. To find the shortest path between two nodes
      D. To find a topological ordering of a Directed Acyclic Graph (DAG)

      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 describe different graph problems: cycle detection, shortest path, and minimum spanning tree, which are not the purpose of Kahn's Algorithm.
      3. Final Answer:

        To find a topological ordering of a Directed Acyclic Graph (DAG) -> Option D
      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 cycle detection
      • Thinking it finds shortest paths
      • Mixing with minimum spanning tree algorithms
      2. Which C# data structure is best suited to store nodes with zero incoming edges during Kahn's Algorithm?
      easy
      A. Queue
      B. Stack
      C. Dictionary
      D. HashSet

      Solution

      1. Step 1: Identify the role of zero in-degree nodes

        Kahn's Algorithm processes nodes with zero incoming edges in the order they are discovered, which requires a First-In-First-Out (FIFO) structure.
      2. Step 2: Match data structure to FIFO behavior

        A Queue provides FIFO behavior, making it ideal to store and process zero in-degree nodes in the correct order.
      3. Final Answer:

        Queue -> Option A
      4. Quick Check:

        Zero in-degree nodes use FIFO queue [OK]
      Hint: Use queue for BFS order in Kahn's Algorithm [OK]
      Common Mistakes:
      • Using stack which is LIFO, not suitable here
      • Choosing dictionary which stores key-value pairs
      • Using hashset which has no order
      3. What is the output of the following C# code snippet implementing Kahn's Algorithm on this graph?
      var graph = new Dictionary<int, List<int>> {
        {1, new List<int> {2, 3}},
        {2, new List<int> {4}},
        {3, new List<int> {4}},
        {4, new List<int> ()}
      };
      var result = TopologicalSort(graph);
      Console.WriteLine(string.Join(", ", result));
      
      List<int> TopologicalSort(Dictionary<int, List<int>> graph) {
        var inDegree = new Dictionary<int, int>();
        foreach (var node in graph.Keys) inDegree[node] = 0;
        foreach (var edges in graph.Values)
          foreach (var v in edges) inDegree[v]++;
        var queue = new Queue<int>(inDegree.Where(kv => kv.Value == 0).Select(kv => kv.Key));
        var topoOrder = new List<int>();
        while (queue.Count > 0) {
          var u = queue.Dequeue();
          topoOrder.Add(u);
          foreach (var v in graph[u]) {
            inDegree[v]--;
            if (inDegree[v] == 0) queue.Enqueue(v);
          }
        }
        return topoOrder;
      }
      medium
      A. [4, 2, 3, 1]
      B. [1, 2, 3, 4]
      C. [1, 3, 2, 4]
      D. [2, 3, 1, 4]

      Solution

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

        Node 1: 0, Node 2: 1 (from 1), Node 3: 1 (from 1), Node 4: 2 (from 2 and 3).
      2. Step 2: Process nodes in queue order

        Start with node 1 (in-degree 0). Remove it, reduce in-degree of 2 and 3 to 0, enqueue both. Then dequeue 2, reduce in-degree of 4 to 1. Dequeue 3, reduce in-degree of 4 to 0, enqueue 4. Finally dequeue 4.
      3. Final Answer:

        [1, 2, 3, 4] -> Option B
      4. Quick Check:

        Topological order = [1, 2, 3, 4] [OK]
      Hint: Track in-degree and queue order carefully [OK]
      Common Mistakes:
      • Ignoring in-degree updates after dequeue
      • Mixing order of nodes with same in-degree
      • Starting with wrong initial nodes
      4. Identify the bug in this Kahn's Algorithm C# code snippet:
      var inDegree = new Dictionary<int, int>();
      foreach (var node in graph.Keys) inDegree[node] = 0;
      foreach (var edges in graph.Values)
        foreach (var v in edges) inDegree[v] = 0; // Bug here
      var queue = new Queue<int>(inDegree.Where(kv => kv.Value == 0).Select(kv => kv.Key));
      medium
      A. Queue should be a stack for correct order
      B. The first loop should initialize inDegree with -1
      C. The second loop resets in-degree to zero instead of incrementing
      D. The graph.Keys should be iterated twice

      Solution

      1. Step 1: Analyze in-degree calculation

        The second loop incorrectly sets inDegree[v] = 0 for each adjacent node, overwriting the count instead of incrementing it.
      2. Step 2: Correct in-degree update

        It should increment inDegree[v] by 1 for each incoming edge to count properly, i.e., inDegree[v]++.
      3. Final Answer:

        The second loop resets in-degree to zero instead of incrementing -> Option C
      4. Quick Check:

        In-degree must be incremented, not reset [OK]
      Hint: Increment in-degree counts, don't reset them [OK]
      Common Mistakes:
      • Setting in-degree to zero inside the counting loop
      • Using stack instead of queue
      • Misinitializing in-degree dictionary
      5. Given a graph with edges: 5->2, 5->0, 4->0, 4->1, 2->3, 3->1, which of the following is a valid topological order using Kahn's Algorithm?
      hard
      A. [5, 4, 2, 3, 1, 0]
      B. [4, 5, 0, 2, 3, 1]
      C. [0, 1, 2, 3, 4, 5]
      D. [1, 0, 2, 3, 4, 5]

      Solution

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

        Nodes: 0(in-degree 2 from 4,5), 1(in-degree 2 from 3,4), 2(in-degree 1 from 5), 3(in-degree 1 from 2), 4(in-degree 0), 5(in-degree 0).
      2. Step 2: Process nodes with zero in-degree first

        Start with 5 and 4. Removing 5 reduces in-degree of 2 to 0 and 0 to 1; removing 4 reduces in-degree of 0 to 0 and 1 to 1. Then process 2 and 0 (in some order), followed by 3, then 1.
      3. Final Answer:

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

        Valid topological order respects edges [OK]
      Hint: Start with zero in-degree nodes, remove edges stepwise [OK]
      Common Mistakes:
      • Placing nodes before their dependencies
      • Ignoring multiple valid orders
      • Starting with nodes that have incoming edges
      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