mdi_u2_ea_angr

23
Matemáticas Discretas Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal. Antecedentes. Los árboles son un tipo particular de gráficas que nos van a permitir resolver muchos problemas. Como ya sabemos, las gráficas muestran relaciones entre elementos, es decir, los vértices se conectan mediante aristas. Sin embargo, para mantener a todos los vértices conectados, no son necesarias todas las aristas. Puede haber varias opciones para conectarlos y de acuerdo a un criterio específico puede haber una “mejor” opción. Dada una gráfica conexa no dirigida, G, un árbol de expansión es un árbol compuesto por todos los vértices y algunas o todas las aristas de G. En un árbol no existen ciclos y siempre hay una ruta entre cada par de vértices. Una gráfica puede tener muchos árboles de expansión. Cuando estamos hablando de gráficas ponderadas, es decir, gráficas cuyas aristas tienen peso, un árbol de expansión mínima es un árbol compuesto por todos los vértices y cuya suma de sus aristas es el menor peso. Recordemos que un algoritmo es un conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas. Para encontrar el árbol de expansión mínimo se pueden usar varios algoritmos, dos de los más utilizados son el de Prim y el de Kruskal. Problemática: Una empresa mexicana de telecomunicaciones va a tender una nueva red de fibra óptica entre las siguientes importantes ciudades del país: Hermosillo, Chihuahua, Culiacán, Monterrey, Tampico, Aguascalientes, Guadalajara, Acapulco, Oaxaca y Veracruz. Para hacerlo, necesitas saber cómo conectar 10 ciudades al mínimo costo, lo cual equivale a encontrar la distancia mínima que las mantenga conectadas. ¿Cómo conectar cada ciudad con el mínimo costo?

Upload: antonio-garcia-rodriguez

Post on 21-Dec-2015

30 views

Category:

Documents


3 download

DESCRIPTION

Problema de Grafo

TRANSCRIPT

Page 1: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Antecedentes.

Los árboles son un tipo particular de gráficas que nos van a permitir resolver muchos

problemas. Como ya sabemos, las gráficas muestran relaciones entre elementos, es decir, los

vértices se conectan mediante aristas. Sin embargo, para mantener a todos los vértices

conectados, no son necesarias todas las aristas. Puede haber varias opciones para

conectarlos y de acuerdo a un criterio específico puede haber una “mejor” opción.

Dada una gráfica conexa no dirigida, G, un árbol de expansión es un árbol compuesto por

todos los vértices y algunas o todas las aristas de G. En un árbol no existen ciclos y siempre

hay una ruta entre cada par de vértices. Una gráfica puede tener muchos árboles de

expansión. Cuando estamos hablando de gráficas ponderadas, es decir, gráficas cuyas

aristas tienen peso, un árbol de expansión mínima es un árbol compuesto por todos los

vértices y cuya suma de sus aristas es el menor peso.

Recordemos que un algoritmo es un conjunto de reglas que permiten obtener un resultado

determinado a partir de ciertas reglas definidas. Para encontrar el árbol de expansión mínimo

se pueden usar varios algoritmos, dos de los más utilizados son el de Prim y el de Kruskal.

Problemática: Una empresa mexicana de telecomunicaciones va a tender una nueva red de

fibra óptica entre las siguientes importantes ciudades del país: Hermosillo, Chihuahua,

Culiacán, Monterrey, Tampico, Aguascalientes, Guadalajara, Acapulco, Oaxaca y Veracruz.

Para hacerlo, necesitas saber cómo conectar 10 ciudades al mínimo costo, lo cual equivale a

encontrar la distancia mínima que las mantenga conectadas.

¿Cómo conectar cada ciudad con el mínimo costo?

Page 2: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Page 3: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

H

CH

C

M

T

V

O A

G

AC 560

670

Instrucciones: Teniendo como referencia el mapa y la tabla con las distancias entre

ciudades, desarrolla lo que se pide en los siguientes incisos (incluye procedimiento y

cálculos):

1. Construye una gráfica en la que representes el problema, definiendo las ciudades

como vértices y las aristas como las distancias que se muestren en la tabla. Será una

