|
ORDEN TOPOLÓGICO
Un orden topológico equivale a una permutación de los vértices y es el problema fundamental de los grafos dirigidos acíclicos. Una vez encontrado el orden topológico para los vértices, muchos otros problemas se vuelven sencillos. Los algoritmos de orden topológico y orden topológico inverso son simples modificaciones al algoritmo del recorrido primero en profundidad. Orden topológico inverso. Entrada: Las mismas que para el algoritmo de búsqueda primero en profundidad más un arreglo global ArrTop y un contador global numT. Salida: El algoritmo llena el arreglo global con un conjunto de números topológicos inversos. Los tipos devueltos por este algoritmo se pueden cambiar a void. Comentario: Para calcular el orden topológico "hacia adelante", se asigna a numT el valor inicial n+1 y se cuenta hacia atrás. Estrategia: Se modifica el algoritmo de búsqueda primero en profundidad.
Dentro de este método, para poder implementar el orden topológico, haría falta incluir la variable global numT inicializada en cero, la cual se incrementaría (numT++) dentro del método de la búsqueda en profundidad, de igual manera, ahí se asignaría dicho valor al vector en la posición del nodo (ArrTop[v] = numT), sólo hay que saber la parte adecuada del método en que dichas operaciones deben llevarse a cabo, por eso, debes implementarlo. Al comparar el algoritmo de la búsqueda primero en profundidad con el algoritmo de orden topológico inverso, se puede ver que sus tiempos de terminacion en la búsqueda primero en profundidad produce el mismo ordenamiento que el algoritmo del orden topológico, y el último vértice que termina tiene el número más grande. Por lo tanto, por su conexión con el algoritmo de búsqueda primero en profundidad, decimos que el algoritmo del orden topológico inverso se ejecuta en tiempo Θ(n+m) con un grafo de n vértices y m aristas. |