Algoritmos de Kruskal y Prim ALGORITMO DE KRUSKAL

  • Slides: 37
Download presentation
Algoritmos de Kruskal y Prim

Algoritmos de Kruskal y Prim

ALGORITMO DE KRUSKAL

ALGORITMO DE KRUSKAL

Definición: Los algoritmos de Kruskal y Prim son algoritmos para grafos ponderados (con peso),

Definición: Los algoritmos de Kruskal y Prim son algoritmos para grafos ponderados (con peso), no dirigidos, conexos y sin lazos. Encuentra un árbol recubridor mínimo en un grafo conexo mediante un algoritmo de la teoría de grafos.

Historia: “Robert Prim”

Historia: “Robert Prim”

Como comenzar? Partir de un sub grafo generador cuyo conjunto de aristas es vacío,

Como comenzar? Partir de un sub grafo generador cuyo conjunto de aristas es vacío, y en cada paso agregar una arista de peso mínimo que no forme ciclos con las demás aristas del conjunto, hasta haber agregado n-1. 1+1+2+3+4+5=16 Peso mínimo

PSEUDOCÓDIGO

PSEUDOCÓDIGO

PSEUDOCÓDIGO function Kruskal(G) Para cada v en V[G] hacer Nuevo conjunto C(v) ← {v}.

PSEUDOCÓDIGO function Kruskal(G) Para cada v en V[G] hacer Nuevo conjunto C(v) ← {v}. Mientras T tenga menos de n-1 vertices hacer (u, v) ← Q. sacar. Min() if C(v) ≠ C(u) then Agregar arista (v, u) a T. Merge C(v) y C(u) en el conjunto Return arbol T

ALGORITMO DE PRIM

ALGORITMO DE PRIM

¿Para qué se usa? Se utiliza en una extensa variedad de campos del conocimiento:

¿Para qué se usa? Se utiliza en una extensa variedad de campos del conocimiento: - Ingeniería informática para diseñar redes. - Programación para el diseño de circuitos. - Electrónica para el diseño de complejos circuitos electrónicos. Administración en el diseño de los organigramas de jerarquías. -

Objetivos: Encontrar el árbol recubridor más corto. Requisitos: Ser un grafo conexo. Ser un

Objetivos: Encontrar el árbol recubridor más corto. Requisitos: Ser un grafo conexo. Ser un grafo sin ciclos. Tener todos los arcos etiquetados.

Pseudocódigo PRIM (Grafo G, nodo_fuente s) // Inicializamos todos los nodos del grafo. La

Pseudocódigo PRIM (Grafo G, nodo_fuente s) // Inicializamos todos los nodos del grafo. La distancia la ponemos a infinito y el padre de cada nodo a NULL para cada u perteneciente a V[G] hacer distancia[u] = INFINITO; padre[u] = NULL; distancia[s]= 0; //colocamos todos los nodos del grafo V, en una cola Poneren. Cola(cola, V[G]); // Se extrae el nodo que tiene distancia mínima y se conserva la condición de cola de prioridad mientras cola != 0 hacer u = extraer_minimo(cola); para v perteneciente adyacencia[u] hacer si ((v pertenece a cola) && (distancia[v]> peso(u, v)) hacer padre[v] = u; distancia[v] = peso(u, v); actualizar(cola, v);

Algoritmo de PRIM Aplicación de la teoría de grafos en la vida real

Algoritmo de PRIM Aplicación de la teoría de grafos en la vida real

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE - LA VICTORIA - SANTIAGO DE SURCO Como se debe planificar la implantación de una línea de alta velocidad?

Algoritmo de PRIM 8 A B 8 12 10 C A B 10 C

Algoritmo de PRIM 8 A B 8 12 10 C A B 10 C Arbol recubridor minimo Pertence a la teoria de grafos para encontrar un arbol recubridor minimo en un grafo conexo , no dirigido y cuyas aristas estan etiquetadas. Lo que lo convierte en un arbol minimizado.

ARBOLES GENERADOS DE MINIMO PESO A 4 5 6 B 9 11 12 8

