9 tema 9: grafos tercera parte estructuras de datos y ...nprieto/clases/eda0203/t9/grafosiii.pdf ·...

13
Tema 9: GRAFOS Tercera Parte Estructuras de Datos y Algoritmos Curso 2002/03 Grafos. EDA. Curso 2002/03 2 Subgrafos Conectividad Árboles Árboles de recubrimiento Conceptos sobre grafos Problema ARCM: dado un grafo no dirigido y ponderado, encontrar un árbol de recubrimiento de coste mínimo Soluciones: Algoritmo de Kruskal Algoritmo de Prim MFSET: estructura de conjuntos disjuntos Grafos. EDA. Curso 2002/03 3 Subgrafos Un Grafo G’=(V’,E’) es un subgrafo de G=(V,E) si: VV EE Dado un conjunto VV, el subgrafo de G inducido por V’ es G’=(V’,E’) : E’ = { (u,v) E : u,v V’ } Ejemplo: el subgrafo inducido por V= {1, 2, 3, 6 } es … 1 2 3 5 6 4 1 2 3 6 Grafos. EDA. Curso 2002/03 4 Conectividad de un grafo Un gnd es conexo si cualquier par de vértices están conectados por un camino Las componentes conexas de un Grafo son las clases de equivalencia en V definidas por la relación R = “es alcanzable desdeEjemplo: las componentes conexas del Grafo son ... 1 2 3 5 6 4

Upload: vuongthien

Post on 06-Nov-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Tema 9: GRAFOSTercera Parte

Estructuras de Datos y AlgoritmosCurso 2002/03

Grafos. EDA. Curso 2002/032

SubgrafosConectividadÁrbolesÁrboles de recubrimiento

Conceptos sobre grafos

Problema ARCM: dado un grafo no dirigido y ponderado,encontrar un árbol de recubrimiento de coste mínimo

Soluciones:

Algoritmo de Kruskal

Algoritmo de Prim

MFSET: estructura deconjuntos disjuntos

Grafos. EDA. Curso 2002/033

Subgrafos

Un Grafo G’=(V’,E’) es un subgrafo de G=(V,E) si:• V’ V• E’ E

Dado un conjunto V’ V, el subgrafo de G inducido por V’ es

G’=(V’,E’) : E’ = { (u,v) E : u,v V’ }

Ejemplo: el subgrafo inducido por V’ = {1, 2, 3, 6 } es …

1 2 3

5 64

1 2 3

6

Grafos. EDA. Curso 2002/034

Conectividad de un grafo

Un gnd es conexo si cualquier par de vértices están conectados por uncamino

Las componentes conexas de un Grafo son las clases de equivalencia enV definidas por la relación R = “es alcanzable desde”

Ejemplo: las componentes conexas del Grafo son ...

1 2 3

5 64

Page 2: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/035

Árboles

Un Grafo no dirigido Acíclico y conexo es un Árbol (libre)

GrafoÁrbol(libre)Bosque

Un Grafo no dirigido Acíclico es un Bosque

Grafos. EDA. Curso 2002/036

Árboles

TEOREMA: sea G=(V,E) un gnd. Las siguientes afirmaciones son equivalentes:• G es un Árbol (libre)• cualquier par de Vértices en G están conectados por un único caminosimple• G es conexo y |E| = |V| - 1• G es acíclico pero si añadimos una Arista a E, el Grafo resultantecontiene un ciclo

Demostración en Cormen, págs. 1085-1087

Un Árbol con raíz es un Árbol (libre) con un Vértice distinguidodenominado raíz

Grafos. EDA. Curso 2002/037

Árbol de recubrimiento (Spanning Tree) de un gnd

Un Árbol de recubrimiento del Grafo G=(V,E) es un Árbol Libre T=(V’,E’)tal que:

• V ’ V• E’ E

