Está en la página 1de 41

TRABAJO FIN DE GRADO DE ESTADÍSTICA

PROBLEMA DE LOS CUATRO COLORES

AUTOR: ALFONSO GUISADO GONZALEZ


FACULTAD DE CIENCIAS-AÑO 2022
TUTOR DEL TRABAJO.
TRABAJO FIN DE GRADO DE ESTADÍSTICA
PROBLEMA DE LOS CUATRO COLORES
AUTOR: ALFONSO GUISADO GONZALEZ
FACULTAD DE CIENCIAS-AÑO 2022
TUTOR DEL TRABAJO.

Firmado: ______________
Contenido
Presentación del problema de colorear mapas......................................................................................3
Orígenes de la Teoría de Grafos.........................................................................................................4
Colorear mapas: un problema de Teoría de Grafos............................................................................6
La conjetura de los cuatro colores......................................................................................................7
Evolución histórica.............................................................................................................................7
Técnicas de demostración de la conjetura de los cuatro colores.........................................................12
Reducción al caso de mapas cúbicos................................................................................................12
La fallida demostración de Kempe...................................................................................................12
Los mapas como grafos duales.........................................................................................................18
La demostración en teoría de grafos................................................................................................19
El algoritmo de descarga: los grafos como redes eléctricas.............................................................21
Aplicación del algorítmo de descarga para construir conjuntos inevitables de configuraciones......21
Aplicación del algoritmo de descarga para demostrar que una configuración es reducible............22
Algoritmos para la coloración de mapas: aplicación práctica del algoritmo “backtraking”..................25
Coloración de mapas........................................................................................................................25
Algoritmo Backtracking....................................................................................................................26
Programación del algoritmo Backtracking para colorear mapas......................................................27
Aplicación práctica del algoritmo Backtracking para colorear el mapa de España peninsular.........28
Programación en C++ del algoritmo Backtracking para colorear el mapa de España peninsular.....32
Comparación del coloreado del mapa de España peninsular con el coloreado por Comunidades
Autónomas peninsulares..................................................................................................................33
Conclusión de la aplicación práctica del algoritmo “backtracking”..................................................36
Bibliografía...........................................................................................................................................37
Referencias...........................................................................................................................................37
Presentación del problema de colorear mapas
La matemática discreta, dedica al estudio de los conjuntos finitos o numerables, ha
desarrollado teorías para resolver problemas de optimización, donde se busca calcular
soluciones que minimicen o maximicen determinados parámetros.
Este es el caso de aquellos problemas formulados sobre un grafo, entendiendo como tal la
pareja formada por un determinado conjunto de puntos {v1, v2,…, vn} denominados vértices y
un determinado conjunto de líneas que unen entre sí parejas de puntos {v ivj} denominadas
aristas, donde se busca calcular una sucesión {v ivj, vjvk, vkvl,…} que de haga mínimo o máximo
el número de vértices o aristas, sujetos a determinadas condiciones.
La Teoría de Grafos es el campo de la matemática discreta que estudia este tipo de
problemas y facilita una serie de herramientas ideales para la modelización y resolución de
cuestiones planteadas en situaciones reales susceptibles de ser formuladas en términos
discretos.
El desarrollo de esta Teoría ha estado precisamente motivado por sus aplicaciones y utilidad
práctica, ligado a otros campos de las matemáticas como la Topología, la Combinatoria, la
Teoría de Grupos o la Teoría de Conjuntos.

Orígenes de la Teoría de Grafos 


El nacimiento del concepto de grafo puede situarse en un estudio de 1736 realizado por Leonhard
Euler (1707-1783), matemático y físico suizo del siglo XVIII y uno de los más grandes y prolíficos de
todos los tiempos, donde abordaba la solución del denominado problema de los puentes de
Königsberg, cuyo enunciado es el siguiente:
“Dado el mapa de la ciudad prusiana de Königsberg (actual Kalingrado, en Rusia), a la que
el río Pregel divide en cuatro regiones distintas, unidas a través de siete puentes, ¿es posible
dar un paseo que se inicie en cualquiera de estas regiones, pase por todos los puentes,
sólo una vez por cada uno de ellos, y finalice en la misma región de inicio?”
Para la resolución de este problema Euler ideó el concepto de “grafo”, como una abstracción
útil que permite modelar una amplia gama de problemas mediante diagramas gráficos, que
a su vez pueden representarse algebraicamente como un par de conjuntos, uno formado por
puntos {v1, v2, v3, v4} (vértices) que representan las regiones y otro formado por líneas que los
unen {vi vj} (aristas) que representan los puentes.

Euler, resolvió el problema razonando sobre este conjunto de vértices y aristas, razonando
como sigue: las condiciones del paseo requieren que el vértice de inicio y final del paseo
tenga que tener una arista a través de la cual salir para iniciar el paseo hacia otro vértice y
otra arista distinta a través de la cual volver para finalizar el paseo, mientras que para el
resto vértices por los que pasar se requiere una arista para llegar y otra para salir, por tanto,
las condiciones del paseo requieren que cada vértice debe tener un número par de aristas.
Dado que en el mapa de Königsberg los vértices tienen un número impar de aristas, Euler
concluyó que el problema es irresoluble.
Unos años más tarde, en 1758, Euler empleó razonamientos análogos para el estudio de los
vértices, aristas y caras de los poliedros, demostrando la fórmula:
(nº vértices) - (nº aristas) + (nº caras) = 2
Colorear mapas: un problema de Teoría de Grafos 
Las técnicas empleadas por Euler se fueron extendiendo a la resolución de otros problemas,
hasta conformar la denominada Teoría de Grafos, entre ellos el problema de colorear las
regiones en que se divide un mapa geográfico plano con un número mínimo de colores, sin
que se repita el color entre dos regiones colindantes.

Los mapas a los que alude este problema han de ser mapas conexos (no existe una partición
en conjuntos de regiones disjuntas) y cada región es a su vez conexa (es una única pieza del
mapa). En el caso de que los mapas no sean conexos, se podría plantear el problema por
separado en cada componente conexa. Asimismo, dos regiones que coincidan en un solo
punto no se consideran regiones colindantes.
Equivalentemente, el mismo problema se puede plantear sobre mapas esféricos, y la
solución es equivalente por simple proyección estereográfica

Considerando cada región del mapa como un vértice y cara frontera entre regiones
colindantes como una arista, problema de colorear mapas con un número mínimo de colores
se convierte en un problema de teoría de grafos, en concreto, en un poliedro sobre el que
podemos aplicar la fórmula de Euler.
La conjetura de los cuatro colores
La solución al problema de colorear mapas es una conjetura matemática: un teorema por
cuya demostración se han interesado numerosos matemáticos y científicos a lo largo de la
historia, sin que fuera posible alcanzar una solución definitiva:

“Cuatro colores son suficientes para colorear un mapa geográfico plano sin que dos
regiones colindantes (frontera) coincidan con un mismo color”.

Esta conjetura supone un problema topológico, ya que su dificultad no reside en la cantidad


de las regiones ni en sus formas, sino en cómo están colocadas una respecto de otra.
Además, se trata de un problema para el que no se plantea ninguna otra utilidad
matemática o científica, más allá del propio interés e importancia que cada persona le quiera
dar al logro de demostrar el teorema. Es más, aparentemente cualquier persona con un
poco de habilidad puede conseguir un 4-coloreado en un mapa que cumpla los requisitos
mencionados.
Sin embargo, alcanzar su demostración es muchísimo más difícil de lo que puede parecer a
simple vista, al involucrar conceptos y métodos matemáticos complejos que sólo están al
alcance de matemáticos expertos.
Así, aunque la conjetura se difundió en el siglo XIX, no fue hasta el año 1976 cuando el
matemático estadounidense Kenneth Appel (1932-2013) y el matemático alemán Wolfgang
Haken (1928-actualidad) presentaron una demostración que utilizaba para realizar los
cálculos un ordenador, lo que hoy en día sigue generando controversia entre la comunidad
matemática.

