Está en la página 1de 69

Coloreo de Grafos

Algoritmos y Estructuras de Datos III

Coloreo de nodos
Deniciones: Un coloreo (vlido) de los nodos de un grafo G = (V , X ) es a una asignacin f : V C , tal que f (v ) = f (u) (u, v ) E . o Los elementos de C son llamados colores. Muchas veces los colores son enteros positivos. Para todo entero positvo k, un k-coloreo de G es un coloreo de los nodos de G que usa exactamente k colores. Un grafo G se dice k-coloreable si existe un k-coloreo de G . El nmero cromtico de G , (G ), es el menor nmero de u a u colores necesarios para colorear los nodos de G . Un grafo G se dice k-cromtico si (G ) = k. a

Coloreo de nodos

Ejemplos: (Kn ) =

Coloreo de nodos

Ejemplos: (Kn ) = n. Si G es un grafo bipartito con m > 0, entonces (G ) =

Coloreo de nodos

Ejemplos: (Kn ) = n. Si G es un grafo bipartito con m > 0, entonces (G ) = 2. Si H2k es un circuito simple par, entonces (H2k ) =

Coloreo de nodos

Ejemplos: (Kn ) = n. Si G es un grafo bipartito con m > 0, entonces (G ) = 2. Si H2k es un circuito simple par, entonces (H2k ) = 2. Si H2k+1 es un circuito simple impar, entonces (H2k+1 ) =

Coloreo de nodos

Ejemplos: (Kn ) = n. Si G es un grafo bipartito con m > 0, entonces (G ) = 2. Si H2k es un circuito simple par, entonces (H2k ) = 2. Si H2k+1 es un circuito simple impar, entonces (H2k+1 ) = 3. Si T es un rbol con n > 1, entonces (T ) = a

Coloreo de nodos

Ejemplos: (Kn ) = n. Si G es un grafo bipartito con m > 0, entonces (G ) = 2. Si H2k es un circuito simple par, entonces (H2k ) = 2. Si H2k+1 es un circuito simple impar, entonces (H2k+1 ) = 3. Si T es un rbol con n > 1, entonces (T ) = 2. a

Cotas para
Proposicin: Si H es un subgrafo de G entonces (H) (G ). o

Cotas para
Proposicin: Si H es un subgrafo de G entonces (H) (G ). o Denicin: Una clique en un grafo es un subgrafo completo o maximal. El nmero clique (G ) de un grafo es el nmero de u u nodos de una clique mxima de G . a

Cotas para
Proposicin: Si H es un subgrafo de G entonces (H) (G ). o Denicin: Una clique en un grafo es un subgrafo completo o maximal. El nmero clique (G ) de un grafo es el nmero de u u nodos de una clique mxima de G . a Proposicin: Para cualquier grafo G , (G ) (G ). o

Cotas para
Proposicin: Si H es un subgrafo de G entonces (H) (G ). o Denicin: Una clique en un grafo es un subgrafo completo o maximal. El nmero clique (G ) de un grafo es el nmero de u u nodos de una clique mxima de G . a Proposicin: Para cualquier grafo G , (G ) (G ). o u2 u1 u3

u5

u4

Cotas para
Proposicin: Si H es un subgrafo de G entonces (H) (G ). o Denicin: Una clique en un grafo es un subgrafo completo o maximal. El nmero clique (G ) de un grafo es el nmero de u u nodos de una clique mxima de G . a Proposicin: Para cualquier grafo G , (G ) (G ). o u2 (G ) 3 u1 u3 (G ) 3 u5 u4

Cotas para
Proposicin: Si H es un subgrafo de G entonces (H) (G ). o Denicin: Una clique en un grafo es un subgrafo completo o maximal. El nmero clique (G ) de un grafo es el nmero de u u nodos de una clique mxima de G . a Proposicin: Para cualquier grafo G , (G ) (G ). o u2 (G ) 3 u1 u3 (G ) 3 u5 u4 (G ) = 3

