Está en la página 1de 22

Definición Representación en la computadora Algoritmos Bibliografía

Gráficas

Verónica E. Arriola-Rios

Estructuras de Datos

9 de junio de 2020

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Definición
Definición
Una gráfica es una tupla G = (V, E) con:
V un conjunto de vértices.
E un conjunto de aristas que conectan pares de vértices
en V .

Definición
Una gráfica pesada también tiene:
Una función ω : E → R

Definición
En una gráfica dirigida e = vi → vj , vi es vecino de vj .
En una gráfica no dirigida e = vi − vj , vi es vecino de vj y vj
es vecino de vi .
Verónica E. Arriola-Rios Gráficas
Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Representaciones

Matriz de adyacencia.
Listas de adyacencia con nodos.
Listas de adyacencia con aristas.
Se pueden utilizar estructuras auxiliares como ArrayList o
HashTable para almacenar a todos los nodos de una gráfica con
listas de adyacencia y accederlos más rápido cuando sea necesario.

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Recorridos

DFS : Primero en profundidad.


Utiliza una pila o se programa recursivamente.
Un arreglo de boolean por vértice para indicar
si ya fue visitado.
BFS : Primero en amplitud.
Utiliza una cola.
Un arreglo de boolean por vértice para indicar
si ya está formado.

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Dijkstra

Objetivo: Encontrar el camino de peso mínimo entre un nodo


y sus vecinos.

9
4
B D
3 2
7 1
A 3 2 F
5 5
6
C E

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Para cada nodo mantener:


k(ν) Terminado, ya se conoce la distancia mínima.
d(ν) Distancia.
P(ν) Predecesor.
Q cola de prioridades mínima según d(ν), con k(ν) = False

Algoritmo 1 Dijkstra
1: k(ν) ← False, d(ν) ← ∞, P(ν) ← ∅
2: Q ← V
3: for |V| veces do
4: Elegir de Q al vértice ν con menor d(ν).
5: k(ν) ← T rue
6: for all vecino µ de ν con k(µ) = False do
7: if d(µ) > d(ν) + ω(ν, µ) then
8: d(µ) ← d(ν) + ω(ν, µ)
9: P(µ) ← ν

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Prim

Objetivo: Encontrar un árbol de expansión mínima en el grafo


conexo, no dirigido G = (V, E).

Definición
Un árbol de expansión mínima es un grafo acíclico, cuyas aristas
T ⊆ E conectan a todos los vértices V y cuyo peso total
X
w(T ) = w(u, v) (1)
(u,v)∈T

es mínimo.

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Prim
Sean:
A el árbol de peso mínimo en construcción.
Q los vértices que no están aún en el árbol.
A y Q definen una partición de la gráfica.
En cada paso se agrega una arista de la frontera.
9
4
B D
3 2
7 1
A 3 2 F
5 5
6
C E

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Para cada nodo mantener:


llave(ν) Peso de la arista de menor peso que conecta a ν
con el árbol.
π(ν) Padre en el árbol de peso mínimo.
Q cola de prioridades mínima según llave(ν), con vértices.

Algoritmo 2 Prim
1: llave(ν) ← ∞, π(ν) ← ∅, Q ← V , A ← ∅
2: llave(r) ← 0 . Un nodo cualquiera r
3: while Q 6= ∅ do
4: Elegir de Q al vértice ν con menor llave(ν).
5: agrega(A, ν)
6: for all vecino µ de ν con µ ∈ Q do . No forman ciclos
7: if ω(ν, µ) < llave(µ) then
8: llave(µ) ← ω(ν, µ)
9: π(µ) ← ν

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Q cola de prioridades mínima según ω(e), e ∈ E

Algoritmo 3 Kruskal
1: A ← ∅
2: for all ν ∈ V do
3: ConstruyeConjunto(ν)
4: Q ← E
5: while Q 6= ∅ do
6: Elegir de Q al arista e(µ, ν) con menor ω(e).
7: if Conjunto(µ) 6= Conjunto(ν) then
8: A ← A ∪ (u, v)
9: Une(Conjunto(µ), Conjunto(ν))

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Floyd-Warshall

Objetivo: Dada G = (V, E), para cada par de vértices en V


encontrar el camino pesado más corto entre ellos.
Principio:
1 Encontrar los caminos más cortos entre vértices del subgrafo
Vk = {v1 , v2 , ..., vk } para 0 6 k 6 |V|.
2 Agregar vk+1 y verificar si cada ruta se puede acortar pasando
por vk+1 .
Complejidad: O(n3 ) con n = |V|

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Algoritmo 4 Floyd-Warshall
1: Dk ← matriz(n × n), Πk ← matriz(n × n) . Costos, Padres
2: D0 ← W . Matriz de pesos (adyacencia)
3: for i ∈ [1, n] do
4: for j ∈ [1,
 n] do
NIL si i = j ó ω(i, j) = ∞
5: Π0i,j
i si i 6= j y ω(i, j) < ∞
6: for k ∈ [1, n] do . Agrega vértices
7: for i ∈ [1, n] do
8: for j ∈ [1, n] do
9: dikj ← dk−1 k−1
i,k + dk,j
10: Dk mı́n(dk−1
i,j ←  i,j , dikj )
πk−1
ij si dk−1
ij 6 dikj . No pasa por νk
11: Πk
i,j ← k−1 k−1
πkj si dij > dikj . Pasa por νk

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Temas

1 Definición

2 Representación en la computadora

3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall

4 Bibliografía

Verónica E. Arriola-Rios Gráficas


Definición Representación en la computadora Algoritmos Bibliografía

Bibliografía

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,


Clifford Stein. Introduction to Algorithms, Second Edition,
McGrawHill, 2004.

Verónica E. Arriola-Rios Gráficas

También podría gustarte