ARBOLES GENERADOS DE MINIMO PESO A 4 5 6 B 9 11 12 8 C 10 E D AB 4 AE 5 BE 6 BC 8 AC 9 CD 10 AD 11 DE 12 SI SI NO NO

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE - LA VICTORIA - SANTIAGO DE SURCO Como se debe planificar la implantación de una línea de alta velocidad? Cual es la estrategia optima para definir dicha red?

Diseño de red ferroviaria Chaclacayo 16 Ate V={ciudades} E={conexiones existentes} P={peso son las distancias}

Diseño de red ferroviaria Chaclacayo 16 Ate V={ciudades} E={conexiones existentes} P={peso son las distancias} 19 22 20 La Victoria 32 Cieneguilla 36 12 22 25 Santiago de surco 40 11 Villa el salvador Cual sera el trazado mas corto que comunica todas las ciudades mediante lineas de alta velocidades ?

Diseño de red ferroviaria Chaclacayo 16 Ate 19 22 20 La Victoria 32 Cieneguilla

Diseño de red ferroviaria Chaclacayo 16 Ate 19 22 20 La Victoria 32 Cieneguilla 36 12 22 25 Santiago de surco 40 11 VS 11 SL 12 AL 19 SI SI SI ACh 16 SI Villa el salvador AC 20 SI CCh 22 VL 22 CS 25 CL 32 AV 36 CV 40 NO NO NO

Diseño de red ferroviaria RESULTADO: 16 Chaclacayo Ate 19 20 La Victoria Cieneguilla 12

Diseño de red ferroviaria RESULTADO: 16 Chaclacayo Ate 19 20 La Victoria Cieneguilla 12 Santiago de surco 11 Villa el salvador PESO = 78

Algoritmo de Kruskal Aplicación de la teoría de grafos en la vida real

Algoritmo de Kruskal Aplicación de la teoría de grafos en la vida real

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE - LA VICTORIA - SANTIAGO DE SURCO Como se debe planificar la implantación de una línea de alta velocidad?

Algoritmo de Kruskal 8 A B 12 10 8 A 8 B 12 10

Algoritmo de Kruskal 8 A B 12 10 8 A 8 B 12 10 C C Arbol de minimo coste A B 12 10 C Arbol de maximo coste

ARBOLES GENERADOS DE MINIMO COSTE A 4 5 6 B 9 11 12 8

ARBOLES GENERADOS DE MINIMO COSTE A 4 5 6 B 9 11 12 8 C 10 E D AB 4 AE 5 BE 6 BC 8 AC 9 CD 10 AD 11 DE 12 SI SI NO NO

ARBOLES GENERADOS DE MAXIMO COSTE A 4 5 6 B 9 11 12 8

ARBOLES GENERADOS DE MAXIMO COSTE A 4 5 6 B 9 11 12 8 C 10 E D DE 12 AD 11 CD 10 AC 9 BC 8 BE 6 AE 5 AB 4 SI SI SI NO NO NO

Algoritmo de Kruskal Algoritmo de kruskal para calcular arboles generadores de MINIMO coste o

Algoritmo de Kruskal Algoritmo de kruskal para calcular arboles generadores de MINIMO coste o Sea G= (V, E) un grafo dirigido y ponderado 1. Hacemos una lista con todas las aristas del grafo ordenandolas de manera CRECIENTE segun el valor de sus pesos(comenzando por la menor al mayor). 2. Partimos de un grafo con los mismos vertices que el grafo inicial. 3. Añadimos la primera arista de la lista a dicho grafo. 4. Pasamos a la siguiente arista de la lista. Si esta no cierra un ciclo la añadimos al grafo que estamos construyendo y que nos dara el arbol enerador buscado. Repetimos este proceso asta visitor todas las aristas o bien ast que tengamos conectados todos los vertices entre si.

Algoritmo de Kruskal Algoritmo de kruskal para calcular arboles generadores de MAXIMO coste o