Ejemplo: interconectar N pin’s con N - 1 cables, cada uno de loscuales conecta 2 pin’s, utilizando la menor cantidad de cable posible

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

G=(V,E) ponderado con:• |V| = N = 9

• |E| = 13

T=(V’,E’) con:• V’ V, |V’|=N=9

• E’ E, |E’|=N-1=8con Peso mínimocon Peso mínimo

a

b

Grafos. EDA. Curso 2002/038

Árbol de recubrimiento (Spanning Tree) de un gnd

Ejemplo: interconectar N pin’s con N - 1 cables, cada uno de loscuales conecta 2 pin’s, utilizando la menor cantidad de cable posible

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

G=(V,E) ponderado con:• |V| = N = 9

• |E| = 13

T=(V’,E’) con:• V’ V, |V’|=N=9

• E’ E, |E’|=N-1=8con Peso mínimocon Peso mínimo

a

b c

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

a

b

h

Page 3: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/039

Árbol de recubrimiento (Spanning Tree) de un gnd

Ejemplo: interconectar N pin’s con N - 1 cables, cada uno de loscuales conecta 2 pin’s, utilizando la menor cantidad de cable posible

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

G=(V,E) ponderado con:• |V| = N = 9

• |E| = 13

T=(V’,E’) con:• V’ V, |V’|=N=9

• E’ E, |E’|=N-1=8con Peso mínimocon Peso mínimo

a

b c

i

fg h

d

e

E’= { a,b), b,c), c,i), c,f), f,g), g,h), c,d), d,e) }

con Peso mínimo 37

Grafos. EDA. Curso 2002/0310

Problema ARCM

Dado un grafo no dirigidono dirigido y conexoconexo G=(V,E), yponderadoponderado con p:E R+

Encontrar T E:• G’=(V,T) es un subgrafo conexo y acíclico de (V,E)• la suma de los pesos de los arcos de T sea mínima

•T es acíclico, conexo y no dirigido, entonces es un árbolárbol•Se debe extenderextender por todos los vértices•La suma de los pesos de sus arcos debe ser mínimamínima

Árbol de extensión de coste mínimoÁrbol de extensión de coste mínimo

Grafos. EDA. Curso 2002/0311

Problema ARCM

Árbol RCM Dado un gnd G=(V,E), un AEM es un árbol libreT=(V’,E’) tal que V’=V y E’ E.Definición del problema: Dado un gnd ponderadoG=(V,E,p), encontrar un AEM de G, T=(V’,E’) , tal que lasuma de los pesos de las |V|-1 aristas de T sea mínimo.

b

a

e

c d6

4

3

98

1

2456

b

a

e

c d6

4

3

98

1

2456

Grafos. EDA. Curso 2002/0312

Algoritmo de Kruskal: Idea Voraz

Construir incrementalmente un bosque (de extensión orecubrimiento), seleccionando en cada paso una arista(u,v) de E tal que:

No se cree ningún cicloProduzca el menor incremento de peso posible.El árbol de recubrimiento o extensión se obtiene cuando se hanseleccionado exactamente |V|-1 aristas válidas.

Page 4: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0313

Algoritmo de Kruskal. Versión básica

Kruskal_0(V,E,p)E’= ;while (|E’|<|V|-1) {

(u,v)=argmin (x,y) E-E’ p(x,y);if (u,v) no crea ciclo en E’ entonces E’=E’ {(u,v)}

}devuelve (E’);

Grafos. EDA. Curso 2002/0314

Algoritmo de KRUSKAL (ejemplo)

7

21 3

54 6

1 2

4 6 4 5 6

3 8

47

3

Grafos. EDA. Curso 2002/0315

Algoritmo de KRUSKAL. EjemploAlgoritmo de KRUSKAL. Ejemplo

7

21 3

54 6

Arcos por orden creciente de pesos:{(1,2), (2,3), (4,5), (6,7), (1,4), (2,5), (4,7), (3,5), (2,4), (3,6), (5,7) (5,6)}