Evolución histórica
El origen de la conjetura de los cuatro colores se sitúa en 1852 cuando el abogado y botánico
inglés Francis Guthrie (1839- 1899) observó que era capaz de colorear el mapa de las
regiones de Inglaterra sin que dos regiones colindantes tengan el mismo color, con tan solo
cuatro colores, así conjeturó que debía de suceder lo mismo con cualquier otro mapa que
tenga las mismas propiedades, aunque no alcanzó el modo de demostrarlo.
Lo que si fue capaz de probar es que tres colores no eran suficientes para colorear cualquier
mapa, utilizando para ello el ejemplo del denominado diagrama crítico, un mapa que
requiere un mínimo de cuatro colores:
Dedujo así que eran necesarios al menos cuatro colores, y de ahí especuló con la conjetura
de que también cuatro colores eran suficientes.
Francis Guthrie compartió la conjetura con su hermano, el físico y químico británico
Frederick Guthrie (1833-1886), fundador de la Sociedad Física de Londres, que fue el
primero en observar que la conjetura de los cuatro colores para mapas planos (dimensión 2)
no se podía generalizar a mapas espaciales (dimensión 3).
Así lo demostraría posteriormente Heinrich Tietze (1880- 1964), matemático austriaco, que
ideó un método para construir ejemplos de mapas tridimensionales que para colorearse sin
coincidir colores en la frontera necesitan tantos colores como se deseen. Para ello, si fijamos
el numero “m” es el número de colores (por ejemplo, m=5), basta tomar barras numeradas
de 1 a m, y sobre ellas colocamos otras tantas m barras girándolas 90 grados, de tal forma
que los ejes transversales de las barras de abajo queden en perpendicular respecto a las
barras de arriba.

Este método produce un mapa tridimensional, que necesita tantos colores como regiones
tenga para que no coincidan en la frontera.
Frederick Guthrie le planteó a su vez la conjetura de los cuatro colores a su profesor
Augustus de Morga (1806-1871), a quien se interesó especialmente, difundiendo el
problema entre sus colegas matemáticos más cercanos.
Entre ellos estaba Sir William Rowan Hamilton (1805- 1865), matemático y físico irlandés, a
quien le planteó la conjetura en una carta fechada el 23 de octubre de 1852.
La respuesta de Hamilton, casi a vuelta de correo, fue desinteresarse por el problema,
diciendo que no se pondría pronto a resolver aquel problema “cuaterniónico” de colores,
bromedando con otro problema en el que se encontraba estudiando y trabajando: la Teoría
de Cuaterniones, nombre dado por el mismo Hamilton a los números cuatro dimensionales a
+ b.i + c. j+ d. k, i2=j2=k2=i.j.k = -1, extensión de los números complejos.
Tras la evasiva de Hamilton, De Morgan se puso en contacto con otros científicos de la
época, como el teólogo y filósofo británico William Whewell (1794-1866), de la Universidad
de Cambridge, a quien escribió en 1853 describiéndole el problema como un axioma
matemático (una premisa “evidente” que se acepta sin demostración).
Al fallecer De Morgan el problema pareció quedar enterrado, hasta que en 1878 otro
matemático británico, Arthur Cayley (1821-1895), planteó la conjetura de los cuatro colores
en un encuentro de la Sociedad Física de Londres, publicando en 1879 una pequeña nota en
los Proceedings of the Royal Geographical Society donde admite su fracaso en la
demostración y expone la complejidad del problema.
En la nota demuestra que el problema puede reducirse a los mapas cúbicos, que son
aquellos en que cada punto de intersección de fronteras se encuentran tres regiones: si en
algún punto del mapa original se encontraran más de tres regiones en alguno de los puntos
de intersección, entonces, podemos pegar una “región parche” sobre ese punto de
intersección, lo que produce un mapa parcheado que ya es un mapa cúbico, que si se puede
colorear con cuatro colores, permite deducir una coloración con cuatro colores del mapa
original, reduciendo la “región parche” a un punto.

Un alumno de Arthur Cailey en el Trinity College de Cambridge, Alfred Bray Kempe (1849-
1922), sería el primer matemático en “demostrar” la conjetura de los cuatro colores, pero
cometió un error en su razonamiento que invalidaría su demostración.
Tras graduarse en matemáticas en 1872, Kempe ejerció la profesión de abogado en Londres,
dedicando también su tiempo a resolver problemas matemáticos. En 1872 publica un trabajo
sobre la solución de ecuaciones por medios mecánicos en 1872, y en 1876 demostró un
teorema sobre la posibilidad de reproducir curvas planas mediante un mecanismo
articulado, con aplicación al movimiento en línea recta de los pistones de las máquinas de
vapor, que había planteado el ingeniero francés Charles Nicholas Peaucellier (1832- 1913).
Inspirándose en los trabajos del matemático James Joseph Sylvester (1814-1897), Kempe
presentó en una serie de conferencias impartidas en 1877 un sistema para trazar líneas
rectas que fue llamado “Quadruplanar Inversor” o “Sylvester-Kempe Inversor” que se
convertiría en un referente sobre el tema.
En junio de 1879, Kempe publicó una prueba de la conjetura de los cuatro colores, que
apareció primeramente en la revista Nature, y a finales de ese año se difundió en el
American Journal of Mathematics. Posteriormente, en 1880, publicaría una versión más
simplificada de su demostración corrigiendo algunas erratas de la prueba original, en los
Proceedings of the London Mathematical Society.
Pero la demostración contenía un error, que se mantuvo intacto y había pasado
desapercibido en todas las publicaciones, hasta que el matemático británico Percy Heawood
(1861-1955) descubriera un ejemplo de mapa donde fallaba el argumento de Kempe para
colorearlo con 4 colores. Así lo publicó, muy a su pesar, en su trabajo “Map Colour Theorem”
que apareció en 1890, en el Journal of Pure and Applied Mathematics.
Kempe tuvo que admitir su error en las páginas de los Proceedings of the London
Mathematical Society. matizando en un encuentro con sus colegas el 9 de abril de 1891 que
el ejemplo de mapa presentado por Heawood si que podía colorearse con 4 colores, aunque
no a través de la demostración de Kempe, concluyendo que lo que fallaba era su prueba de
la conjetura, no la conjetura en sí
Aun así, el trabajo de Kempe para la demostración de la conjetura de los cuatro colores no
sería en vano, pues su fallido argumento contenía conceptos válidos fundamentales para la
resolución del problema, como la que sería conocida como cadena de Kempe y los conjuntos
inevitables. De hecho, el propio Heawood utilizó el concepto de las cadenas de Kempe para
probar de una manera muy sencilla el teorema de los cinco colores, que establece que cinco
colores son suficientes para colorear cualquier mapa.
El siguiente avance en la demostración fue obra del matemático estadounidense George
David Birkhoff (1884-1944), que en 1912 introdujo el concepto de polinomio cromático, que
asigna a cada mapa la cantidad de maneras en las cuales puede ser coloreado usando no
más que un determinado número de colores dados, formulándolo en términos de Teoría de
grafos. Un año después, en 1913, publica una nueva contribución al tema, en su artículo
“The reducibility of maps”, donde desarrolla el concepto de conjunto reducible.
Estas técnicas apuntaban por buen camino para demostrar la conjetura, pero requerían aún
una sistematización, en la que avanzaría el matemático y músico alemán Heinrich Heesch
(1906-1995), que trabajó en el problema desde 1950 a 1970, desarrollando un algoritmo que
llevaría a completar la demostración, reduciéndola al estudio de un conjunto de 8.900
configuraciones de mapas, cuyo cómputo excedía la capacidad humana. De tal forma que en
1969 Heesch se plantea programar ese algoritmo en un ordenador, y realiza diversos
intentos con el lenguaje de programación Algol 60 (Algorithmic Language, utilizado en las
univeridades durante la década de 1960) en una maquina CDC1604A diseñada por el
ingeniero estadounidense Seymour Cray (1925-1966) y fabricada por la compañía Control
Data Corporation (CDC).
Heesch le plantea el problema de programar la solución que demostraría la conjetura a su
alumno Wolfgang Haken (1928, -), especialista en topología, que en 1962 se había instalado
como profesor visitante en la universidad estadounidense de Illinois. El reto no era sencillo, y
Haken acudió a un colega de esa universidad, el matemático Kenneth Appel (1932-2013). La
tarea de perfeccionar el algoritmo les supuso a Appel y Haken varios años de trabajo, hasta
que en 1976 anunciaron que habían completado la demostración de la conjetura de los
cuatro colores mediante un cómputo algorítmico en un ordenador IBM 360.
Justo un año antes, en 1975, el filósofo de la ciencia y divulgador científico estadounidense
Martin Gardner (1914-2010), editor de los “Mathematical Games” de la prestigiosa revista
Scientific American, había publicado un artículo a modo de broma, precisamente el día de
los inocentes (1 de abril en los países anglosajones) donde mostraba el denominado “mapa
de McGregor” afirmando que se requerían al menos cinco colores para colorear sus regiones
sin que dos colindantes tengan el mismo color, lo que supondría demostrar la falsedad de la
conjetura de los cuatro colores.

