Grafos - Profesor Eduardo Uresti Charrecb.mty.itesm.mx/tc4001/tc4001-grafos.pdf · Conceptos Los...

Post on 08-Oct-2018

213 views 0 download

Transcript of Grafos - Profesor Eduardo Uresti Charrecb.mty.itesm.mx/tc4001/tc4001-grafos.pdf · Conceptos Los...

Grafos

CCIR / Depto Matematicas

CB102

CCIR / Depto Matematicas Grafos

Conceptos

Los grafos son una tecnica demodelacion de problemas atractiva yutil. Problemas de diferentes areaspueden ser modelados mediante suuso: redes de transporte de bienes deconsumo, redes de computadoras,layout de habitaciones, conexion encircuitos logicos etc.

CCIR / Depto Matematicas Grafos

Conceptos

Los grafos son una tecnica demodelacion de problemas atractiva yutil. Problemas de diferentes areaspueden ser modelados mediante suuso: redes de transporte de bienes deconsumo, redes de computadoras,layout de habitaciones, conexion encircuitos logicos etc.

CCIR / Depto Matematicas Grafos

Conceptos

Los grafos son una tecnica demodelacion de problemas atractiva yutil. Problemas de diferentes areaspueden ser modelados mediante suuso: redes de transporte de bienes deconsumo, redes de computadoras,layout de habitaciones, conexion encircuitos logicos etc.

CCIR / Depto Matematicas Grafos

Historia

El tema de Teorıa de Grafos aparecioreferenciado por primera vez en 1736cuando el gran matematico suizoLeonard Euler (1707-1783) publicoun artıculo dandole solucion a unacertijo.

CCIR / Depto Matematicas Grafos

Acertijo

El problema resuelto y referido porEuler es una especie de acertijo; enla antigua ciudad de Konisberg de laPrusia del siglo XVIII el problemaconsistıa en recorrer los puentespeatonales que estan en el centro dela ciudad de forma tal que habra querecorrerlos todos exactamente unavez y regresar al mismo sitio deinicio.

CCIR / Depto Matematicas Grafos

Acertijo

El problema resuelto y referido porEuler es una especie de acertijo; enla antigua ciudad de Konisberg de laPrusia del siglo XVIII el problemaconsistıa en recorrer los puentespeatonales que estan en el centro dela ciudad de forma tal que habra querecorrerlos todos exactamente unavez y regresar al mismo sitio deinicio.

CCIR / Depto Matematicas Grafos

Acertijo

El problema resuelto y referido porEuler es una especie de acertijo; enla antigua ciudad de Konisberg de laPrusia del siglo XVIII el problemaconsistıa en recorrer los puentespeatonales que estan en el centro dela ciudad de forma tal que habra querecorrerlos todos exactamente unavez y regresar al mismo sitio deinicio.

CCIR / Depto Matematicas Grafos

Acertijo

El problema resuelto y referido porEuler es una especie de acertijo; enla antigua ciudad de Konisberg de laPrusia del siglo XVIII el problemaconsistıa en recorrer los puentespeatonales que estan en el centro dela ciudad de forma tal que habra querecorrerlos todos exactamente unavez y regresar al mismo sitio deinicio.

CCIR / Depto Matematicas Grafos

Digrafo

Un grafo dirigido o digrafo G es unpar ordenado G = (V ,E ). Vrepresenta un conjunto cuyoselementos se llamaran vertices onodos y E es un conjunto de paresordenados de elementos de V . A loselementos de E se les llamara lados oaristas o arcos. Si e = (v ,w) es unlado en E diremos que v es su cola yque w es su cabeza, en este casodiremos que e incide en los vertices vy w .

CCIR / Depto Matematicas Grafos

Digrafo

Un grafo dirigido o digrafo G es unpar ordenado G = (V ,E ). Vrepresenta un conjunto cuyoselementos se llamaran vertices onodos y E es un conjunto de paresordenados de elementos de V . A loselementos de E se les llamara lados oaristas o arcos. Si e = (v ,w) es unlado en E diremos que v es su cola yque w es su cabeza, en este casodiremos que e incide en los vertices vy w .

EjemploSea V = {1, 2, 3, 4, 5, 6, 7, 8}definamos como

E =

(x , y) ∈ V × V

∣∣∣∣∣∣x divide a y