Grafos. EDA. Curso 2002/0316

Algoritmo de Kruskal (i)

Kruskal_0(V,E,p)E’= ;while (|E’|<|V|-1) {

(u,v)=argmin (x,y) E-E’ p(x,y);if (u,v) no crea ciclo en E’ entonces E’=E’ {(u,v)}

}devuelve (E’); Problema: ¿Cómo verificar de forma

eficiente la condición de “no crear ciclo”?

Problema: ¿Cómo seleccionar de formaeficiente la arista de menor peso en cadaiteración?

Page 5: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0317

Algoritmo de Kruskal (ii)

Problema: ¿Cómo verificar eficientemente la condición de“no crear ciclo”?

Solución: Mantener una colección de conjuntos disjuntos (uno porcada árbol del bosque): una arista (u,v) no creará ciclo si u y vestán en distintos subconjuntos. Estructurar el conjunto dearistas seleccionadas como un MFSet de vértices.

Problema: ¿Cómo seleccionar eficientemente la arista demenor peso en cada iteración?

Solución: Ordenar todas las aristas en orden creciente de suspesosSolución: Mantener las aristas en un MinHeap ordenado según lospesos de las mismas.

Grafos. EDA. Curso 2002/0318

Algoritmo de Kruskal (iii)

Kruskal (V,E,p)E’= ;for cada v V hacer Constuir_Cjto(v);H=ConstuirHeap(A,p);while (|E’|<|V|-1) {

(u,v)=EliminaMin(H);if (Encuentra(u) Encuentra(v)) entonces

E’=E’ {(u,v)};Combina(u,v);

}devuelve (E’);

Grafos. EDA. Curso 2002/0319

Algoritmo de Kruskal. Análisis de costes

Kruskal (V,E,p)E’= ;for v V hacer Constuir_Cjto(v);H=ConstuirHeap(A,p);while (|E’|<|V|-1){

(u,v)=EliminaMin(H);if (Encuentra(u) Encuentra(v)) entonces

E’=E’ {(u,v)};Combina(u,v);

}devuelve (E’);

O(|V|)

O(|E|)

|V|: número de vértices;|E|: número de arcos;

O(|E|) veces

O(log|E|)

O(1)O(1)

O(1)

Cota: O(|E|log|E|)Si m es el nº de iteraciones

m |V| y |V|<<|E| |V|2

O(|E|+|V|log|V|)

Grafos. EDA. Curso 2002/0320

E. de Datos para Conjuntos Disjuntos

Un MFSetMFSet (Merge-Find Set) es una estructura tipo conjuntoen la que

los elementos están organizados en subconjuntos disjuntos yel nº de elementos es fijo (no se añaden ni se borran).

Las operaciones características son:CombinaCombina: hace la unión de dos conjuntos disjuntos (Merge)EncuentraEncuentra: dado un elemento debe determinar a qué conjuntopertenece (Find)

Page 6: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0321

MFSets. Ejemplo

17

4

AB

5

610

8

C3 12

13 2

119

Aplicaciones:•Equivalencia entre autómatas finitos•Determinación de componentes conexas de un gnd•Obtención del AEM en un gnd

1 8 3

Grafos. EDA. Curso 2002/0322

Operaciones sobre MFSets

Si x e y son elementos (objetos) del conjunto:Construir_Construir_CjtoCjto(x):(x): crea un nuevo conjunto cuyo único miembro es x.

Combina(x,y):Combina(x,y): une los conjuntos a los que pertenecen x e y

Encuentra(x):Encuentra(x): devuelve la referencia al representante del conjunto alque pertenece x.

Grafos. EDA. Curso 2002/0323

Componentes conexas de un grafo

Sea G=(V,E) un grafo no dirigidoV es el conjunto de vérticesE es el conjunto de arcos

