La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ordenamiento topológico

Presentaciones similares


Presentación del tema: "Ordenamiento topológico"— Transcripción de la presentación:

1 Ordenamiento topológico
Christian von Lücken Original by Douglas Wilhelm Harder Translated by Christian von Lücken

2 Ordenamiento topológico Topological 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-first forest. 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

9 Algoritmo

10 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

11 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

12 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

13 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

14 Aplicaciones Secuencia de cursos en un DAG

15 Aplicaciones Un DAG representando una serie de tares
La numeración indica el orden topológico de la tarea Las flechas verdes representan restricciones de precedencia Ref: The Standard Task Graph

16 Application Otro orden topológico de un DAG
El camino critico en rojo es la secuencia de tareas que toman más tiempo Ref: The Standard Task Graph

17 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

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

19 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

20 Ordenamiento topológico
Elegimos entre 4, 5, o 3: 1, 2, 4

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

22 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

23 Ordenamiento topológico
Eliminando el 5 de consideración podemos ahora elegir los vértices 3 o 9 Pero 3 debe preceder a 10: 1, 2, 4, 8, 5, 9

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

25 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

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

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

28 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

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

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

31 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

32 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

33 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

34 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

35 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

36 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 2 3 4 5 6 7 8 9 10 11 12 13

37 Implementación Recorrido en amplitud
Creamos un contenedor (stack o cola) que contiene todos los vértices con grado de entrada 0 1 2 3 4 5 6 7 8 9 10 11 12 13

38 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 2 3 4 5 6 7 8 9 10 11 12 13

39 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 2 3 4 5 6 7 8 9 10 11 12 13

40 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 2 3 4 5 6 7 8 9 10 11 12 13

41 Implementación Desencolamos 2, lo agregamos al ordenamiento topológico
1, 2 y 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 2 3 4 5 6 7 8 9 10 11 12 13

42 Ejemplo Considere el DAG con seis vértices

43 Ejemplo Creamos la tabla con los grados de entrada 1 2 3 4 5 6

44 Ejemplo Cremos una cola donde agregamos 1 y 6 1 2 3 4 5 6 Queue 1 6

45 Ejemplo Desencolamos (1), decrementamos el grado de entrada de toos los vértices y desencolamos 2 1 2 3 4 5 6 Queue Sort 1 6 2

46 Ejemplo Desencolamos 6 y decrementamos los grados de entrada de los adyacentes 1 2 3 4 5 6 Queue Sort 1, 6 2

47 Ejemplo Desencolamos 2, decrementamos, y encolamos 5 1 2 3 4 5 6 5
2 3 4 5 6 Queue Sort 1, 6, 2 5

48 Ejemplo Desencolamos 5, decrementamos, y encolamos el vértice 3 1 2 3
2 3 4 5 6 Queue Sort 1, 6, 2, 5 3

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

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

51 Ejemplo La cola esta vacía, el ordenamiento tpológico es1, 6, 2, 5, 3, 4

52 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


Descargar ppt "Ordenamiento topológico"

Presentaciones similares


Anuncios Google