Sunteți pe pagina 1din 9

06/04/2015

Coloreo de Grafo
Definicin Grfica
2

Anlisis y Diseo de
Algoritmos II

CO LO R E O DE UN G R A F O

ING . TO MMA S E L A NTO NE L A

Coloreo de Grafo

Propiedades del Coloreo de Grafos

Definicin Formal
Un coloreo de un grafo = ( , ) es una transformacin :
donde
es un conjunto finito de colores tal que si ( , ) pertenece a , luego:
( ) ! = ( ). Es decir, vrtices adyacentes no pueden tener el mismo
color.

El nmero cromtico de
para colorearlo.

es el nmero ms bajo de colores necesarios

Teorema (Vizing, 1964)


Para todo grafo la cantidad de colores necesarios es menor o igual al mximo
grado del grafo + 1.
Todo Grafo Bipartito puede ser coloreado con 2 colores.
Teorema de los Cuatro Colores (Appel & Haken, 1976)
Todo grafo planar puede ser coloreado con 4 colores.
Teorema (Grtzsch, 1959)
Todo grafo planar que no contiene tringulos (ciclos de longitud 3) puede ser
coloreado con 3 colores.
Vizing, Vadim G. "On an estimate of the chromatic class of a p-graph." Diskret. Analiz 3.7 (1964): 25-30.
Appel, Kenneth, and Wolfgang Haken. "Every planar map is four colorable."Mathematical Solitaires & Games (1980): 145.
Grtzsch, H. "Zur Theorie der diskreten Gebilde. VII. Ein Dreifarbensatz far dreikreisfreie Netze auf der Kugel." Wiss. Z. Martin-Luther-Univ. Halle-Wittenberg. Math. Nat. Reihe8 (1958/59): 109-120.

06/04/2015

Alternativas de Solucin

Backtracking

Alternativas de Solucin

Transformaciones
Locales

Greedy

Aproximacin de
Horowitz

Transformaciones
Locales

Backtracking

for (cada vertice v){


color := 1;
while (g.adyacenteColoreado(v,color)
color++;
g.colorear(v,color)
}

Combinacin de
Tcnicas

Combinacin de
Tcnicas

Greedy

Alternativas de Solucin

Aproximacin de
Horowitz

Coloreo de Grafo
Transformaciones Parciales

Backtracking

Transformaciones
Locales

Greedy

Aproximacin de
Horowitz if (|G|

Combinacin de
Tcnicas

= 0 )
0 colores;
else
if (|G| = 1 )
1 color;
else
if (G es bipartito)
2 colores;
else
4 colores;

3
1

2
4
8
5

06/04/2015

Coloreo de Grafo

Coloreo de Grafo

Transformaciones Parciales 1. Coloreo con otra tcnica

3
1

Transformaciones Parciales 2. Analizar vrtices a re-colorear

6
1

4
8

COLORES

COLORES

Se aplic un Coloreo Secuencial tomando los vrtices de menor a mayor respecto de su valor.

Coloreo de Grafo

Coloreo de Grafo

Transformaciones Parciales 3. Analizar Pares de Colores

Transformaciones Parciales 3. Analizar Pares de Colores


a) Construir sub-grafos con los vertices coloreados con ese par de colores.

3
1

6
1

4
8

COLORES

5
UN NICO PAR PARA ANALIZAR

COLORES

7
UN NICO PAR PARA ANALIZAR

06/04/2015

Coloreo de Grafo

Coloreo de Grafo

Transformaciones Parciales 3. Analizar Pares de Colores

Transformaciones Parciales 3.c. Por cada Componente Conectada

b) Identificar Componentes Conectadas

3.c.1) Analizar si el vrtice a colorear est conectado a vertices de distintos colores

3
1

6
1

2
4

2
4

Componente 3

Componente 2

Componente 1

Coloreo de Grafo

COLORES

Componente 1

Coloreo de Grafo

Transformaciones Parciales 3.c. Por cada Componente Conectada

