0% encontró este documento útil (0 votos)
37 vistas31 páginas

Algoritmos y Estructuras de Datos: Cursada 2021

Este documento presenta el algoritmo de Prim para encontrar el árbol de expansión mínimo de un grafo no dirigido y conexo. El árbol de expansión mínima conecta todos los vértices del grafo con el costo total mínimo de aristas. El algoritmo de Prim construye el árbol de forma incremental agregando en cada paso la arista de menor costo que una un vértice del árbol con uno fuera del árbol. Se describe la implementación del algoritmo usando una tabla de costos mínimos y marcando los vértices conocidos.

Cargado por

juanchota
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Descargar como pdf o txt
0% encontró este documento útil (0 votos)
37 vistas31 páginas

Algoritmos y Estructuras de Datos: Cursada 2021

Este documento presenta el algoritmo de Prim para encontrar el árbol de expansión mínimo de un grafo no dirigido y conexo. El árbol de expansión mínima conecta todos los vértices del grafo con el costo total mínimo de aristas. El algoritmo de Prim construye el árbol de forma incremental agregando en cada paso la arista de menor costo que una un vértice del árbol con uno fuera del árbol. Se describe la implementación del algoritmo usando una tabla de costos mínimos y marcando los vértices conocidos.

Cargado por

juanchota
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 31

Algoritmos y Estructuras de Datos

Cursada 2021

Prof. Alejandra Schiavoni ([email protected])

Prof. Catalina Mostaccio ([email protected])

Prof. Laura Fava ([email protected])

Prof. Pablo Iuliano ([email protected])


GRAFOS

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Agenda - Grafos

• Árbol de expansión mínimo

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Agenda – Grafos

 Árbol de expansión mínimo

 Definición
 Aplicaciones
 Algoritmo de Prim
 Algoritmo de Kruskal

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Definición
Dado un grafo G=(V , E) no dirigido y conexo

El árbol de expansión mínima es un árbol formado por


las aristas de G que conectan todos los vértices con un
costo total mínimo.

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Aplicaciones

 Construcción de tendidos eléctricos


 Diseño de redes de tuberías
 Cableado de redes de comunicaciones
 Diseño de redes de logística y transporte
 Taxonomías
 …….

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima

Ejemplo:

2
3
6 2
1
3
5 4
5

Conectar todas las computadoras Conectar todas las ciudades con el


con el menor costo total menor costo total

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Prim
 Construye el árbol haciéndolo crecer por etapas
Se elige un vértice como raíz del árbol.
En las siguientes etapas:
a) se selecciona la arista (u,v) de mínimo costo que
cumpla: u ∈ árbol y v ∉ árbol
b) se agrega al árbol la arista seleccionada en a) (es
decir, ahora el vértice v ∈ árbol)
c) se repite a) y b) hasta que se hayan tomado todos los
vértices del grafo.

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación
 Para la implementación se usa una tabla (similar a la utilizada en la
implementación del algoritmo de Dijkstra).
 La dinámica del algoritmo consiste en, una vez seleccionado una
arista (u,v) de costo mínimo tq u ∈ árbol y v ∉ árbol:
 se agrega la arista seleccionada al árbol
 se actualizan los costos a los adyacentes del vértice v de la sig.
manera :
 se compara Costow con c(v,w)

Costo mínimo a w (costo de la


arista entre un vértice Costo de la arista (v ,w)
perteneciente al árbol y vértice w)

 se actualiza si Costow > c(v,w)

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación
 Construye el árbol haciéndolo crecer por etapas
Ejemplo: 1° Paso Conoc.
V Costo W
costo de la arista (v,w)
Nodo raíz 1 0 0 01
Vértice inicial 2 ∞ 0 0

Vértice elegido
3 ∞ 0 0
4 ∞ 0 0
5 ∞ 0 0
6 ∞ 0 0

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación
1° Paso
Vértice elegido V Costo W Conoc.

1 0 0 1
Vértices
actualizados
2 6 1 0
3 1 1 0
4 5 1 0
5 ∞ 0 0
6 ∞ 0 0

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación

V Costo W Conoc.
2° Paso
1 0 0 1
Vértice elegido
2 6 1 0
3 1 1 1
4 5 1 0
5 ∞ 0 0
Se agrega la arista
6 ∞ 0 0 (1,3) y el vértice 3

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación
2° Paso
V Costo W Conoc. V Costo W Conoc.

1 0 0 1 1 0 0 1
Vértice elegido
2 6 1 0 2 5 3 0
Vértices
3 1 1 1 actualizados 3 1 1 1
4 5 1 0 4 5 1 0
5 ∞ 0 0 5 6 3 0
6 ∞ 0 0 6 4 3 0

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación

V Costo W Conoc. 3° Paso

1 ∞ 0 1
2 5 3 0
3 1 1 1
4 5 1 0
Vértice elegido
5 6 3 0 Se agrega la arista
(3,6) y el vértice 6
6 4 3 10

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación
3° Paso
V Costo W Conoc. V Costo W Conoc.