Superada la inocentada de Gadner, lo cierto es que más de un siglo después de que Francis
Guthrie enunciara la conjetura por primera vez en 1852, los intentos para demostrarla
habían ido perfeccionándose hasta culminar en la prueba por ordenador realizada por Appel
y Haken en 1976, basada en la fallida demostración de Kempe en 1879.
Aunque muchos matemáticos aceptaron como demostración válida esa prueba por
ordenador, una gran parte de la comunidad matemática la refutan, por el hecho de tratarse
de una verificación computacional de un determinado número de mapas coloreables con
cuatro colores, y no de un argumento matemático que pruebe la no existencia un mapa en el
que fueran necesarios de cinco colores para su coloreado.
Con la credibilidad de la demostración en entredicho, por no poder verificarse “a mano” y de
manera independiente por otros matemáticos, algunos matemáticos han seguido
presentando versiones simplificadas del programa de ordenador que lleva a la prueba,
mientras que otros siguen empeñados en encontrar una demostración reproducible “por
personas”, que no utilice ordenadores.
Técnicas de demostración de la conjetura de
los cuatro colores
Reducción al caso de mapas cúbicos
Artur Cayley demostró en 1879 que si la conjetura se demuestra para mapas cúbicos,
entonces la conjetura quedaría demostrada para todos los mapas.

Un mapa cúbico es aquel en el que en todas las intersecciones de


fronteras se encuentran tres regiones

El argumento de Cayley consiste en tomar un mapa original cualquiera,


en cuyas intersecciones de fronteras puedan encontrarse más de tres
regiones, y sustituir los puntos de intersección de más de tres regiones
por una nueva “región parche”, lo que produce como resultado un
mapa cúbico.
Si el mapa cúbico puede colorearse con cuatro colores, entonces el mapa original también
puede colorearse con cuatro colores, reduciendo la “región parche” al punto.

La fallida demostración de Kempe


Aunque la demostración de la conjetura presentada en 1879 por Alfred Bray Kempe fuera
errónea no fuera exitosa, sus argumentos aportaron avances claves para la demostración
que Kenneth Appel y Wolfgang Haken completaron en 1976 utilizando cálculos por
ordenador. Por ello es obligado comenzar la exposición de las técnicas de demostración de
la conjetura desarrollando la fallida demostración de Kempe.

“Counting fórmula”
Todo mapa cúbico contiene al menos una región con un máximo de cinco regiones con
las que tiene frontera.
Equivalentemente, todo mapa cúbico contiene al menos un dígono, un triángulo, un
cuadrado o un pentágono.
Para demostrar la “Counting Formula”, consideremos un mapa cúbico, y denominemos:
R= Número de regiones del mapa
Ri = Número de regiones que tienen frontera con i regiones
Evidentemente, se cumple la fórmula:
R = R2 + R 3 + R 4 …
Considerando el mapa como un poliedro, conde cada región es una cara, cada frontera es
una arista y cada intersección de fronteras un vértice, podemos aplicar la fórmula de Euler
para poliedros: si V es el número de vértices (intersecciones), A es el número de aristas
(fronteras) y R el número de caras (regiones), se cumple:
V-A+R=2 R+V=A+2
Sustituyendo en esta expresión de la fórmula de Euler el valor de R, resulta:
R2 + R3 + R4 … + V = A + 2
Como el mapa del que partimos es cúbico, en cada vértice concurren exactamente 3 aristas,
de donde se deduce que 3 V es el número de aristas contadas dos veces:
2A= 3V V = 2A/3
Sustituyendo este valor de V sobre expresión anterior de la fórmula de Euler, se deduce:
R2 + R3 + R4 … + 2A/3 = A + 2
3R2 + 3R3 + 3R4 … + 2A = 3A + 6
3R2 + 3R3 + 3R4 … = A + 6
Por otro lado, en el mapa cada arista es la frontera entre dos países vecinos, de donde se
deduce que el número de aristas contadas dos veces es:
2A = 2R2 + 3R3 + 4R4 + 5R5 + … A = (2R2 + 3R3 + 4R4 + 5R5 + … )/2
Sustituyendo este valor de A sobre la anterior expresión de fórmula de Euler, se deduce:
3R2 + 3R3 + 3R4 … = (2R2 + 3R3 + 4R4 + … )/2 + 6
3R2 + 3R3 + 3R4 … = (2R2 + 3R3 + 4R4 + … + 12)/2
6R2 + 6R3 + 6R4 … = 2R2 + 3R3 + 4R4 + … + 12
(6 – 2)R2 + (6 – 3)R3 + (6 – 4)R4 + (6 – 5)R5 + (6 – 6)R6 + (6 – 7)R7 + (6 – 8)R8 = 12
4R2 + 3R3 + 2R4 + R5 – R7 – 2R8 – 3R9 – 4R10 … = 12 (counting Formula)
Como Ri ≧ 0, de esta fórmula se deduce que
(4R2 + 3R3 + 2R4 + R5 )≥ 12
Por tanto, algún Ri ≠ 0 para i=1, 2, 3, 4, es decir debe ser existir algún dígono (R2 ≠ 0), algún
triángulo (R3 ≠ 0), algún cuadrado (R4 ≠ 0) o algún pentágono (R5 ≠ 0)
Además, según los posibles valores de Ri ≧ 0 que cumplan la “counting formula”, se pueden
analizar las posibles configuraciones de un mapa cúbico y su coloración con cuatro colores,
tal como argumentó Kempe en su fallida demostración.
La demostración se realiza por inducción sobre el número de regiones R del mapa, es decir,
probando que si un mapa con R-1 regiones es coloreable con cuatro colores, entonces el
mapa con R regiones es coloreable con cuatro colores.
Para ello, el argumento de Kempe consiste en tomar un mapa cúbico con R regiones, en el
que la “counting fórmula” nos dice que existe al menos una región r que será dígono y
n(r)=2, o triángulo y n(r)=3, o cuadrado y n(r)=4, o pentágono y n(r)=5. Es decir, si
denominamos:
n(r)= Número de regiones que tienen frontera con r
La “counting fórmula” nos dice que existe al menos una región r con 2 ≤ n(r)≤ 5.
Si quitamos esa región del mapa, el resultado es un mapa con R-1 regiones, así que para
alcanzar la demostración de la conjetura de los cuatro colores por inducción lo que Kempe
probó fue el siguiente enunciado.

Sea M un mapa cúbico, y r una región de M con con 2 ≤ n(r)≤ 5.


Si el mapa M-r coloreable con cuatro colores, entonces M también es coloreable con
cuatro colores.

La prueba de Kempe va recorriendo los posibles casos, según los valores n(r)=1,2,3,4,5 y
demostrando el enunciado en cada caso.
o Casos n(r)= 2 o 3:
Estos casos son triviales, ya que para cualquiera de los dos casos obviamente disponemos de
al menos un color más para colorear M, una vez coloreado M-r. Para n(r)= 2, disponemos de
hasta dos posibles colores distintos para colorear r.
Para n(r)= 3, nos queda aún un color de los cuatro para colorear la región r.

o Caso n(r)= 4:
Una vez coloreado M-r con cuatro colores, para colorear M nos encontraremos en una
situación como se indica en la figura:

Para colorear M con sólo 4 colores, Kempe introdujo los siguientes conceptos:

Cadena de Kempe de dos colores


Sucesión de regiones con frontera que va de una región s a una región t, alternando
dos colores para colorear las regiones:

Componente de Kempe de dos colores


Conjunto de regiones de una región s es el conjunto de todas las regiones t del mapa
para las que existe una cadena de Kempe que va de s a t.
Se comprueba fácilmente que dada una componente de Kempe de dos colores (rojo-verde)
en un mapa coloreado con cuatro colores cumpliendo las condiciones de la conjetura, se
pueden invertir los colores de la cadena (verde-rojo) y obtener un nuevo coloreado de
cuatro colores que sigue cumpliendo las condiciones.

