Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre...

28
1 Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Grafos Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: [email protected] Transparencias preparadas a partir de las Ginés GarcíEstructuras de Datos I, del Grado de Ingeniería Informática y An Introduction to Bioinformatics Algorithms

Transcript of Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre...

Page 1: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

1

Parte de Algoritmos de la asignatura de Programación

Master de Bioinformática

Grafos

Web asignatura: http://dis.um.es/~domingo/algbio.html

E-mail profesor: [email protected]

Transparencias preparadas a partir de las Ginés GarcíEstructuras de Datos I, del Grado de Ingeniería Informática y An Introduction to Bioinformatics Algorithms

Page 2: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

2

Ejemplos de grafosEjemplo: Grafo de carreteras entre ciudades.

M a d r i d

M u r c i a

V a l e n c i a

G r a n a d a

S e v i l l a

C á d i z

B a d a j o z

V i g o

C o r u ñ a

G e r o n a

B a r c e l o n a

Z a r a g o z a

B i l b a oO v i e d o

V a l l a d o l i d

J a é n

2 5 1

1 5 0

4 0 3

2 4 1

3 4 9

1 9 1

9 9

1 2 5

3 5 6

3 0 4

3 95

4 5 51 71

2 8 0

1 9 3

3 2 4

3 2 52 9 6 1 0 0

3 35

2 7 82 4 2

2 5 6

Page 3: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

3

Ejemplos de grafosEjemplo: Grafo de carreteras entre ciudades.

Problemas• ¿Cuál es el camino más corto de Murcia a Badajoz?• ¿Existen caminos entre todos los pares de

ciudades?• ¿Cuál es la ciudad más lejana a Barcelona?• ¿Cuál es la ciudad más céntrica?• ¿Cuántos caminos distintos existen de Sevilla a

Zaragoza?• ¿Cómo hacer un tour entre todas las ciudades en el

menor tiempo posible?

Page 4: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

4

Un grafo G es una tupla G= (V, A), donde V es un conjunto no vacío de vértices o nodos y A es un conjunto de aristas o arcos.Cada arista es un par (v, w), donde v, w ∈ V.

Tipos de grafosGrafo no dirigido.Las aristas no están ordenadas: (v, w) = (w, v)Grafos dirigidos (o digrafos).Las aristas son pares ordenados:<v, w> ≠ <w, v>

<v, w> ⇒ w = cabeza de la arista, v = cola.

Introducción y definiciones

vv ww

vv ww

Page 5: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

5

Nodos adyacentes a un nodo v: todos los nodos unidos a v mediante una arista.En grafos dirigidos:

Nodos adyacentes a v: todos los w con <v, w> ∈ A. Nodos adyacentes de v: todos los u con <u, v> ∈ A.

Un grafo está etiquetado si cada arista tiene asociada una etiqueta o valor de cierto tipo.Grafo con pesos: grafo etiquetado con valores numéricos.Grafo etiquetado: G= (V, A, W), con W: A → TipoEtiq

Terminología de grafos

Page 6: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

6

Camino de un vértice w1 a wq: es una secuencia w1, w2, ..., wq ∈ V, tal que todas las aristas (w1, w2), (w2, w3), ..., (wq-1, wq) ∈ A.Longitud de un camino: número de aristas del camino = nº de nodos -1.Camino simple: aquel en el que todos los vértices son distintos (excepto el primero y el último que pueden ser iguales).Ciclo: es un camino en el cual el primer y el último vértice son iguales. En grafos no dirigidos las aristas deben ser diferentes.Se llama ciclo simple si el camino es simple.

Terminología de grafos

Page 7: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

7

Terminología de grafos

Un subgrafo de G=(V, A) es un grafo G’=(V’, A’) tal que V’⊆V y A’⊆A.Dados dos vértices v, w, se dice que están conectados si existe un camino de v a w.Un grafo es conexo (o conectado) si hay un camino entre cualquier par de vértices.Si es un grafo dirigido, se llama fuertemente conexo.Un componente (fuertemente) conexo de un grafo G es un subgrafo maximal (fuertemente) conexo.

Page 8: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

8

Terminología de grafos

Un grafo es completo si existe una arista entre cualquier par de vértices.

Grado de un vértice v: número de arcos que inciden en él.Para grafos dirigidos:

Grado de entrada de v: nº de aristas con <x, v> Grado de salida de v: nº de aristas con <v, x>

Page 9: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

9

Operaciones elementales con grafos