yx < y

Ası G = (V ,E ) es un digrafo.

CCIR / Depto Matematicas Grafos

Digrafo

Un grafo dirigido o digrafo G es unpar ordenado G = (V ,E ). Vrepresenta un conjunto cuyoselementos se llamaran vertices onodos y E es un conjunto de paresordenados de elementos de V . A loselementos de E se les llamara lados oaristas o arcos. Si e = (v ,w) es unlado en E diremos que v es su cola yque w es su cabeza, en este casodiremos que e incide en los vertices vy w .

EjemploSea V = {1, 2, 3, 4, 5, 6, 7, 8}definamos como

E =

(x , y) ∈ V × V

∣∣∣∣∣∣x divide a y

yx < y

Ası G = (V ,E ) es un digrafo.

1

2

3

45 6

78

CCIR / Depto Matematicas Grafos

Grafo

Un grafo no dirigido o grafo G es unpar ordenado G = (V ,E ). Vrepresenta un conjunto cuyoselementos se llamaran vertices onodos y E es un conjunto de paresno ordenados de elementos de V . Alos elementos de E se les llamaralados o aristas o arcos. Sie = {v ,w} es un lado en E diremosque v y w son adyacentes.Convencion|V | = n = numero de vertices|E | = m = numero de lados

CCIR / Depto Matematicas Grafos

Grafo

Un grafo no dirigido o grafo G es unpar ordenado G = (V ,E ). Vrepresenta un conjunto cuyoselementos se llamaran vertices onodos y E es un conjunto de paresno ordenados de elementos de V . Alos elementos de E se les llamaralados o aristas o arcos. Sie = {v ,w} es un lado en E diremosque v y w son adyacentes.Convencion|V | = n = numero de vertices|E | = m = numero de lados

EjemploSea V = {2, 3, 4, 5, 6, 7, 8, 9}definamos como

E =

{x , y}

∣∣∣∣∣∣x y y

tienen factor comunen V

Ası G = (V ,E ) es un grafo.

CCIR / Depto Matematicas Grafos

Grafo

Un grafo no dirigido o grafo G es unpar ordenado G = (V ,E ). Vrepresenta un conjunto cuyoselementos se llamaran vertices onodos y E es un conjunto de paresno ordenados de elementos de V . Alos elementos de E se les llamaralados o aristas o arcos. Sie = {v ,w} es un lado en E diremosque v y w son adyacentes.Convencion|V | = n = numero de vertices|E | = m = numero de lados

EjemploSea V = {2, 3, 4, 5, 6, 7, 8, 9}definamos como

E =

{x , y}

∣∣∣∣∣∣x y y

tienen factor comunen V

Ası G = (V ,E ) es un grafo.

2

3

4

5

6

7

8 9

CCIR / Depto Matematicas Grafos

Subgrafo

Un subgrafo de un grafo G = (V ,E )es un grafo G ′ = (V ′,E ′) tal queV ′ ⊆ V , E ′ ⊆ E y que cada lado deE ′ conecte vertices que estan en E ′.

CCIR / Depto Matematicas Grafos

Subgrafo

Un subgrafo de un grafo G = (V ,E )es un grafo G ′ = (V ′,E ′) tal queV ′ ⊆ V , E ′ ⊆ E y que cada lado deE ′ conecte vertices que estan en E ′.

Grafo:

a b

cd e

f g

CCIR / Depto Matematicas Grafos

Subgrafo

Un subgrafo de un grafo G = (V ,E )es un grafo G ′ = (V ′,E ′) tal queV ′ ⊆ V , E ′ ⊆ E y que cada lado deE ′ conecte vertices que estan en E ′.

Grafo:Subgrafo

a b

cd e

f g

a b

e

f g

CCIR / Depto Matematicas Grafos

Subgrafo

Un grafo se dice grafo completo sipara cada par de vertices diferenteshay una arista que los une.

K2

1

2

CCIR / Depto Matematicas Grafos

Subgrafo

Un grafo se dice grafo completo sipara cada par de vertices diferenteshay una arista que los une.

K3

1 2

3

CCIR / Depto Matematicas Grafos

Subgrafo

Un grafo se dice grafo completo sipara cada par de vertices diferenteshay una arista que los une.

K4

1 2

34

CCIR / Depto Matematicas Grafos