1 ∞ 0 1 1 0 0 1
2 5 3 0 2 5 3 0
Vértices
3 1 1 1 actualizados 3 1 1 1
4 5 1 0 4 2 6 0
Vértice elegido
5 6 3 0 5 6 3 0
6 4 3 10 6 4 3 0

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación

V Costo W Conoc. 4° Paso

1 0 0 1
2 5 3 0
Vértice 3 1 1 1
elegido
4 2 6 1
5 6 3 0 Se agrega la arista
(6,4) y el vértice 4
6 4 3 1

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación

V Costo W Conoc. 5° Paso

Vértice elegido
1 0 0 1
2 5 3 10
3 1 1 1
4 2 6 1
Se agrega la arista
5 6 3 0 (3,2) y el vértice 2
6 4 3 1

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación
5° Paso

V Costo W Conoc. V Costo W Conoc.


Vértice elegido
1 0 0 1 1 0 0 1
2 5 3 10 2 5 3 1
3 1 1 1 3 1 1 1
Vértice
4 2 6 1 actualizado 4 2 6 1
5 6 3 0 5 3 2 0
6 4 3 1 6 4 3 1

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Implementación

V Costo W Conoc. 6° Paso

1 0 0 1
2 5 3 1
3 1 1 1
Vértice elegido
4 2 6 1
5 3 2 10 Se agrega la arista
(2,5) y el vértice 5
6 4 3 1

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Prim
Tiempo de Ejecución

 Se hacen las mismas consideraciones que para el


algoritmo de Dijkstra

 Si se implementa con una tabla secuencial:

 El costo total del algoritmo es O(|V|2)


 Si se implementa con heap:

 El costo total del algoritmo es O(|E| log|V|)

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal

 Selecciona las aristas en orden creciente según su


peso y las acepta si no originan un ciclo.
 El invariante que usa me indica que en cada punto
del proceso, dos vértices pertenecen al mismo
conjunto si y sólo sí están conectados.
 Si dos vértices u y v están en el mismo conjunto, la
arista (u,v) es rechazada porque al aceptarla forma
un ciclo.

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)

 Inicialmente cada vértice pertenece a su propio


conjunto
 |V| conjuntos con un único elemento
 Al aceptar una arista se realiza la Unión de dos
conjuntos
 Las aristas se organizan en una heap, para ir
recuperando la de mínimo costo en cada paso

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)

Ejemplo:

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)
Aristas ordenadas por su costo de
Ejemplo: menor a mayor:

(1,2)  10
(3,6)  15
(4,6)  20
(2,6)  25
(1,4)  30
(5,3)  35
(5,2)  40
(1,5)  45
(2,3)  50
(5,6)  55

• Ordenar las aristas, usando un algoritmo de ordenación


• Construir una min-heap  más eficiente
Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)

Inicialmente cada vértice está en Se agrega la arista (1,2)


su propio conjunto

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)

Inicialmente cada vértice está en su Se agrega la arista (1,2)


propio conjunto

Se Se
agrega agrega
la arista la arista
(3,6) (4,6)

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)

Se agrega la arista (2,6) ¿Se agrega la arista (1,4) con costo 30?

No, porque forma ciclo, ya que pertenece a


la misma componente conexa

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Árbol de expansión mínima
Algoritmo de Kruskal (cont.)

Se agrega la arista (2,6) Se agrega la arista (3,5)

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Algoritmo de Kruskal
Tiempo de Ejecución

 Se organizan las aristas en una heap, para optimizar


la recuperación de la arista de mínimo costo
 El tamaño de la heap es |E|, y extraer cada arista
lleva O(log |E|)
 El tiempo de ejecución es O(|E |log|E|)
 Dado que |E| ≤ |V|2, log |E| ≤ 2 log |V|,
 el costo total del algoritmo es O(|E |log|V|)

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Grafos
Conclusiones

 Podemos utilizar grafos para modelar problemas de la


“vida real”.
 Los grafos son una herramienta fundamental en
resolución de problemas.

 Representación:
• Tamaño reducido: matrices de adyacencia.
• Tamaño grande y grafo “disperso”: listas de adyacencia.

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021
Grafos
Conclusiones
 Existen muchos algoritmos “clásicos” para resolver diferentes
problemas sobre grafos.
 Nuestro trabajo: saber modelar los problemas de interés usando
grafos y encontrar el algoritmo adecuado para la aplicación que se
requiera.
 Es importante el estudio de problemas genéricos sobre grafos.
 La búsqueda primero en profundidad (DFS) y búsqueda en
amplitud (BFS) son herramientas básicas, subyacentes en muchos
de los algoritmos estudiados
Algoritmo
Problema de Problema con genérico con Algoritmo para el
interés grafos grafos problema de interés

Prof. Alejandra Schiavoni – Prof. Catalina Mostaccio Algoritmos y Estructuras de Datos 2021

También podría gustarte