Cotas para
Proposicin: Si H es un subgrafo de G entonces (H) (G ). o Denicin: Una clique en un grafo es un subgrafo completo o maximal. El nmero clique (G ) de un grafo es el nmero de u u nodos de una clique mxima de G . a Proposicin: Para cualquier grafo G , (G ) (G ). o u2 (G ) 3 u1 u3 (G ) 3 u5 u4 (G ) = 3

Es buena esta cota?

Grafos de Mycielski
Denicin (por induccin): o o 1. M1 = K1 2. M2 = K2 3. Para i 2, Mi+1 se construye a partir de Mi de la siguiente forma:
Si Mi tiene p nodos, v1 , . . . , vp , Mi+1 tendr 2p + 1 nodos, a v1 , . . . , vp , u1 , . . . , up , w , donde ui es copia de vi . El conjunto de aristas de Mi+1 tendr todas las aristas de Mi , a las aristas uniendo ui con los vecinos de vi en Mi y las aristas uniendo w con cada ui .

Grafos de Mycielski

M2 v1 v2

Grafos de Mycielski
M3 M2 v1 v2 v1 u1 v2

u2

Grafos de Mycielski
M3 M2 v1 v2 v1 u1 v2

u2

Grafos de Mycielski
M3 M2 v1 v2 v1 u1 v2

u2

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a (Mi ) = i u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a Cul es la clique mxima de Mi ? a a (Mi ) = i u5 u4 v4 u2 u3 v3

Grafos de Mycielski
v2 M4 M3 M2 v1 v2 v1 u1 v2 v1 u1 w u2 w v5 Cul es el nmero cromtico de Mi ? a u a Cul es la clique mxima de Mi ? a a (Mi ) = i (Mi ) = 2 u5 u4 v4 u2 u3 v3

Cotas para
Proposicin: Si (G ) es el grado mximo de G entonces o a (G ) (G ) + 1.

Cotas para
Proposicin: Si (G ) es el grado mximo de G entonces o a (G ) (G ) + 1. Teorema (Brooks): Sea G un grafo conexo que no es un circuito impar ni un grafo completo. Entonces (G ) (G ).

Cotas para
Proposicin: Si (G ) es el grado mximo de G entonces o a (G ) (G ) + 1. Teorema (Brooks): Sea G un grafo conexo que no es un circuito impar ni un grafo completo. Entonces (G ) (G ). Son buenas estas cotas?

Cotas para
Proposicin: Si (G ) es el grado mximo de G entonces o a (G ) (G ) + 1. Teorema (Brooks): Sea G un grafo conexo que no es un circuito impar ni un grafo completo. Entonces (G ) (G ). Son buenas estas cotas? K1,5 u1 u u5 u4 u2 u3

Cotas para
Proposicin: Si (G ) es el grado mximo de G entonces o a (G ) (G ) + 1. Teorema (Brooks): Sea G un grafo conexo que no es un circuito impar ni un grafo completo. Entonces (G ) (G ). Son buenas estas cotas? K1,5 u1 u u5 u4 u2 u3 (K1,n ) = 2 (K1,n ) = n

Cotas para
Lema 1: En todo (G )-coloreo de G v , los vecinos de v en G usan todos los colores y dG (v ) = (G ) v V .

Cotas para
Lema 1: En todo (G )-coloreo de G v , los vecinos de v en G usan todos los colores y dG (v ) = (G ) v V . Sean N(v ) = {v1 , . . . , v(G ) } los vecinos de v y consideremos un (G )-coloreo de G v donde el nodo vi es pintado con color i. Para i = j, sea Hij el subgrafo inducido por los nodos de G v pintados con colores i o j en ese (G )-coloreo.

