Algoritmos Codiciosos y problemas de Optimización en...

47
Algoritmos Codiciosos y problemas de Optimizaci´ on en Grafos CSI / Depto Matem´ aticas CB102 CSI / Depto Matem´ aticas Algoritmos Codiciosos y problemas de Optimizaci´ on en Grafos

Transcript of Algoritmos Codiciosos y problemas de Optimización en...

Page 1: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Algoritmos Codiciosos y problemas deOptimizacion en Grafos

CSI / Depto Matematicas

CB102

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 2: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Conceptos

Un arbol es un grafo conexo y sincircuitos. Un arbol trivial es ungrafo que consiste de un solo vertice.Un grafo sin circuitos se dicebosque. En un arbol G a un verticecon grado 1 se le llamara verticeterminal. Un vertice con gradomayor que 1 se llamara vertice ramao interno.

Ejemplo

de arbol:

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 3: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Conceptos

Un arbol es un grafo conexo y sincircuitos. Un arbol trivial es ungrafo que consiste de un solo vertice.Un grafo sin circuitos se dicebosque. En un arbol G a un verticecon grado 1 se le llamara verticeterminal. Un vertice con gradomayor que 1 se llamara vertice ramao interno.

Ejemplo

de arbol trivial:

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 4: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Conceptos

Un arbol es un grafo conexo y sincircuitos. Un arbol trivial es ungrafo que consiste de un solo vertice.Un grafo sin circuitos se dicebosque. En un arbol G a un verticecon grado 1 se le llamara verticeterminal. Un vertice con gradomayor que 1 se llamara vertice ramao interno.

Ejemplo

de bosque:

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 5: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Conceptos

Un arbol es un grafo conexo y sincircuitos. Un arbol trivial es ungrafo que consiste de un solo vertice.Un grafo sin circuitos se dicebosque. En un arbol G a un verticecon grado 1 se le llamara verticeterminal. Un vertice con gradomayor que 1 se llamara vertice ramao interno.

Ejemplo

de verticesterminales einternos:

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 6: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Propiedad 1

Propiedad 1

Teorema

En un arbol T hay exactamente un camino entre todopar de vertices

Como T es un arbol, T es conexo. Ası, entre todo par de verticeshay al menos un camino. Si entre dos vertices a y b hubiera doscaminos distintos la union de esos dos caminos contendrıa uncircuito y por tanto T no serıa un arbol.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 7: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Propiedad 2

Propiedad 2

Teorema

Un grafo G es un arbol si y solo si entre cada par devertices de G existe solo un camino que los une.

Si G es un arbol, por el teorema anterior la propiedad se tiene.Supongamos ahora que la propiedad se cumple. Veamos que Gdebe ser un arbol, para ello veamos que es conexo y sin circuitos.Por la propiedad, entre todo par de vertices hay un camino que losune. Ası, G es conexo. Si existiera un circuito en G , se tendrıandos distintos caminos entre dos de los vertices del circuito. Lo cualcontradice la propiedad. Por tanto, no existen circuitos en G . Portanto, G es un arbol.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 8: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Propiedad 3

Propiedad 3

Teorema

Un arbol T con n vertices tiene n − 1 lados.

La prueba se hara por induccion fuerte sobre n. El caso n = 1 es el arbol trivial con cero lados. Supongamos que la

propiedad se cumple para todos los arboles con menos de k vertices. Veamos que se cumple para un grafo

cualquiera de k + 1 vertices. Suponga un arbol T cualquiera con k + 1 vertices. Sean vi y vj dos vertices unidos

por el lado e en T . Por la propiedad 2 no existe un camino que una vi y vj excepto el que se reduce al lado e. Al

remover e de los lados de T , T tendra exactamente dos componentes conexas digamos T1 y T2. Ambas son

conexas, no tienen circuitos y tienen un menor numero de vertices que T . Ası, son arboles a los cuales se le puede

aplicar la hipotesis inductiva. Digamos que T1 tiene n1 vertices y que T2 tiene n2 vertices. Ası, el numero de lados

de T1 es n1 y el de T2 es n2 − 1. Por tanto, n = n1 + n2 y el numero de lados de T es (n1 − 1) + (n2 − 1) + 1.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 9: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Tarea

Propiedad 4

Teorema

