8
I.UP. “SANTIAGO MARIÑO” ESCUELA DE INGENIERIA DE SISTEMAS MATURIN ESTADO MONAGAS Las Torres De Hanoi Asesora: María Aguilera Maturín Junio de 2012 Autor: Sánchez Carlos C.I.:83.618.386

Sanchez carlos presentacion torres de hanoi

Embed Size (px)

Citation preview

Page 1: Sanchez carlos presentacion torres de hanoi

REPUBLICA BOLIVARIANA DE VENEZUELA I.UP. “SANTIAGO

MARIÑO” ESCUELA DE INGENIERIA DE

SISTEMAS MATURIN ESTADO MONAGAS

Las Torres De Hanoi

Asesora: María Aguilera

Maturín Junio de 2012

Autor: Sánchez CarlosC.I.:83.618.386

Page 2: Sanchez carlos presentacion torres de hanoi

HISTORIA DE LAS TORRES DE HANOI

El enigma de las Torres de Hanoi trata de un juego oriental muy antiguo, sin embargo fue presentado, a nivel mundial, en 1883 por el matemático francés Edouard Lucas, bajo el seudónimo de N. Lucas de Siam.

La leyenda que acompaña a este juego cuenta que en Benares (ubicado en la India), durante el reinado del Emperador Fo Hi, existía un templo con una cúpula que marcaba el centro del mundo. Los monjes del templo tenían que mover sesenta y cuatro discos sagrados de un emplazamiento a otro. Pero éstos eran tan frágiles que sólo se podía mover de uno en uno. Y además, tenían que tener cuidado al colocarlos, puesto que no se podía emplazar uno más valioso encima de otro de valor inferior.

Page 3: Sanchez carlos presentacion torres de hanoi

HISTORIA DE LAS TORRES DE HANOI

En este caso, el mencionado valor de los aros iba en proporción a su tamaño, cuanto más pequeño fuera el anillo menor era su valía. Para realizar los traslados de los referidos discos, solamente se disponía de otro lugar en el templo (además del de partida y del final) lo suficientemente sagrado como para que estas anillas pudieran ser depositadas en él. Así pues, los monjes comienzan el movimiento de éstas entre el montón inicial, el destino final y la posición intermedia, eso sí, manteniendo siempre el orden antes comentado (el más grande en el fondo y el más pequeño en la cima). La leyenda dice que antes de que los monjes logren reubicar todos los discos en la nueva localización, el templo volverá a convertirse en polvo y el mundo terminará.

Page 4: Sanchez carlos presentacion torres de hanoi

EXPLICACIÓN DE LAS TORRES DE HANOI

El objetivo de este juego es colocar n discos en una barra de manera que el más grande quede en el fondo y el más pequeño en la cúspide. Para este fin, el jugador puede servirse la barra inicial o de partida, de la barra final, donde deben terminar los aros ordenados, y de una intermedia. El propósito del citado enigma es realizar esta ordenación con el menor número de movimientos posible. El acertijo con cuatro anillas se conoce como enigma de Reve.

Page 5: Sanchez carlos presentacion torres de hanoi

SOLUCIÓN ALGORÍTMICA APLICANDO EL MÉTODO DIVIDE Y VENCERÁS

Esquema general:

Divide y Vencerás (p: problema)

Dividir (p, p1, p2, ..., pk)

para i:= 1, 2, ..., k

si:= Resolver (pi)

solución:= Combinar (s1, s2, ..., sk)

Normalmente para resolver los subproblemas se utilizan llamadas recursivas al mismo algoritmo (aunque no necesariamente).

Ejemplo. Problema de las Torres de Hanoi.

Page 6: Sanchez carlos presentacion torres de hanoi

SOLUCIÓN ALGORÍTMICA APLICANDO EL MÉTODO DIVIDE Y VENCERÁS

Ejemplo: Problema de las Torres de Hanoi. Mover n discos del poste A al C:

• Mover n-1 discos de A a B

• Mover 1 disco de A a C

• Mover n-1 discos de B a C

Page 7: Sanchez carlos presentacion torres de hanoi

SOLUCIÓN ALGORÍTMICA APLICANDO EL MÉTODO DIVIDE Y VENCERÁS

Hanoi (n, A, B, C: entero)

si n==1 entonces mover (A, C)sino Hanoi (n-1, A, C, B) mover (A, C) Hanoi (n-1, B, A, C)finsi

Si el problema es “pequeño”, entonces se puede resolver de forma directa.

Page 8: Sanchez carlos presentacion torres de hanoi

Normalmente para resolver los subproblemas se utilizan llamadas recursivas al mismo algoritmo (aunque no necesariamente).

Esquema recursivo (con división en 2 subproblemas):

divide_venceras (p, q: indice)var m: indice

si pequeño (p, q) solucion = solucion_directa (p, q)en otro caso m = dividir (p, q); solucion = combinar (divide_venceras (p, m),

divide_venceras (m+1, q));

SOLUCIÓN ALGORÍTMICA APLICANDO EL MÉTODO DIVIDE Y VENCERÁS