Grafos - Profesor Eduardo Uresti Charrecb.mty.itesm.mx/tc4001/tc4001-grafos.pdf · Conceptos Los...
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
G×
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
G×
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
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
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