Cotas para
Lema 1: En todo (G )-coloreo de G v , los vecinos de v en G usan todos los colores y dG (v ) = (G ) v V . Sean N(v ) = {v1 , . . . , v(G ) } los vecinos de v y consideremos un (G )-coloreo de G v donde el nodo vi es pintado con color i. Para i = j, sea Hij el subgrafo inducido por los nodos de G v pintados con colores i o j en ese (G )-coloreo. Lema 2: vi y vj pertenecen a la misma componente conexa de Hij

Cotas para
Lema 1: En todo (G )-coloreo de G v , los vecinos de v en G usan todos los colores y dG (v ) = (G ) v V . Sean N(v ) = {v1 , . . . , v(G ) } los vecinos de v y consideremos un (G )-coloreo de G v donde el nodo vi es pintado con color i. Para i = j, sea Hij el subgrafo inducido por los nodos de G v pintados con colores i o j en ese (G )-coloreo. Lema 2: vi y vj pertenecen a la misma componente conexa de Hij Lema 3: Si Pij es la componente conexa de Hij que contiene a vi y a vj , entonces Pij es un camino en Hij .

Cotas para
Lema 1: En todo (G )-coloreo de G v , los vecinos de v en G usan todos los colores y dG (v ) = (G ) v V . Sean N(v ) = {v1 , . . . , v(G ) } los vecinos de v y consideremos un (G )-coloreo de G v donde el nodo vi es pintado con color i. Para i = j, sea Hij el subgrafo inducido por los nodos de G v pintados con colores i o j en ese (G )-coloreo. Lema 2: vi y vj pertenecen a la misma componente conexa de Hij Lema 3: Si Pij es la componente conexa de Hij que contiene a vi y a vj , entonces Pij es un camino en Hij . Lema 4: Pij Pik = {vi }, para colores i = j = k.

Problema de los cuatro colores

Teorema de los 4 colores (Appel, Haken, 1976): Si G es un grafo planar, entonces (G ) 4.

Teorema (Heawood, 1890): Si G es un grafo planar, entonces (G ) 5.

Algoritmos para coloreo de grafos

Problema dif cil, computacionalmente no resuelto. Hay much simo trabajo en desarrollo de algoritmos, especialmente heur sticas para coloreo de grafos.

Algoritmo (heur stica) secuencial (S)

Entrada: Un grafo G con un orden en los nodos v1 , . . . , vn .

f (v1 ) := 1 para i = 2, 3, . . . , n hacer f (vi ) = m n{h / h 1 y f (vj ) = h (vj , vi ) E , 1 j i 1} retornar coloreo definido por f

Algoritmo secuencial (S)


Denimos uS (G , v1 , v2 , . . . , vn ) = mx m a n{i, d(vi ) + 1}.
1in

Proposicin: Si S (G ) es el nmero de colores usado por el o u algoritmo secuencial para colorear G cuando los nodos son considerados en el orden v1 , . . . , vn , entonces (G ) S (G ) uS (G , v1 , v2 , . . . , vn ). Importa el orden en que se colorean los nodos con el algoritmo secuencial?

Algoritmo secuencial (LFS)


Orden Largest First (LF): los nodos son ordenados de mayor grado a menor grado, d(u1 ) d(u2 ) . . . d(un ). Proposicin: Si uLF (G ) = uS (G , u1 , u2 , . . . , un ) donde o u1 , u2 , . . . , un estn ordenados segn LF. Entonces a u uLF (G ) m uS (G , v1 , v2 , . . . , vn ) n donde el m nimo est tomado sobre todos los ordenes posibles, a v1 , . . . , vn . Esto implica que siempre el algoritmo secuencial da un resultado mejor si se usa LF?

Algoritmo secuencial

Otra cota (mejor) para el nmero de colores usados por el u algoritmo secuencial es: uS (G , v1 , v2 , . . . , vn ) = 1 + mx {dGi (vi )} a
1in

donde dGi (vi ) es el grado del nodo vi en el grafo inducido por v1 , v2 , . . . , vi .

Algoritmo secuencial (SLS)