Cualquier grafo conexo con n − 1 lados es un arbol.

Propiedad 5

Teorema

Un grafo es un arbol si y solo si esta mınimamenteconectado.

Propiedad 6

Teorema

Un grafo con n vertices, n − 1 lados y sin circuitos esconexo.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 10: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Definicion

Un arbol abarcador para un grafo no dirigido conexo G = (V ,E )es un subgrafo de G que es un arbol y que contiene todos losvertices de V . En el caso de un grafo con peso G = (V ,E ,w), unarbol abarcador minimal (o MST por sus siglas en ingles) es unarbol abarcador cuyo peso total es mınimo.

4

32

1

2

3 12

32

14

21

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 11: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Ideas

Determinar un MST es un problema de optimizacion.

Una primera idea es seguir una estrategia codiciosa (greedy):avanzar escogiendo una accion que incurra a corto plazo en elmenor costo posible. (¿Se dara la situacion donde estasdecisiones lleven a una situacion en la que no se puedan evitarcostos altos?)

La seleccion de lados de mınimo peso para ir construyendo unarbol, ¿funcionara correctamente?

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 12: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Clasificacion de vertices

Clasificacion de los vertices en la evolucion del algoritmo:

Vertices en el arbol construyendose: los que sı estan en elarbol.

Vertices en el borde: que no estan en el arbol pero que sonadyacentes a algun vertice que sı lo esta.

Vertices no vistos: todos los demas.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 13: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Primera aproximacion al algoritmo de PRIM

primtMST(grafo G, int n)

1. Inicializar los vertices como no vistos.

2. Seleccionar un vertice s para iniciar el arbol.

3. Clasificar todos los adyacentes a s como de borde.

4. Mientras existan vertices en el borde hacer:

4.1 Seleccionar una arista con peso mınimo entre un vertice del arbol t

y uno en el borde v .

4.2 Reclasificar a v como arbol y anadir tv al arbol.

4.3 Reclaclasificar todos vertices no vistos como adyacentes a v como de

borde.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 14: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Propiedad a∗

Sea G = (V ,E ,w) un grafo conexo y sea T un arbol abarcador deG . Se dice que T satisface la propiedad a∗ si para cualquier ladouv de E que no esta en T si se anade la arista uv a T se formaraun circuito donde no existe un lado en T de tal circuito que tengamayor peso que uv . Si C es el circuito formado al anadir uv :w(uv) ≥ w(st) para cualquier lado st de C .

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 15: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Lema 1

Sea G = (V ,E ,w) un grafo conexo y sean T1 y T2 dos arbolesabarcadores que satisfacen la propiedad a∗. Entonces tienen elmismo peso.

Por induccion sobre el n numero de aristas en que difieren T1 y T2. Si

n = 0 entonces son identicos y tienen el mismo peso. Sea k > 0 y

supongamos que la propiedad se cumple para cualquier dos arboles que

satisfacen a∗ y que difieren en j aristas con 0 ≤ j ≤ k . Veamos que se

cumple para j = k + 1. Sean T1 y T2 dos arboles que cumplen la

propiedad a∗ que difieren en k + 1. Sea uv una arista con peso mınimo

entre todas las aristan en que difieren T2 y T1. Digamos que uv este en

T2. En T1 debe haber un camino unico de u a v . Este camino debe

contener un lado que esta en T1 y que no esta en T2 digamos rs.

w(uv) ≥ w(rs) por cumplir T1 la propiedad a∗. w(uv) ≤ w(rs) porque

uv es la de peso menor en la que difieren. Anadimos el lado uv a T1 y

quitamos el lado rs para tener el arbol T ′1. T1 y T ′1 tienen el mismo peso,

T ′1 sigue teniendo la propiedad a∗ y T ′1 y T2 difieren en k aristas. Por la

hipotesis inductiva, T ′1 y T2 tienen el mismo peso. Ası tambien T1 y T2.CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 16: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Teorema

Sea G = (V ,E ,w) un grafo conexo. Un arbol T es un MST si ysolo si satisface la propiedad a∗.

Suponga que T es un MST. Suponga que no cumple a∗. entonces existeun par de vertices u y v tal que uv no esta en T y tal que en el caminode T de u a v existe un lado mayor que uv , digamos rs. Cambiemos Treemplazando a rs por uv . Al nuevo arbol abarcador tiene menor pesoque T , contradiciendo que T sea un MST.