Algoritmo de Kruskal Algoritmo de kruskal para calcular arboles generadores de MAXIMO coste o Sea G= (V, E) un grafo dirigido y ponderado 1. Hacemos una lista con todas las aristas del grafo ordenandolas de manera DECRECIENTE segun el valor de sus pesos(comenzando por la mayor al menor). 2. Partimos de un grafo con los mismos vertices que el grafo inicial. 3. Añadimos la primera arista de la lista a dicho grafo. 4. Pasamos a la siguiente arista de la lista. Si esta no cierra un ciclo la añadimos al grafo que estamos construyendo y que nos dara el arbol enerador buscado. Repetimos este proceso asta visitor todas las aristas o bien ast que tengamos conectados todos los vertices entre si.

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE

Diseño de red ferroviaria - VILLA EL SALVADOR - CIENEGUILLA - CHACLACAYO - ATE - LA VICTORIA - SANTIAGO DE SURCO Como se debe planificar la implantación de una línea de alta velocidad? Cual es la estrategia optima para definir dicha red?

Diseño de red ferroviaria Chaclacayo 16 Ate V={ciudades} E={conexiones existentes} P={coste son las distancias}

Diseño de red ferroviaria Chaclacayo 16 Ate V={ciudades} E={conexiones existentes} P={coste son las distancias} 19 22 20 La Victoria 32 Cieneguilla 36 12 22 25 Santiago de surco 40 11 Villa el salvador Cual sera el trazado mas corto que comunica todas las ciudades mediante lineas de alta velocidades ?

Diseño de red ferroviaria Chaclacayo 16 Ate 19 22 20 La Victoria 32 Cieneguilla

Diseño de red ferroviaria Chaclacayo 16 Ate 19 22 20 La Victoria 32 Cieneguilla 36 12 22 25 Santiago de surco 40 11 VS 11 SL 12 SI SI ACh 16 SI Villa el salvador AL 19 AC 20 CCh 22 VL 22 CS 25 CL 32 AV 36 CV 40 SI SI NO NO NO

Algoritmo de Kruskal en C++ 10 2 8 1 3 3 3 5 2

Algoritmo de Kruskal en C++ 10 2 8 1 3 3 3 5 2 9 5 6 1 6 4 4

2 3 3 3 1 2 5 1 6 4 Peso mínimo = 1

2 3 3 3 1 2 5 1 6 4 Peso mínimo = 1 + 2 + 3 + 4 = 13 4

2 1 5 6 Vértice Raiz 1 1 2 2 3 3 4 4

2 1 5 6 Vértice Raiz 1 1 2 2 3 3 4 4 5 5 6 6 3 4

6 2 1 Vértice Raiz 1 2 2 6 5 6 6 6 Find(

6 2 1 Vértice Raiz 1 2 2 6 5 6 6 6 Find( 1 ) = 6 Find( 5 ) = 6 5

6 1 Vértice Raiz 1 1 2 2 6 6 x. Root = Find(

6 1 Vértice Raiz 1 1 2 2 6 6 x. Root = Find( 1 ) = 1 2 y. Root = Find( 6 ) = 6 padre[ 1 ] = 6 x. Root = Find( 2 ) = 2 y. Root = Find( 6 ) = 6 padre[ 2 ] = 6 Vértice Raiz 1 6 2 6 6 6

6 2 Find( 1 ) = 6 1 Find( 5 ) = 6 Retorna

6 2 Find( 1 ) = 6 1 Find( 5 ) = 6 Retorna verdadero, no se considera la arista 5

arista [ max ] , MST [ max ] Origen 1 1 2 2

arista [ max ] , MST [ max ] Origen 1 1 2 2 3 3 5 6 Destino 2 6 6 3 5 5 5 4 4 4 Peso 8 1 2 10 3 3 3 9 5 4

Consideraciones para usar los Algoritmos: A. Prim A. Kruskal Usado para cualquier grafo convexo

Consideraciones para usar los Algoritmos: A. Prim A. Kruskal Usado para cualquier grafo convexo pesado. Se aplica en grafos conexos y ponderados. Mejor método para grafos densos. Se puede utilizar Kruskal en : Para grafos no dirigidos. Diseño de una red ferroviaria. Para grafos cuyas aristas están etiquetadas. Diseño de redes informáticas. Se usan para puntos consecutivos. Ejemplos: Sistema de Postes, Redes, etc. Diseño en industrias de comunicaciones.