Orden Smallest Last (SL): 1. poner como vn el nodo de m nimo grado de G . 2. para i = n 1, . . . , 1 poner como vi el nodo de grado m nimo en el subgrafo de G inducido por V \ {vn , vn1 , . . . , vi+1 }. Denimos uSL (G ) = 1 + mx m {dGi (vj )} a n
1in 1ji

donde dGi (vj ) es el grado del nodo vj en el grafo inducido por V \ {vn , vn1 , . . . , vi+1 }.

Algoritmo secuencial - Cotas


Se puede demostrar (ejercicio) que: uS (G ) uS (G ) para cualquier orden de los nodos. SL (G ) uSL (G ). uSL (G ) uLF (G ). SLS colorea un grafo planar con 6 colores o menos.

Son buenas estas cotas?

Algoritmo secuencial con intercambio (SI)


Supongamos que tenemos un coloreo parcial de G , donde los nodos v1 , . . . , vi1 ya han sido coloredos y es el turno de colorear a vi . Si todos los colores ya utilizados estn en la a vecindad de vi , ser necesario utilizar un nuevo color. a

Algoritmo secuencial con intercambio (SI)


Supongamos que tenemos un coloreo parcial de G , donde los nodos v1 , . . . , vi1 ya han sido coloredos y es el turno de colorear a vi . Si todos los colores ya utilizados estn en la a vecindad de vi , ser necesario utilizar un nuevo color. a Si existen p y q dos colores utilizados en el coloreo parcial, tal que en todas las componenetes conexas de Hpq los nodos adyacentes a vi tienen el mismo color, podemos intercambiar los colores p y q en las componentes de Hpq con nodos adyacentes a vi con color p. De esta manera, obtendremos un coloreo parcial de G con el color p no utilizado en la vecindad de vi .

Algoritmo secuencial con intercambio (SI)


Supongamos que tenemos un coloreo parcial de G , donde los nodos v1 , . . . , vi1 ya han sido coloredos y es el turno de colorear a vi . Si todos los colores ya utilizados estn en la a vecindad de vi , ser necesario utilizar un nuevo color. a Si existen p y q dos colores utilizados en el coloreo parcial, tal que en todas las componenetes conexas de Hpq los nodos adyacentes a vi tienen el mismo color, podemos intercambiar los colores p y q en las componentes de Hpq con nodos adyacentes a vi con color p. De esta manera, obtendremos un coloreo parcial de G con el color p no utilizado en la vecindad de vi . Este procedimiento se llama p, q-intercambio.

Algoritmo secuencial con intercambio (SI)


f (v1 ) := 1, k := 1 para i = 2, 3, . . . , n hacer g := m n{h/h 1 y f (vj ) = h (vj , vi ) E , 1 j i 1} si g k entonces f (vi ) := g sino si existen 1 p < q k, tales que un p, q-intercambio libera p entonces realizar el p, q-intercambio f (vi ) := p sino f (vi ) := g , k := k + 1

Algoritmo secuencial con intercambio (SI)

Es siempre mejor el algoritmo SI que el algoritmo S?

Algoritmo secuencial con intercambio (SI)

Es siempre mejor el algoritmo SI que el algoritmo S? No, generando grafos al azar se han encontrado algunos ejemplos complicados donde SI usa ms colores que S. a Se puede demostrar que: SI colorea un grafo bipartito con 2 colores (ejercicio). SI con el ordenamiento SL colorea un grafo planar con 5 colores como mximo. a

Algoritmo secuencial con bracktracking (exacto)


v1 , v2 , . . . , vn ordenamiento de los nodos de G . Ui = conjunto de colores posibles para el nodo vi , una vez que han sido coloreados v1 , v2 .......vi1 . Si li1 es el mximo color usado para v1 , . . . , vi1 y slo a o buscamos coloreos ptimos, evitando coloreos equivalentes, o j Ui se verica que:
j no es color asignado a un vecino de vi ya coloreado j d(vi ) + 1 1 j li1 + 1 si ya se encontr un coloreo del grafo con q colores entonces o j q1