Subgrafo

Una trayectoria de v a w en un grafoG = (V ,E ) es una sucesion dearistas

v0v1, v1v2, . . . , vk−1vk

donde v = v0 y w = vk . La longitudde la trayectoria es el numero delados k. Una trayectoria estrayectoria simple si todos vertices,excepto quiza el primero y el ultimo,son diferentes. Diremos que unvertice w es alcanzable desde v siexiste un trayectoria que inicia en v yque termina en w .

Grafo

a b

cd e

f g

CCIR / Depto Matematicas Grafos

Subgrafo

Una trayectoria de v a w en un grafoG = (V ,E ) es una sucesion dearistas

v0v1, v1v2, . . . , vk−1vk

donde v = v0 y w = vk . La longitudde la trayectoria es el numero delados k. Una trayectoria estrayectoria simple si todos vertices,excepto quiza el primero y el ultimo,son diferentes. Diremos que unvertice w es alcanzable desde v siexiste un trayectoria que inicia en v yque termina en w .

Grafo

a b

cd e

f g

Trayectoria

ae, ed , df , fe

CCIR / Depto Matematicas Grafos

Subgrafo

Una trayectoria de v a w en un grafoG = (V ,E ) es una sucesion dearistas

v0v1, v1v2, . . . , vk−1vk

donde v = v0 y w = vk . La longitudde la trayectoria es el numero delados k. Una trayectoria estrayectoria simple si todos vertices,excepto quiza el primero y el ultimo,son diferentes. Diremos que unvertice w es alcanzable desde v siexiste un trayectoria que inicia en v yque termina en w .

Grafo

a b

cd e

f g

Trayectoria

ed , df , fg

CCIR / Depto Matematicas Grafos

Subgrafo

Una trayectoria de v a w en un grafoG = (V ,E ) es una sucesion dearistas

v0v1, v1v2, . . . , vk−1vk

donde v = v0 y w = vk . La longitudde la trayectoria es el numero delados k. Una trayectoria estrayectoria simple si todos vertices,excepto quiza el primero y el ultimo,son diferentes. Diremos que unvertice w es alcanzable desde v siexiste un trayectoria que inicia en v yque termina en w .

Grafo

a b

cd e

f g

g es alcanzable desde a

CCIR / Depto Matematicas Grafos

Subgrafo

Una trayectoria de v a w en un grafoG = (V ,E ) es una sucesion dearistas

v0v1, v1v2, . . . , vk−1vk

donde v = v0 y w = vk . La longitudde la trayectoria es el numero delados k. Una trayectoria estrayectoria simple si todos vertices,excepto quiza el primero y el ultimo,son diferentes. Diremos que unvertice w es alcanzable desde v siexiste un trayectoria que inicia en v yque termina en w .

Grafo

a b

cd e

f g

c no es alcanzable desde a

CCIR / Depto Matematicas Grafos

Un ciclo es una trayectoria simple donde el primero y el ultimovertice son los mismos.

Diremos que un grafo G = (V ,E ) es conexo, si para cada parde vertices distintos vi y vj en V , existe una trayectoria de via vj .

Una componente conexa de G es un subgrafo maximal conexo.

Camino = Trayectoria.

CCIR / Depto Matematicas Grafos

Grafo con Peso

Un grafo con peso es ungrafo G = (V ,E ) dondecada lado tiene asignadoun numero real: sie ∈ E , al numeroasignado a e se lellamara el peso del ladow(e).

a

b c

d e

f g

7

85

9

7

515

6

8

9

11

CCIR / Depto Matematicas Grafos

Grafo

1 2

3 4

5 6 7

Representacion: Matriz de Adyacencia

0 1 1 0 0 0 01 0 1 1 0 0 01 1 0 1 0 1 00 1 1 0 0 1 00 0 0 0 0 1 00 0 1 1 1 0 10 0 0 0 0 1 0

Representacion: Listas de Adyacencia1

2

3

4

5

6

7

2 3

1 3 4

1 2 4 6

2 3 6

6

3 4 6 7

6

NULL

NULL

NULL

NULL

NULL

NULL

NULL

CCIR / Depto Matematicas Grafos

Problemas Clasicos sobre Grafos:Instancia: Grafo G = (V ,E )Ciclo Euleriano