Crear un grafo vacío (o con n vértices).Insertar un nodo o una arista.Eliminar un nodo o arista.Consultar si existe una arista (obtener la etiqueta).Iteradores sobre las aristas de un nodo:

para todo nodo w adyacente a v hacer

acción sobre w

para todo nodo w adyacente de v hacer

acción sobre wMucho menos frecuente

Page 10: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

10

11 22

5544

33

Representación de grafos

Representación de grafos:– Representación del conjunto de nodos, V.

– Representación del conjunto de aristas, A.

Page 11: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

11

Representación de grafosRepresentación del conjunto de aristas, A.

– Mediante matrices de adyacencia.

– Mediante listas de adyacencia.

M 1 2 3 4 5

1 T T

2 T T

3 T T T

4

5 T

11 22

5544

33

1

2

3

4

5

2 3

3 5

1 4

4

5

Page 12: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

12

Matrices de adyacenciatipo GrafoNoEtiq= array [1..n, 1..n] de booleano

Sea M de tipo GrafoNoEtiq, G= (V, A). M[v, w] = cierto ⇔ (v, w) ∈ A

M 1 2 3 4 5

1 T T T

2 T T T T

3 T T

4 T T T

5 T T

11 22

5544

33

• Grafo no dirigido Matriz simétrica: M[i, j] = M[j, i].• Resultado: se desperdicia la mitad de la memoria.

Page 13: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

13

Matrices de adyacencia

Grafos etiquetados:

tipo GrafoEtiq[E]= array [1..n, 1..n] de EEl tipo E tiene un valor NULO, para el caso de no existir arista.

M 1 2 3 4

1 3

2 2

3 0 4 2

4

11

22

3344

3

4

0

2

2

Page 14: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

14

Recorridos sobre grafosIdea similar al recorrido en un árbol.Se parte de un nodo dado y se visitan los vértices del grafo de manera ordenada y sistemática, moviéndose por las aristas.

Tipos de recorridos: Búsqueda primero en profundidad. Equivalente a un

recorrido en preorden de un árbol. Búsqueda primero en amplitud o anchura. Equivalente a

recorrer un árbol por niveles.

Los recorridos son una herramienta útil para resolver muchos problemas sobre grafos.

Page 15: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

15

Recorridos sobre grafosEl recorrido puede ser tanto para grafos dirigidos como no dirigidos.Es necesario llevar una cuenta de los nodos visitados y no visitados.

varmarca: array [1, ..., n] de (visitado, noVisitado)

operación BorraMarcaspara i:= 1, ..., n hacer

marca[i]:= noVisitado

Page 16: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

16

Búsqueda primero en profundidad

operación bpp (v: nodo)marca[v]:= visitadopara cada nodo w adyacente a v hacer si marca[w] == noVisitado entonces

bpp(w)finpara

operación BúsquedaPrimeroEnProfundidadBorraMarcaspara v:= 1, ..., n hacer

si marca[v] == noVisitado entoncesbpp(v)

finpara

Page 17: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

17

Problemas de caminos mínimos

Definición: Dado un grafo ponderado G= (V, A) (dirigido o no) y un camino w1, w2, ..., wq en G, el costo del camino será la suma de los costos asociados a las aristas (w1, w2), ..., (wq-1, wq).

Si el grafo es no ponderado, normalmente el costo se asocia con la longitud del camino.

Problema de los caminos más cortos por un origen:Encontrar los caminos más cortos entre un nodo origen dado a

todos los demás nodos.

Page 18: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

18

Algoritmo de Dijkstra

Supongamos un grafo ponderado G (con pesos ≥ 0) y un nodo origen v.

El algoritmo trabaja con dos conjuntos: S: conjunto de nodos escogidos, para los cuales se conoce el

camino de distancia mínima al origen. C: conjunto de nodos candidatos, pendientes de calcular el

camino mínimo. Conocemos los caminos mínimos al origen pasando por nodos de S.

En cada paso coger del conjunto de candidatos el nodo con distancia mínima al origen. Recalcular los caminos de los demás candidatos pasando por el nodo cogido.

Un camino especial del origen a otro nodo cualquiera es un camino que sólo pasa por nodos ya escogidos.

Supongamos que el nodo origen es el 1.

Page 19: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

19

Algoritmo de Dijkstra En un array D[2, ..., N] se guarda la longitud del camino especial

más corto a cada vértice. Cuando todos los nodos estén en S, todos los caminos son especiales y D contiene las distancias mínimas al origen.

En otro array P[2, ..., N] se almacena el camino por el que pasa cada nodo v. El camino de 1 a v pasa por P[v].

