Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESTRUCTURAS DE
DATOS DINÁMICAS
Contenido
Programación II 2
1
17/11/2015
6. GRAFOS
Programación II 3
Contenido
Conceptos Básicos.
Representación.
Aplicaciones.
Programación II 4
2
17/11/2015
Programación II 6
3
17/11/2015
5
1 4 1 4 1 4
10
5 5 5
3
6
7 9 7 9 7 9
Programación II 7
Programación II 8
4
17/11/2015
1 4
𝐺𝑟𝑎𝑑𝑜(1) = 2
Grafo
5
No Dirigido
𝐺𝑟𝑎𝑑𝑜(5) = 2
7 9 𝐺𝑟𝑎𝑑𝑜 (9) = 2
Programación II 9
1 4
𝐺𝑟𝑎𝑑𝑜𝑒𝑛𝑡𝑟𝑎𝑑𝑎 1 = 0
Grafo 𝐺𝑟𝑎𝑑𝑜𝑠𝑎𝑙𝑖𝑑𝑎 (1) = 2
5
Dirigido
𝐺𝑟𝑎𝑑𝑜𝑒𝑛𝑡𝑟𝑎𝑑𝑎 5 = 1
7 9 𝐺𝑟𝑎𝑑𝑜𝑠𝑎𝑙𝑖𝑑𝑎 (9) = 2
Programación II 10
5
17/11/2015
6
17/11/2015
4 5 6
Programación II 13
1 2 3 1 2
4 5 6 5 6
Programación II 14
7
17/11/2015
6.2. Representación.
2
Lista de adyacencia: Grafo disperso. 𝐴 < 𝑉 .
Permite una representación más compacta.
Emplea estructuras dinámicas para su representación (arreglo
de N listas o una lista de N listas).
Ventaja: Fácilmente adaptables para grafos ponderados, facil
asignación de pesos.
Ventaja: Menor uso de memoria apropiado para grafos sin
muchos enlaces.
Desventaja: La búsqueda es mas lenta.
Programación II 15
6.2. Representación.
1 2 1 2 5 NULL
2 1 5 4 3 NULL
3 3 2 4 NULL
4 5 2 3 NULL
5 4 5 2 4 1 NULL
Programación II 16
8
17/11/2015
6.2. Representación.
1 2 4 NULL
1 2 3 2 5 NULL
3 5 6 NULL
4 2 NULL
4 5 6 5 4 NULL
6 6 NULL
Programación II 17
6.2. Representación.
2
Matriz de Adyacencia: Grafo es denso. 𝐴 ∼ 𝑉 .
Matriz de dimensión 𝑁
×𝑁
1 𝑠𝑖 𝑖, 𝑗 ∈ 𝐴
𝑀=
0 𝑠𝑖 𝑖, 𝑗 ∉ 𝐴
Con grafos no dirigidos es simétrica 𝑀𝑇 = 𝑀.
Emplea estructuras estáticas.
Ventaja: Búsqueda muy rápida.
Ventaja: Si no se necesitan costes no requiere dato adicional.
Desventaja: Suele requerir mayor memoria, se usa en grafos más
pequeños.
Desventaja: Si se requieren costes, se necesita mayor capacidad por
enlace
Programación II 18
9
17/11/2015
6.2. Representación.
Programación II 19
6.2. Representación.
1 2 3 1 0 1 0 1 0 0
2 0 0 0 0 1 0
3 0 0 0 0 1 1
4 0 1 0 0 0 0
4 5 6
5 0 0 0 1 0 0
6 0 0 0 0 0 1
Programación II 20
10
17/11/2015
6.3. Algoritmos.
Programación II 21
Programación II 22
11
17/11/2015
𝑐 𝑝 = 𝑐(𝑢𝑖−1 − 𝑢𝑖 )
𝑖=1
Programación II 23
Variables:
Conjunto de nodos 𝑄 para los que no se ha encontrado el
camino más corto.
Se mantiene una lista con las distancias a cada nodo
𝑑(𝑢).
∀𝑢 ∈ 𝑁 − 𝑄 𝑑 𝑢 = 𝛿(𝑆, 𝑢)
Programación II 24
12
17/11/2015
Algoritmo
Se busca en 𝑄 el nodo cuyo camino de coste mínimo sea el
menor
𝑚𝑖𝑛
𝑑 𝑢 = 𝑑(𝑣)
𝑣∈𝑄
𝑢 se borra de 𝑄
Si 𝑄 es el conjunto vacío (𝑄 = ∅) , se termina el algoritmo
Para todos los nodos 𝑣 de 𝑄 adyacentes a 𝑢
Programación II 25
Programación II 26
13
17/11/2015
Ejemplo:
Inicialización:
1 1
3
10
3 2 9 𝑄 = {𝑆, 1,2,3,4}
S 6 4
𝑑 = [0, ∞, ∞, ∞, ∞]
5 7
2 2 4 𝑝𝑟𝑒𝑣 = [0,0,0,0,0]
Programación II 27
Ejemplo:
Primera iteración:
1 1
3
10
3 2 9 𝑄 = {1,2,3,4}
S 6 4
5 7
𝑑 = [0, 𝟏𝟎, 𝟓, ∞, ∞]
2 2 4
𝑝𝑟𝑒𝑣 = [0, 𝟎, 𝟎, 0,0]
Programación II 28
14
17/11/2015
Ejemplo:
Segunda iteración:
1 1
3
10
2 𝑄 = {1,3,4}
3 9
S 6 4
5 7 𝑑 = [0, 𝟖, 5, 𝟏𝟒, 𝟕]
2
2 4
𝑝𝑟𝑒𝑣 = [0, 𝟐, 0, 𝟐, 𝟐]
Programación II 29
Ejemplo:
Tercera iteración:
1 1
3
10
3 2 9 𝑄 = {1,3}
S 6 4
5 7 𝑑 = [0, 8, 5, 𝟏𝟑, 7]
2
2 4
𝑝𝑟𝑒𝑣 = [0, 2, 0, 𝟒, 2]
Programación II 30
15
17/11/2015
Ejemplo:
1 Cuarta iteración:
1 3
10
3 9 𝑄 = {3}
2
S 6 4
5 7 𝑑 = [0, 8, 5, 𝟗, 7]
2
2 4
𝑝𝑟𝑒𝑣 = [0, 2, 0, 𝟏, 2]
Programación II 31
Ejemplo:
1 Quinta iteración:
1 3
10
3 2 9 𝑄=∅
S 6 4
5 7 𝑑 = [0, 8, 5, 𝟗, 7]
2
2 4
𝑝𝑟𝑒𝑣 = [0, 2, 0, 1, 2]
Programación II 32
16
17/11/2015
Ejemplo:
1 La Ruta Mínima es
1 3
10
3 2 9 𝑑 = [0, 8, 5, 9, 7]
S 6 4
7 𝑝𝑟𝑒𝑣 = [0, 2, 0, 1, 2]
5
2
2 4
Programación II 33
17
17/11/2015
Programación II 35
Programación II 36
18
17/11/2015
T= ∅
𝐿 =𝐴
Ordenar(L)
para ∀(𝑢, 𝑣) ∈ 𝐿 (𝑜𝑟𝑑𝑒𝑛𝑎𝑑𝑜) hacer
si 𝑢 𝑦 𝑣 ∈
𝑎𝑙 𝑚𝑖𝑠𝑚𝑜 𝑎𝑟𝑏𝑜𝑙 (𝑎𝑚𝑏𝑜𝑠 𝑣𝑒𝑟𝑡𝑖𝑐𝑒𝑠 𝑒𝑛 𝑐𝑜𝑚𝑝𝑜𝑛𝑒𝑛𝑡𝑒 𝑐𝑜𝑛𝑒𝑥𝑎) entonces
descartar (𝑢, 𝑣)
else
𝐴 = 𝐴 ∪ (𝑢, 𝑣)
fin_si
fin_para
Programación II 37
Programación II 38
19
17/11/2015
Programación II 39
Programación II 40
20
17/11/2015
Programación II 41
Programación II 42
21
17/11/2015
Programación II 43
Programación II 44
22
17/11/2015
Programación II 45
Programación II 46
23
17/11/2015
Programación II 47
Programación II 48
24
17/11/2015
Programación II 49
Programación II 50
25
17/11/2015
Programación II 51
Programación II 52
26