Estos dos conceptos introducidos por Kempe se aplican para colorear con cuatro colores la
figura M y demostrar el enunciado en el caso n(r)= 4. Para ello necesitamos cambiar alguno
de los colores de las regiones ya coloreadas, liberando así uno de los cuatro colores para
colorear la región “r”.

A tal fin, consideremos la “r3” coloreada en azul, y la región que no comparte frontera con
ella, “r1” coloreada en rojo. Existen dos posibilidades a analizar:
1) Caso en que r3 (azul) no está en la componente de Kempe rojo-azul de r1 (rojo):
Entonces invertimos los colores rojo y azul en esa componente que comienza en r1, con lo
que se libera el color rojo para colorear la región r, que se une a la cadena de Kempe rojo-
azul.

2) Caso en que r3 (azul) si está en la componente de Kempe rojo-azul de r1 (rojo):


En ese caso r2 (verde) no puede estar en la componente de Kempe amarillo-verde de r4
(amarillo), puesto que al estar r3 y r1 están en la misma componente rojo-azul, no es posible
la unión de r2 y r4 en una misma componente sin pasar por r.
Entonces invertimos los colores amarillo y verde en esa componente que comienza en r4,
con lo que se libera el color amarillo para colorear la región r, que se une a la cadena de
Kempe amarillo-verde.

o Caso n(r)= 5:
Una vez coloreado M-r con cuatro colores, para colorear M nos encontraremos en una
situación como se indica en la figura:

Para colorear M con cuatro colores usaremos los mismos conceptos de cadena de Kempe y
Componente de Kempe de dos colores, y también trataremos de cambiar alguno de los
colores de las regiones ya coloreadas, liberando así uno de los cuatro colores para colorear
la región “r”.

El razonamiento de Kempe se fija de nuevo en una componente “r2” coloreada en verde y


en las regiones que no comparten frontera con ella, “r5” coloreada en amarillo o “r4”
coloreada en azul.
Analizamos las distintas posibilidades:
1) Caso en que o bien r2 (verde) no está en la componente de Kempe amarillo-verde
de r5 (amarillo), o bien r2 (verde) no está en la componente de Kempe azul-verde
de r4 (azul).
Consideramos el primero de ellos (con el segundo se procede análogamente).
Entonces invertimos los colores verde y amarillo en esa componente que comienza en r5,
con lo que se libera el color amarillo para colorear la región r, que se une a la cadena de
Kempe amarillo-verde.

2) Caso en que r2 (verde) si está en la componente de Kempe amarillo-verde de r5


(amarillo) y r2 (verde) si está en la componente de Kempe azul-verde de r4 (azul).
En este no es posible la unión de r1 y r3 en una misma componente, y el argumento de
Kempe es invertir los colores rojo y azul en la componente que comienza en r1 y los colores
rojo y amarillo en la componente que comienza en r3, con lo que se libera el color rojo para
colorear la región r.
De este modo Kempe concluye su demostración de que en un mapa cúbico M, tomando una
región r con 2 ≤ n(r)≤ 5, que según la “counting fórmula” siempre existe, si el mapa M-r
coloreable con cuatro colores, entonces M también es coloreable con cuatro colores. Y
aplicando un argumento de inducción, concluye que ha demostrado la conjetura de los
cuatro colores.
Pero Kempe había pasado por alto una posibilidad que podía ocurrir en el segundo caso de la
configuración n(r)= 5, lo que hacía que su demostración fuera errónea.
Esa posibilidad se daba en el mapa que presentó Percy Heawood en 1890:

En este mapa la componente de Kempe amarilla-verde (y-g) de r5 y la componente de


Kempe azul-verde (b-g) de r4 se cruzan. Eso hace que las componentes rojo-azul (r-b) que
comienza en r1 y rojo-amarillo (r-y) que comienza en r3 no puedan intercambiar
simultáneamente los colores, y por tanto no se puede liberar el color rojo para colorear la
región r.
Los mapas como grafos duales
Para superar la fallida demostración de Kempe es necesario un cambio de enfoque,
planteando la conjetura de los cuatro colores como un problema en teoría de grafos,
haciendo corresponder a cada mapa su grafo dual.
1) A cada región del mapa le corresponde un vértice de su grafo dual (que puede
pensarse como el punto donde se sitúa la capital de la región)
2) A cada frontera del mapa le corresponde una arista de su grafo dual
3) Colorear el mapa equivale a colorear lo vértices del grafo, asignando colores distintos
a los vértices de cada arista.

4) Los mapas cúbicos se corresponden con grafos duales triangulares.


5) El número de regiones que comparten frontera se corresponde con el grado de cada
vértice (número de aristas).
6) En el grafo dual se mantiene la fórmula de Euler: si V es el número de vértices, A es el
número de aristas y R el número de caras, entonces V - A + R = 2
La conjetura de los cuatro colores se corresponde en teoría de grafos con el siguiente
enunciado:

“Cuatro colores son suficientes para colorear los vértices del grafo dual de un mapa
geográfico plano sin que dos vértices de una arista coincidan con un mismo color”.
La demostración en teoría de grafos
Para demostrar la conjetura en teoría de grafos, el argumento es probar que no existen
grafos duales de mapas en los que cuatro colores no sean suficientes, es decir, que no
existen grafos duales de mapas que incumplan la conjetura y necesiten cinco o más colores
(contraejemplos del teorema).
En concreto, si existieran grafos duales de mapas que necesiten cinco o más colores
(contraejemplos), en el conjunto que forman podríamos elegir un grafo dual de mapa que
tuviera el mínimo número de vértices (regiones del mapa).

Contraejemplo minimal
Grafo dual de mapa con el mínimo número de vértices entre los grafos duales de
mapas que necesitan cinco o más colores para colorearse (inclumplen la conjetura de
los cuatro colores).

Por definición, un contraejemplo minimal no puede colorearse con cuatro colores, pero un
grado dual de mapa con menos vértices sí podría colorearse con cuatro colores.
Demostrar la conjetura de los cuatro colores equivale a demostrar que no existen
contraejemplos minimales que evitaran el coloreado del mapa con cuatro colores. De hecho,
la prueba de Kempe, con sus cadenas y componentes, equivale a probar que un
contraejemplo minimal no puede contener dígonos, triángulos, cuadrados… ni pentágonos,
ahí fue donde la prueba falló (si lo hubiera probado, Kempe habría completado la
demostración de la conjetura).
Ésta nueva demostración de la conjetura a partir de teoría de grafos consiste también en un
proceso de inducción similar al de la prueba de Kempe, sólo que en vez de eliminar un único
vértice del grafo dual triangular (una región del mapa) para colorear con cuatro colores el
grafo (mapa) con R-1 vértices (regiones) y extender la coloración al grafo (mapa) con R
vértices (regiones), lo que se hace es eliminar cierto conjunto de vértices (regiones) del grafo
triangulado (mapa) denominado “configuración”, introducido por George Birkhoff en 1913
para abordar la demostración de la conjetura de los cuatro colores.

Configuración
Sucesión de vértices internos de un grafo triangulado {v1 v2 … vn} donde vivi+1 es una
arista y vn = v1 (ciclo).

Conjunto inevitable de configuraciones


Conjunto de configuraciones contenidas en todo grafo triangulado.

Configuración reducible
Configuración que no puede aparecer en un contraejemplo minimal.
Que una configuración sea reducible significa que cualquier coloración del grafo resultante
de eliminar esa configuración se puede extender a ella. Es decir, que se puede deducir el
coloreado con cuatro colores de cualquier grafo que contenga una configuración reducible,
siempre y cuando sea coloreable con cuatro colores el grafo menor, obtenido eliminando la
configuración reducible.
La prueba de Kempe demostró que el conjunto de configuraciones {“dígono”, “trígono”,
“cuadrado”, “pentágono”} es inevitable, y que las configuraciones “dígono”, “trígono” y
“cuadrado” son reducibles, pero se equivocó demostrando que la configuración
“pentágono” es reducible.
Por tanto, para llevar adelante el plan de demostración de la conjetura de los cuatro colores
se requiere:
1) Un método para construir conjuntos inevitables de configuraciones.
2) Un método para demostrar que una configuración es reducible.
Los métodos para resolver ambas cuestiones se basan en el denominado “algoritmo de
descarga”, introducido por Heinrich Hesch en 1960 en para abordar la demostración de la
conjetura.