Suponga que T cumpla a∗. Sea T2 un MST. Ası por la recien demostrado

T2 cumple a∗. Por el lema, T y T2 son arboles abarcadores que cumplen

a∗. Por el lema probado, T y T2 tienen el mismo peso. Por tanto, no

existe un arbol con menos peso que T . Por tanto, T es un MST.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 17: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Lema 2

Sea G = (V ,E ,w) un grafo conexo y con peso con n vertices. SeaTk el arbol construido hasta la iteracion k por el algoritmo dePrim y sea Gk el subgrafo de G que consta de los vertices de Tk .Entonces Tk cumple a∗ para Gk .

Por induccion sobre k. Claramente, vale para k = 0. Supongamosque Tk cumple a∗ para Gk . Veamos que Tk+1 tambien la cumplepara Gk+1. Supongamos que no. Debe existir un lado uv que noesta en Tk+1 que cuando se anade a Tk+1 forma un circuito ydonde existe un lado de Tk+1, tr con peso mayor: w(uv) < w(tr).Esto es imposible: si todos los lados del circuito excepto uv estanen Tk , por tanto el lado que se anadio en la iteracion k + 1 debeestar en tal circuito. Ası mismo, todos los lados del circuito queestan en Tk no tienen peso mayor que uv . Esto nos lleva a unacontradiccion pues el algoritmo debio haber elegido uv en lugar detr .

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 18: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Teorema

El algoritmo de Prim produce un MST.

Por el lema anterior, el arbol obtenido en la iteracion n cumple a∗

para G = Gn y por tanto es un MST.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 19: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Prim: con colas de prioridad

primMST(G,n)Inicializar la cola de prioridad cp como vacıa;Seleccionar un vertice arbitrario s para iniciar el arbol;Insertar (cp,s,0);Mientras cp no este vacıa hacer:

v = obtenerMin(cp); borrarMin(cp);anadir la arista que une con v al arbol;actualizar el borde del arbol;

actualizarBorde (cp, G, v);Para todos los vertices u de G adyacentes a v

Si u no vistoInsertar en cp (u,w(v , u));

Si u esta en la cola de prioridad cp hacer:Si la prioridad en cp de u es menor que w(v , u)

Cambiar la prioridad en cp de u por w(v , u).

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 20: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 ∞ N

B -1 ∞ N

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F -1 ∞ N

G -1 ∞ N

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 21: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 N

B -1 ∞ N

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F -1 ∞ N

G -1 ∞ N

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 22: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 N

B -1 ∞ N

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F -1 ∞ N

G -1 ∞ N

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 23: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 N

B -1 ∞ N

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F -1 ∞ N

G -1 ∞ N

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 24: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B -1 ∞ N

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F -1 ∞ N

G -1 ∞ N

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 25: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B -1 ∞ N

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F -1 ∞ N

G -1 ∞ N

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 26: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Bo

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Bo

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 27: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Bo

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Bo

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 28: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Bo

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Bo

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 29: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C -1 ∞ N

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Bo

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 30: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C B 4 Bo

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Bo

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 31: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C B 4 Bo

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Bo

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 32: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C B 4 Bo

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Bo

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 33: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C B 4 Bo

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Ar

H -1 ∞ N

I -1 ∞ N

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 34: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C B 4 Bo

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Ar

H -1 ∞ N

I G 1 Bo

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

7

6

4

2

28

1

26

5

1 3

4

3

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 35: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C B 4 Bo

D -1 ∞ N

E -1 ∞ N

F A 7 Bo

G A 3 Ar

H -1 ∞ N

I G 1 Bo

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

7

6

4

2

28

1

26

5

1 3

4

3

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 36: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C

D

E

F

G A 3 Ar

H

I

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 37: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C

D

E

F

G A 3 Ar

H

I

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 38: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C

D

E

F

G A 3 Ar

H

I

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 39: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

i Padre Pri Sta

A -1 0 Ar

B A 2 Ar

C

D

E

F

G A 3 Ar

H

I

primMST(Grafo G,int n,int s,int padre[])cp = crear(n, Sta, Padre, Pri)insertar(cp,s,-1,0)while (estaVacia(cp) == False)