ComponentesConexas(G=(V,E)){v V hacer Construir_Cjto(v);(u,v) E hacer

if (Encuentra(u) Encuentra(v))entonces Combina(u,v);

}

Ejercicio: Implementar el algoritmo en Java

Grafos. EDA. Curso 2002/0324

Ejemplo

a b

c d

e f

g

h

i

j

Page 7: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0325

Ejemplo.Inicio

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

a b

c d

e f

g

h

i

j

Grafos. EDA. Curso 2002/0326

Ejemplo. Iteración 1

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

(b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j}

a b

c d

e f

g

h

i

j

Grafos. EDA. Curso 2002/0327

Ejemplo. Iteración 2

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

(b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j}

(e,g) {a} {b,d} {c} {e,g} {f} {h} {i} {j}

a b

c d

e f

g

h

i

j

Grafos. EDA. Curso 2002/0328

Ejemplo. Iteración 3

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

(b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j}

(e,g) {a} {b,d} {c} {e,g} {f} {h} {i} {j}

(a,c) {a,c} {b,d} {e,g} {f} {h} {i} {j}

a b

c d

e f

g

h

i

j

Page 8: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0329

Ejemplo. Iteración 4

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

(b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j}

(e,g) {a} {b,d} {c} {e,g} {f} {h} {i} {j}

(a,c) {a,c} {b,d} {e,g} {f} {h} {i} {j}

(h,i) {a,c} {b,d} {e,g} {f} {h,i} {j}

a b

c d

e f

g

h

i

j

Grafos. EDA. Curso 2002/0330

Ejemplo. Iteración 5

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

(b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j}

(e,g) {a} {b,d} {c} {e,g} {f} {h} {i} {j}

(a,c) {a,c} {b,d} {e,g} {f} {h} {i} {j}

(h,i) {a,c} {b,d} {e,g} {f} {h,i} {j}

(a,b) {a,c,b,d} {e,g} {f} {h,i} {j}

a b

c d

e f

g

h

i

j

Grafos. EDA. Curso 2002/0331

Ejemplo. Iteración 6

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

(b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j}

(e,g) {a} {b,d} {c} {e,g} {f} {h} {i} {j}

(a,c) {a,c} {b,d} {e,g} {f} {h} {i} {j}

(h,i) {a,c} {b,d} {e,g} {f} {h,i} {j}

(a,b) {a,c,b,d} {e,g} {f} {h,i} {j}

(e,f) {a,c,b,d} {e,g,f} {h,i} {j}

a b

c d

e f

g

h

i

j

Grafos. EDA. Curso 2002/0332

Ejemplo. Iteración 7

Arco Colección de conjuntos disjuntos{a} {b} {c} {d} {e} {f} {g} {h} {i} {j}

(b,d) {a} {b,d} {c} {e} {f} {g} {h} {i} {j}

(e,g) {a} {b,d} {c} {e,g} {f} {h} {i} {j}

(a,c) {a,c} {b,d} {e,g} {f} {h} {i} {j}

(h,i) {a,c} {b,d} {e,g} {f} {h,i} {j}

(a,b) {a,c,b,d} {e,g} {f} {h,i} {j}

(e,f) {a,c,b,d} {e,g,f} {h,i} {j}

(b,c) {a,c,b,d} {e,g,f} {h,i} {j}

a b

c d

e f

g

h

i

j

Page 9: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0333

Representación de un MFSet

La más sencilla...MFSet M=vector[1..N] de TipoNombreCjto;

N es el número de elementosM[x] es el conjunto al que pertenece x

OperacionesEncuentra(x): es un acceso a M[x], O(1)Combina(x,y): recorrido sobre el vector, O(N)

Coste amortizado:Una secuencia de N-1 operaciones combina tiene un coste O(N2)

Grafos. EDA. Curso 2002/0334

Ejemplo

{{1},{2},{3},{4},{5}}Combina(1,2)

{{1,2},{3},{4},{5}}Combina(2,3)

