Topological sort Flashcards
(5 cards)
What is Topological Sort and when is it used?
Orders nodes in DAG such that dependencies are respected.
Use Case: Course scheduling, task dependencies.
Example: [Course Schedule II]. Action: Verbalize use case aloud.
What are the key steps in Topological Sort?
- Build adjacency list and in-degree count.
- Queue nodes with in-degree 0.
- Process nodes, reduce in-degrees, add new zeros.
Action: Explain steps for [Course Schedule II] aloud.
How does Topological Sort apply to [Course Schedule II]?
Find valid course order. Use queue to process courses with no prerequisites, update dependencies.
Action: Verbalize solution logic aloud.
What are the complexity and gotchas of Topological Sort?
Time: O(V+E), Space: O(V+E).
Gotchas: Cycles, disconnected graph.
Action: List edge cases for [Course Schedule II] aloud.
Code example for Topological Sort.
```python
from typing import List
from collections import defaultdict, deque
def find_order(num_courses: int, prerequisites: List[List[int]]) -> List[int]:
graph = defaultdict(list)
in_degree = [0] * num_courses
for course, prereq in prerequisites:
graph[prereq].append(course)
in_degree[course] += 1
queue = deque([i for i in range(num_courses) if in_degree[i] == 0])
result = []
while queue:
node = queue.popleft()
result.append(node)
for neighbor in graph[node]:
in_degree[neighbor] -= 1
if in_degree[neighbor] == 0:
queue.append(neighbor)
return result if len(result) == num_courses else []
~~~