¿Es posible encontrar una trayectoria donde aparezcacada lado exactamente una vez iniciando y terminandoen el mismo vertice?

CCIR / Depto Matematicas Grafos

Problemas Clasicos sobre Grafos:Instancia: Grafo G = (V ,E )Ciclo Hamilton

¿Es posible encontrar una trayectoria donde aparezcacada vertice exactamente una vez iniciando y terminandoen el mismo vertice?

CCIR / Depto Matematicas Grafos

Problemas Clasicos sobre Grafos:Instancia: Grafo G = (V ,E )Cubierta por Vertices Mınima

¿Cual es la cubierta por vertices mınima?Una cubierta por vertices es un conjunto de vertices V ′

tal que todo lado de E tiene al menos un extremo en V ′.

CCIR / Depto Matematicas Grafos

Problemas Clasicos sobre Grafos:Instancia: Grafo G = (V ,E )Maximo Clique

¿Cual es subgrafo de G que a su vez un grafo completomaximo?

CCIR / Depto Matematicas Grafos

Problemas Clasicos sobre Grafos:Instancia: Grafo G = (V ,E )Conjunto Independiente Maximo

¿Cual es el maximo conjunto independiente de vertices deG ?Un conjunto de vertices de un grafo se diceindependiente si entre dos pares cualquiera del conjuntono existe un lado que los una.

CCIR / Depto Matematicas Grafos

Problemas Clasicos sobre Grafos:Instancia: Grafo G = (V ,E )Coloreo de Grafos

¿Cual es el coloreo de G tal que |c(V )| es mınimo?Un coloreo de G es una funcion que a cada vertice de Vle asigna un entero positivo tal que dos verticesadyacentes tiene un diferente color asignado.

CCIR / Depto Matematicas Grafos

Busqueda Primero en Profundidadint DFS(GRAFO grafo,int v) {

int w;int entro=0;TDA ADYACENTE *adyacentes;MarcarDescubierto(v);adyacentes = grafo[v];printf(“Entrando al nodo %d ”,v);while (adyacentes != NULL) {

entro =0;w = adyacentes→nodo;adyacentes = adyacentes→next;if ( !(DescubiertoQ(w)) ) {

entro=1;DFS(grafo,w); }

if (entro) printf(”Regresando al nodo %d”,v);}return (1);

}

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

v7 = F ,adyacentes={A,C}

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

v7 = F ,adyacentes={A,C}v8 = A,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

v7 = F ,adyacentes={A,C}v8 = A,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

v7 = F ,adyacentes={A,C}v8 = A,visitadov9 = C ,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

v7 = F ,adyacentes={A,C}v8 = A,visitadov9 = C ,visitado

CCIR / Depto Matematicas Grafos

Ejemplo

A

B

C

D

EF

G

×

v1 = A,adyacentes={B,F}v2 = B,adyacentes={C ,D}

v3 = C ,adyacentes={}v4 = D,adyacentes={A,C}

v5 = A,visitadov6 = C ,visitado

v7 = F ,adyacentes={A,C}v8 = A,visitadov9 = C ,visitado

CCIR / Depto Matematicas Grafos

Determinacion de Componentes Conexas

Determinar los subgrafos de un grafo que son maximalmenteconexos.

Aplicado en Grafo Dirigido: Hacerlo simetrico en el caso nodirigido.

Codigo de los tres colores:

Color blanco para nodos que no han sido visitados.Color gris para nodos cuyos hijos estan siendo procesados.Color negros para nodos cuyos hijos fueron procesados.

CCIR / Depto Matematicas Grafos

Componentes Conexasint CompCon(GRAFO grafo,int n, int cc[]) {

int nc=0;for (v=1; v ≤ n ; v++) color[v]=BLANCO;for (v=1; v ≤ n ; v++)

if (color[v] == BLANCO)CompConA(grafo,color,v,++nc);

return nc;

int CompConA(GRAFO grafo,int color[], int v, int ncc, int cc[])color[v] = GRIS; cc[v] = ncc; adyacentes = grafo[v];while (adyacentes != NULL)

w = adyacentes→nodo;adyacentes = adyacentes→next;if ( color[w] == BLANCO) )

CompConA(grafo,color,w,ncc,cc);color[v] = NEGRO;return (1);

CCIR / Depto Matematicas Grafos