Según esta respuesta de StackExchange de Henning Makholm, este es un problema difícil.
¿Cuántos ordenamientos topológicos existen para un gráfico?
La forma principal es ser sistemático sobre su conteo.
- ¿Puedo ser un gran programador si no soy bueno en matemáticas? ¿Cómo puedo mejorar mis habilidades matemáticas?
- ¿Cuál es la complejidad computacional de la satisfacción de resolución de restricciones sobre enteros? He leído que es polinomial para las igualdades y NP-duro para las desigualdades, pero, ¿no puedes convertir siempre una restricción de desigualdad en una igualdad agregando vars de holgura?
- ¿Cuáles son las formas o tipos de problemas en los que XOR es útil?
- ¿Cuál es el espacio nulo de un operador?
- ¿Podrán los robots hacer pruebas matemáticas e investigar todas las leyes físicas del universo mejor que los humanos?
Si lo piensa, puede determinarlo en algunos casos para acelerar su conteo.
Aquí hay uno. Supongamos que el DAG es un bosque de caminos. Entonces el número total de ordenamientos topológicos es
[matemáticas] \ frac {\ left (\ sum V_i \ right)!} {\ prod (V_i!)} [/ math]
Prueba: asigne un número a cada ruta, [math] i [/ math]. Es fácil ver que una disposición de [math] \ sum V_i [/ math] con [math] V_i [/ math] siendo [math] i [/ math] s correspondería fácilmente a un orden topológico, cada cada vez que veas [math] i [/ math], toma el siguiente vértice disponible en el camino.
Ahora, podemos hacer un seguimiento recursivo, visitando todos los ordenamientos topológicos en orden lexicográfico. 4 y 5 son los únicos primeros vértices posibles en el orden topológico.
4 4
45
En este punto, nos quedan las rutas 0 y 231, que tienen 4 formas diferentes de organizar, usando la fórmula anterior. Son 450231, 452031, 452301, 452310.
Ningún otro vértice puede seguir después de 4, excepto 5.
5 5
52
523
5231
52314
523140 (5)
523401 (6)
523410 (7)
524: Tenemos los dos caminos 31 y 0, haciendo 3 formas. Tenemos 10 formas hasta ahora.
54: Igual que 45, 4 casos más.
En total, tenemos 14 ordenamientos topológicos.