Sei sulla pagina 1di 26

Captulo 6 Algoritmos de grafos y caminos

Grafos y caminos: Definiciones (I)


Grafo: G(V, A)
Conjunto de vrtices (nodos) conectados a travs de un conjunto de aristas (arcos) Las aristas pueden tener un coste o peso asociado Digrafo: grafo dirigido (aparecen flechas, aristas con direccin)

Camino:
Secuencia de vrtices conectados por aristas Longitud sin pesos del camino: nmero de aristas Longitud con pesos del camino: suma del coste de las aristas de ese camino

Otros conceptos:
Los vrtices adyacentes de un nodo son aquellos conectados mediante una nica arista Un ciclo en un grafo dirigido es un camino que empieza y termina en el mismo vrtice, con al menos una arista Grafos densos vs dispersos (muchas o pocas aristas)
Algoritmos existentes (E. Snchez beda) - 2

ESCUELA TCNICA SUPERIOR DE INGENIERA

Grafos y caminos: Definiciones (II)


Ejemplo:
Arista o arco Vrtice o nodo

2 1 3

Es un grafo dirigido porque las aristas tienen direccin (flecha)

5
Los nodos 2 y 5 son vrtices adyacentes del nodo 1 (vecinos)
ESCUELA TCNICA SUPERIOR DE INGENIERA

4
Grado de entrada del nodo 5: 1 Grado de salida del nodo 5: 2

Camino

Algoritmos existentes (E. Snchez beda) - 3

Grafos y caminos: Ejemplos reales


Ejemplo: MLP, modelos de markov ....
First hidden layer -1 -2.45 2.65 1 1 Second hidden layer 1 NT1 -1 NT2 -1 -1 1 T2 T3 T1 0.29 0.876 0.275

x1

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 4

Grafos y caminos: Representacin (I)


Matriz de adyacencia:
Matriz bidimensional para representar grafos densos
Grafo sin pesos: Cada elemento representa la existencia (0/1) de la arista entre dos nodos Grafo con pesos: Cada elemento representa el coste o peso de la arista entre dos nodo. Si no hay arista se guarda un infinito lgico

El espacio consumido es cuadrtico en el nmero de vrtices


1 2 3 4 5 1 2 3 4 5 6 1 0 1 0 0 0 0 0 2 3 0 2 1 0 0 0 0 3 7 0 8 3 0 1 0 1 1 4 0 0 0 0 1 4 5 0 2 5 1 0 0 0 0 5 1 6 0 6 5 10 7 0
2 1 3

3
1

5
6

10 2
5

1
4

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 5

Grafos y caminos: Representacin (II)


Lista de adyacencia:
Vector de listas enlazadas para representar grafos dispersos Para cada vrtice se tiene una lista con todos los nodos adyacentes
El orden de los nodos en las listas no es importante, se inserta por la cabeza Si es un grafo con pesos tambin se guarda el peso de la arista en los elementos de las listas

El espacio consumido es lineal en el nmero de vrtices

1
2 1 3

2 3

2 3 4
5 4

3 3 4
Algoritmos existentes (E. Snchez beda) - 6

ESCUELA TCNICA SUPERIOR DE INGENIERA

Grafos y caminos: Representacin (III)


Internamente los vrtices no se gestionan directamente con su nombre, se les asigna un nmero interno Informacin adicional
Normalmente los nodos de un grafo suelen tener un nombre asociado Pueden tener otros valores asociados como las coordenadas x.y si se representa grficamente, el color, etc

La Matriz de adyacencia no permite almacenar esa informacin de los vrtices (la lista de adyacencia s)
Si se utiliza la matriz de adyacencia es necesario tener un diccionario para guardar la informacin adicional de los vrtices, as como la relacin entre esa informacin y los nmeros internos (tpicamente mediante una tabla hash) Sin embargo, aunque consuma ms memoria en grafos dispersos y no permita almacenar la informacin adicional, los algoritmos son ms sencillos y rpidos
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 7

Grafos y caminos: Ejemplos (I)


Grafo completo (nmero de aristas mximo posible):
Bytes (matriz normal): 800 Bytes (matriz dispersa): 1244 (+55%)

No se han representado las flechas indicando la direccin


ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 8

Grafos y caminos: Ejemplos (II)


Grafo con la mitad del nmero de aristas mximo posible:
Bytes (matriz normal): 800 Bytes (matriz dispersa): 644 (-19%)

No se han representado las flechas indicando la direccin


ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 9

