Coloreo de Grafos

Anuncio
Coloreo de vértices
Definiciones:
I
Un coloreo (válido) de los vértices de un grafo G = (V , X )
es una asignación f : V → C , tal que
f (v ) 6= f (u) ∀(u, v ) ∈ E .
I
Los elementos de C son llamados colores. Muchas veces los
colores son enteros positivos.
I
Para todo entero positvo k, un k-coloreo de G es un coloreo
de los vértices de G que usa exactamente k colores.
I
Un grafo G se dice k-coloreable si existe un k-coloreo de G .
I
El número cromático de G , χ(G ), es el menor número de
colores necesarios para colorear los nodos de G .
I
Un grafo G se dice k-cromático si χ(G ) = k.
Coloreo de Grafos
Algoritmos y Estructuras de Datos III
Coloreo de nodos
Cotas para χ
Proposición: Si H es un subgrafo de G entonces χ(H) ≤ χ(G ).
Ejemplos:
I
χ(Kn ) = n.
I
Si G es un grafo bipartito con m > 0, entonces χ(G ) = 2.
I
Si H2k es un circuito simple par, entonces χ(H2k ) = 2.
I
Si H2k+1 es un circuito simple impar, entonces χ(H2k+1 ) = 3.
Definición: Una clique en un grafo es un subgrafo completo
maximal. El número clique ω(G ) de un grafo es el número de
nodos de una clique máxima de G .
Proposición: Para cualquier grafo G , χ(G ) ≥ ω(G ).
I
I
¿Existen grafos para los cuales χ(G ) > ω(G )?
¿Qué pasa si χ(G ) = ω(G )?
u2
χ(G ) ≤ 3
u1
u3
ω(G ) ≥ 3
u5
I
u4
χ(G ) = 3
¿Cuán grande puede ser la diferencia entre estos dos
parámetros?
Grafos de Mycielski
Grafos de Mycielski
v2
M4
Definición (por inducción):
v2
M3
u2
M2
1. M1 = K1
v1
v2
v1
u1
v1
u1
u3
2. M2 = K2
w
3. Para i ≥ 2, Mi+1 se construye a partir de Mi de la siguiente
forma:
I
I
Si Mi tiene p nodos, v1 , . . . , vp , Mi+1 tendrá 2p + 1 nodos,
v1 , . . . , vp , u1 , . . . , up , w , donde ui es copia de vi .
El conjunto de aristas de Mi+1 tendrá todas las aristas de Mi ,
las aristas uniendo ui con los vecinos de vi en Mi y las aristas
uniendo w con cada ui .
Cotas para χ
u2
u5
w
v5
¿Cuál es el número cromático de Mi ?
χ(Mi ) = i
¿Cuál es la clique máxima de Mi ?
ω(Mi ) = 2
u4
v4
Cotas para χ
Proposición: Si ∆(G ) es el grado máximo de G entonces
χ(G ) ≤ ∆(G ) + 1.
Teorema (Brooks): Sea G un grafo conexo que no es un circuito
impar ni un grafo completo. Entonces
χ(G ) ≤ ∆(G ).
I
I
I
¿Existen grafos para los cuales χ(G ) = ∆(G )?
¿Existen grafos para los cuales χ(G ) < ∆(G )?
¿Cuán grande puede ser la diferencia entre estos dos
parámetros?
u2
K1,5
u1
u3
u
u5
u4
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 6= 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
χ(K1,n ) = 2
Lema 3: Si Pij es la componente conexa de Hij que contiene a vi y
a vj , entonces Pij es un camino en Hij .
∆(K1,n ) = n
Lema 4: Pij ∩ Pik = {vi }, para colores i 6= j 6= k.
v3
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
Algoritmos para coloreo de grafos
I
Problema “difı́cil”, computacionalmente no resuelto.
I
No se conocen algoritmos polinomiales para calcular χ(G )
dado un grafo general G .
I
Existen muchos enfoques algorı́tmicos para este problema:
I
χ(G ) ≤ 5.
I
I
Algoritmo (heurı́stica) secuencial (S)
Heurı́sticas y metaheurı́sticas.
Algoritmos basados en backtracking (por ejemplo: DSATUR,
Brelaz, 1979).
Algoritmos exactos basados en programación lineal entera.
Algoritmo secuencial (S)
Definimos
Entrada: Un grafo G con un orden en los nodos v1 , . . . , vn .
uS (G , v1 , v2 , . . . , vn ) = máx mı́n{i, d(vi ) + 1}.
1≤i≤n
f (v1 ) := 1
para i = 2, 3, . . . , n hacer
f (vi ) = mı́n{h / h ≥ 1 y
Proposición: Si χS (G ) es el número de colores usado por el
algoritmo secuencial para colorear G cuando los nodos son
considerados en el orden v1 , . . . , vn , entonces
χ(G ) ≤ χS (G ) ≤ uS (G , v1 , v2 , . . . , vn ).
f (vj ) 6= h ∀(vj , vi ) ∈ E , 1 ≤ j ≤ i − 1}
retornar coloreo definido por f
¿Importa el orden de los vértices?
Algoritmo secuencial (LFS)
Algoritmo secuencial
Orden Largest First (LF): los nodos son ordenados de mayor
grado a menor grado, d(u1 ) ≥ d(u2 ) ≥ . . . ≥ d(un ).
Proposición: Si uLF (G ) = uS (G , u1 , u2 , . . . , un ) donde
u1 , u2 , . . . , un están ordenados según LF. Entonces
uLF (G ) ≤ mı́n uS (G , v1 , v2 , . . . , vn )
Definición: Si Gi es el sugrafo inducido por v1 , v2 , . . . , vi , entonces
uS0 (G , v1 , v2 , . . . , vn ) = 1 + máx {dGi (vi )}
1≤i≤n
donde dGi (vi ) es el grado del nodo vi en Gi .
Ejercicio: Para cualquier orden de los vértices
donde el mı́nimo está tomado sobre todos los ordenes posibles,
v1 , . . . , vn .
¿Esto implica que siempre el algoritmo secuencial da un resultado
mejor si se usa LF?
Algoritmo secuencial (SLS)
uS0 (G , v1 , v2 , . . . , vn ) ≤ uS (G , v1 , v2 , . . . , vn )
y cota para el número de colores usados por el algoritmo secuencial
con orden v1 , v2 , . . . , vn .
Algoritmo secuencial - Cotas
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 , vn−1 , . . . , vi+1 }.
Definimos
uSL (G ) = 1 + máx mı́n {dGi (vj )}
1≤i≤n 1≤j≤i
donde dGi (vj ) es el grado del nodo vj en el grafo inducido por
V \ {vn , vn−1 , . . . , vi+1 }.
Se puede demostrar (ejercicio) que:
I
χSL (G ) ≤ uSL (G ).
I
uSL (G ) ≤ uLF (G ).
I
SLS colorea un grafo planar con 6 colores o menos.
Algoritmo secuencial con intercambio (SI)
I
Supongamos que tenemos un coloreo parcial de G , donde los
vértices v1 , . . . , vi−1 ya han sido coloredos y es el turno de
colorear a vi . Si todos los colores ya utilizados están en la
vecindad de vi , será necesario utilizar un nuevo color.
I
Si existen p y q dos colores utilizados en el coloreo parcial, tal
que en todas las componenetes conexas de Hpq los vértices
adyacentes a vi tienen el mismo color, podemos intercambiar
los colores p y q en las componentes de Hpq con vértices
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 .
I
Este procedimiento se llama p, q-intercambio.
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 más colores que S.
Se puede demostrar que:
I
SI colorea un grafo bipartito con 2 colores (ejercicio).
I
SI con el ordenamiento SL colorea un grafo planar con 5
colores como máximo.
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 ) 6= 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 bracktracking (exacto)
I
v1 , v2 , . . . , vn ordenamiento de los vértices de G .
I
Ui = conjunto de colores posibles para el vértice vi , una vez
que han sido coloreados v1 , v2 .......vi−1 .
I
Si li−1 es el máximo color usado para v1 , . . . , vi−1 y sólo
buscamos coloreos óptimos, evitando coloreos equivalentes,
∀j ∈ Ui se verifica que:
I
j no es color asignado a un vecino de vi ya coloreado
I
j ≤ mı́n{i, d(vi ) + 1}
I
1 ≤ j ≤ li−1 + 1
I
si ya se encontró un coloreo del grafo con q colores entonces
j ≤q−1
Algoritmo secuencial con bracktracking (exacto)
I
I
Con estas restricciones se hace una búsqueda completa. En el
árbol de búsqueda se abre una rama a partir de cada vértice
(correspondiente a un coloreo de v1 , . . . , vi−1 ), para cada
elemento de Ui .
Se avanza por las ramas coloreando los siguientes vértices
hasta que ocurre alguna de las siguientes situaciones:
1. se llegó a un vértice con Ui = ∅: a partir de esta situación se
hace backtracking a partir de vi−1 .
2. se coloreó vn : se encontró un nuevo coloreo del grafo, hay que
actualizar q y hacer backtracking.
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ı́n Uk , Uk := Uk \ {j}, f (vk ) := j
si j > l entonces l := l + 1
si k < n entonces avanzar := VERDADERO
sino
almacenar la nueva solución
encontrar el menor i tal que f (vi ) = l
borrar l, l + 1, . . . , q − 1 de U1 , . . . , Ui−1
q := l, l := q − 1, k := i − 1
avanzar := FALSO
hasta k = 1 o q = cotaInf
Algoritmo secuencial con bracktracking (exacto)
I
q: cantidad de colores usados en la mejor solución encontrada
hasta el momento.
I
k: vértice siendo considerado.
I
l: cantidad de colores utilizados en la solución parcial actual.
I
lk : l para el vértice vk .
I
cotaInf : cota inferior para el número cromático del grafo.
Coloreo de aristas
Definiciones:
I
Un coloreo válido de las aristas de un grafo G es un
asignación de colores a las mismas en la cual dos aristas que
tienen un vértice en común no tengan el mismo color.
I
El ı́ndice cromático χ0 (G ) de un grafo G es el menor número
de colores con que se pueden colorear las aristas de un grafo.
Teorema de Vizing: Para todo grafo G se verifica que
∆(G ) ≤ χ0 (G ) ≤ ∆(G ) + 1.
Descargar