Plan para la demostración de la conjetura de los cuatro colores


En todo grafo triangulado existe un conjunto inevitable formado únicamente por
configuraciones reducibles.

El algoritmo de descarga: los grafos como redes eléctricas

Notación
Vértice de grado n (número de aristas).
Configuración que une dos vértices de grados n y m.

Con esta notación: =”dígono”, =”trígono”, =”cuadrado”, =”pentágono”.

El algoritmo de descarga está inspirado en considerar los grafos como redes eléctricas. En
concreto, se inspira en el intercambio de carga eléctrica a nivel atómico, donde el número de
electrones que rodean el núcleo atómico (carga) se pueden mover hacia átomos cercanos,
descargando el átomo en el que estaban, conforme un proceso reiterativo sujeto a unas
reglas determinadas, a partir de una carga total inicial (suma del la cargas) del conjunto de
átomos, sin variar la carga total, con el objetivo de mantener cargas en valores positivos o
nulos en cada átomo
En el caso de grafos triangulados (mapas), y teniendo en cuenta la Countin Fórmula, se
considera que cada vértice es como un átomo con una carga inicial de “6-n”, que pude
mover 1/n de su carga a los vértices con los que está conectado por aristas, tomando “12”
como carga total inicial, y manteniendo una carga total final que debe ser positiva.

Aplicación del algorítmo de descarga para construir conjuntos inevitables de


configuraciones
Tomemos como ejemplo un vértice y aplicando el algoritmo de descarga vamos a
construir el conjunto inevitable de configuraciones en las que aparece este vértice.
 La carga inicial del vértice tiene valor 6-5 = 1, que se mueve repartiéndose entre los
vértices a los que está conectado por aristas. Este vértice acabará con un valor positivo o
nulo de carga según si recibe o no, respectivamente, carga de otros vértices a los que
está conectado por aristas.
 Un vértice de grado 6 empieza con un valor nulo de carga (6-6 = 0), y terminará con un
valor positivo de carga si y solo si la recibe de algún vértice a los que está conectado por
aristas que tenga grado al menos 5.
 Un vértice de grado 7 empieza con un valor de carga negativo (6-7= -1), y terminará con
un valor positivo de carga si tiene seis o siete vértices a los que esté conectado por
aristas que tengan grado al menos 5. Pero al tratarse de un grafo triangulado, en los siete
vértices a los que está conectado habrá dos de grado 5 consecutivos.
 Un vértice de grado mayor o igual que 8 empieza con un valor de carga demasiado
negativo (-2, -3,…) y no podrá terminar con un valor positivo de carga, aunque tenga
muchos vértices a los que esté conectado por aristas que tengan grado al menos 5.
Conclusión: el conjunto inevitable de configuraciones en las que aparece el vértice son:
{ , }

Aplicación del algoritmo de descarga para demostrar que una configuración es


reducible
Para demostrar que una configuración es reducible, se hace la suposición de que no lo fuera:
si aparece en un contraejemplo minimal, al eliminarla resulta un grafo con menos vértices, y
por tanto coloreable; si todas las coloraciones de ese grafo más pequeño se pueden
completar cuando se repone la configuración eliminada, entonces el contraejemplo minimal
también se puede colorear, lo cual es una contradicción.
La clave para estudiar la reducibilidad de una configuración es determinar cuántos vértices
rodean esa configuración del grafo y como están conectados a ella.

Anillo de una configuración


Conjunto de aristas que conecta la configuración con el grafo más pequeño que se
podría colorear con cuatro colores.

En un grafo triangular, como es el caso de los grafos duales de los mapas, para calcular el
anillo de una configuración podemos usar la siguiente propiedad de toda triangulación: si
para 3 vértices del grafo {v1 v2 v3} existen las aristas v1v2 y v2v3, entonces también existe la
arista v1 v3.

Por ejemplo, aplicando este método podemos calcular los anillos de las configuraciones

El argumento para probar que una configuración es reducible (cualquier coloración del grafo
resultante de eliminarla se puede extender a ella) se basa en estudiar las aristas que unen la
configuración con el grafo, esto es, el anillo de la configuración, en los siguientes pasos:
Se considera una posible coloración con cuatro colores del anillo de configuración, y
analizamos si se puede extender esa coloración a la configuración.
 Si se puede extender, la configuración es reducible.
 Si no se puede extender, se estudia si es posible construir otra coloración que se pueda
extender, utilizando el método de cadenas de Kempe u otro similar.
− Si se encuentra alguna coloración que se pueda extender, la configuración es reducible.
− Si no se encuentra ninguna coloración que se pueda extender, la configuración no es
reducible
Para realizar este análisis de la reducibilidad de las configuraciones, Kenneth Appel y
Wolfgang Haken aplicaron en 1976 el algoritmo de descarga, imponiendo una distribución
inicial de cargas (con un total que no depende del grafo triangulado) y unas reglas de
movimiento de cargas de tal manera que las configuraciones inevitables resultantes fueran
todas reducibles.
Así, en un primer trabajo Appel llegaron a calcular una lista de 1936 configuraciones
inevitables, que ilustraron gráficamente con una notación propia para los grados de los
vértices: = , = , = , = .
Para comprobar la reducibilidad de cada configuración supone un cómputo costoso: hay que
encontrar la coloración requerida, construyendo sucesivas coloraciones sobre las que hay
que comprobar la reducibilidad.

Así que de
Ejemplo Appel y Haken recurrieron
configuración a un ordenador
donde es necesario para199.000
comprobar realizarcoloreados
esos cómputos, contando
diferentes
con la ayuda del programador John Koch.
para probar su reducibilidad:
Probaron también que 102 de esas configuraciones eran redundantes, con lo cual el cálculo
se redujo a 1834. Y modificando el algoritmo de descarga (introduciendo hasta 300 reglas)
consiguieron que la lista de configuraciones inevitables sobre las que comprobar la
reducibilidad se redujera a 1468.
Los trabajos de Appel y Hakken contenían errores (fruto de trabajar con grafos elaborado
manualmente) que fueron puliendo, hasta publicar una síntesis de su trabajo en 1989,
aunque han continuado trabajando para simplificar su demostración.
Una simplificación en la que también han trabajado otros matemáticos, probando que el
conjunto de configuraciones puede reducirse, al igual que las reglas de descarga. En 1996,
Neil Robertson, Daniel P. Sanders, Paul Seymour y Robin Thomar rebajaron el listado de
configuraciones inevitables a 633, estableciendo tan sólo 32 reglas de descarga.
Algoritmos para la coloración de mapas: aplicación
práctica del algoritmo “backtracking”

Coloración de mapas
Las técnicas desarrolladas para abordar la demostración de la conjetura de los cuatro colores
permiten además el coloreado práctico de los mapas, pero a la vez demuestran que no hay
un algoritmo concreto que permita obtener una solución práctica al problema de colorear
cualquier mapa / grafo con un número óptimo de, el denominado “numero cromático” del
mapa (como máximo cuatro, según la conjetura).
Por esto, para la resolución del coloreado de un mapa disponemos de varias alternativas en
estructuras de algoritmos que al aplicarlos podemos obtener una solución final del
coloreado de un mapa bajo las condiciones de la conjetura, para ello debemos adaptar
diversos algoritmos de optimización de la teoría de grafos al caso práctico de colorear un
determinado mapa, como son:
 Los algoritmos exactos, que al tratarse de un problema NP-completo (los problemas
NP-completos son problemas demasiado complejos como para encontrar como para
encontrar un algoritmo eficiente para obtener una solución optima) en general no
son viables debido al coste de tiempo computacional que requieren, para el 4-
coloreado de mapas bajo las condiciones de la conjetura solo los grafos más sencillos
son viables para el uso de estos algoritmos, puesto que podríamos obtener una
solución óptima acorde al tiempo computacional. Los más utilizados son:
o Algoritmos de retroceso, con los que podemos encontrar una solución óptima de
nuestro problema computacional mediante una forma de operar sistemática,
dando soluciones completas a partir de soluciones parciales, estos algoritmos
realizan una serie de pasos hacia delante (coloreando vértices hasta que
encuentra uno que no puede ser coloreado) y hacia atrás (revisando los vértices
coloreados e identificando los que pueden ser coloreados de manera diferente),
hasta llegar así a la solución completa y óptima bajo unas restricciones dadas de
nuestro problema.
o Algoritmos de programación lineal entera, que plantean el problema en términos
de programación lineal (optimización de una función lineal sobre un conjunto
definido por restricciones lineales) donde las variables de decisión de la función
lineal tomada están limitadas a tomar valores enteros, y donde el objetivo
principal de la la función es el de optimizar el número de colores con el que
colorearemos los mapas, que tenemos bajo el supuesto de la conjetura que es
cuatro.

 Los algoritmos aproximados buscan acercarse lo más posible a la solución exacta del
