ordenamiento topológico
DESCRIPTION
Ordenamiento topológico. Christian von Lücken [email protected] Original by Douglas Wilhelm Harder Translated by Christian von Lücken. Ordenamiento topológico Topological Sort. En este tópico, discutiremos: la idea de ordenar elementos en un DAG un ejemplo de ordenamiento topológico - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/1.jpg)
Ordenamiento topológico
Christian von Lücken
Original by Douglas Wilhelm Harder
Translated by Christian von Lücken
![Page 2: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/2.jpg)
Ordenamiento topológicoTopological Sort
• En este tópico, discutiremos:– la idea de ordenar elementos en un DAG– un ejemplo de ordenamiento topológico– la implementación utilizando una tabal de grados
de entrada
![Page 3: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/3.jpg)
Directed acyclic graph (DAG)
• Un grafo directo sin ciclos• Bueno para modelar procesos y estructuras que
tienen un orden parcial:a > b y b > c a > c.⇒Pero puede suceder que existan a y b tales que ni a > b ni b > c.
• Puede construirse un orden total (ya sea a > b o b > a para todo a = b) desde un orden parcial. Esto es lo que hace el ordenamiento topológico.
![Page 4: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/4.jpg)
Teorema
• En el DFS de un grafo no dirigido, tenemos solo arcos tree y back. No existen arcos forward o cross edges.
![Page 5: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/5.jpg)
Lemma• Un grafo dirigido G es aciclico si y solo si un
DFS de G no produce back edges.• Prueba : Si existe un back edge hay un ⇒ ⇒
ciclo.• Suponga que existe un back edge
(u, v). Entonces v es ancestro de u en un depht-first forest.
• Entonces existe un camino v ~> u, y entonces v ~> u → v es un ciclo.
![Page 6: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/6.jpg)
LemmaUn grafo dirigido G es aciclico si y solo si un DFS de
G no produce back edges.⇒: Si existe un back edge hay un ciclo.⇒⇐: Si existe un ciclo back edge.⇒• Si G contiene un ciclo c. Sea v el primer vértice
descubierto en c, y sea (u, v) un arco predecesor en c. En el tiempo d[v], los vertices de c forman un camino blanco de v a u. Por el teorema del camino blanco u es un descendiente de v en el bosque depth-first. Por tanto, (u, v) es un back edge.
![Page 7: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/7.jpg)
Topological sort• Un ordenamiento topológico de un DAG G = (V,
E) es un ordenamiento lineal de todos sus vértices tal que si G contiene un arco (u, v), entonces u aparece antes de v en el ordenamiento (Si el grafo no es acíclico, entonces no es posible un ordenamiento lineal)
• Un ordenamiento topológico de un grafo puede verse como un ordenamiento de sus vértices a lo largo de una linea horizontal tal que todos los arcos directos van desde la izquierda a la derecha.
![Page 8: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/8.jpg)
![Page 9: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/9.jpg)
Algoritmo
![Page 10: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/10.jpg)
Ordenamiento topológico
• Dados dos vértices vi y vj en un DAG, como mucho puede existir solo:– un camino de vi a vj, o
– un camino de vj a vi
• Entonces, debe ser posible listar todos los vértices tal que en esa lista, vi precede a vj si existe un camino entre vi a vj
• Si esto no es posible, esto podría implicar la existencia de un ciclo
![Page 11: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/11.jpg)
Ordenamiento topológico
• Este ordenamiento se llama ordenamiento topológico
• Por ejemplo, en este DAG, un ordenamiento topológico es 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
![Page 12: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/12.jpg)
Ordenamiento topológico
• Un ordenamiento topológico puede no ser único
• Por ejemplo, los siguientes ordenamientos– 1, 3, 2, 7, 6, 5, 4, 10, 9, 8, 12, 11, 13– 1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12, 13
![Page 13: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/13.jpg)
Aplicación
• Dado un número de tareas, usualmente existen un número de restricciones entre las tareas:– la tarea A debe completarse antes de que la
tarea B pueda empezar• Estas tareas y restricciones se pueden
representar usando un DAG• Un ordenamiento topológico del grafo
proporciona un orden en el cual se pueden ejecutar las tareas satisfaciendo las restricciones
![Page 14: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/14.jpg)
Aplicaciones
• Secuenciade cursos en un DAG
![Page 15: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/15.jpg)
Aplicaciones
• Un DAG representandouna serie de tares
• La numeración indicael orden topológicode la tarea
• Las flechas verdesrepresentan restricciones de
precedenciaRef: The Standard Task Graph http://www.kasahara.elec.waseda.ac.jp/schedule/
![Page 16: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/16.jpg)
Application
• Otro orden topológicode un DAG
• El camino critico en rojo es la secuenciade tareas que toman mástiempo
Ref: The Standard Task Graph http://www.kasahara.elec.waseda.ac.jp/schedule/
![Page 17: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/17.jpg)
Aplicaciones
• Este último DAG puede ser utilizado para realizar estas tareas en m procesadores
• En este caso, el ordenamiento topológico toma otras consideraciones, específicamente, minimizar el tiempo total de ejecutar un conjunto de tareas
• Veremos un planificador simple cuando se vean algoritmos greedy
![Page 18: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/18.jpg)
Ordenamiento topológico
• Para generar un ordenamiento topológico debemos empezar con un vértice que tenga un grado de entrada 0: 1
![Page 19: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/19.jpg)
Ordenamiento topológico
• En este punto, podemos ignorar estos arcos que conectan 1 con otros vértices y podemos elegir el vértice 2:
1, 2
![Page 20: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/20.jpg)
Ordenamiento topológico
• Elegimos entre 4, 5, o 3:
1, 2, 4
![Page 21: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/21.jpg)
Ordenamiento topológico
• Agregamos los vértices que llegan a 4 a los que ignoramos, podemos agreagar el 8
1, 2, 4, 8
![Page 22: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/22.jpg)
Ordenamiento topológico
• En este punto no se puede agregar 11, pues sigue a 9 en el ordenamiento topológico. Debemos elegir entre 5 o 3:
1, 2, 4, 8, 5
![Page 23: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/23.jpg)
Ordenamiento topológico
• Eliminando el 5 de consideración podemos ahora elegir los vértices 3 o 9Pero 3 debe preceder a 10:
1, 2, 4, 8, 5, 9
![Page 24: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/24.jpg)
Ordenamiento topológico
• Podemos agregar 11 a nuestro ordenamiento topológico
1, 2, 4, 8, 5, 9, 11
![Page 25: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/25.jpg)
Ordenamiento topológico
• El único vértice que tiene un grado de entrada con 0 es 3
1, 2, 4, 8, 5, 9, 11, 3
![Page 26: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/26.jpg)
Ordenamiento topológico
• Agregando 3,se puede elegir entre 6 o 7
1, 2, 4, 8, 5, 9, 11, 3, 6
![Page 27: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/27.jpg)
Ordenamiento topológico
• Agregando 6 podemos elegir entre los vértices 7 o 10
1, 2, 4, 8, 5, 9, 11, 3, 6, 10
![Page 28: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/28.jpg)
Ordenamiento topológico
• Como 7 debe preceder 12 en el ordenamiento topológico, debemos agregar 7 al ordenamiento
1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7
![Page 29: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/29.jpg)
Ordenamiento topológico
• En este punto se agrega 12
1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12
![Page 30: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/30.jpg)
Ordenamiento topológico
• Finalmente el vértice 13
1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12, 13
![Page 31: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/31.jpg)
Ordenamiento topológico
• En este punto no quedan vértices, y se ha completado el ordenamiento topológico en este grafo
1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12, 13
![Page 32: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/32.jpg)
Ordenamiento topológico
• Es obvio que el ordenamiento topológico no es único
• En cualquier punto donde existe una elección sobre cual vértice seguir tenemos posibilidades de formar un orden topológico diferente
![Page 33: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/33.jpg)
Ordenamiento topológico
• Por ejemplo, en esta etapa, podríamos elegir 7 en vez de 6:
1, 2, 4, 8, 5, 9, 11, 3, 7
![Page 34: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/34.jpg)
Ordenamiento topológico
• El orden topológico resultante podría ser entonces
1, 2, 4, 8, 5, 9, 11, 3, 7, 6, 10, 12, 13
![Page 35: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/35.jpg)
Ordenamiento topológico
• Dos ordenamientos distintos son:1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12, 13
1, 2, 4, 8, 5, 9, 11, 3, 7, 6, 10, 12, 13
• Pero no son los únicos posibles:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
es igualmente aceptable
![Page 36: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/36.jpg)
Implementación
• Qué se necesita para construir un ordenamiento topológico?
• Suponga que tenemos un array con los grados de entrada de cada vértice
1 0
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 2
11 2
12 2
13 2
![Page 37: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/37.jpg)
Implementación
• Recorrido en amplitud
• Creamos un contenedor (stack o cola) que contiene todos los vértices con grado de entrada 0
1 0
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 2
11 2
12 2
13 2
![Page 38: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/38.jpg)
Implementación
• Usamos una cola
• La cola inicialmente contiene solo el vértice 1
• Podemos sacar 1 de la cola y agregar a nuestro ordenamiento topológico:
1
1 0
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 2
11 2
12 2
13 2
![Page 39: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/39.jpg)
Implementación
• Ahora con el recorrido en amplitud encolamos todos los vértices hijo
• En este caso, decrementamos el grado de entrada de todos los vértices adyacentes al vértice desencolado
1 0
2 0
3 0
4 1
5 1
6 1
7 1
8 1
9 1
10 2
11 2
12 2
13 2
![Page 40: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/40.jpg)
Implementación
• Cada vez que decrementamos el grado de entrada de un vertice verificamos si es cero
• Si es cero encolamos el nodo
• Ahora nuestra cola contiene 2 y 3
1 0
2 0
3 0
4 1
5 1
6 1
7 1
8 1
9 1
10 2
11 2
12 2
13 2
![Page 41: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/41.jpg)
Implementación
• Desencolamos 2, lo agregamos al ordenamiento topológico
1, 2y decrementamos los grados de entrada de los vértices 4 y 5
• Tanto 4 y 5 se reducen a cero, nuestra cola es: 3, 4, 5
1 0
2 0
3 0
4 0
5 0
6 1
7 1
8 1
9 1
10 2
11 2
12 2
13 2
![Page 42: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/42.jpg)
Ejemplo
• Considere el DAG con seis vértices
![Page 43: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/43.jpg)
Ejemplo
• Creamos la tabla con los grados de entrada
1 0
2 1
3 3
4 3
5 2
6 0
![Page 44: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/44.jpg)
Ejemplo
• Cremos una cola donde agregamos 1 y 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
![Page 45: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/45.jpg)
Ejemplo
• Desencolamos (1), decrementamos el grado de entrada de toos los vértices y desencolamos 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
![Page 46: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/46.jpg)
Ejemplo
• Desencolamos 6 y decrementamos los grados de entrada de los adyacentes
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1, 6
![Page 47: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/47.jpg)
Ejemplo
• Desencolamos 2, decrementamos, y encolamos 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1, 6, 2
![Page 48: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/48.jpg)
Ejemplo
• Desencolamos 5, decrementamos, y encolamos el vértice 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1, 6, 2, 5
![Page 49: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/49.jpg)
Ejemplo
• Desencolamos 3, decrementamos 4, y agreagamos 4 al la cola
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1, 6, 2, 5, 3
![Page 50: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/50.jpg)
Ejemplo
• Desencolamos 4, no existen vértices adyacentes para decrementar
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1, 6, 2, 5, 3, 4
![Page 51: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/51.jpg)
Ejemplo
• La cola esta vacía, el ordenamiento tpológico es1, 6, 2, 5, 3, 4
![Page 52: Ordenamiento topológico](https://reader035.vdocuments.co/reader035/viewer/2022062808/5681544e550346895dc26830/html5/thumbnails/52.jpg)
Referencias
[1] Cormen, Leiserson, and Rivest, Introduction to Algorithms, McGraw Hill, 1990, §11.1, p.200.
[1] Cormen, Leiserson, and Rivest, Stein Introduction to Algorithms, McGraw Hill, 2001, §22.
[2] Weiss, Data Structures and Algorithm Analysis in C++, 3rd Ed., Addison Wesley, §9.2, p.342-5.