v = obtenerMin(cp);borrarMin(cp);

actualizaBorde(cp, G, v);

A B

C

DE

F

G

HI

2

3

7

6

4

2

28

1

26

5

1 3

4

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 40: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Complejidad

T (n,m) = O(n T (obtenerMin) + n T (borrarMin) + m T (decrementarClave))= O(n log(n) + m log(n))

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 41: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Algoritmo de Kruskal

kruskalMST(G,n,F)Construir una cola de prioridad cp con los lados de G;Inicializar componente conexa (cada nodo en su componente);F=∅;while (vacia(cp) != false)

arista = obtenerMin(cp);borrarMin(cp);u = De(arista);v = A(arista);if (NumeroComponente(u) != NumeroComponente(v))

anadir arista a F;unirComponentes(u,v);

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 42: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Teorema

El algoritmo de Kruskal produce un MST.

Veamos que el arbol T producido por el algoritmo de Kruskalcumple la propiedad a∗: Razonemos por contradiccion,supongamos que no. Ası, debe existir un lado uv en E que no estaen T y que es tal que cuando se anade a T se forma un circuitodonde uv no es el mayor lado. Por consiguiente, debe haber almenos un lado tr en T en tal circuito con peso mayor:w(uv) < w(tr). Supongamos que el lado tr se anadio a T en laiteracion j . En dicha iteracion, el lado uv no formaba circuito enFj y tenıa un peso menor que tr . Por tanto, es imposible que elalgoritmo haya elegido a tr por encima de uv .

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 43: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Complejidad Kruskal

T (n,m) = O(m log(m) + (n − 1) AgrupaComponentes(n))= O(m log(n))

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 44: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

El problema del Camino mas Corto

Definicion

Sea G = (V ,E ,w) un grafo con peso y un vertice origen s ∈ V . Elproblema consiste en encontrar el camino mas corto de s a cadavertice de V .

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 45: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Algoritmo de DijkstradijsktraCC(G ,n,s, padre[])

cp=crear(n,sta,padre,prio);insertar(cp,s,-1,0);while (vacia(cp) != false)

v = obtenerMin(cp);borrarMin(cp);actualizarBorde(cp,G ,v);

actualizarBorde (cp, G, v);d = prioridad(cp,v);Para todos los vertices u de G adyacentes a v ;

Si u no vistopadre[u] = v ;Insertar en cp (u, d + w(v , u));

Si u esta en la cola de prioridad cp hacer:Si la prioridad en cp de u es menor que d + w(v , u)

Cambiar la prioridad en cp de u por d + w(v , u);padre[u] = v ;

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 46: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

El problema del Camino mas Corto

Lema 3

Sea G = (V ,E ,w) un grafo con pesos no negativos. Sea V ′ unsubconjunto de V y sea s un elemento de V ′. Suponga que d(s, y)es la distancia mas corta de s a y en G : si se escoge la arista yz demodo que d(s, y) + W (yz) es mınima entre todas las aristas quetienen un vertice y ∈ V ′ y un vertice z ∈ V − V ′, entonces elcamino mas corto de s a z es el camino mas corto de s a y seguidode la arista yz .

Razonemos por contradiccion: Supongamos que no, entonces debe haber

un camino de s a z que es mas corto: sea z1 el primer elemento de

V − V ′ en este camino y sea y1 el elemento de V ′ anterior a z1. Por

tanto, d(s, y1) + w(y1, z1) < d(s, z) ≤ d(s, y) + w(y , z). Esto es

imposible, pues se contradice la eleccion de z .

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos

Page 47: Algoritmos Codiciosos y problemas de Optimización en Grafoscb.mty.itesm.mx/tc4001/tc4001-grafos-y-arboles.pdf · 2011-03-07 · Por el lema, T y T 2 son arboles abarcadores que cumplen

Teorema

Dado un grafo ponderado G = (V ,E ,w) con pesos no negativos yun vertice s ∈ V . Entonces el algoritmo de Disjktra determina ladistancia mas corta de s a todos los vertices a los que se puedellegar desde s.

La correctitud del algoritmo de Disjktra se obtiene de la aplicacionrepetida del lema 3.

CSI / Depto Matematicas Algoritmos Codiciosos y problemas de Optimizacion en Grafos