Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Torres de Hanoi_
1. REPÚBLICA BOLIVARIANA DE VENEZUELA
INSTITUTO UNIVERSITARIO POLITÈCNICO
“SANTIAGO MARIÑO”
EXTENSIÒN-PORLAMAR
REALIZADO POR:
STALIN MEZA
C.I:17.090.049
Torres de Hanoi
Programacion no Numerica II
4A- Prof. Agustin Marcano
2. ¿Qué son las torres de Hanoi?
La Torre de Hanoi (también llamada la Torre de Brahma o
Torre de Lucas, y, a veces pluralizado) es un juego matemático
o rompecabezas . Se compone de tres varillas, y un número de
discos de diferentes tamaños que pueden deslizarse en
cualquier varilla. El rompecabezas comienza con los discos en
una pila ordenada en orden ascendente de tamaño en una
varilla, la más pequeña en la parte superior, con lo que una
cónica forma.
3. Explicación del juego
El objetivo del juego es mover toda la pila a
otra varilla, obedeciendo las siguientes reglas
sencillas:
• Sólo uno de los discos puede ser movido a la vez.
• Cada movimiento consiste en tomar el disco superior de una de las pilas y
colocándola en la parte superior de la otra pila es decir, un disco sólo se
puede mover si es el disco más superior en una pila.
• No disco puede ser colocado en la parte superior de un disco más pequeño.
• Con tres discos, el rompecabezas se puede resolver en siete movimientos.
El número mínimo de movimientos necesarios para resolver un Torre de
Hanoi rompecabezas es 2 n - 1, donde n es el número de discos.
4. La técnica divide y vencerás
consiste en descomponer el problema en un conjunto de
subproblemas más pequeños. Después se resuelven estos
subproblemas y se combinan las soluciones para obtener la solución
para el problema original.
Esquema general:
divide_venceras (p: problema)
dividir (p, p1, p2, ..., pk)
para i = 1, 2, ..., k
si = resolver (pi)
solucion = combinar (s1, s2, ..., sk)
Puede ser recursivo siendo “resolver” una nueva llamada a
“divide_venceras”
Si el problema es “pequeño”, entonces se puede resolver de forma
directa.
Ejemplo: Torres de Hanoi
5. 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));
6. La resolución de un problema mediante esta técnica consta
fundamentalmente de los siguientes pasos:
1.En primer lugar ha de plantearse el problema de forma que
pueda ser descompuesto en k subproblemas del mismo tipo,
pero de menor tamaño. Es decir, si el tamaño de la entrada es n,
hemos de conseguir dividir el problema en k subproblemas
(donde 1 ≤ k ≤ n), cada uno con una entrada de tamaño n/k y
donde 0 ≤ n/k < n. A esta tarea se le conoce como división.
2.En segundo lugar han de resolverse independientemente todos
los subproblemas, bien directamente si son elementales o bien
de forma recursiva. El hecho de que el tamaño de los
subproblemas sea estrictamente menor que el tamaño original
del problema nos garantiza la convergencia hacia los casos
elementales, también denominados casos base.
3.Por último, combinar las soluciones obtenidas en el paso
anterior para construir la solución del problema original.
7.
8. Por el hecho de usar un diseño recursivo, los algoritmos diseñados mediante la
técnica de Divide y Vencerás van a heredar las ventajas e inconvenientes que la
recursión plantea:
Por un lado el diseño que se obtiene suele ser simple, claro, robusto y elegante, lo
que da lugar a una mayor legibilidad y facilidad de depuración y mantenimiento
del código obtenido.
Por contra, los diseños recursivos conllevan normalmente un mayor tiempo de
ejecución que los iterativos, además de la complejidad espacial que puede
representar el uso de la pila de recursión.
Sin embargo, este tipo de algoritmos también se pueden implementar como un
algoritmo no recursivo que almacene las soluciones parciales en una estructura
de datos explícita, como puede ser una pila, cola, o cola de prioridad. Esta
aproximación da mayor libertad al diseñador, de forma que se pueda escoger qué
subproblema es el que se va a resolver a continuación, lo que puede ser
importante en el caso de usar técnicas como Ramificación y acotación o de
optimización.
9. Enlace del Juego online: http://www.uterra.com/juegos/torre_hanoi.php
Enlace del Video del Juego https://www.youtube.com/watch?v=DF7mq2knmjk