Upload
antonela-tommasel
View
2
Download
1
Embed Size (px)
DESCRIPTION
Different alternatives for performing graph colouring
Citation preview
06/04/2015
1
Análisis y Diseño de Algoritmos IICOLOREO DE UN GRAFO
ING. TOMMASEL ANTONEL A
Coloreo de GrafoDefinición Gráfica
1
2
3 4
Coloreo de GrafoDefinición Formal
• Un coloreo de un grafo 퐺 = (푉,퐴) es una transformación 퐶: 푉 → 푆 donde 푆 es un conjunto finito de colores tal que si (푣,푤) pertenece a 퐴, luego: 퐶(푣) ! = 퐶(푤). Es decir, vértices adyacentes no pueden tener el mismo color.
• El número cromático de 퐺 es el número más bajo de colores necesarios para colorearlo.
Propiedades del Coloreo de Grafos
• 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 (Grötzsch, 1959)
• Todo grafo planar que no contiene triángulos (ciclos de longitud 3) puede sercoloreado con 3 colores.
• Teorema (Vizing, 1964)
• Para todo grafo la cantidad de colores necesarios es menor o igual al máximogrado del grafo + 1.
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.Grötzsch, 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
2
Alternativas de Solución
Backtracking TransformacionesLocales
Aproximación de Horowitz
Greedy Combinación de Técnicas
Alternativas de Solución
Backtracking TransformacionesLocales
Aproximación de Horowitz
Greedy Combinación de Técnicas
for (cada vertice v){color := 1;while (g.adyacenteColoreado(v,color)color++;
g.colorear(v,color)}
Alternativas de Solución
Backtracking TransformacionesLocales
Aproximación de Horowitz
Greedy Combinación de Técnicas
if (|G| = 0 )0 colores;
elseif (|G| = 1 )1 color;
elseif (G es bipartito)2 colores;
else4 colores;
Coloreo de GrafoTransformaciones Parciales
1 2
3
4
5
6
7
8
06/04/2015
3
Coloreo de GrafoTransformaciones Parciales – 1. Coloreo con otra técnica
1 2
3
4
5
6
7
8
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8Se aplicó un Coloreo Secuencial tomando los vértices de menor a mayor respecto de su valor.
Coloreo de GrafoTransformaciones Parciales – 2. Analizar vértices a re-colorear
1 2
3
4
5
6
7
8
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3. Analizar Pares de Colores
1 2
3
4
5
6
7
8
UN ÚNICO PAR PARA ANALIZAR
1 2COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3. Analizar Pares de Colores
a) Construir sub-grafos con los vertices coloreados con ese par de colores.
UN ÚNICO PAR PARA ANALIZAR
1 2
1 2
3
4
5
6
7
8
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
06/04/2015
4
Coloreo de GrafoTransformaciones Parciales – 3. Analizar Pares de Colores
1 2
3
4
6
7
8
b) Identificar Componentes Conectadas
Componente1
Componente2
Componente3
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
1 2
3
4
6
7
8
3.c.1) Analizar si el vértice a colorear está conectado a vertices de distintos colores
Componente1
Componente2
Componente3
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
36
7
8
3.c.1) Analizar si el vértice a colorear está conectado a vertices de distintos colores
Componente1
Análisis Componente1
5
Está conectado a vértices de un único color.
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
36
7
8
3.c.2) Intercambiar Colores de la Componente
Componente1
Análisis Componente1
5
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
06/04/2015
5
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
36
7
8
COLORES 1 2 2 1 3 1 2 1
1 2 3 4 5 6 7 8
3.c.2) Intercambiar Colores de la Componente
Componente2
Análisis Componente1
5
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
1 2
3
4
6
7
8
3.c.3) Analizar si el posible colorear con un color ya usado
Componente1
Componente2Componente3
5
COLOREAR CON
NO ES POSIBLE
NO ES POSIBLE
COLORES 1 2 2 1 3 1 2 1
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
4
3.c.1) Analizar si el vértice a colorear está conectado a vertices de distintos colores
Componente2
Análisis Componente2
Está conectado a vértices de un único color.
5
COLORES 1 2 2 1 3 1 2 1
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
4
3.c.2) Intercambiar Colores de la Componente
Componente2
Análisis Componente2
5
COLORES 1 2 2 1 3 1 2 1
1 2 3 4 5 6 7 8
06/04/2015
6
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
4
3.c.2) Intercambiar Colores de la Componente
Componente2
Análisis Componente2
5
COLORES 1 2 2 2 3 1 2 1
1 2 3 4 5 6 7 8
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
1 2
3
4
6
7
8
COLORES 1 2 2 2 3 1 2 1
1 2 3 4 5 6 7 8
3.c.3) Analizar si el posible colorear con un color ya usado
Componente1
Componente2Componente3
5
COLOREAR CON
ES POSIBLE
Coloreo de GrafoTransformaciones Parciales – 3.c. Por cada Componente Conectada
1 2
3
4
6
7
8
COLORES 1 2 2 2 1 1 2 1
1 2 3 4 5 6 7 8
3.c.3) Analizar si el posible colorear con un color ya usado
Componente1
Componente2Componente3
5
COLOREAR CON
ES POSIBLE
Coloreo de GrafoTransformaciones Parciales – Grafo Modificado
1 2
3
4
6
7
8
5COLORES 1 2 2 2 1 1 2 1
1 2 3 4 5 6 7 8
06/04/2015
7
Coloreo de GrafoTransformaciones Parciales – Consideraciones
36
7
8
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
Qué hubiese pasado si el vértice se encontraba conectado a vertices de más de un color?
Componente1
Análisis Componente1
5
Al estar conectado a vertices de más de un color, el intercambio no hubiese solucionado el problema.
Es decir, no es possible colorear el vértice 5 con algunode los colores ya usados.
Coloreo de GrafoTransformaciones Parciales – Consideraciones
COLORES 1 2 1 1 3 2 1 2
1 2 3 4 5 6 7 8
El coloreo es sensible al orden en el que se consideran las componentes.
1 2
3
4
6
7
8
Componente1
Componente2
Componente3
Coloreo de GrafoTransformaciones Parciales – Consideraciones
COLORES 2 1 1 1 3 2 1 2
1 2 3 4 5 6 7 8
El coloreo es sensible al orden en el que se consideran las componentes.
1 2
3
4
6
7
8
Componente1
Componente2
Componente3
5
Se podría aplicaralguna estrategia para elegir el orden de lascomponentes.
Coloreo de GrafoTransformaciones Parciales - Resumiendo
1.Colorear el grafo mediante alguna técnica (por ejemplo: Secuencial).2.Analizar vértices con colores superiores a 2.3.Por cada par de colores asignados:
3.a Construir sub-grafos con los vértices coloreados con ese par de colores.3.b Identificar componentes conectadas.3.c Por cada componente conectada
3.c.1 Analizar si el vértice a colorear está conectado a vértices de distintos colores.3.c.2 Si no, intercambiar colores.3.c.3 Analizar factibilidad del coloreo.
06/04/2015
8
Coloreo de GrafoTransformaciones Parciales - Pseudocódigo
void coloreo_trans( Grafo<int> g, int*colores ){Grafo<int> h;int* componentes;for (vértice 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;}
}}
}
Coloreo de GrafoTransformaciones Parciales - Pseudocódigo
void coloreo_trans( Grafo<int> g, int*colores ){Grafo<int> h;int* componentes;bool coloreado := false;for (vértice 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 GrafoCombinación de Técnicas
• 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, multiplicación y composición de complejidades de otros algoritmos.
Coloreo de GrafoCombinación de Técnicas
• Desde el punto de vista práctico hay que resolver los problemas NP eficientemente.
• Si las entradas son “pequeñas” Usar algoritmos basados en backtracking que realicen una búsqueda exhaustiva
• Si las entradas “no son pequeñas” Construir soluciones aproximadas,“cercanas” a la mejor solución, a partir de algoritmos polinomiales.
if ( |G| <= MAX_VERTICES )colores := coloreoBacktracking(G)
else{colores := coloreoGreedy(G);colores := coloreoTransfParciales(G,colores);
}
06/04/2015
9
Coloreo de GrafoCombinación de Técnicas
• Las transformaciones parciales también pueden aplicarse en conjunto con el algoritmo de coloreo secuencial.
for (cada vertice v){color := 1;
while (g.adyacenteColoreado(v,color)color++;
if ( color ya había sido usado)g.colorear(v,color)
elseaplicar transformaciones parciales
}
for (cada vertice v){color := 1;
while (g.adyacenteColoreado(v,color)color++;
g.colorear(v,color)
}
Evaluación Experimental de Soluciones Aproximadas
• Un algoritmo de aproximación está acotado por ρ(n) si para cualquier entrada de tamaño n, el costo de la solución del algoritmo de aproximación, para un costo de una solución factible c y un costo c* de una solución óptima, es:
max ( c/c* , c*/c) ≤ ρ(n)
• Supongamos problemas de optimización, en los que cada solución factible tiene un costo positivo y se pretende obtener una solución cercana a la óptima.
Evaluación Experimental de Soluciones Aproximadas
• No se conocen algoritmos de aproximación para el coloreo de un grafo que estén acotados por un factor constante.
• Se demostró que si se descubriese un algoritmo de aproximación que en el peor de los casos duplicara la cantidad de colores de la solución óptima, sería posible obtener un coloreo óptimo en tiempo polinomial.
Esto implicaría: tiempo = NP-tiempo !!!!
• Obtener una “buena” solución, no necesariamente la óptima, para el coloreo puede ser en sí mismo un problema NP-HARD!!!
Análisis y Diseño de Algoritmos IICOLOREO DE UN GRAFO
ING. TOMMASEL ANTONEL A