problema, que a diferencia de los algoritmos exactos, los aproximados lo hacen con
una eficiencia computacional aceptable, respecto a la solución óptima y tiempo
computacional. Pueden clasificarse en dos clases:
o Algoritmos heurísticos (del griego “heuriskein” que significa encontrar, descubrir,
inventar), que en informática y optimización matemática la heurística es un
concepto diseñado para obtener la solución de un problema con una eficiencia
mayor en el tiempo cuando los métodos clásicos de resolución de dichos
problemas son demasiado lento o directamente para encontrar una solución
aproximada cuando los métodos clásicos no logran encontrar una solución
exacta.
Aunque no pueden cuantificar la optimalidad de la solución en cada paso, si que
pueden dar un alto nivel de confianza en que la solución será muy cercana a la
solución exacta. Los más utilizados son el algoritmo Greddy, DSatur y RLF, que
están diseñados especialmente para la coloración de mapas bajo las condiciones
de la conjetura, que, aunque no siempre proporcionan una solución óptima, sí es
factible:
- Algoritmo Greddy (Voraz), es de los algoritmos más sencillos e importantes en
los problemas de coloración de grafos, en cada paso asigna a cada vértice el
primer color disponible siguiendo un orden o aleatoriamente, al ser un
algoritmo heurístico la solución final dada puede ser o no óptima como ya
hemos mencionado anteriormente, por ello, para obtener una solución
óptima mediante el uso de este algoritmo, para ello, el algoritmo
anteriormente requiere una correcta elección del orden de los vértices con el
que el algoritmo asignará los colores para que la solución dada sea óptima.
- Algoritmo DSatur (Degree Saturation), la estructura y características de este
algoritmo es similar a la del algoritmo Voraz, sin embargo, a diferencia del
algoritmo Greddy o Voraz, en el algoritmo DSatur el orden de asignación de
los colores en los vértices se realiza de forma heurística en base a la
información que tenemos en cada coloreado parcial del grafo en el instante
que se selecciona cada uno de los vértices. El grado de saturación de cada
vértice es un concepto fundamental en el momento de plantear el orden de
elección de los vértices del grafo.

Con el algoritmo DSatur, daremos prioridad dentro de lo permitido a colorear


primero aquellos vértices que presentan un mayor número de restricciones o
sea más complejo asignarles un color debido a sus características.

- Algoritmo RLF (Recursive Largest First), el proceso que realiza este algoritmo
para la coloración de grafo es diferente a los dos anteriores vistos. En lugar
de asignar un color a un vértice por cada iteración, el algoritmo RLF colorea
un subgrafo entero del grafo final a colorear por cada iteración del algoritmo.
Así, en cada iteración, el algoritmo realiza una búsqueda de un conjunto
independientes de vértices en el grafo (subgrafo), y procediendo así de igual
forma con los subgrafos restantes hasta llegar al vacío con el subgrafo, de
esta manera todos los vértices tendrán asignados un color.
Análogamente al algoritmo DSatur, en el algoritmo RLF se les da prioridad a
los vértices que tienen un nivel de dificultad más complejo para ser
coloreados, esto es a aquellos que tienen un mayor grado.
o Algoritmos metaheuríticos, son métodos que mejoran los procesos heurísticos en
problemas particulares, imitando procesos naturales de la genética, la biología, la
química, la física,… Un método metaheurístico es a su vez también un método
heurístico que sirve para resolver problemas computacionales generales que
utiliza unos parámetros o datos dados por el usuario sobre unos procedimientos
genéricos, normalmente heurísticos, donde el usuario espera que sea eficiente.
Los más utilizados son los algoritmos de Búsqueda Tabú, el algoritmo de Recocido
y de Optimización por Colonia de Hormigas, el uso de un algoritmo u otro viene
dado por las características del problema, así como las investigaciones empíricas
que se realicen en el problema:
- Algoritmos de Búsqueda Tabú (Tabú Search), este algoritmo se centra en en la
búsqueda de óptimos específicos a partir de de la prohibición de
determinados pasos para evitar así bucles repetitivos, estos pasos o
movimientos dejan de estar prohibidos para volver a ser tratables cuando sea
conveniente para el algoritmo. Entre ellos se encuentra el algoritmo TabuCol,
el algoritmo PartialCol o el algoritmo híbrido evolutivo.
- Algoritmo de Recocido o Templado Simulado (ACO/Simulated Anhealing), el
algoritmo de Recocido se ha diseñado para evitar la intratabilidad de los
algoritmo de búsqueda en ascenso cuando se quedan atascados en
soluciones que no son del todo óptimas, este algoritmo se basa en los
fenómenos físicos que se observan en el templado de metales. Este
algoritmo, al contrario de los algoritmos de búsqueda en ascenso, parte de un
valor muy alto (de colores) para irlo disminuyendo hasta encontrar el óptimo,
como en la temperatura de templado de un metal.
- Algoritmo de Optimización por Colonia de Hormigas (Ant Colony
Optimization), es una técnica probabilística usada en problemas
computacionales para dar soluciones a problemas relacionados con teoría de
grafos, cuya fuente de inspiración es el comportamiento que tienen las
hormigas para tratar y dar rutas óptimas entre su nido y fuentes de alimentos,
así, el algoritmo de Optimización por Colonia de Hormigas busca la solución
óptima como la más transitada, como la ruta que marcan las hormigas, este
algoritmo surgió por primera vez para resolver el problema del viajante.
A continuación, nos centraremos en el estudio de uno de los algoritmos de retroceso: el
algoritmo de “backtracking”.

Algoritmo Backtracking
Se trata de una técnica general de resolución de problemas que se ha venido aplicando a
“juegos” que tienen detrás problemas de optimización en teoría de grafos. La característica
principal de esta técnica es que realiza una búsqueda exhaustiva y sistemática en el espacio
de las distintas soluciones del problema, escalando por diferentes etapas, en lo que se
denomina un “árbol de expansión”.
Se trata de una imagen conceptual en donde cada nodo de nivel k representa una parte de la
solución y está formado por k etapas que se suponen ya realizadas. Sus hijos son las
prolongaciones posibles al añadir una nueva etapa. Para examinar el conjunto de posibles
soluciones es suficiente recorrer este árbol construyendo soluciones parciales a medida que
se avanza en el recorrido. En este recorrido pueden suceder dos cosas.
 Que el recorrido tenga éxito, si procediendo de esta manera se llega a una solución
(una hoja del árbol). Si lo único que buscábamos era una solución al problema, el
algoritmo finaliza aquí; ahora bien, si lo que buscábamos eran todas las soluciones o
la mejor de entre todas ellas, el algoritmo seguirá explorando el árbol en búsqueda
de soluciones alternativas.
 Que el recorrido no tenga éxito si en alguna etapa la solución parcial construida hasta