Inicialmente D contendrá los caminos directos de 1 a los restantes nodos, es decir d[1, x]. Si no existe la arista (1, x) el costo será ∞. P contendrá el valor 1 (el camino es directo). S contendrá sólo el nodo 1.

Buscar el nodo v de C=V-S con mínimo valor de D. Añadir v a S. Para el resto de nodos comprobar si el camino al origen es más corto pasando por el nodo v:

si D[v]+d[v, w] < D[w] D[w]:= D[v] + d[v, w] P[w]:= v

Page 20: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

20

Algoritmo de Dijkstra

para i:= 2, ..., N S[i]:= FALSOD[i]:= d[1, i]P[i]:= 1

para i:= 1, ..., N-1 v:= vértice con D[v] mínimo y S[v]=FALSOS[v]:= VERDADEROpara cada nodo w adyacente a v si S[w]=FALSO si D[v]+d[v, w]<D[w] D[w]:= D[v]+C[v, w]

P[w]:= v Operación ImprimeCamino (v:entero)si v != 1 ImprimeCamino(P[v])escribir v

Page 21: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

21

Algoritmo de Dijkstra

Ejemplo:

1 2

3 4

6

5

2

143

2

6

10

2

5

7

48

1

Nodo S D P S D P S D P S D P S D P

2 F 2 1 F 2 1 T 2 1 T 2 1 T 2 13 F ∞1 F 3 4 F 3 4 T 3 4 T 3 44 F 1 1 T 1 1 T 1 1 T 1 1 ..... T 1 15 F ∞1 F 3 4 F 3 4 F 3 4 T 3 46 F ∞1 F 9 4 F 9 4 F 8 3 T 6 77 F ∞1 F 5 4 F 5 4 F 5 4 T 5 4

Inicializ. v = 4 v = 2 v = 3 5, 7 v = 6

Page 22: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

22

Problema del ciclo hamiltoniano

Dado un grafo no dirigido G, un ciclo hamiltoniano es un ciclo simple que visita todos los vértices.Problema del ciclo hamiltoniano.Determinar si un grafo no dirigido dado tiene un ciclo hamiltoniano.

No se conoce ningún algoritmo para resolverlo en tiempo polinomial.

1 2

3

5

4

6

1 2

3

5

4

6

Page 23: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

23

Problema del viajanteDado un grafo no dirigido, completo y ponderado G = (V, A), encontrar un ciclo simple de costo mínimo.

1 2

35

4 15

30

20

25

50

45

10

25

4055

• Ejemplos: Un repartidor de determinadas mercancías tiene encargos en varias ciudades. ¿Qué ruta debe seguir para que el costo de desplazamiento sea mínimo?

• El problema del viajante es un problema NP-completo, con un orden de complejidad exponencial. No existe una solución polinómica.

• Podemos aplicar heurísticas, obteniendo soluciones aproximadas, no necesariamente óptimas.

Page 24: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

24

Problema de la Supercadena más Corta

Dado un conjunto de cadenas, encontrar la cadena más corta que contiene a todas las cadenas.

Entrada: Cadenas s1, s2,…., sn

Salida: Una cadena s que contiene a todas las cadenas s1, s2,…., sn como subcadenas y tal que la longitud de s es mínima

Complejidad: NP – completo (no hay algoritmos eficientes para este problema)

Page 25: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

25

Problema de la Supercadena más Corta

Page 26: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

26

Problema de la Supercadena más Corta

Se puede reducir al Problema del Viajante de Comercio (TSP)

Se define overlap ( si, sj ) como la longitud del prefijo más largo de sj que coincide con un sufijo de si.Se construye un grafo con n vértices que representan las n cadenas s1, s2,…., sn.Con aristas con peso overlap ( si, sj ) del vértice si al sj.Se trata de encontrar el camino más largo que visita cada vértice una vez: variante del Problema del Viajante de Comercio (TSP)

Page 27: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

27

Problema de la Supercadena más Corta

Page 28: Grafos - UMdis.um.es/~domingo/apuntes/AlgBio/1314/grafos.pdf · 2013-11-08 · 14 Recorridos sobre grafos Idea similar al recorrido en un árbol. Se parte de un nodo dado y se visitan

28

Problema de la Supercadena más Corta

S = { ATC, CCA, CAG, TCC, AGT }

SSP AGT

CCA

ATC

ATCCAGT TCC CAG

ATCCAGT

TSP ATC

CCA

TCC

AGT

CAG

2

2 22

1

1

10

11