Grafos y caminos: Ejemplos (III)


Grafo disperso, con un 17% del nmero de aristas mximo Bytes (matriz normal): 800 posible: Bytes (matriz dispersa): 248 (-68%)

No se han representado las flechas indicando la direccin


ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 10

Grafos y caminos: Algoritmos


Algoritmos sencillos pero delicados ya que si el grafo es grande los tiempos pueden ser importantes Ejemplos de algunas aplicaciones reales:
Calcular la ruta ms rpida en un transporte Dirigir el correo electrnico a travs de una red de ordenadores ... Gestin de proyectos (secuencia de tareas, detectar tareas crticas, etc)

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 11

Grafos y caminos: Operaciones


Bsicas:
Insertar un vrtice Insertar una arista Borrar una arista Borrar un vrtice y aristas asociadas
Nota: en un ABB las operaciones de insercin y borrado siempre implican insertar o borrar un vrtice y varias aristas al mismo tiempo

Buscar vrtices a partir de un vrtice dado

Genricas (tiles, pero ms complejas):


Recorrer el grafo Determinar si existe un camino desde el vrtice i al vrtice j Determinar el nmero de caminos desde el vrtice i al vrtice j Encontrar el camino ms corto desde el vrtice i al vrtice j

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 12

Insercin y borrado de vrtices y aristas


La operacin depende de la estructura de datos, pero es conceptualmente similar Matriz de adyacencia: 1 1 1 0
Insertar un vrtice
Se aade al final una fila y columna
1 1 0 1 0 0 0 1 0 1 1 0

Insertar una arista


Se cambia el contenido de la celda
1 1 1 0 1 1 0 0

Borrar una arista


Se pone a 0 o infinito la celda asociada

1 0 1 0

0 1 1 0

Borrar un vrtice y aristas asociadas


Se elimina la fila y columna asociadas Con listas de adyacencia, qu hay que hacer para insertar y borrar?
ESCUELA TCNICA SUPERIOR DE INGENIERA

1 1 0

1 1 0

0 1 0 Eliminar nodo 2

Algoritmos existentes (E. Snchez beda) - 13

Clculo de los grados de entrada y salida


Dado un vrtice i, el clculo depende de la representacin utilizada en el grafo Con matriz de adyacencia
Simplemente hay que sumar la fila (grado de salida) o la columna (grado de entrada) correspondiente
GE(V5)=3

GS(V5)=2

Con lista de adyacencia


Grado de Salida: nmero de nodos en la lista del vrtice i Grado de Entrada: ?
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 14

Nmero de caminos entre dos vrtices (I)


Descripcin del problema:
Encontrar el nmero de caminos de longitud L entre dos vrtices Utilizando la matriz de adyacencia como representacin Ejemplo: 1 1 1 0 Ady = 1 1 1 0 0 1 0 0 0 1 1 0

Del vrtice 1 al vrtice 2 hay:


1 camino de longitud 1: 12; 2 caminos de longitud 2: 112; 122; 5 caminos de longitud 3: 1122; 1222; 1112; 1212; 1312; 12 caminos de longitud 4: 11122; ...
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 15

Nmero de caminos entre dos vrtices (II)


Idea:
Es directo calculando la potencia L-sima de la matriz de adyacencia Ady = 1 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 7 5 5 0 Ady3 = 5 4 3 0 5 3 4 0 4 3 3 0

Ady2 = 3 2 2 0
2

Ady4 = 2 1 1 0 17 12 12 10 12 9 8 7 12 8 9 7 0 0 0 0

2 2 1 0

2 1 2 0

Ady (i, j )

i =1, j = 2

k =1, n vrtices

Ady(i, k ) Ady(k , j ) = 2

Ady = 1 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0

Ady = 1 1 0 0 1 0 1 0 0 1 1 0

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 16

Grafos y caminos: Exploracin o recorrido (I)


Se trata de recorrer los nodos visitando cada nodo exactamente una vez Un grafo se explora de forma anloga a un rbol, pero existe una diferencia importante:
rboles
Existe nodo raz Todos los nodos son siempre alcanzables desde la raz Nmero de aristas controlado

Grafos dirigidos
No necesitan tener nodo raz Puede haber nodos que no sean alcanzables desde otro vrtice Nmero de aristas variable

Dado un vrtice se pueden buscar todos los nodos alcanzables desde l:


Bsqueda en profundidad Bsqueda en anchura
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 17