gráfica conexa, no dirigida y ponderada. El peso de cada arista será la distancia entre

dichas ciudades.

Page 4: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Por lo tanto nuestra gráfica quedaría así:

H

CH

C

M

T

V

O A

G

AC 560

670

Page 5: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

2. Calcula el árbol de expansión mínimo (de mínimo costo) por el algoritmo de

Prim.

Para hacer el algoritmo de Prim necesitaremos agarrar un vértice cualquiera, las

aristas con un vértice en el árbol y un vértice fuera del árbol:

Iteración 1). Iniciaremos con el vértice H.

Iteración 2).

Iteración 3).

Arista Peso

(H,CH) 740

(H,C) 680√

Arista Peso

(H,CH) 740

(C,CH) 1150

(C,M) 1050

(C,AC) 910

(C,G) 700 √

Arista Peso

(H,CH) 740

(C,CH) 1150

(C,M) 1050

(G,AC) 220√

(G,A) 870

H

C

H

C

H

C

G

AC

Page 6: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Iteración 4).

Iteración 5).

Arista Peso

(H,CH) 740

(C,CH) 1150

(C,M) 1050

(G,A) 870

(AC,CH) 940

(AC,M) 570

(AC,T) 560√

(AC,V) 900

(AC,O) 950

(AC,A) 880

Arista Peso

(H,CH) 740

(C,CH) 1150

(C,M) 1050

(G,A) 870

(AC,CH) 940

(AC,M) 570

(AC,V) 900

(AC,V) 900

(AC,O) 950

(AC,A) 880

(T,M) 520

(T,A) 860

(T,V) 480√

H

C

T

G

AC 560

H

C

T

V

G

AC 560

Page 7: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Iteración 6).

Iteración 7).

Arista Peso

(H,CH) 740

(C,CH) 1150

(C,M) 1050

(G,A) 870

(AC,O) 950

(AC,A) 880

(T,M) 520

(T,A) 860

(V,O) 370√

Arista Peso

(H,CH) 740

(C,CH) 1150

(C,M) 1050

(G,A) 870

(AC,CH) 940

(AC,M) 570

(AC,A) 880

(T,M) 520√

(T,A) 860

(O,A) 670

H CH

C

T

V

O

G

AC 560

H

C

M

T

V

O

G

AC 560

Page 8: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Iteración 8).

Iteración 9).

Arista Peso

(H,CH) 740

(C,CH) 1150

(G,A) 870

(AC,CH) 940

(AC,A) 880

(T,A) 860

(O,A) 670√

(M,CH) 800

Aristas Peso

(H,CH) 740

(C,CH) 1150

(AC,CH) 940

(M,CH) 800

H

CH

C

M

T

V

O A

G

AC 560

670

H

C

M

T

V

O A

G

AC 560

670

Page 9: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

3. Calcula el árbol de expansión mínimo (de mínimo costo) por el algoritmo de Kruskal.

Primeramente usaremos el método de MakeSet de unión –find para inicializar cada componente,

obteniendo las siguientes componentes conexas iniciales:

Vértices H CH C M AC G T A O V

Raíz H CH C M AC G T A O V

H CH

C

M

T

V

O A

G

AC

Page 10: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Ahora el siguiente paso es ordenar las aristas del grafo en orden ascendente:

Vértices de las Aristas

Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

Lo siguiente será recorrer todas las artistas ya ordenadas y verificar si sus vértices están o no en la misma

componente.

Page 11: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

La primera arista a verificar es la que une a los vértices AC y G, verificamos si están en la misma

componente, para ello tenemos lo siguiente:

Como podemos observar en la tabla y en

la misma imagen no están en la misma componente conexa, por tanto esta arista es válida, así que unimos

los vértices.

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

Vértices H CH C M AC G T A O V

Raíz H CH C M AC G T A O V

Vértices H CH C M AC G T A O V

Raíz H CH C M AC AC T A O V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 12: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Continuamos con la siguiente arista:

Observamos en la tabla de Union-Find y vemos que V=O. Entonces es posible realizar la unión de ambas

componentes:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

Vértices H CH C M AC G T A O V

Raíz H CH C M AC AC T A O V

