Juego del 15: existencia de la solución
Este juego se juega en un tablero . En este tablero hay fichas numeradas del 1 al 15. Una celda se deja vacía (denotada por 0). Hay que llevar el tablero a la posición presentada abajo moviendo repetidamente una de las fichas al espacio libre:
El juego “15 Puzzle” fue creado por Noyes Chapman en 1880.
Existencia de la solución
Consideremos este problema: dada una posición en el tablero, determinar si existe una secuencia de movimientos que lleve a una solución.
Supongamos que tenemos alguna posición en el tablero:
donde uno de los elementos es igual a cero e indica una celda vacía
Consideremos la permutación:
es decir, la permutación de números correspondiente a la posición en el tablero sin el elemento cero
Sea el número de inversiones en esta permutación (es decir, el número de tales elementos y tales que , pero ).
Supongamos que es un índice de una fila donde está ubicado el elemento vacío (es decir, usando nuestra convención, ).
Entonces, la solución existe sii es par.
Implementación
El algoritmo de arriba se puede ilustrar con el siguiente código de programa:
int a[16];
for (int i=0; i<16; ++i)
cin >> a[i];
int inv = 0;
for (int i=0; i<16; ++i)
if (a[i])
for (int j=0; j<i; ++j)
if (a[j] > a[i])
++inv;
for (int i=0; i<16; ++i)
if (a[i] == 0)
inv += 1 + i / 4;
puts ((inv & 1) ? "No Solution" : "Solution Exists");Demostración
En 1879 Johnson demostró que si es impar, entonces la solución no existe, y en el mismo año Story demostró que todas las posiciones cuando es par tienen solución.
Sin embargo, todas estas demostraciones eran bastante complejas.
En 1999 Archer propuso una demostración mucho más simple (se puede descargar su artículo aquí ).