Algoritmo secuencial con bracktracking (exacto)


Con estas restricciones se hace una bsqueda completa. En el u rbol de bsqueda se abre una rama a partir de cada nodo a u (correspondiente a un coloreo de v1 , . . . , vi1 ), para cada elemento de Ui . Se avanza por las ramas coloreando los siguientes nodos hasta que ocurre alguna de las siguientes situaciones:
1. se lleg a un nodo con Ui = : a partir de esta situacin se o o hace backtracking a partir de vi1 . 2. se colore vn : se encontr un nuevo coloreo del grafo, hay que o o actualizar q y hacer backtracking.

Algoritmo secuencial con bracktracking (exacto)

q: cantidad de colores usados en la mejor solucin encontrada o hasta el momento. k: nodo siendo considerado. l: cantidad de colores utilizados en la solucin parcial actual. o lk : l para el nodo vk . cotaInf : cota inferior para el nmero cromtico del grafo. u a

Algoritmo secuencial con bracktracking (exacto)


f (v1 ) := 1, q := n + 1, k := 1, l := 1 avanzar := VERDADERO repetir si avanzar k := k + 1, lk := l, determinar Uk si Uk = avanzar := FALSO, k := k 1, l := lk sino j := m Uk , Uk := Uk \ {j}, f (vk ) := j n si j > l entonces l := l + 1 si k < n entonces avanzar := VERDADERO sino almacenar la nueva solucin o encontrar el menor i tal que f (vi ) = l borrar l, l + 1, . . . , q 1 de U1 , . . . , Ui1 q := l, l := q 1, k := i 1 avanzar := FALSO hasta k = 1 o q = cotaInf

Coloreo es NP-completo

A partir de un algoritmo de backtracking para coloreo es fcil a construir una NDTM para el problema de coloreo, por lo tanto est en NP. a

Coloreo es NP-completo

A partir de un algoritmo de backtracking para coloreo es fcil a construir una NDTM para el problema de coloreo, por lo tanto est en NP. a Para probar que coloreo es NP-completo, vamos entonces a reducir SAT a coloreo.

Coloreo es NP-completo

A partir de un algoritmo de backtracking para coloreo es fcil a construir una NDTM para el problema de coloreo, por lo tanto est en NP. a Para probar que coloreo es NP-completo, vamos entonces a reducir SAT a coloreo. Tomemos una instancia genrica de SAT = C1 Cm . Vamos e a construir un grafo G y determinar un nmero k de manera que u sea satisfactible si y slo si G se puede colorear con k-colores. o

Reduccin de SAT a coloreo o


G tiene: V1 : un vrtice por cada variable negada y e armada, todos adyacentes entre si. V2 : un vrtice por cada clusula, e a adyacente a los literales de V1 que no aparecen en la clusula. a V3 : otro vrtice por cada variable, e adyacente a todo V2 y a los literales de V1 correspondientes a otras variables. k = dos veces la cantidad de variables. Queda como ejercicio escribir formalmente la reduccin y demostrar que o es una reduccin polinomial de SAT a coloreo. o = (x1 x2 x3 )(x2 x3 )
completo

x1 x1 x2 x2 x3 x3 C1

G
x1 x2 C2 x3

k=6

Reduccin de SAT a coloreo o


= (x1 x2 x3 ) (x2 x3 )
completo

x1 x1 x2 x2 x3 x3 C1

G
x1 x2 C2 x3

k=6

Coloreo de aristas
Deniciones: Un coloreo vlido de las aristas de un grafo G es un a asignacin de colores a las mismas en la cual dos aristas que o tienen un nodo en comn no tengan el mismo color. u El ndice cromtico (G ) de un grafo G es el menor nmero a u de colores con que se pueden colorear las aristas de un grafo. Teorema de Vizing: Para todo grafo G se verica que (G ) (G ) (G ) + 1.