Resolución del problema de las Torres de Hanói mediante el método Divide y Vencerás
1. REPÚBLICA BOLIVARIANA DE VENEZUELA
INSTITUTO UNIVERSITARIO POLITÉCNICO
“SANTIAGO MARIÑO”
EXTENSIÓN – MATURÍN
PROGRAMACIÓN NO NUMERICA II
Realizado por:
Profesora:
T.S.U Miguelangel Rivera
Ing. María Aguilera
C.I 15.634.901
Maturín, Junio de 2012
2. En 1883 empezó a venderse en Francia un antiguo
rompecabezas oriental, rescatado para Occidente por el
profesor N. Claus (de Siam) y cuyas primeras referencias eran
los escritos del ilustre mandarín Fer-Fer-Tam-Tam. Según una
leyenda india, en el Templo de Benarés, bajo el domo que
marca el centro del mundo, hay una placa de latón con tres
agujas de diamante.
Durante la creación, Dios puso sesenta y cuatro discos de oro
puro de distinto tamaño en una de las agujas, formando una
torre. Los bramanes llevan generaciones cambiando de lugar,
uno a uno, los discos de la torre entre las tres agujas de forma
que en ningún momento un disco mayor descanse sobre otro
más pequeño.
3. Cuando hayan conseguido trasladar todos los discos a otra
aguja su trabajo estará terminado, y la torre y el templo se
derrumbarán, y con un gran trueno, el mundo se desvanecerá.
La versión simplificada que se vendía en Francia se componía
de ocho discos de madera.
En realidad, la Torre de Hanói y la leyenda india habían sido
inventadas por el matemático francés Édouard Lucas (N. Claus
de Siam es un anagrama de Lucas d'Amiens). Su compatriota,
el escritor Henri de Parville amplió y adornó la leyenda poco
tiempo después. A pesar de que el reto planteado es
relativamente sencillo, la idea de Lucas ha demostrado ser una
de las más fecundas de la historia de las matemáticas
recreativas.
4. El objetivo es crear la pila en otra de las estacas siguiendo dos
reglas fundamentales: Las piezas se trasladan de una en una y
no se puede colocar una pieza mayor sobre una menor.
Juguemos unos minutos, sigue el siguiente enlace:
http://www.ematematicas.net/torre.php
5. El problema es muy conocido en la ciencia de la
computación y aparece en muchos libros de texto
como introducción a la teoría de algoritmos.
El problema de las Torres de Hanói es curiosísimo
porque su solución es muy rápida de calcular, pero
el número de pasos para resolverlo crece
exponencialmente conforme aumenta el número
de discos.
6. Una forma de resolver la colocación de la torre es
fundamentándose en el disco más pequeño, en este caso
el de hasta arriba. El movimiento inicial de este es hacia
la varilla auxiliar. El disco número dos por regla, se debe
mover a la varilla número tres. Luego; el disco uno se
mueve a la varilla tres para que quede sobre el disco dos.
A continuación se mueve el disco que sigue de la varilla
uno, en este caso el disco número tres, y se coloca en la
varilla dos. Finalmente el disco número uno regresa de la
varilla tres a la uno (sin pasar por la dos) y así
sucesivamente. Es decir, el truco está en el disco más
pequeño.
7. En la cultura popular, divide y vencerás hace referencia
a un refrán que implica resolver un problema difícil,
dividiéndolo en partes más simples tantas veces como
sea necesario, hasta que la resolución de las partes se
torna obvia. La solución del problema principal se
construye con las soluciones encontradas.
8. La técnica divide y vencerás consiste en:
Descomponer un problema en un conjunto de subproblemas
más pequeños.
Se resuelven estos subproblemas.
Se combinan las soluciones para obtener la solución para el
problema original.
PROB SOLU
PROBLEMA
SOLUCIÓN
LEMA CIÓN
9. Esquema general:
DivideVencerá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.
10. A B C
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
11. El algoritmo recursivo sería:
Hanoi (dim N , palo A, palo B , palo C)
// N, origen, destino , auxiliar
Si N == 1
Imprimir : Pasar disco de A a B
else
Hanoi(N-1 , A , C, B)
Imprimir : Pasar disco de A a B
Hanoi(N-1 , C , B , A)
Veamos paso a paso como procede el algoritmo en el caso de tres discos:
Hanoi(3,1,2,3)
Hanoi(1,1,2,3) --> Cambia de 1 a 2
Hanoi(2,1,3,2) --> Cambia de 1 a 3 --> Cambia de 1 a 3
Hanoi(1,2,3,1) --> Cambia de 2 a 3
Cambia de 1 a 2 --> Cambia de 1 a 2 ---> Cambia de 1 a 2
Hanoi(1,3,1,2) --> Cambia de 3 a 1
Hanoi(2,3,2,1) --> Cambia de 3 a 2 --> Cambia de 3 a 2
Hanoi(1,1,2,3) --> Cambia de 1 a 2
12. 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.
• La idea de la técnica divide y vencerás es aplicada
en muchos campos:
- Estrategias militares.
- Demostraciones lógicas y matemáticas.
- Diseño modular de programas.
- Diseño de circuitos.
- Etc.
13. Requisitos para aplicar divide y vencerás:
Necesitamos un método (más o menos directo) de
resolver los problemas de tamaño pequeño.
El problema original debe poder dividirse fácilmente en un
conjunto de subproblemas, del mismo tipo que el
problema original pero con una resolución más sencilla
(menos costosa).
Los subproblemas deben ser disjuntos: la solución de un
subproblema debe obtenerse independientemente de los
otros.
Es necesario tener un método de combinar los resultados
de los subproblemas.