intermediate

Топологическая сортировка

Упорядочивайте узлы DAG для prerequisites, build steps и разрешения зависимостей.

Topological sort упорядочивает directed acyclic graph так, чтобы dependency появилась раньше node, которому она нужна. Kahn algorithm удаляет zero-indegree nodes; DFS может дать reverse finishing order. Это часто встречается в course scheduling, build systems, migration ordering и task planning.

Компромисс: сравните время, память и сложность реализации до выбора структуры или паттерна.

На интервью: Интервьюеры ожидают cycle detection: если выдали не все nodes, valid topological order не существует.

Типовые ошибки: Topological sort применим только к directed acyclic graphs. Осторожно с edge direction, потому что reversal prerequisite edges меняет смысл indegree.

Чеклист:

  • Постройте directed edges.
  • Отслеживайте indegrees или DFS colors.
  • Выведите все nodes.
  • Ясно сообщайте о cycles.