{{1,2,3},{4}{5}}Combina(3,4)

{{1,2,3,4},{5}}Combina(4,5){{1,2,3,4,5}}

1 2 3 4 5 1 2 3 4 5

1 1 3 4 5 1 2 3 4 5

1 1 1 4 5 1 2 3 4 5

1 1 1 1 5 1 2 3 4 5

1 1 1 1 1 1 2 3 4 5

Grafos. EDA. Curso 2002/0335

Coste Amortizado

Coste de N-1 operaciones de Combina O(N2)Si el número de operaciones Encuentra que se realiza essuperior a N2, el rendimiento de esta representación esbueno, ya que el coste de cada operación de Combina yEncuentra es O(1). Si hay menos búsquedas esta cota no esaceptable.Mejora: mantener todos los elementos del mismo conjuntoen una lista enlazadalista enlazada. No obstante el comportamientoasintótico sigue siendo el mismo.

Grafos. EDA. Curso 2002/0336

MFSet. Representación en árbol

Cada subconjunto es un árbol en el que cada nodo apunta alpadre.La raíz del árbol puede usarse para nombrar el conjunto.El MFSet estará representado por una colección deárboles (un bosquebosque).

3 5

14

7

6 9

82

10

3

5

1 7 4

8

6 9

10 2

Page 10: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0337

MFSet. Rep. en árbol (cont.)

Los árboles no son necesariamente binarios, pero surepresentación es muy fácil ya que sólo necesitaremos unapuntador al padre:

MFSet M= vector[1..N] de enteros;

M[i] es el padre del elemento i;

Podemos hacer que la raíz se apunte a sí mismo: i es raíz si M[i]=i.

Grafos. EDA. Curso 2002/0338

Ejemplo

3

5

1 7 4

8

6 9

10 2

5 9 3 5 3 8 5 8 8 61 2 3 4 5 6 7 8 9 10

Grafos. EDA. Curso 2002/0339

Operaciones

Combina:Combina: hacer que la raíz de un árbol sea hijo del otro.Coste constante.Encuentra:Encuentra: devolver la raíz del árbol que contiene a x.Coste proporcional a la profundidad del nodo, que en elpeor de los casos es N-1.Coste amortizado: m operaciones de búsqueda tendrían uncoste O(mN) en el peor caso.

Grafos. EDA. Curso 2002/0340

Mejoras del Coste. Heurísticos

m operaciones Encuentra tienen un coste O(m)Combinar por Rango: en la operación combina hacer que la raíz del árbolcon menos nodos apunte a la raíz del árbol con más nodos. Para ello encada nodo se mantiene un rangorango que aproxima el logaritmo de la talla delsubárbol, es una cota de la altura del nodo.

Comprimir Caminos: en la operación Encuentra, todo nodo en el caminode x a la raíz cambia su padre por la raíz. Permite realizar las moperaciones de búsqueda con coste O(m (m,n)), donde (m,n) es unainversa de la función de Ackerman que crece muy lentamente.

Page 11: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0341

Implementación de Combina

Construir_Cjto(x) {M[x]=x; rango[x]=0;

}

Combina(x,y) {Une(Encuentra(x),Encuentra(y));

}

Une(x,y) {if (rango[x]>rango[y]) M[y]=x;else {M[x]=y; if (rango[x]=rango[y])

rango[y]++; }

}

Grafos. EDA. Curso 2002/0342

Operación Encuentra

1

2 3 5

4 6 7

8

1

2 3 5

4 6

7 8

Encuentra(8)=1Encuentra(8)=1

Encuentra(x)if (x M[x]) M[x]=Encuentra(M[x]);devuelve M[x];

Grafos. EDA. Curso 2002/0343

Coste Amortizado

M operaciones EncuentraSi se usa Combinar por Rango: O(M log N)Si además se hace Comprimir Caminos: O(M (M,N)). Lousual es que (M,N) y por lo tanto O(M).

