Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las...

23

Transcript of Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las...

Page 1: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Algoritmos sobre Grafos

Hugo Franco, PhD

21 de febrero de 2011

Hugo Franco, PhD Algoritmos sobre Grafos

Page 2: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Contenido

1 De�niciones

2 Algoritmos básicos de búsqueda

3 Algoritmos de ruta más corta

4 Algoritmos basados en árboles

Hugo Franco, PhD Algoritmos sobre Grafos

Page 3: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�niciones

Page 4: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

De�niciones sobre Grafos

Par de una lista de nodos y una lista de enlaces, de�nidos a su vezcomo pares del conjunto de nodos.

G ≡ {V,E}V ≡ {v1, v2, . . . , vn}E ≡ {. . . , {vi, vj}, . . . } , i, j ∈ [1, n], i 6= j

Si el orden de los elementos vi y vj en cada par del conjunto deenlace es relevante, se tiene un grafo dirigido

Representaciones en algoritmos:

Lista de Adyacencia: ain, cada ai es la lista de nodos enlazados conel nodo i−ésimoMatriz de Adyacencia: A ≡ aijm×n, aij = 1 sí y sólo sí vi estáconectado con vj , 0 en caso contrario. Se puede extender asignandoa los aij un valor asociado a la intensidad del enlace (matriz de

proximidad) o la propia distancia geodésica de un nodo a otro(matriz geodésica)

Hugo Franco, PhD Algoritmos sobre Grafos

Page 5: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Ciclo, Grafos Acíclicos

Ciclo: secuencia de enlaces adyacentes enun grafo, recorridos sin repetir enlaces ycuyo nodo de partida es el mismo nodo dellegada.

Ciclo Hamiltoniano: aquel que recorretodos sus nodos exactamente una vez(excepto el de partida/llegada).

Ciclo Euleriano: ciclo que contiene todoslos enlaces de un grafo, cada uno de ellosuna única vez.

Hugo Franco, PhD Algoritmos sobre Grafos

Page 6: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Grafo Dirigido Acíclico

Grafo dirigido que no tiene ciclos

para cada nodo, no hay un camino directo queempiece y termine en éste.

Fuente: nodo sin enlaces de entrada,

Sumidero: nodo sin enlaces de salida.

Un GDA (DAG) �nito tiene por lo menos unafuente y un sumidero.

La profundidad de un nodo es la longitud delcamino más largo desde una fuente a éste

La altura de un nodo es la mayor longitud delcamino más largo entre éste y un sumidero.

La longitud de un DAG �nito es la longitud(número de arcos) del camino más largo.

máxima altura de todas las fuentes, máximaprofundidad de todos los sumideros.

Hugo Franco, PhD Algoritmos sobre Grafos

Page 7: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Etiquetado

Los recorridos sobre grafos exigen usualmente almacenar de formaaccesible el Estado de cada nodo (y en ocasiones, enlace) del grafosegún haya sido recorrido / analizado durante el proceso de análisis/ búsqueda

La forma de almacenar ese estado se puede implementar a través deatributos asignados a los nodos que representen el estado en el quese encuentra el nodo con un valor asociado a cada estado,

El estado de un nodo puede constar de uno o más parámetros,simbólicos o numéricos. En casos de representaciones simbólicas, sesuelen emplear enumeraciones descriptivas, que determinan laimplementación de las reglas de evolución de los nodos del grafo

Hugo Franco, PhD Algoritmos sobre Grafos

Page 8: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Etiquetado

Los recorridos sobre grafos exigen usualmente almacenar de formaaccesible el Estado de cada nodo (y en ocasiones, enlace) del grafosegún haya sido recorrido / analizado durante el proceso de análisis/ búsqueda

La forma de almacenar ese estado se puede implementar a través deatributos asignados a los nodos que representen el estado en el quese encuentra el nodo con un valor asociado a cada estado,

El estado de un nodo puede constar de uno o más parámetros,simbólicos o numéricos. En casos de representaciones simbólicas, sesuelen emplear enumeraciones descriptivas, que determinan laimplementación de las reglas de evolución de los nodos del grafo

Hugo Franco, PhD Algoritmos sobre Grafos

Page 9: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Etiquetado