Transformaciones Parciales 3.c. Por cada Componente Conectada

3.c.1) Analizar si el vrtice a colorear est conectado a vertices de distintos colores

3.c.2) Intercambiar Colores de la Componente

Anlisis Componente1

Anlisis Componente1
3

Est conectado a vrtices de un nico color.

8
7

5
COLORES

Componente 3
Componente 2

COLORES

5
Componente 1

COLORES

Componente 1

06/04/2015

Coloreo de Grafo

Coloreo de Grafo

Transformaciones Parciales 3.c. Por cada Componente Conectada


3.c.2) Intercambiar Colores de la Componente

Transformaciones Parciales 3.c. Por cada Componente Conectada


3.c.3) Analizar si el posible colorear con un color ya usado

Anlisis Componente1
3

6
1

2
4

COLOREAR CON
NO ES POSIBLE

Componente 2

Componente 3

NO ES POSIBLE

5
COLORES

Componente 2

Coloreo de Grafo

COLORES

Coloreo de Grafo

Transformaciones Parciales 3.c. Por cada Componente Conectada

Transformaciones Parciales 3.c. Por cada Componente Conectada

3.c.1) Analizar si el vrtice a colorear est conectado a vertices de distintos colores

3.c.2) Intercambiar Colores de la Componente

Anlisis Componente2

Anlisis Componente2
4

Componente 2

Componente 2

Est conectado a vrtices de un nico color.


5

COLORES

Componente 1

COLORES

06/04/2015

Coloreo de Grafo

Coloreo de Grafo

Transformaciones Parciales 3.c. Por cada Componente Conectada


3.c.2) Intercambiar Colores de la Componente

Transformaciones Parciales 3.c. Por cada Componente Conectada


3.c.3) Analizar si el posible colorear con un color ya usado

Anlisis Componente2
3

4
1

Componente 2

4
8

COLOREAR CON
ES POSIBLE

Componente 2

Componente 3

COLORES

COLORES

Coloreo de Grafo

Componente 1

Coloreo de Grafo

Transformaciones Parciales 3.c. Por cada Componente Conectada

Transformaciones Parciales Grafo Modificado

3.c.3) Analizar si el posible colorear con un color ya usado

3
1

6
1

4
8

COLOREAR CON
ES POSIBLE

Componente 2

Componente 3

COLORES

Componente 1

COLORES

06/04/2015

Coloreo de Grafo

Coloreo de Grafo

Transformaciones Parciales Consideraciones

Transformaciones Parciales Consideraciones

Qu hubiese pasado si el vrtice se encontraba conectado a vertices de ms de un color?

El coloreo es sensible al orden en el que se consideran las componentes.

Anlisis Componente1
3

6
1

Al estar conectado a vertices de ms de un color, el


intercambio no hubiese solucionado el problema.

4
8

Es decir, no es possible colorear el vrtice 5 con alguno


de los colores ya usados.

Componente 3
Componente 2

5
COLORES

COLORES
Componente 1

Coloreo de Grafo

Componente 1

Coloreo de Grafo

Transformaciones Parciales Consideraciones

Transformaciones Parciales - Resumiendo

El coloreo es sensible al orden en el que se consideran las componentes.

3
1

2
4

COLORES

Componente 3

Se podra aplicar
alguna estrategia para
elegir el orden de las
componentes.

Componente 2

Componente 1

1. Colorear el grafo mediante alguna tcnica (por ejemplo: Secuencial).


2. Analizar vrtices con colores superiores a 2.
3. Por cada par de colores asignados:
3.a Construir sub-grafos con los vrtices coloreados con ese par de
colores.
3.b Identificar componentes conectadas.
3.c Por cada componente conectada
3.c.1 Analizar si el vrtice a colorear est conectado a vrtices de
distintos colores.
3.c.2 Si no, intercambiar colores.
3.c.3 Analizar factibilidad del coloreo.

06/04/2015

Coloreo de Grafo

Coloreo de Grafo

