1 / 52

Ordenamiento topológico

Ordenamiento topológico. Christian von Lücken clucken@pol.una.py 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

iorwen
Download Presentation

Ordenamiento topológico

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ordenamiento topológico Christian von Lücken clucken@pol.una.py Original by Douglas Wilhelm Harder Translated by Christian von Lücken

  2. 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

  3. 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.

  4. Teorema • En el DFS de un grafo no dirigido, tenemos solo arcos tree y back. No existen arcos forward o cross edges.

  5. 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-firstforest. • Entonces existe un camino v ~> u, y entonces v ~> u → v es un ciclo.

  6. Lemma Un 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.

  7. 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.

  8. Algoritmo

  9. 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

  10. 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

  11. 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

  12. 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

  13. Aplicaciones • Secuenciade cursos en un DAG

  14. Aplicaciones • Un DAG representandouna serie de tares • La numeración indicael orden topológicode la tarea • Las flechas verdesrepresentan restricciones de precedencia Ref: The Standard Task Graph http://www.kasahara.elec.waseda.ac.jp/schedule/

  15. 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/

  16. 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

  17. Ordenamiento topológico • Para generar un ordenamiento topológico debemos empezar con un vértice que tenga un grado de entrada 0: 1

  18. 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

  19. Ordenamiento topológico • Elegimos entre 4, 5, o 3: 1, 2, 4

  20. Ordenamiento topológico • Agregamos los vértices que llegan a 4 a los que ignoramos, podemos agreagar el 8 1, 2, 4, 8

  21. 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

  22. 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

  23. Ordenamiento topológico • Podemos agregar 11 a nuestro ordenamiento topológico 1, 2, 4, 8, 5, 9, 11

  24. 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

  25. Ordenamiento topológico • Agregando 3,se puede elegir entre 6 o 7 1, 2, 4, 8, 5, 9, 11, 3, 6

  26. Ordenamiento topológico • Agregando 6 podemos elegir entre los vértices 7 o 10 1, 2, 4, 8, 5, 9, 11, 3, 6, 10

  27. 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

  28. Ordenamiento topológico • En este punto se agrega 12 1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12

  29. Ordenamiento topológico • Finalmente el vértice 13 1, 2, 4, 8, 5, 9, 11, 3, 6, 10, 7, 12, 13

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. Implementación • Recorrido en amplitud • Creamos un contenedor (stack o cola) que contiene todos los vértices con grado de entrada 0

  37. 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

  38. 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

  39. 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

  40. 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

  41. Ejemplo • Considere el DAG con seis vértices

  42. Ejemplo • Creamos la tabla con los grados de entrada

  43. Ejemplo • Cremos una cola donde agregamos 1 y 6 Queue

  44. Ejemplo • Desencolamos (1), decrementamos el grado de entrada de toos los vértices y desencolamos 2 Queue Sort 1

  45. Ejemplo • Desencolamos 6 y decrementamos los grados de entrada de los adyacentes Queue Sort 1, 6

  46. Ejemplo • Desencolamos 2, decrementamos, y encolamos 5 Queue Sort 1, 6, 2

  47. Ejemplo • Desencolamos 5, decrementamos, y encolamos el vértice 3 Queue Sort 1, 6, 2, 5

  48. Ejemplo • Desencolamos 3, decrementamos 4, y agreagamos 4 al la cola Queue Sort 1, 6, 2, 5, 3

  49. Ejemplo • Desencolamos 4, no existen vértices adyacentes para decrementar Queue Sort 1, 6, 2, 5, 3, 4

More Related