Los recorridos sobre grafos exigen usualmente almacenar de formaaccesible el Estado de cada nodo (y en ocasiones, enlace) del grafosegún haya sido recorrido / analizado durante el proceso de análisis/ búsqueda

La forma de almacenar ese estado se puede implementar a través deatributos asignados a los nodos que representen el estado en el quese encuentra el nodo con un valor asociado a cada estado,

El estado de un nodo puede constar de uno o más parámetros,simbólicos o numéricos. En casos de representaciones simbólicas, sesuelen emplear enumeraciones descriptivas, que determinan laimplementación de las reglas de evolución de los nodos del grafo

Hugo Franco, PhD Algoritmos sobre Grafos

Page 10: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

Algoritmos Básicos de Búsqueda

Page 11: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Problema del Ordenamiento Topológico

Dado un Grafo Dirigido Acíclico, el problema del ordenamientotopológico consiste en

Encontrar un ordenamiento de los vértices tal que todos ellos se listenhacia adelante (nodo inicial, nodo �nal) de acuerdo a sus enlaces

Utilidad: Asignar una prioridad a una lista de tareas con restriccionesde precedencia (hacer primero la tarea A porque una tarea Bdepende del resultado de A, etc...)

Se asume que el grafo está representado como una lista deadyacencias

Hugo Franco, PhD Algoritmos sobre Grafos

Page 12: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Búsqueda en Profundidad

Dada una lista de vértices V y una lista de enlaces E, hacer

Para i = 1 hasta n

Si vi no está marcado como visitado,

RecorrerProfundidad(i)

Fin

Función RecorrerProfundidad(índice i)

Marcar vi como visitado

Agregar i a la lista de recorrido

Usando la lista de enlaces e, para cada vecino vj de vi

Si vj no está marcado como visitado

RecorrerProfundidad(j)Agregar el enlace que une a vi con vj al árbol de recorrido

Regresar

Hugo Franco, PhD Algoritmos sobre Grafos

Page 13: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Búsqueda en Anchura

Dada una lista de vértices V y una lista de enlaces E, de�niendo unacola de prioridad Q, hacer

Marcar el nodo inicial vi como visitado

Añadir i a la lista de recorrido

encolar vi en Q

Mientras Q 6= Øextraer ui desde QPara cada vecino uj de ui

Si uj no esta marcado como visitadoagregar uj a Qmarcar uj como visitadoAgregar el enlace que une a ui con uj al árbol de recorrido

Hugo Franco, PhD Algoritmos sobre Grafos

Page 14: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

Algoritmos de Ruta más corta

Page 15: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Algoritmo de Bellman�FordAlgoritmo de programación dinámica

Encontrar la ruta más corta desde todos los nodos a un nodo sumidero t. Sesuele calcular las longitudes de los caminos más cortos así que posteriormentese pueden reconstruir las rutas fácilmente. La idea de algoritmo es

1 Para cada nodo v, encontrar la longitud de la ruta más corta a t que usaal menos una arista o etiquetar ∞ si no hay tal ruta.

2 Supóngase para todo v se tienen las longitudes de la ruta más corta hastat que usa i− 1 o menos enlaces. La ruta más corta desde v a t que usa io menos enlaces primero irá a algún vecino xj de v y tomar la ruta máscorta desde xj hasta t que usa i− 1 o menos enlaces (paso 1). Así, senecesita tomar únicamente los mínimos de la distancia entre todos losvecinos xj de v

3 Repetir mientras i ≤ n− 1

Hugo Franco, PhD Algoritmos sobre Grafos

Page 16: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Pseudocódigo Bellman�Ford

1 Inicializar d[v][0] = ∞ for v 6= t. d[t][i]=0 ∀ i.

2 Para i = 1 hasta n− 1

1 Para cada v 6= t

1 d[v][i] = min(v,xj)∈E

(len(v,x) + d[x][i-1])

3 Para cada v, escribir d[v][n-1].

Hugo Franco, PhD Algoritmos sobre Grafos

Page 17: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Todas las distancias mínimas: Floyd�Warshall

Sea A[i][j] la matriz de proximidad del grafo

En vez de incrementar el número de enlaces en la ruta, se recorreráel grafo por vértices