Grafos. EDA. Curso 2002/0344

Algoritmo de Prim: Idea Voraz

Construir incrementalmente un árbol (de recubrimiento oextensión), tomando como raíz cualquier vértice del grafoy seleccionando en cada paso una arista (u,v) de E tal que:

Una un vértice presente en T con uno que no lo esté.Produzca el menor incremento de peso posible.El árbol de recubrimiento o extensión se obtiene cuando se hanseleccionado exactamente |V|-1 aristas válidas.

Page 12: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0345

Idea: construir paso a paso un Árbol de recubrimiento de G = (V, E) Paso 0: la raíz del Árbol es un Vértice cualquiera de G

V’ = {0}E’ ={}

Paso i: dado v V’, seleccionar la Arista (v,w) de G tal que:• w V’• w V’ , (v,w) tenga coste mínimo

Algoritmo de Prim

Paso i:w = min(aristasFactibles) V’ = V’ w

E’ = E’ (v,w) Terminación: i = |E- 1|

Grafos. EDA. Curso 2002/0346

Árbol de recubrimiento (Spanning Tree) de un gnd

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

Ejemplo:

Grafos. EDA. Curso 2002/0347

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

a

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

a

b

b

c

min(aristasFactibles)

¿?

Paso 0:

V’ = {a}

E’ ={}pesoMin = 0

Paso 1:

V’ = { a, b}

E’ ={ a,b) }pesoMin=4

aristasFactibles= aristasFactibles= b,4), h,8)Paso 2:aristasFactibles= c,8), h,8), h,11)V’ = { a, b, c }

E’ ={ a,b), b, c) }pesoMin = 12Aristas factibles: Vértices adyacentes a a y b NO visitados

ordenados por pesoordenados por peso

Grafos. EDA. Curso 2002/0348

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

a

b c

a

h

b d c

e

g

i

f

4

1

8 79

14

10

478

112

2

a

b c

i

Paso 0:aristasFactibles=V’ = { a}E’ ={}pesoMin = 0

Paso 1:aristasFactibles= b,4), h,8)V’ = { a, b}E’ ={ a,b)}pesoMin = 4

aristasFactibles..eliminarMin()

Paso 2:aristasFactibles= c,8), h,8), h,11)V’ = { a, b, c }E’ ={ a,b), b, c) }pesoMin = 12

Paso 3:aristasFactibles=(i,2),(f,4),(d,7),(h,8),(h,11)V’ = { a, b, c, i }E’ ={ a,b), b,c) c,i) }pesoMin = 14

Page 13: 9 Tema 9: GRAFOS Tercera Parte Estructuras de Datos y ...nprieto/clases/EDA0203/T9/GrafosIII.pdf · 9 Un Grafo no dirigido Acíclico y conexo es un Árbol (libre) ÁrbolGrafo Bosque(libre)

Grafos. EDA. Curso 2002/0349

public voidpublic void mSTPrim () {

// resultados del problemaV’=new int[numVertices]; Lista E’=new ListaEnlazada();;

for (int i=0 ; i<=numVertices ; i++) V’[i]=0;

// Paso 0: la raíz del Árbol es un Vértice cualquiera de GV’[0] = 1 ;aristasFactibles = new MonticuloBinario(newnew Arista());

Vértice w Ady(0) aristasFactibles.insertar(new Arista(w,coste0W)); while (E’..length() < numVertices ) { Arista par=((Arista)aristasFactibles.eliminarMin());

w=par..dest; if (V’[w]==0) {

V’[w]=1; // V’ = V’ wE’..insertar(par); // E’ = E’ (v,w)

Vértice u Adyacentes(w) // actualizar las Aristas factibles if (V’[u] == 0) aristasFactibles.insertar(new Arista(u,costeUW));

}}

tmSTPrim ( |E| log |V| )

|E| veces ( log |E| )|V2| )|V| )

(|E|)

( log|V|)