Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gráficas
Verónica E. Arriola-Rios
Estructuras de Datos
9 de junio de 2020
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 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
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.
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 Bibliografía
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 Bibliografía
Recorridos
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 Bibliografía
Dijkstra
9
4
B D
3 2
7 1
A 3 2 F
5 5
6
C E
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(µ) ← ν
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 Bibliografía
Prim
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.
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
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: π(µ) ← ν
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 Bibliografía
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(ν))
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 Bibliografía
Floyd-Warshall
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
Temas
1 Definición
2 Representación en la computadora
3 Algoritmos
Recorridos
Dijkstra
Prim
Kruskal
Floyd-Warshall
4 Bibliografía
Bibliografía