Se incrementará el contador sobre el conjunto de vértices que seadmiten como intermedios en la ruta estimada

Usando la matriz de i, después de cada iteración del bucle exterior,A[i][j] será igual a la longitud del camino más corto de vi a vj quepuede usar los vértices en la secuencia {1, 2, . . . , k}:Para k = 1 hasta n

Para cada i, j

A[i][j] = min( A[i][j], (A[i][k] + A[k][j]); .

Aunque el algoritmo tarda del orden de n3, donde n es el número denodos, el código es simple y compacto.

Hugo Franco, PhD Algoritmos sobre Grafos

Page 18: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Todas las distancias mínimas: Dijkstra

Sea un grafo dirigido conectado de N nodos, sea x el nodo origen y Dn

un vector (array) de distancias a los diferentes nodos indexados por n

1 Inicializar el array de todas las distancias en Dn con un valor in�nitorelativo (valor inicial desconocido), exceptuando la de x que se debecolocar en 0 (la distancia de x a sí mismo es 0).

2 Sea k = x (k es el nodo actual).

3 Recorrer todos los nodos adyacentes de k (denominados vi), excepto losmarcados como �evaluados�

4 Si la distancia desde x hasta vi guardada en Di es mayor que la distanciadesde x hasta k sumada a la distancia desde k hasta vi, ésta se sustituyecon la segunda nombrada, esto es:

si Di > Dk + d(k, vi) entonces Di = Dk + d(k, vi)

5 Marcar como �evaluado�a k.

6 El siguiente �nodo actual� es el de menor valor en Di (puede hacersealmacenando los valores en una cola de prioridad); volver a 3 mientrasexistan nodos no �evaluados�.

Hugo Franco, PhD Algoritmos sobre Grafos

Page 19: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Algoritmo de Dijkstra: Ejemplo

Se añade A a QMientras Q 6= Ø

Se escoge v ∈ Q con menorD y se marca como visitado(sale de Q)

Se añaden a Q los vecinosno marcados de v,denominados xSe actualiza D de cada xsi la distancia queatraviesa a v hasta x esmenor que la distanciahasta x de la iteraciónanterior

Hugo Franco, PhD Algoritmos sobre Grafos

Page 20: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

Algoritmos basados en Árboles

Page 21: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Árbol de ExpansiónSpanning tree

Un árbol de expansión de un grafo es una estructura de datos enárbol que toca todos los vértices del grafo

Sólo tienen sentido en grafos de un sólo componente (conexos)

Un árbol de expansión mínimo es un árbol de expansión cuya sumade longitudes de los enlaces es tan pequeña como sea posible en ungrafo dado (puede haber más de uno)

Se llama �tamaño del árbol de expansión� a la suma de laslongitudes de los enlaces.

Hugo Franco, PhD Algoritmos sobre Grafos

Page 22: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Algoritmo de Prim

El algoritmo de Prim sobre un grafo permite construir el árbol deexpansión mínimo (MST) del mismo. Puede verse como una versiónsimpli�cada del algoritmo de Dijkstra

1 Seleccionar un nodo arbitrario de inicio s. Inicializar el árbol T = s.

2 Repetidamente agregar el enlace más corto incidente a T en cadanodo (el enlace más corto que tiene un vértice dentro de los enlacesde T y el otro no hasta que el árbol contenga todos los nodos

Hugo Franco, PhD Algoritmos sobre Grafos

Page 23: Algoritmos sobre Grafos - dfmf.uned.eshfranco/int_comp/ic_clase06.pdf · suele calcular las longitudes de los caminos más cortos así que posteriormente ... 1 Para cada nodo v, ...

De�nicionesAlgoritmos básicos de búsqueda

Algoritmos de ruta más cortaAlgoritmos basados en árboles

Algoritmo de Kruskal

Otra forma de encontrar el árbol de expansión mínimo de un grafomuy conocida es el Algoritmo de Kruskal.

La idea es la de ordenar los enlaces por longitud y examinar cadauno de ellos del más corto al más largo. Se debe poner cada enlaceen un conjunto de sub�árboles si no forma un ciclo con los enlacesescogidos con anterioridad

Hugo Franco, PhD Algoritmos sobre Grafos