Grafos y caminos: Bsqueda en profundidad (I)


Bsqueda en profundidad en un rbol
Visitar el nodo de partida Seguir las aristas tan profundamente como sea posible para visitar los nodos alcanzables desde l Diferencia importante con un Volver atrs cuando sea necesario digrafo: Dado que no existen ciclos

Recorridos en profundidad tpicos:


De forma recursiva o con una pila
15 6 3 2 4 9
Pre-orden 15,6,3,2,4,7,13,9,18,17,20
ESCUELA TCNICA SUPERIOR DE INGENIERA

en un rbol, no es necesario controlar si esos vrtices ya han sido visitados

15 18 6 3 2 4 9
Orden central 2,3,4,6,7,9,13,15,17,18,20

15 18 6 3 2 4 9
Post-orden 2,4,3,9,13,7,6,17,20,18,15
Algoritmos existentes (E. Snchez beda) - 18

18 7 13 17 20

7 13

17 20

7 13

17 20

Grafos y caminos: Bsqueda en profundidad (II)


Bsqueda en profundidad en un digrafo
Visitar el nodo de partida Seguir las aristas tan profundamente como sea posible para visitar los nodos alcanzables desde l Y QUE NO HAYAN SIDO YA
VISITADOS

Volver atrs cuando sea necesario


Tpico: guardar los nodos en una pila segn se visitan, para volver atrs se desapila. La recursividad es una forma cmoda de hacerlo

Ejemplo:
2 1 3

La vuelta atrs aparece cuando, despus de procesar algunos nodos, es necesario volver ms tarde a algunos nodos que ya fueron procesados o ignorados en una pasada anterior

Vrtice 1

5
ESCUELA TCNICA SUPERIOR DE INGENIERA

Vrtice 3 Vrtice 2 el 2 ni el 1) Vrtice 4 Vrtice 3 Vrtice 3 (ya visitado) Vrtice 5 Vrtice 3 (ya visitado) Vrtice 4 Vrtice 3 (ya visitado)
Algoritmos existentes (E. Snchez beda) - 19

Vrtice 5