Vértices H CH C M AC G T A O V

Raíz H CH C M AC AC T A V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 13: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Continuamos con la siguiente tabla:

En la imagen podemos observar que ambos vértices no están en la misma componente, por tanto

realizamos la unión (T,V):

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

Vértices H CH C M AC G T A O V

Raíz H CH C M AC AC T A V V

Vértices H CH C M AC G T A O V

Raíz H CH C M AC AC V A V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 14: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Continuamos con la siguiente arista,

Procedemos de la misma forma que los anteriores:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150 Vértices H CH C M AC G T A O V

Raíz H CH C M AC AC V A V V

Vértices H CH C M AC G T A O V

Raíz H CH C T AC AC V A V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 15: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Procedemos con la siguiente parte:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

Vértices H CH C M AC G T A O V

Raíz H CH C T AC AC V A V V

Vértices H CH C M AC G T A O V

Raíz H CH C T T AC V A V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 16: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Continuamos con la siguiente parte de la tabla:

En este caso si observamos la imagen de los vértices M

y AC están en la misma componente conexa; asimismo en la tabla de Union-Find el elemento raíz del

vértice T es el mismo que el del vértice M, por ello afirmamos que están en la misma componente conexa,

por lo tanto no habrá que realizar la unión de ambos vértices. Con esto evitamos tener ciclos en el árbol de

expansión mínima.

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150 Vértices H CH C M AC G T A O V

Raíz H CH C T T AC V A V V

H CH

C M

T

V

O A

G

AC

Page 17: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Continuando con nuestra tabla:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

Vértices H CH C M AC G T A O V

Raíz H CH C T T AC V A V V

Vértices H CH C M AC G T A O V

Raíz H CH C T T AC V O V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 18: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Continuando:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

Vértices H CH C M AC G T A O V

Raíz H CH C T T AC V O V V

Vértices H CH C M AC G T A O V

Raíz C CH C T T AC V O V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 19: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Proseguimos con la siguiente sección:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150 Vértices H CH C M AC G T A O V

Raíz C CH C T T AC V O V V

Vértices H CH C M AC G T A O V

Raíz C CH G T T AC V O V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 20: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Continuando con el procedimiento:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150 Vértices H CH C M AC G T A O V

Raíz C CH G T T AC V O V V

Vértices H CH C M AC G T A O V

Raíz C H G T T AC V O V V

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 21: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

Prosiguiendo:

Para simplificar los cálculos tomaremos el siguiente punto: Los puntos (CH-M),(T-A),(A-G),(AC-A),(AC-

V),(AC-C),(AC,C),(AC-CH),(AC-O),(A-M),(C-CH) , si alguno de ellos se uniera con algún otro vértice podríamos

hacer ciclos en el árbol de expansión mínima. Por lo tanto el árbol de expansión mínima, quedaría:

Vértices de las Aristas Peso de la Arista

AC-G 220

O-V 370

T-V 480

T-M 520

AC-T 560

AC-M 570

O-A 670

C-H 680

C-G 700

CH-H 740

CH-M 800

T-A 860

A-G 870

AC-A 880

AC-V 900

AC-C 910

AC-CH 940

AC-O 950

C-M 1050

C-CH 1150

H CH

C

M

T

V

O A

G

AC

H CH

C

M

T

V

O A

G

AC

Page 22: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

4. ¿Cuál es el peso del árbol de expansión mínimo?

EL peso lo tendremos sumando todas las aristas de todas las aristas:

𝑃𝑒𝑠𝑜 = 740 + 680 + 700 + 220 + 560 + 520 + 480 + 370 + 670 = 4940 𝑘𝑚

5. OPCIONAL: Realiza este mismo cálculo mediante el programa GRAFOS.

- Algoritmo de Kruskal:

Page 23: MDI_U2_EA_ANGR

Matemáticas Discretas

Unidad 2. Teoría de Gráficas Antonio García Rodríguez Evidencia de Aprendizaje: Cálculo del árbol de expansión mínimo mediante los algoritmos de Prim y de Kruskal.

- Algoritmo de Prim:

Como podemos observar nos da igual.