Ordenamiento topológico

Slides:



Advertisements
Presentaciones similares
Tania Guzmán García Luis González Varela Alexandre González Rivas
Advertisements

ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
GRAFOS: ALGORITMOS FUNDAMENTALES
Sesión 3: Teoría de Grafos
Complejidad Algorítmica: Análisis de algoritmos
Ordenamiento Topológico
ESTRUCTURAS LINEALES UNIDAD 3.
MATEMÁTICAS DISCRETAS.
“GRAFOS” Chacón Zamora José Christian González García Andrea
Búsqueda Informada Heurísticas.
Método de Ford-Fulkerson
Solución de problemas por búsqueda inteligente

Definiciones: conjuntos, grafos, y árboles
Diplomado en Informática Aplicada
Tema Nº4.
Teoría de Grafos.
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
AED I. Estructuras de Datos.
Cecilia Laborde González
GRAFOS HUGO ARAYA CARRASCO.
Teoría de Grafos.
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Estructura de Datos Lineales
Matemáticas para Ciencias de la Computación MCC3182
PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS
Material de apoyo Unidad 4 Estructura de datos
Ejemplos de Grafos: Red de tráfico con caminos y cruces.
Grafos. Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por.
Teoria de grafos.-clase 4
Definiciones: conjuntos, grafos, y árboles
Árbol recubridor mínimo Distancias
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos

Métodos de Búsqueda Informada. Búsqueda de la mejor Ruta En esta sección no sólo nos interesa encontrar una posible ruta, sino obtener aquella ruta que.
Diseño y análisis de algoritmos
Definición, propiedades, recorridos x a q yb w e vu fo.
Parte II. Algorítmica. 3. Algoritmos voraces.

Agustín J. González ELO-320: Estructura de Datos y Algoritmos
Planificación Temporal de Proyectos Informáticos
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Matemáticas Discretas
s t a c b d Grafos.
Problema de inclusión en una Curva Digital Por Orellana Muñoz, Alfonso Paz Vicente, Rafael Pérez Medina, Gerardo Rodríguez Naranjo.
Sesión 3: Teoría de Grafos
PROBLEMAS DE SATISFACCIÓN DE RESTRICCIONES
Minimum Spanning Tree (Árbol de Expansión Mínima)
Tema 10: Algoritmos voraces
Definiciones: conjuntos, grafos, y árboles
1 Flujo Máximo Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Agustín J. González ELO-320: Estructura de Datos Y Algoritmos
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Minimum Spanning Tree (Árbol de Expansión Mínima)
Algoritmos y Estructura de Datos
Cecilia Laborde González
Heap Fibonacci heap de Fibonacci es una estructura de datos similar a un heap binomial pero con mejor coste amortizado. se utiliza para mejorar el tiempo.
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
ARBOLES GENERALIZADOS
GRAFOS.
M.C. Meliza Contreras González
Matrices Pág. 1. Matrices Pág. 2 Se llama matriz traspuesta de A, y se representa por A t a la matriz que resulta de intercambiar las filas y las columnas.
Matemáticas Discretas MISTI
Recorridos de grafos Segunda Parte M.C. Meliza Contreras González.
Algoritmos voraces Códigos de Huffman. Descripción del problema Tenemos un archivo de entrada. Asumiremos que el archivo está compuesto de bytes (enteros.
Transcripción de la presentación:

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 la implementación utilizando una tabal de grados de entrada

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.

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

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.

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.

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.

Algoritmo

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

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

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

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

Aplicaciones Secuencia de cursos en un DAG

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 http://www.kasahara.elec.waseda.ac.jp/schedule/

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 http://www.kasahara.elec.waseda.ac.jp/schedule/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ejemplo Considere el DAG con seis vértices

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

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

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

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

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

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

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

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

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

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.