(ojo, no se visitan ni

Grafos y caminos: Bsqueda en profundidad (III)


Algoritmo
Visitado = BusquedaProfundidad (ADY, v, Visitado) % Busca en profun. desde v Visitado[v]= 1; % lo marca como visitado Vecinos = AdyacentesGrafo (ADY, v); % obtiene nodos adyacentes al vrtice v 1 For k = 1 to Tamao(Vecinos) w = Vecinos[k]; 3 if Visitado[w] = 0 Visitado = BusquedaProfundidad (ADY, w, Visitado); end 3 end 1 Fin

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 20

Grafos y caminos: Bsqueda en anchura (I)


Bsqueda en anchura en un rbol
Visitar el nodo de partida Seguir las aristas para visitar nicamente los nodos adyacentes a l Diferencia importante con un Volver atrs cuando sea necesario digrafo: Dado que no existen ciclos

Recorrido tpico de izq. a derecha:


Con una cola

en un rbol, no es necesario controlar si esos vrtices ya han sido visitados

N1 N2 N4 N7
ESCUELA TCNICA SUPERIOR DE INGENIERA

N1

N3 N5 N6

N2, N3 N4, N5, N6 N7

Algoritmos existentes (E. Snchez beda) - 21

Grafos y caminos: Bsqueda en anchura (II)


Bsqueda en anchura en un digrafo
Visitar el nodo de partida Seguir las aristas para visitar nicamente los nodos adyacentes a l Y QUE NO HAYAN SIDO YA VISITADOS Volver atrs cuando sea necesario
Tpico: guardar los nodos en una cola segn se visitan, para volver al primer nodo del nivel completado fcilmente

Ejemplo:
2 1 3

Vrtice 1
Vrtices 2, 5 Vrtices 3, 3, 4 Vrtice 3

Vrtice 5
Vrtices 3, 4 Vrtice 3
(ojo, no se visitan ni el 2 ni el 1)

5
ESCUELA TCNICA SUPERIOR DE INGENIERA

4
Algoritmos existentes (E. Snchez beda) - 22

Grafos y caminos: Bsqueda en anchura (III)


Algoritmo
Visitado = BusquedaAnchura (ADY, v, Visitado) % Busca en anchura desde v Visitado[v]= 1; %lo marca como visitado Cola = CrearCola(); Cola = Encolar (Cola, v); 1 while ( Vacia(Cola) = 0 ) % si quedan nodos en la cola se continua [v, Cola] = Desencolar (Cola); % devuelve y elimina de la Cola el vrtice v Vecinos = AdyacentesGrafo (ADY, v); %obtiene nodos adyacentes al vrtice v 2 For k = 1 to Tamao(Vecinos) w = Vecinos[k]; 3 if Visitado[w] = 0 Visitado[w] = 1; Cola = Encolar(Cola, w); end 3 end 2 end 1 Fin
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 23

Grafos y caminos: Ejemplo bsquedas (I)


Ejemplo I:
Matriz de adyacencia:
1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11

7 5

6 1 4 11

2 3

10
Si se almacenan los nodos en otro orden dentro de la matriz cambia el recorrido?

Bsqueda en anchura desde 1:

1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 7
Bsqueda en profundidad desde vrtice 1: ? Bsqueda en profundidad desde vrtice 8: ?
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 24

Grafos y caminos: Ejemplo bsquedas (II)


Ejemplo II:
Matriz de adyacencia:
1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11

Suponiendo que el orden en que estn almacenados los nodos en la matriz de adyacencia es A-B-C-D-E-F... (el orden alfabtico)

Bsqueda en anchura desde 1 (A): ? Bsqueda en profundidad desde vrtice 1 (A): ? Bsqueda en profundidad desde vrtice 8 (H): ?
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 25

Grafos y caminos: Exploracin o recorrido (II)


Recorrer todos los nodos de un grafo visitando cada nodo exactamente una vez:
Se puede utilizar la bsqueda en profundidad o en anchura Seleccionando nuevos vrtices de partida cuando sea necesario hasta que todos los vrtices hayan sido visitados.
RecorreGrafo (ADY) % Recorre todos los nodos de un grafo dado por ADY nv = NumeroVerticesGrafo(ADY); 1 For i= 1 to nv Visitado[i]= 0; % inicializa vector de flags para saber si se ha visitado end 1 2 while ( Suma(Visitado) < nv ) % si quedan nodos sin visitar se continua v = EligeElemNulo (Visitado); %elige un nodo no visitado Visitado = BusquedaProfundidad(ADY, v, Visitado); %los anota en Visitado end 2 Fin
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 26

Bsqueda del camino mnimo


Es un problema de especial relevancia
Dado un origen y un destino Cul es el mejor camino?

Existen variantes del problema


Sin pesos Con pesos positivos Con pesos negativos
Orden creciente de dificultad

Son algoritmos conceptualmente similares


Suponen un punto de origen y calculan los caminos mnimos desde ese punto a todos los dems vrtices

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 27

Bsqueda del camino mnimo sin pesos (I)


Longitud de un camino: nmero de aristas que lo forman Caso especial del camino mnimo con pesos positivos
Tiene una solucin ms eficiente al ser todos los pesos 0 1

Consideraciones previas:
Puede que no exista ningn camino Se descubre despus de buscar Ejemplo: 112 Hay que explorar TODOS los caminos existentes que van de origen a destino, y elegir el de longitud mnima
2891011 291011 2391011 231011 2341011 234511 23411 234567891011

8
ORIGEN

7 5

6 1 4

2 3

DESTINO

11

10

ESCUELA TCNICA SUPERIOR DE INGENIERA

...

Algoritmos existentes (E. Snchez beda) - 28

Bsqueda del camino mnimo sin pesos (II)


Idea (estrategia de Pulgarcito+):
1 FASE (dejar las migas de pan):
Marcar cada nodo procesado con su distancia mnima al origen

2 FASE (recoger las migas de pan):


Desde el destino (si se ha llegado) ir cogiendo los nodos de menor distancia hasta el origen para reconstruir el camino mnimo (se toma una decisin en cada bifurcacin)

Ejemplo:
ORIGEN

FASE 1
ORIGEN

FASE 2
2 1 3 3
1 3?1 3 5?5

2 1
Ojo, al nodo 5 hay un camino de distancia mayor, pero hay que poner la mnima
ESCUELA TCNICA SUPERIOR DE INGENIERA

4
DESTINO

4
DESTINO

Algoritmos existentes (E. Snchez beda) - 29

Bsqueda del camino mnimo sin pesos (III)


FASE 1
Empezando en origen, procesar los nodos en orden segn la distancia al origen, actualizando la distancia de los mismos al origen
Una bsqueda en anchura permite calcular fcilmente la distancia mnima de cada nodo al origen Si se llega a un nodo ya visitado, el nuevo camino ser ms largo, no hay que actualizar la distancia de dicho nodo

FASE 2
Desde destino simplemente hay que coger el nodo vecino que permita llegar a l y que tenga una distancia mnima al origen (nmero de migas de pan) menor

Nota: Adems el vector de distancias (dist) se utiliza para llevar la cuenta de los nodos visitados (aquellos cuya distancia no es infinita)
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 30

Bsqueda del camino mnimo sin pesos (IV)


Algoritmo (parte)
Dist = BusqCaminoMinSinPesos (ADY, or, de) % Busca cam. Min (sin pesos) %FASE 1 %inicialmente Dist vector de inf Tiempo de ejecucin ? Dist[or] = 0; %lo marca como visitado Cola = CrearCola(); Cola = Encolar (Cola, or); 1 while ( Vacia(Cola) = 0 ) % si quedan nodos en la cola se continua [v, Cola] = Desencolar (Cola); % devuelve y elimina de la Cola el vrtice v Vecinos = AdyacentesGrafo (ADY, v); %obtiene nodos adyacentes al vrtice v 2 For k = 1 to Tamao(Vecinos) w = Vecinos[k]; 3 if Dist[w] = inf Dist[w] = Dist[v] + 1; %lo marca como visitado Cola = Encolar(Cola, w); Es posible terminar antes si se aade otra comprobacin (Cuando w sea el destino, se puede end 3 parar porque seguro que tenemos el camino ms corto) end 2 Adems, durante la fase I se puede usar un vector adicional que contenga el nodo anterior. As se end 1 simplifica la fase II, empezando desde el destino, Fin podemos saber directamente cual es el nodo anterior
rpidamente.
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 31

Bsqueda del camino mnimo: Ejemplo real (I)


Arguelles Moncloa Moncloa CiudadUniversitaria CiudadUniversitaria Metropolitano Metropolitano - GuzmanElBueno GuzmanElBueno CuatroCaminos CuatroCaminos NuevosMinisterios NuevosMinisterios GregorioMaraon GregorioMaraon AlonsoCano AlonsoCano Canal Canal-IslasFilipinas IslasFilipinas GuzmanElBueno CuatroCaminos Canal Canal Quevedo Quevedo SanBernardo Arguelles SanBernardo SanBernardo Bilbao Bilbao Iglesia Iglesia-RiosRosas CuatroCaminos - RiosRosas
ESCUELA TCNICA SUPERIOR DE INGENIERA

Cmo vamos de Canal a RiosRosas ?

Otra informacin
Cada tramo (arco) podra tener informacin adicional sobre el tiempo medio requerido o la distancia en metros (sera un grafo con pesos positivos) Podra ser diferente segn la direccin Adems, para cada estacin (vrtice) se podra conocer las coordenadas geogrficas en las que se encuentra para facilitar la representacin del grafo
Algoritmos existentes (E. Snchez beda) - 32

Bsqueda del camino mnimo: Ejemplo real (II)


Arguelles Moncloa Moncloa CiudadUniversitaria CiudadUniversitaria Metropolitano Metropolitano - GuzmanElBueno GuzmanElBueno CuatroCaminos CuatroCaminos NuevosMinisterios NuevosMinisterios GregorioMaraon GregorioMaraon AlonsoCano AlonsoCano Canal Canal-IslasFilipinas IslasFilipinas GuzmanElBueno CuatroCaminos Canal Canal Quevedo Quevedo SanBernardo Arguelles SanBernardo SanBernardo Bilbao Bilbao Iglesia Iglesia-RiosRosas CuatroCaminos - RiosRosas
ESCUELA TCNICA SUPERIOR DE INGENIERA

Diccionario:
vrtice 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 clave AlonsoCano

SanBernardo
Algoritmos existentes (E. Snchez beda) - 33

Bsqueda del camino mnimo: Ejemplo real (III)


Arguelles Moncloa Moncloa CiudadUniversitaria CiudadUniversitaria Metropolitano Metropolitano - GuzmanElBueno GuzmanElBueno CuatroCaminos CuatroCaminos NuevosMinisterios NuevosMinisterios GregorioMaraon GregorioMaraon AlonsoCano AlonsoCano Canal Canal-IslasFilipinas IslasFilipinas GuzmanElBueno CuatroCaminos Canal Dado que es un Canal Quevedo grafo no dirigido, no Quevedo SanBernardo es necesario Arguelles SanBernardo representar el SanBernardo Bilbao camino de vuelta Bilbao Iglesia para ahorrar Iglesia-RiosRosas espacio (la mitad) CuatroCaminos - RiosRosas

Matriz Adyacencia (usando informacin del diccionario):


1 1 2 3 4 5 6 7 8 9 10 11 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Si existe una arista de v_orig a v_dest, se puede almacenar un 1 en la fila y columna dadas por:
Fila = min (v_orig, v_dest) Columna = max (v_orig, v_dest)
ESCUELA TCNICA SUPERIOR DE INGENIERA

12 13 14 15 16

Espacio sin 1s
Algoritmos existentes (E. Snchez beda) - 34

Bsqueda del camino mnimo: Ejemplo real (IV)


Arguelles Moncloa Moncloa CiudadUniversitaria CiudadUniversitaria Metropolitano Metropolitano - GuzmanElBueno GuzmanElBueno CuatroCaminos CuatroCaminos NuevosMinisterios NuevosMinisterios GregorioMaraon GregorioMaraon AlonsoCano AlonsoCano Canal Canal-IslasFilipinas IslasFilipinas GuzmanElBueno CuatroCaminos Canal Canal Quevedo Quevedo SanBernardo Arguelles SanBernardo SanBernardo Bilbao Bilbao Iglesia Iglesia-RiosRosas CuatroCaminos - RiosRosas
ESCUELA TCNICA SUPERIOR DE INGENIERA

Grafo construido:

Algoritmos existentes (E. Snchez beda) - 35

Bsqueda del camino mnimo: Ejemplo real (V)


Bsqueda camino mnimo entre Moncloa y GregorioMaraon:
1 1 1 1

2 2 0 1 3 3 1 3 6 0 4 1 4 3 1 5 0

vrtice 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

clave AlonsoCano Arguelles Bilbao Canal CiudadUniversitaria CuatroCaminos GregorioMaraon GuzmanElBueno Iglesia IslasFilipinas Metropolitano Moncloa NuevosMinisterios Quevedo RiosRosas SanBernardo

2 2 0

5 2 0 5 5 3

ESCUELA TCNICA SUPERIOR DE INGENIERA

Tiene sentido lo que obtiene el algoritmo?


Algoritmos existentes (E. Snchez beda) - 36

Bsqueda del camino mnimo: Ejemplo real (VI)


Bsqueda camino mnimo entre Canal y RiosRosas:

ESCUELA TCNICA SUPERIOR DE INGENIERA

Tiene sentido lo que obtiene el algoritmo?


Algoritmos existentes (E. Snchez beda) - 37

Bsqueda del camino mnimo: Ejemplo real (VII)


Matriz Adyacencia (como matriz dispersa):
Bytes (matriz normal): 2048 Bytes (matriz dispersa): 296

vrtice 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

clave AlonsoCano Arguelles Bilbao Canal CiudadUniversitaria CuatroCaminos GregorioMaraon GuzmanElBueno Iglesia IslasFilipinas Metropolitano Moncloa NuevosMinisterios Quevedo RiosRosas SanBernardo

(1, 4): 1 (Corresponde a AlonsoCano - Canal, FILA 9 en fichero) (2, 12): 1 (Corresponde a Arguelles - Moncloa, FILA 1 en fichero) (2, 16): 1 (Corresponde a Arguelles - SanBernardo, FILA 15 en fichero) (3, 9): 1 (Corresponde a Bilbao - Iglesia, FILA 17 en fichero) (4, 10): 1 (Corresponde a Canal - IslasFilipinas, FILA 10 en fichero) (4, 14): 1 (Corresponde a Canal - Quevedo, FILA 13 en fichero) (5, 11): 1 (Corresponde a CiudadUniversitaria - Metropolitano, FILA 3 en fichero) (6, 13): 1 (Corresponde a CuatroCaminos - NuevosMinisterios, FILA 6 en fichero) (4, 6): 1 (Corresponde a Canal - CuatroCaminos, FILA 12 en fichero) (6, 15): 1 (Corresponde a CuatroCaminos - RiosRosas, FILA 19 en fichero) (1, 7): 1 (Corresponde a AlonsoCano - GregorioMaraon, FILA 8 en fichero) (6, 8): 1 (Corresponde a CuatroCaminos - GuzmanElBueno, FILA 5 en fichero) (9, 15): 1 (Corresponde a Iglesia - RiosRosas, FILA 18 en fichero) (8, 10): 1 (Corresponde a GuzmanElBueno - IslasFilipinas, FILA 11 en fichero) (8, 11): 1 (Corresponde a GuzmanElBueno - Metropolitano, FILA 4 en fichero) (5, 12): 1 (Corresponde a CiudadUniversitaria - Moncloa, FILA 2 en fichero) (7, 13): 1 (Corresponde a GregorioMaraon - NuevosMinisterios, FILA 7 en fichero) (14, 16): 1 (Corresponde a Quevedo - SanBernardo, FILA 14 en fichero) (3, 16): 1 (Corresponde a Bilbao - SanBernardo, FILA 16 en fichero)
Algoritmos existentes (E. Snchez beda) - 38

ESCUELA TCNICA SUPERIOR DE INGENIERA

Bsqueda del camino mnimo: Ejemplo real (VIII)


Grafo construido:

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 39

Bsqueda del camino mnimo con pesos + (I)


Longitud de un camino: suma de los pesos de sus arcos No pueden existir pesos negativos
Si existen, el algoritmo no funciona
ORIGEN or 10 c 100 1 a b 30 100 100 10 d DESTINO de

Algoritmo de Dijkstra Consideraciones previas:


Similar al caso sin pesos Qu cambia realmente? Cuando llegamos a un nodo no tenemos garantizado que hemos seguido el camino ms corto
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 40

Bsqueda del camino mnimo con pesos + (II)


Sin Pesos
ORIGEN or a b DESTINO de

Con Pesos positivos


ORIGEN or 10 100 1 a b 30 100 100 10 d DESTINO de

Hay dos caminos mnimos para ir de or a de: or-a-de; or-b-de Usando una bsqueda en anchura se tiene garantizado que la distancia mnima de un nodo solo hay que actualizarla una nica vez
D(w)=D(v)+1 si D(w) =

Si se ha llegado a un nodo ya, existe un camino ms corto


Podemos parar en cuanto se llegue al destino

El camino mnimo es: or-c-d-de Visitar un nodo antes no implica que ese sea el camino con menor coste Hay que recorrer TODOS los posibles caminos de or a de Las distancias mn. de los nodos hay que actualizarlas varias veces
Si D(v)+coste(v,w) < D(w), entonces D(w) = D(v)+coste(v,w)

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 41

Bsqueda del camino min. con pesos +: algoritmo


Dist = BusqCaminoMinConPesos (ADY, or, de) % Busca camino mnimo con pesos + %FASE 1 (la fase II es trivial) nv = NumeroVerticesGrafo(ADY); ColaPrio = CrearColaPrioridad(); % se usa una cola de prioridad 1 For i= 1 to nv Dist[i] = infinito; % infinito lgico para indicar que no se conoce ningn camino Visitado[i]= 0; % inicializa vector de flags para saber si se ha visitado ColaPrio = Encolar (ColaPrio, i, Dist[i]); % se meten los nodos segn su distancia end 1 Dist[or] = 0; % ya se conoce su distancia a or 1 while ( Vacia(ColaPrio) = 0 ) % si quedan nodos en la cola se continua do [v, ColaPrio] = ExtraeMin (ColaPrio); % saca nodo de menor distancia a or while ( Visitado[v]= 1 ) %saca nodos hasta encontrar uno no visitado Visitado[v]= 1; Vecinos = AdyacentesGrafo (ADY, v); %obtiene nodos adyacentes al vrtice v 2 For k = 1 to Tamao(Vecinos) w = Vecinos[k]; 3 if Dist[v]+coste(v,w) < Dist[w], Dist[w] = Dist[v] + coste(v,w); %nuevo camino ms corto ColaPrio = Encolar(ColaPrio, w, Dist[w]); end 3 end 2 end 1 Fin
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 42

Ordenacin topolgica (I)


Tiene sentido en grafos acclicos
Es posible ordenar los nodos segn su posicin topolgica

Orden topolgico:
Un orden topolgico ordena los vrtices de un grafo dirigido acclico de tal forma que si hay un camino de V a W, entonces W aparece despus de V en la ordenacin

Una ordenacin topolgica encuentra todos los rdenes topolgicos posibles en un grafo
Todo grafo acclico tiene una ordenacin topolgica

Ejemplo
ORIGEN or a b DESTINO de

rdenes topolgicos de or a de
or a b c d de or a c b d de or b a c d de or b c a d de or c a b d de or c b a d de
El orden concreto depender de la forma en la que se recorran los adyacentes

c
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 43

Ordenacin topolgica (II)


Idea Ordenacin Topolgica
Utilizar el grado de entrada de cada vrtice Llevar la cuenta de los nodos con grado de entrada cero en una COLA (los siguientes a aadir), distinguindolos de los vrtices no visitados Procesar la cola con los vrtices de grado de entrada cero
Sacar el siguiente y recalcular el grado de entrada de sus vecinos como si no estuviera Si aparece algn nodo de grado de entrada cero, aadirlo a la cola Si quedan nodos por visitar y la cola est vaca, existen ciclos Inicialmente aadir en la cola todos los nodos con grado de entrada 0 (debera existir al menos 1)
ESCUELA TCNICA SUPERIOR DE INGENIERA

1 or 0 c 1 COLA : [or] 1

a b de 3 d 2

0 a

or 0 c 0 COLA : [a, b, c] COLA : [b, c] COLA : [c] COLA : [d] COLA: [de] 0

de 3 d 2

Algoritmos existentes (E. Snchez beda) - 44

Ordenacin topolgica (III)


Algoritmo
orden = RecorreGrafoOrdenTopol (ADY, or, de) % Recorre nodos en orden topol. ge = GradosEntrada(ADY); %calcula los grados de entrada de todos los nodos Cola = CrearCola(); nv = NumeroVerticesGrafo(ADY); 1 For i= 1 to nv 2 If ge[i] = 0 Cola = Encolar (Cola, i);% si tiene grado entrada nulo se encola End 2 end 1 3 while ( Vacia(Cola) = 0 ) % si quedan nodos en la cola se continua [v, Cola] = Desencolar (Cola); % devuelve y elimina de la Cola el vrtice v Vecinos = AdyacentesGrafo (ADY, v); %obtiene nodos adyacentes al vrtice v 4 For k = 1 to Tamao(Vecinos) w = Vecinos[k]; ge[w] = ge[w] 1; %decrementa el grado de entrada de ese nodo 5 if ge[w] = 0 Cola = Encolar(Cola, w); end 5 end 4 end 3 Fin
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 45

Ordenacin topolgica: Ejemplos (I)


Multilayer perceptron
Input layer 1 First hidden layer 1 Second hidden layer B0 Output layer

yi = MLPi (x) =

j =0, M

ij B j (x)

x1

B1

i0 i1

xk

Bj

ij iM

Siguiendo el orden topolgico se puede evaluar un modelo de estas caractersticas

BM xp

Lo mismo pero en una representacin ms compacta:


j0 ju
1 x1 xu INPUT LAYER
ESCUELA TCNICA SUPERIOR DE INGENIERA

i0 ij
xp B0 Bj BM y1 HIDDEN LAYER yi yM OUTPUT LAYER

iM

Algoritmos existentes (E. Snchez beda) - 46

Ordenacin topolgica: Ejemplos (II)


Ejemplo:

Orden topolgico de B a E?

Ejemplo real: Grafo de actividades tal que


cada nodo representa una tarea y cada arista ( u, v ) significa que la finalizacin de la tarea u es un pre-requisito para que comience la tarea v en qu orden se deben realizar las tareas?
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 47

Ordenacin topolgica: Ejemplos (III)


El Gas de diferente origen tiene distinta calidad: conocer el origen del gas en un punto del sistema tiene inters (PCS)

Fuente: www.enagas.es Descarga: 22/07/2008

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 48

Ordenacin topolgica: Ejemplos (III)


El gas que llega a un nodo a travs de varios tramos se mezcla perfectamente y sale en esa proporcin por los distintos tramos de salida:
o1 p1 o2 o3 p2 p3 S1=p1(o1)+p2(o2)+p3(o3)

n
S2=p1(o1)+p2(o2)+p3(o3)

Conocidos los Q de entrada del nodo la determinacin de la mezcla es directa (proporciones) Planteamiento: Para calcular la mezcla de gases en nodo DE hay que conocer la de A, B y F. La mezcla en F no se conoce hasta tener B y G. Finalmente B y G se saben directamente a partir de C.
A C B DE

G
ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 49

Ordenacin topolgica: Ejemplos (III)


Ejemplo:
GME Magreb

Serrablo

ESCUELA TCNICA SUPERIOR DE INGENIERA

Algoritmos existentes (E. Snchez beda) - 50

Potrebbero piacerti anche