el momento no se puede completar; nos encontramos en lo que llamamos nodos
fracaso. En tal caso, el algoritmo vuelve atrás (y de ahí su nombre) en su recorrido
eliminando los elementos que se hubieran añadido en cada etapa a partir de ese
nodo. En este retroceso, si existe uno o más caminos aún no explorados que puedan
conducir a solución, el recorrido del árbol continúa por ellos.
En este ejemplo anterior podemos observar las ramificaciones de un árbol de expansión y los
niveles k que conforman cada sección horizontal de círculos azules que son las distintas
etapas por las que llegar a la solución, las flechas azules nos hacen avanzar de cada nivel k al
siguiente y cuando llegamos a un nivel k en el que no se nos permite avanzar hasta llegar la
solución final, con las flechas rojas tomamos otro de los caminos posibles de ese mismo nivel
k o regresamos al nivel k anterior que nos permita posteriormente tomar otro camino
posible para llegar a la solución.
Este modo de operar del Backtracking sobre el árbol de expansión nos lleva a la solución del
problema que la podemos expresar como una n-tupla (x 1, x2, x3, … , xn) donde cada
componente xi de este vector es seleccionada en cada nivel k de entre un conjunto finito de
valores posibles y dicha n-tupla satisface una serie de restricciones que nos guían hasta la
solución.
El método sistemático por el cual el algoritmo avanza hasta dar con la solución final es el
siguiente: en cada instante del algoritmo nos encontraremos en cierto nivel k, donde
tendremos una solución incompleta del problema (x 1, x2, x3, … , xk) con k<n, así la técnica de
Backtracking seguirá los siguientes pasos para obtener la solución final:
1. Si puede añadirse un elemento xk+1, a la solución parcial se avanza al nivel k+1.
2. En el caso de no ser posible añadir un elemento x k+1, se prueban otros valores validos
para xk que nos permita añadir otro elemento xk+1.
3. Si no existe ningún valor que sea válido por probar retrocederemos al nivel anterior
k-1.
4. Continuamos repitiendo este mismo proceso hasta que la solución incompleta o
parcial del problema sea la solución del problema o hasta que no queden más
posibilidades por probar.

Programación del algoritmo Backtracking para colorear mapas


Para el coloreado de mapas mediante el algoritmo “Backtracking” nos tendremos que
ayudar de un ordenador, puesto que usaremos un lenguaje de programación para el
correcto coloreado de mapas, este lenguaje es C++, que implementaremos el código para
colorear mapas en el programa Dev C++. En este programa, tendremos un “Input” con los
datos necesarios de nuestro mapa, que pasaran por un código programado para obtener
una solución del coloreado del mapa en un “Output” que satisfaga las condiciones de la
conjetura.
Para estructurar correctamente nuestro “Input” o “Entrada”, constará primeramente del
número de regiones del mapa, así como el número de conexiones entre todas las regiones
del mapa, posteriormente, todas las conexiones entre las distintas regiones del mapa, por
último, el número de colores con el que queremos que nuestro mapa sea coloreado, en
nuestro caso serán 4 colores puesto que queremos que satisfaga las condiciones de la
conjetura. Con esto, el programa Dev C++ nos dará un “Output” o “Salida” con un listado de
todas las regiones de nuestro mapa con un número del 1 al 4 con el que asocia a cada región
un color de los 4 posibles.
El código implementado en el programa Dev C++ está estructurado en base a un
pseudocódigo cualquiera puede transformar a cualquier lenguaje de programación para
obtener el 4-coloreado de cualquier mapa en el lenguaje apropiado. En nuestro caso como
ya hemos dicho, hemos usado el lenguaje C++ y a continuación explicaremos en que consiste
el pseudocódigo con el que aplicaremos el algoritmo Backtracking para colorear mapas:
Este algoritmo lo hemos dividido en tres funciones booleanas, que contienen un valor
booleano (true o false), llamadas isColored, btColor, freeColor:

isColored(int c) En la primera función isColored lo


intColor[V] que tenemos es la iteración de todos los
Para i=0 hasta V-1 hacer vértices para asignar un color a cada uno
color[i] <- 0 de ellos, que al iniciar todos estarán en
Si btColor (C, color, 0) = false luego cero, ninguno tendrá un color del 1 al 4
return false asignado, y dependiendo de la función
return true btColor se les asignará un color.

btColor(int m, int color [], int v)


Si v = nº vértices
return true
Para i = 1 hasta m hacer
Si freeColor(v, color, i) luego color [v] <- i
Si btColor(m, color, v+1) luego return true
color[v] <- 0
return false

La función btColor sirve para verificar si el número de vértices es igual al número que le
asignamos como parámetro, en el caso de igualdad, quiere decir que se han recorrido ya
todos los vértices, en el caso contrario recorreremos todos los vértices anteriores del
parámetro desde el primero, y coloreamos el vértice faltante con un color disponible según
la función freeColor.
Por último, tenemos la tercera función freeColor que simplemente es una función que
verifica que colores están libres fijándose en los vértices adyacentes del vértice en cuestión.

freeColor(int m, int color [], int v)


Para i = 0 hasta V-1 hacer
Si mt[v][i] = 1 y c = color[i] luego
return false return true
Aplicación práctica del algoritmo Backtracking para colorear el mapa de España
peninsular
A continuación, se desarrollará un ejemplo práctico de colorear mapas según las condiciones
de la conjetura de los cuatro colores, para ello debemos de elegir un mapa cualquiera, en
este caso vamos a elegir el mapa de las Provincias de España ya que tenemos una cantidad
de regiones distintas a colorear adecuada para ejemplificar un caso práctico sin que sea muy
enrevesado ni muy simple.

Como podemos ver en la imagen anterior tenemos dicho mapa, como en España tenemos
provincias/comunidades autónomas en la península ibérica formando un conjunto conexo, y
otras o que no están conexas a las demás, tomaremos para nuestro ejemplo solamente las
peninsulares, puesto que el objetivo e idea principal del caso práctico es colorear cualquier
mapa que satisfaga las condiciones de la conjetura de los cuatro colores.
Sobre ese mapa de España peninsular, asignamos un nodo o vértice a cada provincia para
facilitar y representar el mapa mediante un grafo, y también reflejaremos en el mapa
mediante aristas todas las conexiones entre las distintas regiones que conforman el mapa,
así, una región adyacente a otra estará unida mediante una arista, todo ello queda
representado en la siguiente imagen.
Antes de pasar a aplicar el algoritmo “Backtracking”, vamos a realizar un estudio del grafo
que representa el mapa que vamos a colorear mediante el programa informático Rstudio en
lenguaje R. Para ello, lo primero que haremos será descargar y cargar el paquete informático
“igraph”, que es un paquete que nos permite realizar análisis de redes a la vez que nos
proporciona funciones para crear y manipular grafos con facilidad.
Para empezar, con la función “graph_from_literal()”, introduciendo todas las aristas
adyacentes de cada región el programa nos da el grafo del mapa con sus respectivos nodos y
aristas.

install.packages("igraph") #Instalar paquete informático “igraph”


library("igraph") #Cargar paquete informático “igraph”
grph <- graph_from_literal(0-1, 1-2, 2-3, 4-5, 5-6, 6-7, 7-8, 8-9, 9-10, 11-12, 12-13, 13-14,
13-15, 14-16, 15-16, 15-17, 17-18, 18-19, 20-21, 21-22, 23-24, 24-25,
25-26, 26-27, 27-28, 28-29, 30-31, 31-32, 33-34, 35-36, 36-37, 37-38,
38-39, 39-40, 40-41, 41-42, 41-43, 44-45, 32-46, 0-2, 1-3, 1-4, 1-11,
3-11, 3-17, 4-11, 5-11, 5-12, 5-13, 6-7, 6-8, 6-13, 7-9, 8-10, 8-13,
9-20, 9-21, 10-13, 10-14, 10-21, 11-15, 11-17, 12-15, 13-16, 14-21,
14-30, 15-18, 15-19, 16-19, 16-30, 16-46, 18-44, 19-32, 19-44, 19-46,
20-23, 21-23, 21-26, 21-30, 22-26, 22-27, 22-28, 22-30, 22-31, 23-25,
23-26, 28-31, 28-33, 29-33, 29-35, 30-46, 31-33, 31-34, 31-46, 32-34,
32-44, 32-45, 33-35, 33-37, 33-38, 34-38, 34-39, 34-45, 35-37, 37-39,
37-40, 39-41, 39-45, 40-43, 41-45, 42-45); plot(grph) #Grafo del mapa

Podemos observar como el grafo generado por Rstudio tiene una cierta semejanza a la
estructura de las regiones del mapa a colorear. Para reflejar las conexiones de los vértices de
un grafo también podemos usar matrices con la matriz de adyacencia, donde tenemos a
cada vértice del grafo representado en cada fila y columna de la matriz, y el cruce de filas y
columnas determina si son vértices conexos con un 1 y en su defecto un 0.
Mtrx <- as.matrix(as_adjacency_matrix(grph)); print(Mtrx) #Matriz de adyacencia del
grafo
vY <- Y[lower.tri(Y)]; print(vY) #Versión vectorizada de la matriz de adyacencia del grafo
( )
0 1 1 0 0 0
1 0 1 ⋯ 0 0 0
1 1 0 0 0 0
⋮ ⋱ ⋮
0 0 0 0 1 0
0 0 0 ⋯ 1 0 0
0 0 0 0 0 0