Transformaciones Parciales - Pseudocdigo


void coloreo_trans( Grafo<int> g, int*colores ){
Grafo<int> h;
int* componentes;
for (vrtice v en g que se deba cambiar el color){
for (cada par de colores (i,j)){
h:=getSubgraph(g,i,j);
componentes:=getComponentes(h);
for (cada componente c){
if (v conectado a vertices de un unico color){
intercambiarColoresComponente(colores,c)
if (esFactibleColorear(g,v,colores))
cambiar color de v;
}
}
}
}

Transformaciones Parciales - Pseudocdigo


void coloreo_trans( Grafo<int> g, int*colores ){
Grafo<int> h;
int* componentes;
bool coloreado := false;
for (vrtice v en g que se deba cambiar el color){
for (cada par de colores (i,j) && !coloreado){
h:=getSubgraph(g,i,j);
componentes:=getComponentes(h);
for (cada componente c && !coloreado){
if (v conectado a vertices de un unico color){
intercambiarColoresComponente(colores,c)
if (esFactibleColorear(g,v,colores)){
cambiar color de v;
coloreado := true;
}
}
else
coloreado := true; //No porque haya podido cambiar el color, sino porque no va a ser possible hacerlo.
}
}
}
}

Coloreo de Grafo
Combinacin de Tcnicas

Coloreo de Grafo
Combinacin de Tcnicas
Desde el punto de vista prctico hay que resolver los problemas NP eficientemente.

Un algoritmo para un problema complejo puede construirse combinando algoritmos para


problemas simples.
Los algoritmos simples pueden operar sobre las mismas entradas o sobre entradas
calculadas como resultados intermedios de otros problemas simples.
La complejidad del algoritmo puede ser acotada por suma, multiplicacin y composicin
de complejidades de otros algoritmos.

Si las entradas son pequeas Usar algoritmos basados en backtracking que realicen una bsqueda exhaustiva
Si las entradas no son pequeas Construir soluciones aproximadas,cercanas a la mejor solucin, a partir de algoritmos
polinomiales.

if ( |G| <=
colores
else{
colores
colores
}

MAX_VERTICES )
:= coloreoBacktracking(G)
:= coloreoGreedy(G);
:= coloreoTransfParciales(G,colores);

06/04/2015

Coloreo de Grafo

Evaluacin Experimental de Soluciones Aproximadas

Combinacin de Tcnicas
Las transformaciones parciales tambin pueden aplicarse en conjunto con el algoritmo de coloreo secuencial.

Supongamos problemas de optimizacin, en los que cada solucin factible tiene un costo
positivo y se pretende obtener una solucin cercana a la ptima.
for (cada vertice v){
color := 1;

for (cada vertice v){


color := 1;

while (g.adyacenteColoreado(v,color)
color++;

while (g.adyacenteColoreado(v,color)
color++;
if ( color ya haba sido usado)
g.colorear(v,color)
else
aplicar transformaciones parciales

g.colorear(v,color)

Un algoritmo de aproximacin est acotado por (n) si para cualquier entrada de tamao n, el
costo de la solucin del algoritmo de aproximacin, para un costo de una solucin factible c y
un costo c* de una solucin ptima, es:
max ( c/c* , c*/c) (n)

}
}

Evaluacin Experimental de Soluciones Aproximadas


No se conocen algoritmos de aproximacin para el coloreo de un grafo que estn acotados
por un factor constante.
Se demostr que si se descubriese un algoritmo de aproximacin que en el peor de los casos
duplicara la cantidad de colores de la solucin ptima, sera posible obtener un coloreo
ptimo en tiempo polinomial.
Esto implicara: tiempo = NP-tiempo !!!!
Obtener una buena solucin, no necesariamente la ptima, para el coloreo puede ser en
s mismo un problema NP-HARD!!!

Anlisis y Diseo de
Algoritmos II
CO LO R E O DE UN G R A F O
ING . TO MMA S E L A NTO NE L A

S-ar putea să vă placă și