7 votos

¿Cómo probar la estrategia óptima de las Torres de Hanoi?

En el juego de las torres de Hanoi, ¿cómo sabemos que tenemos el algoritmo óptimo para resolverlo? Pensé en esto y me pareció que cualquier desviación de las estrategias estándar sería retroceder un paso, pero no tenía idea de cómo demostrarlo rigurosamente.

Todo lo que sé es que la prueba implica la correspondencia de Lucas entre el gráfico de Hanoi y los coeficientes de impar en el triángulo de Pascal. ¿Cómo se convierte el triángulo de Pascal en un gráfico? Supongo que los coeficientes son los vértices, pero no veo cómo se forman las aristas.

También me preguntaba cómo generalizar la estrategia a n discos y k barras porque parece que este argumento de correspondencia no funcionaría realmente en el caso general.

Básicamente, me pregunto cómo se convierten los coeficientes de impar del triángulo de Pascal en un gráfico y si existe o no un método similar para encontrar y probar la estrategia óptima cuando aumentamos el número de barras.

11voto

Rory MacLeod Puntos 4574

En general, con n barras y n discos, el problema es equivalente a encontrar un camino hamiltoniano en un n-hipercubo. No se conoce ninguna estrategia óptima probada para 4 barras. También se puede leer el Artículo de MathWorld que tiene referencias de bastantes documentos sobre el tema.

2voto

Lorin Hochstein Puntos 11816

Me referiré a tu primera pregunta, pero no a la del mayor número de varillas; por lo que sé, todavía está muy abierto cuál podría ser la estrategia óptima incluso para $4$ varillas y un pequeño número de discos.

Para mostrar la estrategia óptima para $n$ discos en $3$ varillas es la "habitual", se puede hacer por inducción (que da una solución recursiva). Seguro que hay otras formas de demostrarlo, quizás con números de Lucas como sugieres.

Está claro que la estrategia óptima con $n=1$ es simplemente mover el disco directamente.

Supongamos que ya tienes la estrategia óptima para mover $k$ discos. Para mover $k+1$ discos, necesita mover el disco más grande desde la barra inicial a la barra terminal, pero esa es la única vez que necesita moverse (no puede ayudarle con los otros discos, ya que debe estar en el fondo en cualquier momento, por lo que cualquier otro movimiento sólo requiere más movimientos al final); para mover el fondo ( $k+1$ )st disco de la barra inicial $I$ a la barra de terminales $T$ primero hay que mover la parte superior $k$ discos fuera del camino; esto requiere mover el $k$ discos de la barra inicial $I$ a la barra auxiliar $A$ y la forma óptima de hacerlo es la estrategia óptima que se conoce para $k$ discos. Luego se mueve el $k+1$ disco, y luego quiere mover el resto $k$ discos de la barra auxiliar a la terminal en el menor número de movimientos posible (la forma óptima). Por tanto, la estrategia óptima para $k+1$ discos es mover la parte superior $k$ utilizando la estrategia óptima para $k$ de $I$ a $A$ , entonces mueve el disco más grande de $I$ a $T$ y luego mover la parte superior $k$ discos utilizando la estrategia óptima para $k$ de $A$ a $T$ .

Si se lleva la cuenta del número real de movimientos necesarios en cada paso, se puede dar el número Para $n=1$ el número es $1=2^1-1$ . Supongamos que el movimiento $k$ discos requiere $2^k-1$ movimientos en la estrategia óptima. La estrategia óptima para $k+1$ descrito anteriormente toma $(2^k-1) + 1 + (2^k-1) = 2^k+2^k - 1 = 2^{k+1}-1$ pasos; así, la solución óptima para $n$ discos y $3$ varillas requiere $2^n-1$ se mueve.

(Esto no se generaliza fácilmente a más de $3$ varillas por razones presumiblemente obvias).

Un poco más interesante es intentar demostrar que la solución no recursiva da una solución óptima; esta solución sólo requiere que recuerdes el último disco que has movido en cada momento (la solución recursiva requiere más memoria, por supuesto). Numerar las barras $0$ , $1$ y $2$ . Tenemos tres reglas:

  1. Nunca mueva el mismo disco dos veces seguidas.
  2. Sólo se puede mover un disco de la parte superior de una barra a la parte superior de otra barra.
  3. Mover un disco de la barra $i$ a la varilla $j$ sólo es válido si $i\neq j$ , y cualquiera de las dos varillas $j$ está vacío o el disco superior de la barra $j$ es mayor que el disco superior en barra $i$ .

Con estas reglas, el algoritmo no recursivo tiene dos simples pasos:

  • Si está moviendo el disco de varilla $i$ y las otras dos varillas son destinos válidos, entonces muévelo a la varilla $i+1\mod 3$ . Si no, muévelo al único destino válido.
  • Si no es posible ningún movimiento, deténgase. De lo contrario, continúe.

Este proceso resolverá el rompecabezas con $3$ varillas en el mínimo número de movimientos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X