Top Banner
Análisis y Diseño de Algoritmos Árboles de Mínima Expansión (Minimum Spanning Trees) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE
32

Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Sep 27, 2018

Download

Documents

hahuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Análisis y Diseño de AlgoritmosÁrboles de Mínima Expansión

(Minimum Spanning Trees)

DR. JESÚS A. GONZÁLEZ BERNAL

CIENCIAS COMPUTACIONALES

INAOE

Page 2: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Problema de Cableado de Circuitos Electrónicos2

Diseño de circuitos electrónicosInterconectar pines de componentes eléctricamente equivalentes

Interconectar n pines con n-1 cables (cada uno un par de pines)

Preferible cableado que usa menor cantidad de cable

Modelar problema con un grafo conectado no dirigido

V conjunto de pines

E conjunto de conexiones entre pines

W costo de conectar dos pines asociado a los arcos

Page 3: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Problema de Cableado de Circuitos Electrónicos3

Encontrar el subconjunto acíclico T ⊆ E conectando todos los vértices peso total mínimo

T es acíclico y conecta todos los vértices es un árbol conocido como árbol de expansión “spanningtree”

El problema de determinar este árbol se conoce como el problema del árbol de expansión mínimo

∑∈

=Tvu

vuwTw),(

),()(

Page 4: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Algoritmos Cubiertos4

Algoritmo Kruskal

Algoritmo Prim

Tiempo de ejecuciónO(E lgV), implementados con heaps binarios

Mejora para PrimO(E + VlgV) con Fibonacci heaps

Mejora cuando |V| es mucho menor que |E|

Los dos algoritmos son voraces (greedy)Generalmente no garantiza (por lo general) encontrar soluciones globales óptimas

Para MST se puede probar que algunas estrategias sí llevan a un ST con mínimo peso

Page 5: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Creciendo un MST5

Dado un grafo conectado, no dirigido G = (V, E) con una función de peso w : E R

Queremos encontrar un MST para G

Si consideramos estrategia vorazAlgoritmo genérico

Page 6: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Loop Invariante Alg.l Genérico MST6

Antes de cada iteraciónA es un conjunto de algún MST

Cada pasoDeterminar un arco (u,v) que se pueda agregar a A sin violar esta invariante

A ∪ {(u,v)} también es un subconjunto del MST

Un arco con esta característica se llama “arco seguro de A” (safeedge for A)

Porque se puede añadir de forma segura manteniendo la invariante

Page 7: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Algoritmo Genérico MST7

InicializaciónDespués de la línea 1, el conjunto A satisface trivialmente el loopinvariante

MantenimientoEl loop en las líneas 2-4 mantienen la invariante añadiendo sólo arcos seguros

TerminaciónTodos los arcos añadidos a A están en el MST, entonces el conjunto A regresado en la línea 5 debe ser un MST

Page 8: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

¿Cómo Encontramos Arcos Seguros?8

Esta es la parte difícil

Regla para reconocer arcos segurosTeorema 23.1

Page 9: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Definiciones9

Un Corte (S, V – S ) (cut) de un grafo no dirigido G = (V, E) es una partición de V.

Un arco (u,v) ∈ E cruza (crosses) el corte (S, V – S) si uno de sus puntos finales esta en S y el otro esta en V – S.

Se dice que un corte respeta un conjunto A de arcos si ningún arco en A cruza el corte

Un arco es un arco ligero cruzando un corte si su peso es el mínimo de los arcos cruzando el corte

Un arco es un arco ligero satisfaciendo una propiedad si su peso es el mínimo entre cualquier arco que satisfaga la propiedad

Page 10: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

MST para un Grafo Conectado10

Peso total: 37

No es único, reemplazando (b,c) por (a,h) tenemos otro MST con peso 37

Page 11: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Ejemplos de un Corte11

Page 12: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Teorema 23.1, para reconocer arcos seguros12

Sea G = (V, E) un grafo conectado y no-dirigido con una función de pesos w de valores reales definida sobre E.

Sea A un subconjunto de E que se incluye en algún MST de G, sea (S, V – S) cualquier corte de G que respeta A, y sea (u,v) un arco ligero cruzando (S, V –S). Entonces el arco (u,v) es seguro para A.

Page 13: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Prueba del Teorema 23.113

Sea T un MST que incluye A

Asumimos que T no contiene el arco ligero (u,v)

Construiremos otro MST T’ que incluya A ∪ {(u,v)}Técnica cortar y pegar

Probando que (u, v) es un arco seguro para A

Page 14: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Prueba del Teorema 23.1

Page 15: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Prueba del Teorema 23.115

El arco (u,v) forma un ciclo con los arcos en la ruta p de u a v en TComo u y v están en lados opuestos del corte (S, V – S), entonces hay al menos un arco en T en la ruta p que también cruza el corte

Sea (x,y) ese arco que también cruza el corte

(x,y) no esta en A porque el corte respeta a AComo (x,y) esta en la única ruta de u a v en T, quitando (x,y) rompe a T en dos componentesAñadiendo (u,v) reconectamos los componentes y formamos un nuevo MST T’ = T – {(x,y)} ∪ {(u,v)}

Page 16: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Prueba del Teorema 23.116

Probar ahora que T’ también es un MST

Como (u,v) es un arco ligero que cruza (S, V – S) y (x,y) también cruza este corte

w(u,v) ≤ w(x,y)

Por tantow(T’) = w(T) – w(x,y) + w(u,v)

≤ w(T)

Pero T es un MST, entonces w(T) ≤ w(T’)Entonces T’ también debe ser un MST

Page 17: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Prueba del Teorema 23.117

Ahora probar que (u,v) es realmente un arco seguro para A

Como A ⊆ T’ porque A ⊆ T y (x,y) ∉AEntonces A ∪ {(u,v)} ⊆ T’

Consecuentemente, como T’ es un MST, (u,v) es seguro para A.

Page 18: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Corolario 23.218

Sea G = (V,E) un grafo conectado y no dirigido con una función de pesos w definida sobre E con valores reales.

Sea A un subconjunto de E que esta incluido en algún MST de G

y sea C = (VC, EC) un componente conectado (árbol) en el bosque GA = (V,A)

Si (u,v) es un arco ligero que conecta C a algún otro componente en GA, entonces (u,v) es seguro para A.

Page 19: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Algoritmos de Kruskal y Prim19

Variaciones del algoritmo genérico

Usan regla específica para determinar un arco seguro

KruskalEl conjunto A es un bosque

El arco seguro añadido a A es siempre el arco de menor peso en el grafo que conecta dos componentes distintos

Prim’sEl conjunto A forma un solo árbol

El arco seguro añadido a A es siempre el arco de menor peso que conecta el árbol a un vértice que no esta en el árbol

Page 20: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Kruskal20

El arco seguro a añadir al bosque es aquel arco (u,v) que conecta cualesquiera dos árboles en el bosque pero que tenga el menor peso

Como (u,v) debe ser un arco ligero que conecta C1 a otro árbol

El corolario 23.2 implica que (u,v) es un arco seguro para C1

Kruskal’s es voraz

Page 21: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Algoritmo Kruskal21

Page 22: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Ejemplo de Kruskal22

Page 23: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Ejemplo de Kruskal23

Page 24: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Ejemplo de Kruskal

Page 25: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Tiempo de Ejecución de Kruskal

Depende de la implementación de la estructura de datos conjunto-disjunto (disjoint-set)

O(E lgV).

Page 26: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Prim

Parecido al algoritmo de Dijkstra para encontrar rutas más cortas en un grafo (lo vamos a ver)

PropiedadLos arcos en el conjunto A siempre forman un solo árbol

El árbol se inicia con un vértice raíz arbitrario y crece hasta que el árbol se expande a todos los vértices en V

Cada paso se añade un arco ligero al árbol A que lo conecta con un vértice que esta sin conectar

Por el corolario 23.2, la regla añade sólo arcos que son seguros para A, por tanto al terminar, los arcos de A forman un MST

Prim’s es voraz

Page 27: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Algoritmo Prim

Page 28: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Algoritmo Prim

Priority Queue en un campo llavePara cada vértice v, key[v] es el mínimo peso de cualquier arco que conecta v a un vértice en el árbol

Por convención key[v] = ∞ si ese arco no existe

π[v] nombra al padre de v en el árbol

TAREAEstudiar el “loop-invariant” del algoritmo MST-PRIM

Page 29: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Ejemplo de Prim

Page 30: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Ejemplo de Prim

Page 31: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Ejemplo de Prim

Page 32: Análisis y Diseño de Algoritmos Ordenamiento en …jagonzalez/ADA/MST.pdf · Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal Author: Jesús Antonio González Bernal

Tiempo de Ejecución de Prim

O(E lgV)

Se puede mejorar con Fibonacci-HeapsO(E + VlgV)