Para ver el resultado coloreado del mapa en cuestión podemos ver también en Rstudio si
nuestro grafo satisface las condiciones/restricciones de la conjetura, para ello veremos si
nuestro grafo es simple y conexo, esto quiere decir que ninguna conexión de cualquier par
de vértices tenga más de una arista y que todos los vértices estén conectados entre sí,
respectivamente. El grafo sí es simple y conexo.

is_simple(grph) ; is_connected(grph) #¿Es simple y conexo el grafo?


TRUE TRUE
Como ya hemos mencionado anteriormente, para obtener el coloreado del mapa en Dev C+
+, necesitaremos el número de vértices y aristas de nuestro grafo, con las funciones
“vcount()” y “ecount()” podemos obtener dichos valores, además, con “E()” el programa nos
devuelve cada una de las conexiones de todos los vértices, con “degree()” obtenemos el
grado de cada vértice del grafo, y con “neighbors(graph = , v = )” los vértices conexos a
cualquier vértice que queramos.
vcount(grph); ecount(grph) #Número de vértices y aristas del grafo
47 110
Para terminar con Rstudio, mencionar que con la función “tkplot()” obtenemos un grafo
dinámico con el que podemos interactuar con el grafo a conveniencia, seleccionando y
moviendo vértices y aristas, rotando el grafo o diseñando el grafo entre las diversas opciones
que nos da el programa. Aunque es una función que no tiene especial relevancia para
nuestro estudio, mostramos el grafo del mapa, pero con un diseño y estructura aleatoria
generada por el programa.

Programación en C++ del algoritmo Backtracking para colorear el mapa de


España peninsular
A partir del pseudocódigo expuesto en apartados anteriores, pasamos ahora a transcribirlo a
lenguaje C++ en el programa Dev C++ para colorear el mapa de España.
La implementación del algoritmo “Backtracking” constará, además de las tres funciones
booleanas explicadas anteriormente en pseudocódigo, de una función principal “main” que
figura el punto de partida para la ejecución del programa ejecutando y dirigiendo las otras
funciones que hemos introducido al programa.
Con esta función “main” le decimos al
int main(){
int C; programa que para el coloreado del
int a, b; mapa, debemos introducir el número de
cin >> V >> E; vértices y aristas de nuestro grafo
while(E--){ representativo del mapa, así como cada
cin >> a >> b; conexión entre dos vértices del grafo.
mt[a][b] = true; Para asignar los colores hemos usado una
mt[b][a] = true; matriz bidireccional ya que, si un vértice
} "a” está enlazado con “b”, “b” también
cin >> C; // # colores está enlazado con “a”, y por último
if(!isColored(C)) {
también introduciremos al programa el
cout << "No hay solución\n";
número de colores con el que queremos
}
return 0; que nos coloree los vértices del grafo, que
} en este caso serán cuatro colores.

A continuación, se muestran las funciones booleanas que se aplicarán para el algoritmo


“Backtraking” en código C++:

bool isColored(int C){ bool freeColor(int v, int color [], int c){
int color[V]; for(int i = 0; i < V; i++){
for(int i = 0; i < V; i++){ if(mt[v][i] && c == color [i]){
color[i] = 0; return false;
} }
if(!btColoring(C, color, 0)){ }
return false; return true;
} }
solve(color);
return true;
}

bool btColoring(int m, int color[], int v){


if(v == V) return true;
for(int i = 1; i <= m; i++){
if(freeColor(v, color, i)){
color[v] = i;
if(btColoring(m, color, v+1)) return true;
color [v] = 0;
}
}
return false;
}
Con esta función principal “main” y las tres funciones 47 110
booleanas transcritas a lenguaje C++, compilamos y ejecutamos 01
el programa para introducir como “Input” tanto el número de 02
vértices y aristas del grafo dual del mapa en cuestión, como las 12
conexiones entre cada par de vértices del grafo y el número de .
colores con el que queremos que el programa nos coloree cada .
vértice del grafo, datos que hemos obtenido anteriormente en .
Rstudio y que deberemos introducir en el formato de la 41 45
42 45
derecha para recibir el resultado siguiente:
44 45
4
Con este resultado que nos proporciona el programa debemos de poder asignar cada color
1, 2, 3, 4, a cada vértice en orden, o directamente a cada región en el mapa que represente
ese vértice, teniendo así que colorear la región del vértice 0 con el color 1, la región del
vértice 1 con el color 2, la región del vértice 2 con el color 3, etc. Obteniendo así el coloreado
final del mapa como podemos ver reflejado en la siguiente imagen:

Comparación del coloreado del mapa de España peninsular con el coloreado por
Comunidades Autónomas peninsulares
El programa que hemos desarrollado para colorear el mapa de España peninsular se podría
aplicar al coloreado de cada una de las comunidades autónomas en las que se agrupan las
provincias, esto lo podemos hacer mediante el mismo programa generado a partir del
código en C++. Debido a cuestiones lógicas no haremos esta comparación con comunidades
autónomas con pocas provincias ya que no obtendremos ningún resultado o conclusiones
relevantes, por eso mismo solo lo haremos con las comunidades autónomas que estén
conformadas por 5 provincias o más, estas serían Castilla la Mancha, Castilla y León, y
Andalucía:
Como vamos a colorear las provincias de estas comunidades autónomas por separado, lo
primero que podemos suponer es que al estar cada provincia conexa solo a otras provincias
de esa misma comunidad autónoma, el programa nos debería de asignar a cada provincia un
color distinto que al mapa general de las provincias españolas de la península ibérica.

A continuación, se muestran los mapas de las comunidades autónomas anteriores con el


grafo representativo de cada mapa:
Siguiendo los mismos pasos que el caso anterior resuelto, introducimos el número de
vértices y aristas de cada grafo, cada una de las conexiones entre los vértices de cada grafo
representativo del mapa por separado, y el número de colores con el que queremos que el
programa nos asigne a cada uno de los vértices del grafo, así obtenemos las siguientes
salidas del programa con las que podremos realizar el coloreado de cada mapa de las
comunidades autónomas bajo las restricciones de la conjetura de los cuatro colores:

Con los resultados obtenidos del programa, el 4-coloreado de los tres mapas de las
provincias de las comunidades autónomas por separado de las demás comunidades
autónomas, quedarían tal que:
Y con los mapas de abajo podemos observar las diferencias del coloreado que tienen estas
mismas comunidades autónomas en el mapa general de las provincias españolas de la
península ibérica:

Conclusión de la aplicación práctica del algoritmo “backtracking”


Tras los resultados obtenidos de los diferentes coloreados de los mapas bajo las condiciones
o restricciones de la conjetura de los cuatro colores realizados mediante el algoritmo
“backtracking”, primeramente, viendo las soluciones de los mapas coloreados, sobre el
algoritmo podemos decir que por lo general el programa tiende a hacer uso de los primeros
colores y no utilizar el resto si no es necesario, esto lo podemos ver reflejado gracias al
método sistemático por el cual el algoritmo avanza entre los niveles de las posibles
soluciones del problema hasta dar con la solución final.
Sobre la comparación posteriormente realizada entre el coloreado de las comunidades
autónomas separadas del resto y el coloreado de las comunidades autónomas en el mapa
general junto al resto, el programa realiza una asignación de los colores a cada vértice
distinto para cada caso, observando así como hemos dicho anteriormente que para el primer
caso hace menos uso del último par de colores respecto al segundo caso, ya que para el
segundo caso los vértices de cada grafo de los mapas a colorear están conexos a un mayor
número de vértices, entonces el programa hace un uso de los colores más complejo.

Bibliografía
Sevilla, D. El teorema de los cuatro colores, Divulgationes Mathematicae, Universidad de
Extremadura (2015), 31-47.
Macho Stadler, M. ¿Cuatro colores son suficientes? Un Paseo por la Geometría, 2004/2005
(BI-2868/05), 97-114.
Macho Stadler, M. Mapas, colores y números. Descubrir las matemáticas hoy: Sociedad,
Ciencia, Tecnología y Matemáticas 2006 (2008) 41-68

También podría gustarte