← capítulo

Ordenamiento topológico

Ordena un DAG para que toda flecha apunte hacia adelante: prerrequisitos primero. Existe si y solo si no hay ciclos.

Dos algoritmos, ambos conocidos

Mira a Kahn pelar el grafo

Verde = listo (in-degree 0) · naranja = colocando · oscuro = bloqueado (muestra el in-degree restante). La frontera de nodos listos barre de izquierda a derecha.

Adivinar casi nunca funciona

12 aristas → 1 de cada ~741 órdenes aleatorios es válido. Ordenamiento topológico: válido siempre, O(V+E).

El orden no es único

Para llevar

graphlib.TopologicalSorter viene con Python 3.9+ — incluido de fábrica. Sin orden válido ⇒ tus dependencias tienen un ciclo (seguido, ese es el hallazgo real). Sigue: los pesos rompen la suposición de "cada arista = un paso" → Dijkstra.