SlideShare una empresa de Scribd logo
1 de 24
RECURSIÓN E ITERACIÓN EN ALGORITMOS:
      EL CASO LA TORRE DE HANOI

                     por

        Vanessa Santiago Olivares

 Monografía sometida en cumplimiento parcial
      de los requisitos para el grado de

          MAESTRO EN CIENCIAS

                     en

         MATEMÁTICA APLICADA

         Universidad Interamericana
           Recinto de San Germán
        Departamento de Matemáticas
                    2010




               Aprobado por:



 _______________________________________
              Dr. Balbino García
        Director del Proyecto Creativo
Resumen

Este documento presenta una comparación entre algoritmos recursivos e
iterativos utilizando como ejemplo el problema de la Torre de Hanoi. De acuerdo
a la literatura, ambos métodos de programación se pueden adaptar a los mismos
problemas pero, en general, los algoritmos recursivos son más simples y toman
mayor tiempo de ejecución. El problema de la Torre de Hanoi, en su formato
original, consiste de tres columnas paralelas. En una de las columnas se colocan
discos concéntricos de diferentes diámetros de forma que la columna pasa por el
centro de los discos y los discos están apilados en orden ascendente de
diámetro, es decir, el disco de menor diámetro está arriba y el de mayor
diámetro abajo. El objetivo es mover los discos de una columna a otra. Para
esto se imponen las restricciones de que (1) sólo se puede mover un disco a la
vez, y (2) los discos sólo se pueden colocar en espacios vacíos o sobre discos de
mayor diámetro. Para realizar la comparación se construyeron dos algoritmos,
uno recursivo y otro iterativo, en Mathematica 7.0.0, y se comparó su ejecución.
El algoritmo recursivo requirió menos líneas de código que el iterativo, lo cual va
de acuerdo a lo reportado en la literatura en el sentido de que los algoritmos
recursivos son más simples que los iterativos. Para evaluar el tiempo de
ejecución, se calculó la razón de tiempo de ejecución a cantidad de discos y se
normalizó a la razón para tres discos. Los resultados sugieren que, en efecto, el
tiempo de ejecución para el algoritmo recursivo es mayor que para el iterativo.




Palabras clave: Algoritmos, Recursión, Torre de Hanoi




                                        2
Abstract

This document presents a comparison between recursive and iterative algorithms
using problem of the Tower of Hanoi as example. According to literature, both
programming methods can be adapted to similar problems but, in general,
recursive algorithms are simpler but require longer run times. The problem of the
Tower of Hanoi, on its original format, consists of three parallel columns. In one
of the columns, concentric discs of different diameters are stacked so that the
column goes through the center of the discs. Discs are piled up in ascending of
diameter, that is, the disc with smaller diameter on top and the one of greater
diameter at the bottom. The objective is to move the stack of discs from a
column to another one. The following two restrictions are imposed to accomplish
this objective: (1) only one disc can be moved on each turn, and (2) the discs
can only be placed in empty spaces or over discs of greater diameter. In order to
make the comparison two algorithms were constructed in Mathematica 7.0.0,
one recursive and another iterative one, and their performance compared. The
recursive algorithm required less lines of code than the iterative one, which
agrees with reported literature in the sense that the recursive algorithms are
simpler that the iterative ones. In order to evaluate the run time, the rate of run
time to amount of discs was calculated and standardized to the rate for three
discs. The results suggest that, in fact, the run time for the recursive algorithm
is greater than for the iterative one.




Key words: Algorithms, Recursion, Tower of Hanoi




                                        3
Tabla de Contenido

Algoritmos………………………………………………………………………………………..                    5

Recursión e Iteración ………………………………………………………………………….              8

Torre de Hanoi …………………………………………………………………………………..                10

    Solución Gráfica de la Torre de Hanoi ………………………………………….     13

    Solución Recursiva de la Torre de Hanoi ………………………………………     15

    Solución Iterativa de la Torre de Hanoi ………………………………………..   16

Análisis de Resultados …………………………………………………………………………             19

Conclusión…………………………………………………………………………………………                    21

Referencias……………………………………………………………………………………….                   22




                                4
Algoritmos

La Real Academia de la Lengua Española define un algoritmo como un “conjunto
ordenado y finito de operaciones que permite hallar la solución de un problema”
(RAE, 2001).

La palabra surge del nombre del matemático persa Muhammad ibn Musa al-
Jwarizmi que se estima vivió entre los años 780 y 850 y a quien se considera
como el padre del álgebra y nuestro sistema de numeración. Al-Jwarizmi fue
matemático, astrónomo y geógrafo. Su principal logro consistió en publicar libros
de fácil comprensión que permitían el aprendizaje y aplicación de los
conocimientos en matemática por un mayor número de personas. En sus
tratados enfatizó que especificar de forma clara y concisa la manera
sistematizada de realizar cálculos llevaba a la definición de algoritmos que podían
ser usados en dispositivos mecánicos como los ábacos. Esto lo llevó a estudiar
los modos de reducir las operaciones que componían los cálculos, es decir, el
“conjunto ordenado y finito de operaciones que permite hallar la solución de un
problema” (Dávila-Rascón, 2002).

El estudio de los algoritmos y los efectos de factores externos sobre el
desempeño de estos se conoce como algoritmia. De acuerdo a esta ciencia, los
algoritmos de computación y matemáticas se pueden clasificar, según su función,
en dos tipos principales: de ordenamiento y de búsqueda. Los algoritmos de
ordenamiento colocan los elementos de una lista o vector en un orden específico
siguiendo una serie de reglas preestablecidas. Estos son la base de de procesos
como bases de datos, análisis del escenario mejor, peor o promedio y análisis de
límite inferior (algoritmia.org, 2010).

Existen varias subclases para los algoritmos de ordenamiento.

   •   Interno versus externo: Si el ordenamiento de lleva a cabo en la memoria
       (RAM) de la computadora se le llama interno. Algoritmo externo sería
       aquel en que el ordenamiento se lleva a cabo en otro lugar, por ejemplo,
       un disco duro.
   •   Natural versus no-natural: Esta es una clasificación en términos del
       tiempo que toma el ordenamiento. Esto depende de si los datos de
       entrada ya tienen una estructura ordenada (natural) o hay que generar
       dicha estructura para entonces ordenar (no-natural).
   •   Estable versus inestable: La estabilidad del algoritmo se refiere a su
       capacidad de tratar con datos que tienen las mismas claves de
       ordenamiento, por ejemplo, un algoritmo que ordene por apellido y se
       encuentra con elementos de información que tienen el mismo apellido.
       En este caso, el algoritmo estable va a mantener el orden de los

                                        5
elementos según apareen en el listado de entrada mientras que el
       inestable no lo mantiene.

Los algoritmos de búsqueda, por su parte, pretenden determinar si un elemento
en particular existe dentro de un conjunto, listado o vector de datos. Este
algoritmo se reduce a la aplicación de lógica boleana para encontrar el elemento
de interés. Estos algoritmos pueden ser de tipo secuencial o binario. Algoritmos
de tipo secuencial se utiliza cuando no hay garantía de que el conjunto de datos
esté ordenado. Esta condición hace necesario el pasar por todo el conjunto para
evaluar cada uno de los elementos. Por el contrario, si el conjunto de datos está
ordenado por el criterio de interés, usando un algoritmo binario es posible ir
específicamente al lugar donde podría estar el elemento buscado y determinar si
está presente o no en el conjunto. Esto hace que los algoritmos de búsqueda
binarios sean mucho más eficientes en términos del tiempo de procesamiento
(algoritmia.org).

Otra manera de clasificar los algoritmos es en base a la técnica utilizada
(Brassard y Bratley, 1996; Wikipedia.org, 2010). Técnica se refiere a la forma en
que se construye el algoritmo para enfrentar el problema y tomar decisiones que
lleven a la solución correcta o el mejor estimado posible de dicha solución. Desde
esta perspectiva se consideran las siguientes clases.

   •   Exacto versus aproximado: Se refiere al tipo de solución que pretende
       ofrecer el algoritmo. La selección de uno sobre otro depende de la
       complejidad del problema y la incertidumbre de los factores externos.

   •   Determinístico versus no-determinístico: Algoritmo determinístico o
       estático es un algoritmo lineal, tipo receta de cocina, que hace siempre lo
       mismo sin tomar en cuenta decisiones o con opciones previamente
       definidas. Cada paso del algoritmo tiene únicamente un paso sucesor y
       otro antecesor y siempre produce el mismo resultado al enfrentar el
       mismo conjunto de datos iniciales. Los no-determinísticos, por otro lado,
       son algoritmos que tienen la capacidad de tomar decisiones en base a
       parámetros aleatorios (o semi-aleatorios) que cambian cada vez que se
       ejecutan. Esto permite que el mismo algoritmo aplicado a los mismos
       datos pueda ofrecer resultados diversos.

   •   En serie, paralelo o distribuidos: Algoritmos que se ejecutan un paso a la
       vez se conocen como seriados o en serie. Los algoritmos paralelos y
       distribuidos dividen los problemas en subproblemas, o partes menos
       complejas, y resuelven cada parte de forma individual y simultánea
       utilizando varios sistemas. La diferencia entre algoritmos paralelos y
       distribuidos radica en la arquitectura de los sistemas en los que pueden
       operar.     Los algoritmos paralelos operan en sistemas con varios

                                        6
procesadores mientras que los distribuidos operan en redes de
       computadoras interconectadas. Ambos son algoritmos de alto nivel que
       utilizan otros algoritmos para resolver los subproblemas e integrar sus
       soluciones.

   •   Lógicos: Se clasifican como algoritmos lógicos a aquellos que operan en
       función de los conceptos y axiomas de la matemática lógica.

   •   Recursión versus iteración: Para llegar a la solución deseada, los
       algoritmos son comúnmente utilizados en varias ocasiones durante el
       procesamiento de los datos. Cuando el algoritmo termina y vuelve a
       correr, se dice que está iterando. Por otro lado, cuando el algoritmo se
       llama a si mismo para resolver parte del problema, se dice que está
       recurriendo.

Otra posible clasificación de los algoritmos es en base al paradigma de
implementación, es decir, la forma en que va a determinar la solución al
problema bajo consideración. En términos generales, existen las siguientes
categorias (Brassard y Bratley, 1996; Wikipedia.org, 2010).

   •   Solución por fuerza bruta o búsqueda exhaustiva: Este término se utiliza
       para denominar algoritmos que exploran todas las posibles
       combinaciones para alcanzar la solución óptima.

   •   Algoritmo ambicioso (“greedy”): Son algoritmos simplistas que toman
       decisiones en base a la información disponible de forma inmediata y que
       es pre-definida. Esto permite que sean eficientes, fáciles de desarrollar e
       implantar, pero su simplicidad no se adapta a muchas situaciones de la
       vida real y, por tanto, típicamente su solución no es óptima. Su uso
       principal son los problemas de optimización tales como la ruta más corta
       o el costo más bajo.

   •   Divide y vencerás: En esta técnica se divide el problema en subconjuntos
       que se resuelven sucesivamente y de forma independiente. Las
       soluciones parciales se combinan finalmente para obtener la solución al
       problema bajo consideración.

   •   Programación dinámica: Es una técnica similar a “divide y vencerás” con
       la diferencia de que los subconjuntos o subproblemas que trata no son
       totalmente independientes, sino que tienen cierto grado de solapamiento.

   •   Programación lineal: Utiliza un sistema de ecuaciones y desigualdades
       que acotan y definen el universo. Estos algoritmos utilizan matemática
       lineal para hallar la solución óptima del sistema.

                                        7
•   Heurísticas: Estos algoritmos se utilizan para encontrar estimados
        (soluciones subóptimas) de las soluciones reales en base a experiencias
        previas del algoritmo y factores aleatorios.

    •   Grafos: Algoritmos basados en la teoría de grafos para modelar sistemas
        y resolverlos en base a las restricciones impuestas sobre estos.

        Recursión e Iteración

Como se mencionó anteriormente tanto la recursión como la iteración buscan
que el algoritmo se ejecute en forma secuencial y consecutiva un cierto número
de veces. La diferencia entre éstas estriba en que la iteración ejecuta el
algoritmo completamente antes de volverlo a llamar, mientras que la recursión
llama al mismo algoritmo para poder resolverlo. Rosen (2003) establece
claramente la diferencia entre ambas técnicas con el ejemplo que se presenta a
continuación y sugiere que la iteración es mucho más efectiva en términos de
tiempo de computación.

Rosen toma como ejemplo el cómputo del factorial de un número n. Por
definición, n! = n(n − 1)(n − 2)...(1). En base a esto es posible establecer un
algoritmo recursivo en C++ que tenga la siguiente estructura.

            PROCEDURE factorial(n)
            {
                 IF n = 1
                 {
                         nfac = 1
                 }
                 ELSE
                 {
                         nfac = n*factorial(n-1)
                 }
            RETURN(nfac)


Para visualizar la recursividad de este algoritmo, asumamos que n = 4. Este
valor entra al algoritmo y se dispone a evaluar nfac = n*factorial(n - 1). Esta
ecuación manda a que se evalúe cuanto es factorial( n - 1) antes de proceder.
Entonces se llama el algoritmo por segunda vez pero con n = 3. Esta vez, el
algoritmo requerirá evaluar factorial(n - 1) con n = 2 y recurrirá al algoritmo por
tercera vez. El proceso continúa hasta que en la cuarta recursión se define que
factorial(n - 1) con n = 1 resulta en un valor concreto y permite que las
incógnitas anteriores se puedan evaluar.

                                         8
Debe resultar evidente que la recursión causa que haya valores intermedios que
no se pueden evaluar hasta que la recursión se acota. Es entonces cuando el
proceso puede regresar y concluir los ciclos computacionales externos. El tener
que trabajar con valores intermedios que no pueden ser evaluados
completamente requiere de espacio de memoria para almacenar dichos valores y
tiempo de computación adicional.

A modo de comparación, la implementación del cómputo del factorial de n
usando un algoritmo iterativo aparece a continuación.

            PROCEDURE factorial(n)
            {
                 nfac = 1
                 FOR i = 1 TO n
                 {
                        nfac = nfac*i
                 }
            RETURN(nfac)


A diferencia del caso anterior, cada ciclo termina sin dejar incógnitas o valores
intermedios sin analizar. Veamos, por ejemplo, el caso para n = 4. Al entrar en
el algoritmo, se asigna un valor inicial de 1 a nfac y se define en valor del índice
de iteración, i. Esto permite que al evaluar la ecuación se obtenga un resultado
concreto cada vez.

A pesar de la simpleza de la iteración, la recursión tiene su lugar el las
matemáticas y la computación ya que en algunos sistemas hay una dependencia
tal entre los estados presente, pasado y futuro que requiere la evaluación de los
diferentes estados para poder definir la solución.

Goodstein (1964), hablado de la teoría recursiva de números, establece una
analogía entre el juego de ajedrez y la aritmética. De acuerdo a esta discusión,
las fichas del juego se pueden comparar con los numerales y los movimientos de
dichas fichas con las operaciones y propiedades de cada numeral. Goodstein
razona que el la pieza denominada rey, no es rey debido a su forma o
construcción ya que el objeto puede ser reemplazado por cualquier otro y
funcionar igual. Siendo así, lo que hace al rey ser tal, son las reglas que definen
sus movimientos particulares. Entonces, cualquier objeto que actúe como rey,
se puede usar como tal. De igual forma, cualquier símbolo se puede utilizar para
representar al 2, lo importante es que las propiedades y efecto al interactuar en
operaciones con otros numerales sean las propias de esa figura.



                                         9
Esta analogía sirve para plantear la bondad de los algoritmos recursivos sobre los
iterativos. En el ajedrez, un algoritmo iterativo sólo serviría para mover piezas
sin más lógica que siguiendo las operaciones permitidas. En cambio, un
algoritmo recursivo permitiría la consideración de otras piezas en el tablero y las
posibles consecuencias o estados futuros antes de alcanzar una solución.

La literatura contiene un sin número de trabajos que documentan los principios y
conceptos de la llamada teoría de recursión (Crossley, 1967; Fenstad, 1980;
Goodstein, 1964; Greenberg, 2006; Hinman, 1978; Nerode y Shore, 1984) al
igual que los principios y aplicaciones de la iteración en las matemáticas y
computación (Axelsson, 1994; Beardon, 1991; Palais y Palais, 2009; Norris,
1981).

       Torre de Hanoi

La Torre de Hanoi, también conocida como la Torre de Brahma, es un juego
inventado por el matemático francés François Edouard Anatole Lucas en 1883,
quien, además de su trabajo en matemática recreacional, es conocido por su
contribución relacionada a la secuencia Fibonacci y los algoritmos para
determinar si los números son primos (O’Connor y Robertson, 1996).

El juego de la Torre de Hanoi (Figura 1), en su formato original, consiste de tres
columnas paralelas. En una de las columnas se colocan discos concéntricos de
diferentes diámetros de forma que la columna pasa por el centro de los discos y
los discos están apilados en orden ascendente de diámetro, es decir, el disco de
menor diámetro está arriba y el de mayor diámetro abajo. El objetivo del juego
es mover los discos de una columna a otra. Para esto se imponen las
restricciones de que (1) sólo se puede mover un disco a la vez, y (2) los discos
sólo se pueden colocar en espacios vacíos o sobre discos de mayor diámetro.




Figura 1: Juego de la Torre de Hanoi


                                        10
Aunque el juego típicamente tiene ocho discos, en la Internet se consiguen
variaciones del juego que van desde tres hasta 12 discos. Otras variaciones del
juego definen o limitan la columna a la cual se desea mover los discos, el tiempo
disponible para hallar la solución, la dirección del movimiento o la cantidad de
movidas para alcanzar el objetivo.

En relación al número de movidas mínimo para alcanzar el objetivo, Valeiras
(2004) reporta que la solución óptima, es decir, el menor número de movidas
para alcanzar la solución final, es 2n-1, donde n es el número de discos en el
juego. La Figura 2 presenta como el número mínimo de movidas crece
exponencialmente con el número de discos en el juego.


                    300

                    250                                                      8
  Movidas mínimas




                    200

                    150
                                                                     7
                    100
                                                                 6
                     50
                                                       5
                                          3        4
                      0       1       2
                          0       2            4             6           8
                                          Número de discos

Figura 2: Número mínimo de movidas para la solución óptima según la cantidad de
discos en el juego

Es interesante notar como la observación cuidadosa del número mínimo de
movidas requerido para alcanzar la solución sugiere la recursividad del problema.
De acuerdo a la Tabla 1, para tres columnas (k=3), para poder alcanzar la
solución al problema con n discos, es necesario resolver el problema para n-1
discos primero. Se puede demostrar también que M(n)=2(M(n-1))+1=2n+1.
(Snapp, 2005)




                                              11
Tabla 1: Movidas necesarias para alcanzar la solución óptima
Número de discos        Solución óptima        Número de movidas
                                                                          M(n) = f(M(n-1))
      (n)                H(n,3) = 2n+1                M(n)
       1                       1                        1                           --
       2                       3                     2(1)+1                      2M(1)+1
       3                       7                  2(2(1)+1)+1                    2M(2)+1
       4                       15              2(2(2(1)+1)+1)+1                  2M(3)+1

Otras variantes aumentan el número de columnas (por ejemplo, ‘Reve’s puzzle’
es una variante con cuatro columnas) (Houston y Masum, 2004) o la cantidad de
conjuntos de discos a mover (Mascolo, 2007). Estas variantes aún se siguen
estudiando y para muchas de ellas no se han identificado soluciones tales como
el número mínimo de movimientos para mover de una columna a otra.

Berend y Sapir (2006), por ejemplo, estudiaron el problema para, dado alguna
variante del juego y cantidad de discos específico, hallar el diámetro del grafo o
número máximo de pasos para mover los discos de una configuración inicial a
otra final previamente especificada.

Para el caso particular del problema con cuatro torres, Frame (1941) y Steward
(1941) reportaron acerca de un algoritmo que proveía la solución presuntamente
óptima. Sin embargo, dicha solución estaba basada en la llamada conjetura
Frame-Steward que dice que FS(n,k)=H(n,k), es decir, que el resultado del
algoritmo para n discos y k columnas es realmente la solución óptima. En otras
palabras, la solución que provee el algoritmo parece ser óptima, pero no se ha
podido probar, ni negar, que en realidad lo es. Chen y Shen (2004) retaron esta
paradoja y probaron que FS(n,k) y H(n,k) son de la misma magnitud, lo que ellos
llamaron la evidencia más contundente en apoyo a la conjetura Frame-Steward.




Figura 3: Solución óptima de Frame-Steward para la Torre de Hanoi (Shen, 2004)

Stockmeyer y Lunnon (2008) presentan diversas variaciones del problema con
más de un conjunto de discos, donde cada conjunto tiene un color particular.
Para cada caso explorado, los autores proveen claves de cómo hallar la solución
y algoritmos para poder resolver los problemas. No reclaman, sin embargo, que
sus soluciones sean óptimas.

El problema de la Torre de Hanoi ha sido estudiado usando diferentes algoritmos
o implementaciones de dichos algoritmos. Wikipedia, por ejemplo, presenta


                                              12
algoritmos binarios, no-recursivos y sub-óptimos para solucionar el problema. El
algoritmo también ha sido implementado en juegos de video y secuencias de
almacenamiento de datos en memorias de computadoras y ordenadores.

SOLUCIÓN GRAFICA DE LA TORRE DE HANOI

Al igual que cualquier otro problema que se desee resolver usando algoritmos
recursivos o iterativos, la clave esta en poder identificar un subproblema que al
repetir la secuencia nos lleve a la solución final. En el caso de soluciones
recursivas, el subproblema debe ser esencialmente una copia reducida del
problema mayor. Este es básicamente el concepto de los modelos fractales de
Sierpinski.

Asumamos que tenemos una Torre de Hanoi con tres columnas (A, B, C) y tres
discos. Para propósitos del grafo, asumamos la siguiente nomenclatura. Los
discos aumentan de tamaño de izquierda a derecha, es decir, el disco menor
está a la izquierda. Además, la localización de disco se identificará con el
nombre de la columna. De esta forma, la notación ABC indica que el disco
mayor está en la columna A, el segundo disco en la columna B y el disco menor
en la columna C.



                                        AAA

                                  AAB            AAC

                                ACB                    ABC

                          ACC         ACA        ABA         ABB

                    BCC                                            CBB

              BCA         BCB                                CBC         CBA

           BCB                  BAB                    CAC                 CCA

     BBB         BBC   BAC            BAA        CAA         CAB     CCB         CCC

Figura 4: Modelo fractal de Sierpinski       que sirve como grafo de la solución al
problema de la Torre de Hanoi




                                            13
La Figura 4 muestra el modelo fractal de Sierpinski que representa la solución
gráfica al problema de la Torre de Hanoi. Nótese que los vértices de la
estructura externa (triángulo) son las condiciones en que los tres discos están en
la misma columna. Se aprecia, además, que el triángulo externo está formado
por tres triángulos internos siguiendo el arreglo de Sierpinski, y que estos, a su
vez, están formados por triángulos más pequeños.

De este modelo, es posible establecer que el paso más corto (óptimo) para pasar
los discos de A hasta C (Figura 4) es AAA-AAC-ABC-ABB-CBB-CBA-CCA-CCC y
que consta de siete pasos solamente. Esto concuerda con el número mínimo de
2n - 1 (23 - 1 = 8 – 1 = 7) mencionado anteriormente.



                                          AAA

                                    AAB           AAC

                                 ACB                    ABC

                           ACC         ACA        ABA         ABB

                     BCC                                            CBB

               BCA         BCB                                CBC         CBA

           BCB                   BAB                    CAC                 CCA

     BBB         BBC     BAC           BAA        CAA         CAB     CCB         CCC

Figura 5: Paso óptimo entre A y C

De este grafo es posible obtener otros pasos de interés, por ejemplo, el paso
Hamiltiniano, es decir, el paso que lleve el conjunto de discos a todas las
columnas y los regrese al principio. Hinz y Parisse (2002) probaron que todo
grafo de Hanoi es Hamiltoniano isomórfico y realizaron un análisis exhaustivo de
su planaridad.

Otros pasos de interés son el paso más largo y el paso del vendedor viajero que
pasa por todos los puntos del grafo una sola vez y regresa al origen. Además, es
posible establecer un paso que lleve los discos desde cualquier configuración
inicial permitida hasta la solución final.


                                             14
SOLUCIÓN RECURSIVA DE LA TORRE DE HANOI

En términos generales, la literatura reporta el siguiente algoritmo para hallar la
solución al problema de la Torre de Hanoi con tres torres (identificadas como
origen, intermediaria y destino) (McCann, 2007; Snapp, 2005; Valerias, 2004;
Wikipedia, 2010).

   1. Mover el disco menor a la columna intermediaria si hay un número par de
      discos. Si hay un número impar de discos, mover el disco menor a la
      columna destino.
   2. Hacer un movimiento legal que no sea reversar el paso anterior (sólo
      debe haber una posibilidad).
   3. Mover el disco menor a la columna de la cual no provino en su
      movimiento anterior.
   4. Repetir los pasos dos y tres hasta mover todos los discos.

De forma recursiva, este algoritmo se pude expresar como sigue.

   1. Mover los n-1 discos superiores de la columna origen a la columna
      intermediaria usando la columna destino como intermediaria.
   2. Mover el disco n a la columna destino
   3. Mover los n-1 discos superiores de la columna intermediaria a la columna
      destino usando la columna origen como intermediaria.

La Figura 6 presenta un algoritmo recursivo programado en Mathematica 7.0.0
para resolver el problema de la Torre de Hanoi con tres torres. Dicha
implementación es una adaptación realizada por la autora del algoritmo
publicado por Weisstein (2006).

El algoritmo de la Figura 6 comienza con la asignación de la cantidad de discos
en el juego; información que se guarda en la variable Discos. La cantidad de
torres está fija a tres, de acuerdo a la versión original del problema. Con esta
cantidad de discos, se procede a calcular la secuencia óptima de juego. Nótese
que la recursión del programa está en la función movida que, para poder
evaluarse, requiere llamarse a si misma.

La Figura 6 presenta además la solución del algoritmo para una corrida con tres
discos. En la matriz resultante, cada columna de la matriz representa una torre
del juego. Las filas de la matriz representan la secuencia de pasos a ejecutar
para llegar a la solución. A la izquierda de la matriz aparece el valor 1.37694
*10-17. Este valor corresponde al tiempo de ejecución del algoritmo para llegar a
la solución.


                                          15
Figura 6 Algoritmo recursivo para la solución óptima de la Torre de Hanoi

SOLUCIÓN ITERATIVA    DE LA   TORRE DE HANOI

El algoritmo recursivo presentado anteriormente fue modificado por la autora
para convertirlo en un algoritmo iterativo. El algoritmo modificado aparece en la
Figura 7 y su solución para la torre con tres discos aparece en la Figura 8.

Al igual que el algoritmo recursivo, esta implementación comienza con la
asignación de la cantidad de discos a la variable Discos. Luego se determina la
el orden en que se van a mover los discos. Finalmente, se entra en un proceso
iterativo que genera la secuencia de pasos necesarios para llegar a la solución
óptima.



                                               16
Parte de la simpleza del algoritmo radica en que el patrón de movimiento de los
discos, una vez reconocidos, se repite para los diferentes discos. Por ejemplo,
cuando hay una cantidad par de discos, todos los discos pares se mueven de la
primera columna a la segunda, luego a la tercera y regresan a la primera. En
cada movimiento del disco, se moverá de columna en columna siguiendo este
patrón.




                                      17
Figura 7 Algoritmo iterativo para la solución óptima de la Torre de Hanoi

Los resultados del algoritmo iterativo para el caso de tres discos se presentan en
la Figura 8. Cada matriz representa la condición de las torres (columnas de la
matriz) en cada paso de la secuencia.




                                                18
Figura 8 Resultado arrojado por el algoritmo iterativo para el caso de tres (3) discos



        Análisis de Resultados

Como se vio en la sección anterior, ambos algoritmos proveen la solución óptima
al problema de la Torre de Hanoi. La pregunta queda en relación a su
efectividad en términos de tiempo de computación. Como se estableció
anteriormente, los algoritmos recursivos son más simples de programar (se
pueden programar en menos líneas de código), pero toman más tiempo en
ejecutar por la necesidad de mantener valores intermedios para resolver la
recursión.

Los códigos presentados en la Figuras 6 y 7 ciertamente apoyan lo reportado en
la literatura acerca de la complejidad. El código recursivo se completó en menos
de la mitad del código requerido para el algoritmo iterativo. Claro está, la autora
no reclama ser una experta en programación, por lo que no se concluye que los
algoritmos presentados son óptimos en términos de cantidad de líneas de
código, pero ciertamente este hallazgo va de acuerdo a lo reportado por otros
autores.


                                                  19
Para probar el reclamo del tiempo de ejecución, los algoritmos anteriormente
descritos fueron ejecutados varias veces para verificar su desempeño y poder
comparar sus resultados. Para cada caso (cantidad de discos), los algoritmos se
ejecutaron cinco (5) veces y se tomó nota del tiempo de ejecución de cada
corrida. La Tabla 2 presenta los resultados como el promedio del tiempo de
ejecución.


   Tabla 2: Resultados experimentales del tiempo de ejecución (seg.)

  Cantidad de          Algoritmo        Algoritmo iterativo
                                                                 Algoritmo recursivo
    Discos              iterativo          modificado*
        3               0.0156              1.872056*10-17          0.47705*10-17
        4               0.0314               3.23092*10-17          6.04262*10-17
        5               0.0686                  0.0053                 0.0053
        6               0.1498                  0.0104                 0.0107
        7               0.3124                0.0156250                 0.016
        8               0.7062                0.0312500                0.0263
        9               1.5590                0.0468750                 0.047
       10               3.6248                0.0781250                 0.094
*Para el algoritmo iterativo modificado se suprimió la impresión de las matrices
intermedias y se cambió el comando Timing, por el comando AbsoluteTiming
para poder tener mayor precisión de los resultados.

Se entiende que, puesto que los resultados de ambos algoritmos difieren en
formato, el tiempo de ejecución va a ser diferente. Por tanto, no sería justo el
realizar comparaciones estadísticas respecto a sus diferencias. No obstante, es
posible hacer comparaciones entre los algoritmos en relación a la diferencia
relativa que tardan en trabajar los problemas cuando aumenta la cantidad de
discos.    Esta comparación se presenta en la Figura 9 donde los datos que
forman las curvas se obtuvieron con la siguiente ecuación.

      Tiempo de computación para N discos
                     N
                                            Tiempo de computación para 3 discos
                                                           3




                                        20
Figura 9 Datos normalizados del tiempo de computación por disco añadido al juego

De la gráfica que aparece en la Figura 9 se observa que los tiempos de ejecución
de los algoritmos recursivo e iterativo difieren grandemente. Nótese que aunque
las curvas tienen formas similares, los ejes no tienen la misma escala. Los
tiempos para el algoritmo recursivo (línea verde en el eje de la izquierda) están
en el orden de 10-15 mientras que el iterativo (línea azul en el eje de la derecha)
toma aproximadamente 70 veces más con diez discos que con 3 discos.

No obstante, al comparar contra los datos del algoritmo iterativo modificado, en
el que se eliminó la impresión de las matrices intermedias para hacerlo más
comparable al funcionamiento del algoritmo recursivo, se observa que el
incremento en tiempo con aumento en discos es menor para el algoritmo
iterativo que para el recursivo. Esto sugiere que, en efecto, los algoritmos
recursivos toman más tiempo de computación que los algoritmos iterativos; lo
cual también apoya lo reportado en la literatura.

        Conclusión

Por definición, los algoritmos son “conjuntos ordenados y finitos de operaciones
que permiten hallar la solución de un problema”. Estos se pueden clasificar de
muchas maneras en base a su estructura, acercamiento al problema,
construcción, etcétera.

En este trabajo se realizó una comparación entre algoritmos recursivos e
iterativos. Como se mencionó anteriormente tanto la recursión como la iteración

                                               21
buscan que el algoritmo se ejecute en forma secuencial y consecutiva un cierto
número de veces. La diferencia entre éstas estriba en que la iteración ejecuta el
algoritmo completamente antes de volverlo a llamar, mientras que la recursión
llama al mismo algoritmo para poder resolverlo.

De acuerdo a la literatura, los algoritmos recursivos son más simples (requieren
menos líneas de código) que los iterativos, pero toman más tiempo de
computación. Para verificar esto se construyeron algoritmos recursivos e
iterativos para proveer la solución óptima al clásico problema de la Torre de
Hanoi. Los algoritmos implementados fueron de forma tal que permiten
modificación en la cantidad de discos, pero fija la cantidad de columnas a tres.

Los resultados obtenidos de los algoritmos van de acuerdo a lo reportado en la
literatura en el sentido de que el algoritmo recursivo requiere menos líneas de
código para la implementación, pero el tiempo de ejecución aumenta, en
proporción mayor que el iterativo, al aumentar la cantidad de discos en el
problema.

       Referencias

   •   Algoritmia.org. 2010. http://www.algoritmia.org/

   •   Axelsson, O. 1994. Iterative Solution Methods. Cambridge University
       Press.

   •   Beardon, A. F. 1991. Iteration of Rational Functions. Graduate Texts in
       Mathemathics. Number 132. Springer-Verlag.

   •   Berend, D. y Sapir, A. 2006. The Diameter of Hanoi Graphs. Information
       Processing Letters 98 (2006) 79-85. http://graph.cs.ntust.edu.tw/meeting/
       %E8%8E%AB%E5%92%B8%E5%8B%A4/The%20diameter%20of
       %20Hanoi%20graphs.pdf

   •   Brassard, G. y Bratley, P. 1996. Fundamentals of Algorithmics. Prentice-
       Hall, Inc.

   •   Chen, X. y Shen, J. 2004. On the Frame-Stewrd Conjeture about the
       Towers of Hanoi. Society for Industrial and Applied Mathematics. Vol. 33
       (3) pp. 584-589. SIAM J. Comput.

   •   Crossley, J. N. 1967. Sets, Models and Recursion Theory. Proceedings of
       the Summer School in Mathematical Logic and Tenth Logic Colloquium.
       Leicester. August-September 1965. North-Holland Publishing Company


                                       22
•   Dávila-Rascón, G. 2002. El Desarrollo del Algebra Moderna. Parte I: El
    álgebra en la antigüedad. Apuntes de Historia de la Matemáticas. Vol. 1,
    No. 3, Septiembre 2002

•   Fenstad, J. E. 1980. General Recursion Theory: An axiomatic approach.
    Springer-Verlag Berlin Heidelberg.

•   Frame, J. S. 1941. Solution to advanced problem 3918, Amer. Math.
    Monthly, 48 (1941), pp. 216–217.

•   Goodstein, R. L. 1964. Recursive Number Theory. A development of
    recursive arithmetic in a logic-free equation calculus. North Holland
    Publishing Company

•   Greenberg, N. 2006. The Role of True Finiteness in the Admissible
    Recursively Enumerable Degrees. Memoirs of the American Mathematical
    Society. Number 854. American Mathematical Society.

•   Hinman, P. G. 1978. Recursion-Theoretic Hierarchies. Springer-Verlag
    Berlin Heildelberg.

•   Hinz, A. M. y Parisse, D. 2002. On the Planarity of Hanoi Graphs.
    Expositiones Mathematicae. 20(2002):263-268

•   Houston, B y Masum, H. 2004. Explorations in 4-peg Tower of Hanoi.
    Carleton University Technical Report TR-04-10.
    http://www.exocortex.org/toh/

•   Mascolo, V. 2007. Stacking puzzle and method for playing same. US
    Patent 7566057. http://www.patentstorm.us/patents/7566057/claims.html

•   McCann, W. 2007. Tower of Hanoi & Reve Puzzles. Ney York University.
    http://cs.nyu.edu/courses/summer07/G22.2340-001/Presentations/McCan
    n.pdf

•   Nerode, A. y Shore, R. A. 1984. Proceedings of Symposia in Pure
    Mathematics of the American Mathematical Society. Cornell University,
    Ithaca, New York. American Mathematical Society. Volume 42.

•   Norris, A. C. 1981. Computational Chemistry: An introduction to numerical
    methods. John Wiley & Sons.

•   O’Connor, J. J. y Robertson, E. F. 1996. François Edouard Anatole Lucas.
    http://www-gap.dcs.st-and.ac.uk/~history/Biographies/Lucas.html

                                    23
•   Palais, R. S. y Palais, R. A. 2009. Differential Equations, Mechanics, and
    Computation. Student Mathematical Library. IAS/Park City Mathematical
    Subseries. Volume 51. American Mathematical Society. Institute for
    Advance Study.

•   Real Academia Española. 2001. Diccionario de la Lengua Española.
    Vigésimo segunda edición. http://www.rae.es/rae.html

•   Rosen, K. H. 2003. Discrete mathematics and its applications. Quinta
    edición. McGraw-Hill Co.

•   Shen, J. 2004. On the Frame-Stewart Conjecture about the Tower of
    Hanoi. Texas State University. http://frank.mtsu.edu/~sseo/shen.pdf

•   Snapp, R. 2005. Tower of Hanoi. Lecture Notes for CS 5. Delivered on
    November 14, 2005.
    http://www.cs.uvm.edu/~snapp/teaching/cs32/lectures/hanoi.pdf

•   Stewart, B. M. 1941. Solution to advanced problem 3918, Amer. Math.
    Monthly, 48 (1941), pp. 217–219.

•   Stockmeyer, P. K. Y Lunnon, F. 2008. New Variations on the Tower of
    Hanoi. http://www.cs.wm.edu/~pkstoc/greece.pdf

•   Valeiras, R. 2004. La Torre de Hanoi.
    http://www.rodoval.com/heureka/hanoi/

•   Weisstein, E. W. 2006 "Tower of Hanoi." From MathWorld--A Wolfram
    Web Resource. http://mathworld.wolfram.com/TowerofHanoi.html

•   Wikipedia.org. 2010. http://es.wikipedia.org




                                    24

Más contenido relacionado

La actualidad más candente

Prueba de independencia (arriba y abajo)
Prueba de independencia (arriba y abajo)Prueba de independencia (arriba y abajo)
Prueba de independencia (arriba y abajo)Henry Cordova
 
Guía de matemáticas Bloque 1 segundo garado
Guía de matemáticas Bloque 1 segundo garadoGuía de matemáticas Bloque 1 segundo garado
Guía de matemáticas Bloque 1 segundo garadoJEDANNIE Apellidos
 
Resoluciones de "problemas de construcción" geométricos por medio de la geome...
Resoluciones de "problemas de construcción" geométricos por medio de la geome...Resoluciones de "problemas de construcción" geométricos por medio de la geome...
Resoluciones de "problemas de construcción" geométricos por medio de la geome...James Smith
 
Procesos y pensamientos en matemáticas MEN
Procesos y pensamientos en matemáticas MENProcesos y pensamientos en matemáticas MEN
Procesos y pensamientos en matemáticas MENWilbur Acevedo
 
Secuencia didactica numero racional
Secuencia didactica numero racionalSecuencia didactica numero racional
Secuencia didactica numero racionalharoldhernandezm4
 
Método de gauss jordan
Método de gauss jordanMétodo de gauss jordan
Método de gauss jordandjelektro
 
Ejercicios resueltos por cramer
Ejercicios resueltos por cramerEjercicios resueltos por cramer
Ejercicios resueltos por crameralgebra
 
Guía de clase Bloque 1 segundo grado
Guía de clase Bloque 1 segundo gradoGuía de clase Bloque 1 segundo grado
Guía de clase Bloque 1 segundo gradoJEDANNIE Apellidos
 
Planeación Trimestral Matematicas 1 Secundaria 2018
Planeación Trimestral Matematicas 1 Secundaria 2018Planeación Trimestral Matematicas 1 Secundaria 2018
Planeación Trimestral Matematicas 1 Secundaria 2018Oswaldo Alvear
 
Matrices conceptos-basicos
Matrices conceptos-basicosMatrices conceptos-basicos
Matrices conceptos-basicosAna Robles
 
Concepcione de matematicas y sociedad rasgos de matematicas
Concepcione de matematicas y sociedad rasgos de matematicasConcepcione de matematicas y sociedad rasgos de matematicas
Concepcione de matematicas y sociedad rasgos de matematicasBelky Soriano
 
Estadistica Básica para Docentes de Secundaria
Estadistica Básica para Docentes de SecundariaEstadistica Básica para Docentes de Secundaria
Estadistica Básica para Docentes de SecundariaLuis Dicovskiy
 
Planificación 2°eso-ecuaciones
Planificación 2°eso-ecuacionesPlanificación 2°eso-ecuaciones
Planificación 2°eso-ecuacioneslia mamani
 
El teorema de pitágoras con papel y tijeras
El teorema de pitágoras con papel y tijerasEl teorema de pitágoras con papel y tijeras
El teorema de pitágoras con papel y tijerassitayanis
 
Planeación didáctica matematicas2
Planeación didáctica matematicas2Planeación didáctica matematicas2
Planeación didáctica matematicas2karlan22
 
USO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICAS
USO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICASUSO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICAS
USO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICASPEDRO MARTÍNEZ ORTIZ
 
Planificación de Números Enteros
Planificación de Números Enteros Planificación de Números Enteros
Planificación de Números Enteros Patrica Cazon
 

La actualidad más candente (20)

Prueba de independencia (arriba y abajo)
Prueba de independencia (arriba y abajo)Prueba de independencia (arriba y abajo)
Prueba de independencia (arriba y abajo)
 
Guía de matemáticas Bloque 1 segundo garado
Guía de matemáticas Bloque 1 segundo garadoGuía de matemáticas Bloque 1 segundo garado
Guía de matemáticas Bloque 1 segundo garado
 
Resoluciones de "problemas de construcción" geométricos por medio de la geome...
Resoluciones de "problemas de construcción" geométricos por medio de la geome...Resoluciones de "problemas de construcción" geométricos por medio de la geome...
Resoluciones de "problemas de construcción" geométricos por medio de la geome...
 
Procesos y pensamientos en matemáticas MEN
Procesos y pensamientos en matemáticas MENProcesos y pensamientos en matemáticas MEN
Procesos y pensamientos en matemáticas MEN
 
Secuencia didactica numero racional
Secuencia didactica numero racionalSecuencia didactica numero racional
Secuencia didactica numero racional
 
Matematicas
MatematicasMatematicas
Matematicas
 
Método de gauss jordan
Método de gauss jordanMétodo de gauss jordan
Método de gauss jordan
 
MOVIMIENTOS EN EL PLANO
MOVIMIENTOS EN EL PLANOMOVIMIENTOS EN EL PLANO
MOVIMIENTOS EN EL PLANO
 
Ejercicios resueltos por cramer
Ejercicios resueltos por cramerEjercicios resueltos por cramer
Ejercicios resueltos por cramer
 
Guía de clase Bloque 1 segundo grado
Guía de clase Bloque 1 segundo gradoGuía de clase Bloque 1 segundo grado
Guía de clase Bloque 1 segundo grado
 
Planeación Trimestral Matematicas 1 Secundaria 2018
Planeación Trimestral Matematicas 1 Secundaria 2018Planeación Trimestral Matematicas 1 Secundaria 2018
Planeación Trimestral Matematicas 1 Secundaria 2018
 
Programación geométrica
Programación geométricaProgramación geométrica
Programación geométrica
 
Matrices conceptos-basicos
Matrices conceptos-basicosMatrices conceptos-basicos
Matrices conceptos-basicos
 
Concepcione de matematicas y sociedad rasgos de matematicas
Concepcione de matematicas y sociedad rasgos de matematicasConcepcione de matematicas y sociedad rasgos de matematicas
Concepcione de matematicas y sociedad rasgos de matematicas
 
Estadistica Básica para Docentes de Secundaria
Estadistica Básica para Docentes de SecundariaEstadistica Básica para Docentes de Secundaria
Estadistica Básica para Docentes de Secundaria
 
Planificación 2°eso-ecuaciones
Planificación 2°eso-ecuacionesPlanificación 2°eso-ecuaciones
Planificación 2°eso-ecuaciones
 
El teorema de pitágoras con papel y tijeras
El teorema de pitágoras con papel y tijerasEl teorema de pitágoras con papel y tijeras
El teorema de pitágoras con papel y tijeras
 
Planeación didáctica matematicas2
Planeación didáctica matematicas2Planeación didáctica matematicas2
Planeación didáctica matematicas2
 
USO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICAS
USO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICASUSO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICAS
USO DEL CÓMIC PARA LA ENSEÑANZA DE LAS MATEMÁTICAS
 
Planificación de Números Enteros
Planificación de Números Enteros Planificación de Números Enteros
Planificación de Números Enteros
 

Destacado

Torres de Hanoi
Torres de HanoiTorres de Hanoi
Torres de HanoiVanessajrp
 
Cuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoiCuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoiLutzo Guzmán
 
Laboratorio de Torre de Hanoi
Laboratorio de Torre  de HanoiLaboratorio de Torre  de Hanoi
Laboratorio de Torre de HanoiMónica
 
Sanchez carlos presentacion torres de hanoi
Sanchez carlos presentacion torres de hanoiSanchez carlos presentacion torres de hanoi
Sanchez carlos presentacion torres de hanoiCarlos s?chez
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoiLeo Nerkis
 
busqueda a profundidad dsf
busqueda a profundidad dsfbusqueda a profundidad dsf
busqueda a profundidad dsfjurgenmtz
 
Monografia problema de las jarras de agua- prolog
Monografia problema de las jarras de agua- prologMonografia problema de las jarras de agua- prolog
Monografia problema de las jarras de agua- prologlizeeeeth
 
Diapositivas Kelly Urrego
Diapositivas Kelly UrregoDiapositivas Kelly Urrego
Diapositivas Kelly Urregoguest9097575
 
Mision y vision de la empresa reymec
Mision y vision de la empresa reymecMision y vision de la empresa reymec
Mision y vision de la empresa reymecreymec
 
Frases de filosofos (Grecia antigua)
Frases de filosofos (Grecia antigua)Frases de filosofos (Grecia antigua)
Frases de filosofos (Grecia antigua)oclubdasideas
 

Destacado (20)

Torres de Hanoi
Torres de HanoiTorres de Hanoi
Torres de Hanoi
 
Manual Torres De Hanoi
Manual Torres De HanoiManual Torres De Hanoi
Manual Torres De Hanoi
 
Cuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoiCuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoi
 
Lista de comparación de productos
Lista de comparación de productosLista de comparación de productos
Lista de comparación de productos
 
Bendita maria maria
Bendita maria mariaBendita maria maria
Bendita maria maria
 
Torres de Hanoi
Torres de HanoiTorres de Hanoi
Torres de Hanoi
 
Torre hanoi trabajo
Torre hanoi trabajoTorre hanoi trabajo
Torre hanoi trabajo
 
Antenas
AntenasAntenas
Antenas
 
Laboratorio de Torre de Hanoi
Laboratorio de Torre  de HanoiLaboratorio de Torre  de Hanoi
Laboratorio de Torre de Hanoi
 
Sanchez carlos presentacion torres de hanoi
Sanchez carlos presentacion torres de hanoiSanchez carlos presentacion torres de hanoi
Sanchez carlos presentacion torres de hanoi
 
Torre de hanoi
Torre de hanoiTorre de hanoi
Torre de hanoi
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
busqueda a profundidad dsf
busqueda a profundidad dsfbusqueda a profundidad dsf
busqueda a profundidad dsf
 
Monografia problema de las jarras de agua- prolog
Monografia problema de las jarras de agua- prologMonografia problema de las jarras de agua- prolog
Monografia problema de las jarras de agua- prolog
 
Diapositivas Kelly Urrego
Diapositivas Kelly UrregoDiapositivas Kelly Urrego
Diapositivas Kelly Urrego
 
Mision y vision de la empresa reymec
Mision y vision de la empresa reymecMision y vision de la empresa reymec
Mision y vision de la empresa reymec
 
Torre de Hanoi
Torre de HanoiTorre de Hanoi
Torre de Hanoi
 
Frases de filosofos (Grecia antigua)
Frases de filosofos (Grecia antigua)Frases de filosofos (Grecia antigua)
Frases de filosofos (Grecia antigua)
 
ORÍGENES DE LA EDAD MEDIA
ORÍGENES DE LA EDAD MEDIAORÍGENES DE LA EDAD MEDIA
ORÍGENES DE LA EDAD MEDIA
 
La torre de hanoi
La torre de hanoiLa torre de hanoi
La torre de hanoi
 

Similar a La Torre de Hanoi Monografía vanessa mayo 2010

Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busquedaOsirysRock
 
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos linuxsanchez
 
Analisis y diseño de algoritmo
Analisis y diseño de algoritmoAnalisis y diseño de algoritmo
Analisis y diseño de algoritmoJose Lluberes
 
Algoritmos por-omor-azuaje2
Algoritmos por-omor-azuaje2Algoritmos por-omor-azuaje2
Algoritmos por-omor-azuaje2OmarAzuaje3
 
Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++Carlos Ureña
 
Técnicas de Diseño Detallado.
Técnicas de Diseño Detallado.Técnicas de Diseño Detallado.
Técnicas de Diseño Detallado.guestdf1874
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmoGaston Demundo
 
Daniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDaniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDanielaMendoza117
 
Exposicion computacion aplicada
Exposicion computacion aplicadaExposicion computacion aplicada
Exposicion computacion aplicadaIsrael Cesen
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1VivianaG
 
Complejidad de un algoritmo
Complejidad de un algoritmoComplejidad de un algoritmo
Complejidad de un algoritmoLutzo Guzmán
 
Presentacion Algoritmos Paralelos (2).pptx
Presentacion Algoritmos Paralelos (2).pptxPresentacion Algoritmos Paralelos (2).pptx
Presentacion Algoritmos Paralelos (2).pptxLaurialicValerio
 

Similar a La Torre de Hanoi Monografía vanessa mayo 2010 (20)

Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos
Análisis y Diseño de Algoritmos
 
Resumen de algoritmo
Resumen de algoritmoResumen de algoritmo
Resumen de algoritmo
 
Analisis y diseño de algoritmo
Analisis y diseño de algoritmoAnalisis y diseño de algoritmo
Analisis y diseño de algoritmo
 
Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Sistemas inteligentes
Sistemas inteligentesSistemas inteligentes
Sistemas inteligentes
 
Algoritmos por-omor-azuaje2
Algoritmos por-omor-azuaje2Algoritmos por-omor-azuaje2
Algoritmos por-omor-azuaje2
 
Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++Ordenación y búsqueda orientada a C++
Ordenación y búsqueda orientada a C++
 
Técnicas de Diseño Detallado.
Técnicas de Diseño Detallado.Técnicas de Diseño Detallado.
Técnicas de Diseño Detallado.
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmo
 
Introduccion Analisis Algoritmos
Introduccion Analisis AlgoritmosIntroduccion Analisis Algoritmos
Introduccion Analisis Algoritmos
 
Daniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDaniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosii
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Exposicion computacion aplicada
Exposicion computacion aplicadaExposicion computacion aplicada
Exposicion computacion aplicada
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Complejidad de un algoritmo
Complejidad de un algoritmoComplejidad de un algoritmo
Complejidad de un algoritmo
 
Algoritmo
AlgoritmoAlgoritmo
Algoritmo
 
Presentacion Algoritmos Paralelos (2).pptx
Presentacion Algoritmos Paralelos (2).pptxPresentacion Algoritmos Paralelos (2).pptx
Presentacion Algoritmos Paralelos (2).pptx
 

Más de Vanessa Santiago

Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]
Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]
Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]Vanessa Santiago
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y TransformacionesVanessa Santiago
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y TransformacionesVanessa Santiago
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y TransformacionesVanessa Santiago
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y TransformacionesVanessa Santiago
 
EconometríA Vanessa Santiago #2
EconometríA Vanessa Santiago #2EconometríA Vanessa Santiago #2
EconometríA Vanessa Santiago #2Vanessa Santiago
 
Econometria Vanessa Santiago
Econometria Vanessa SantiagoEconometria Vanessa Santiago
Econometria Vanessa SantiagoVanessa Santiago
 

Más de Vanessa Santiago (7)

Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]
Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]
Modelos%20 Geom% C3% A9tricos%20y%20 Fractales[1]
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y Transformaciones
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y Transformaciones
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y Transformaciones
 
Funciones Y Transformaciones
Funciones Y TransformacionesFunciones Y Transformaciones
Funciones Y Transformaciones
 
EconometríA Vanessa Santiago #2
EconometríA Vanessa Santiago #2EconometríA Vanessa Santiago #2
EconometríA Vanessa Santiago #2
 
Econometria Vanessa Santiago
Econometria Vanessa SantiagoEconometria Vanessa Santiago
Econometria Vanessa Santiago
 

Último

MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 

Último (20)

MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 

La Torre de Hanoi Monografía vanessa mayo 2010

  • 1. RECURSIÓN E ITERACIÓN EN ALGORITMOS: EL CASO LA TORRE DE HANOI por Vanessa Santiago Olivares Monografía sometida en cumplimiento parcial de los requisitos para el grado de MAESTRO EN CIENCIAS en MATEMÁTICA APLICADA Universidad Interamericana Recinto de San Germán Departamento de Matemáticas 2010 Aprobado por: _______________________________________ Dr. Balbino García Director del Proyecto Creativo
  • 2. Resumen Este documento presenta una comparación entre algoritmos recursivos e iterativos utilizando como ejemplo el problema de la Torre de Hanoi. De acuerdo a la literatura, ambos métodos de programación se pueden adaptar a los mismos problemas pero, en general, los algoritmos recursivos son más simples y toman mayor tiempo de ejecución. El problema de la Torre de Hanoi, en su formato original, consiste de tres columnas paralelas. En una de las columnas se colocan discos concéntricos de diferentes diámetros de forma que la columna pasa por el centro de los discos y los discos están apilados en orden ascendente de diámetro, es decir, el disco de menor diámetro está arriba y el de mayor diámetro abajo. El objetivo es mover los discos de una columna a otra. Para esto se imponen las restricciones de que (1) sólo se puede mover un disco a la vez, y (2) los discos sólo se pueden colocar en espacios vacíos o sobre discos de mayor diámetro. Para realizar la comparación se construyeron dos algoritmos, uno recursivo y otro iterativo, en Mathematica 7.0.0, y se comparó su ejecución. El algoritmo recursivo requirió menos líneas de código que el iterativo, lo cual va de acuerdo a lo reportado en la literatura en el sentido de que los algoritmos recursivos son más simples que los iterativos. Para evaluar el tiempo de ejecución, se calculó la razón de tiempo de ejecución a cantidad de discos y se normalizó a la razón para tres discos. Los resultados sugieren que, en efecto, el tiempo de ejecución para el algoritmo recursivo es mayor que para el iterativo. Palabras clave: Algoritmos, Recursión, Torre de Hanoi 2
  • 3. Abstract This document presents a comparison between recursive and iterative algorithms using problem of the Tower of Hanoi as example. According to literature, both programming methods can be adapted to similar problems but, in general, recursive algorithms are simpler but require longer run times. The problem of the Tower of Hanoi, on its original format, consists of three parallel columns. In one of the columns, concentric discs of different diameters are stacked so that the column goes through the center of the discs. Discs are piled up in ascending of diameter, that is, the disc with smaller diameter on top and the one of greater diameter at the bottom. The objective is to move the stack of discs from a column to another one. The following two restrictions are imposed to accomplish this objective: (1) only one disc can be moved on each turn, and (2) the discs can only be placed in empty spaces or over discs of greater diameter. In order to make the comparison two algorithms were constructed in Mathematica 7.0.0, one recursive and another iterative one, and their performance compared. The recursive algorithm required less lines of code than the iterative one, which agrees with reported literature in the sense that the recursive algorithms are simpler that the iterative ones. In order to evaluate the run time, the rate of run time to amount of discs was calculated and standardized to the rate for three discs. The results suggest that, in fact, the run time for the recursive algorithm is greater than for the iterative one. Key words: Algorithms, Recursion, Tower of Hanoi 3
  • 4. Tabla de Contenido Algoritmos……………………………………………………………………………………….. 5 Recursión e Iteración …………………………………………………………………………. 8 Torre de Hanoi ………………………………………………………………………………….. 10 Solución Gráfica de la Torre de Hanoi …………………………………………. 13 Solución Recursiva de la Torre de Hanoi ……………………………………… 15 Solución Iterativa de la Torre de Hanoi ……………………………………….. 16 Análisis de Resultados ………………………………………………………………………… 19 Conclusión………………………………………………………………………………………… 21 Referencias………………………………………………………………………………………. 22 4
  • 5. Algoritmos La Real Academia de la Lengua Española define un algoritmo como un “conjunto ordenado y finito de operaciones que permite hallar la solución de un problema” (RAE, 2001). La palabra surge del nombre del matemático persa Muhammad ibn Musa al- Jwarizmi que se estima vivió entre los años 780 y 850 y a quien se considera como el padre del álgebra y nuestro sistema de numeración. Al-Jwarizmi fue matemático, astrónomo y geógrafo. Su principal logro consistió en publicar libros de fácil comprensión que permitían el aprendizaje y aplicación de los conocimientos en matemática por un mayor número de personas. En sus tratados enfatizó que especificar de forma clara y concisa la manera sistematizada de realizar cálculos llevaba a la definición de algoritmos que podían ser usados en dispositivos mecánicos como los ábacos. Esto lo llevó a estudiar los modos de reducir las operaciones que componían los cálculos, es decir, el “conjunto ordenado y finito de operaciones que permite hallar la solución de un problema” (Dávila-Rascón, 2002). El estudio de los algoritmos y los efectos de factores externos sobre el desempeño de estos se conoce como algoritmia. De acuerdo a esta ciencia, los algoritmos de computación y matemáticas se pueden clasificar, según su función, en dos tipos principales: de ordenamiento y de búsqueda. Los algoritmos de ordenamiento colocan los elementos de una lista o vector en un orden específico siguiendo una serie de reglas preestablecidas. Estos son la base de de procesos como bases de datos, análisis del escenario mejor, peor o promedio y análisis de límite inferior (algoritmia.org, 2010). Existen varias subclases para los algoritmos de ordenamiento. • Interno versus externo: Si el ordenamiento de lleva a cabo en la memoria (RAM) de la computadora se le llama interno. Algoritmo externo sería aquel en que el ordenamiento se lleva a cabo en otro lugar, por ejemplo, un disco duro. • Natural versus no-natural: Esta es una clasificación en términos del tiempo que toma el ordenamiento. Esto depende de si los datos de entrada ya tienen una estructura ordenada (natural) o hay que generar dicha estructura para entonces ordenar (no-natural). • Estable versus inestable: La estabilidad del algoritmo se refiere a su capacidad de tratar con datos que tienen las mismas claves de ordenamiento, por ejemplo, un algoritmo que ordene por apellido y se encuentra con elementos de información que tienen el mismo apellido. En este caso, el algoritmo estable va a mantener el orden de los 5
  • 6. elementos según apareen en el listado de entrada mientras que el inestable no lo mantiene. Los algoritmos de búsqueda, por su parte, pretenden determinar si un elemento en particular existe dentro de un conjunto, listado o vector de datos. Este algoritmo se reduce a la aplicación de lógica boleana para encontrar el elemento de interés. Estos algoritmos pueden ser de tipo secuencial o binario. Algoritmos de tipo secuencial se utiliza cuando no hay garantía de que el conjunto de datos esté ordenado. Esta condición hace necesario el pasar por todo el conjunto para evaluar cada uno de los elementos. Por el contrario, si el conjunto de datos está ordenado por el criterio de interés, usando un algoritmo binario es posible ir específicamente al lugar donde podría estar el elemento buscado y determinar si está presente o no en el conjunto. Esto hace que los algoritmos de búsqueda binarios sean mucho más eficientes en términos del tiempo de procesamiento (algoritmia.org). Otra manera de clasificar los algoritmos es en base a la técnica utilizada (Brassard y Bratley, 1996; Wikipedia.org, 2010). Técnica se refiere a la forma en que se construye el algoritmo para enfrentar el problema y tomar decisiones que lleven a la solución correcta o el mejor estimado posible de dicha solución. Desde esta perspectiva se consideran las siguientes clases. • Exacto versus aproximado: Se refiere al tipo de solución que pretende ofrecer el algoritmo. La selección de uno sobre otro depende de la complejidad del problema y la incertidumbre de los factores externos. • Determinístico versus no-determinístico: Algoritmo determinístico o estático es un algoritmo lineal, tipo receta de cocina, que hace siempre lo mismo sin tomar en cuenta decisiones o con opciones previamente definidas. Cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor y siempre produce el mismo resultado al enfrentar el mismo conjunto de datos iniciales. Los no-determinísticos, por otro lado, son algoritmos que tienen la capacidad de tomar decisiones en base a parámetros aleatorios (o semi-aleatorios) que cambian cada vez que se ejecutan. Esto permite que el mismo algoritmo aplicado a los mismos datos pueda ofrecer resultados diversos. • En serie, paralelo o distribuidos: Algoritmos que se ejecutan un paso a la vez se conocen como seriados o en serie. Los algoritmos paralelos y distribuidos dividen los problemas en subproblemas, o partes menos complejas, y resuelven cada parte de forma individual y simultánea utilizando varios sistemas. La diferencia entre algoritmos paralelos y distribuidos radica en la arquitectura de los sistemas en los que pueden operar. Los algoritmos paralelos operan en sistemas con varios 6
  • 7. procesadores mientras que los distribuidos operan en redes de computadoras interconectadas. Ambos son algoritmos de alto nivel que utilizan otros algoritmos para resolver los subproblemas e integrar sus soluciones. • Lógicos: Se clasifican como algoritmos lógicos a aquellos que operan en función de los conceptos y axiomas de la matemática lógica. • Recursión versus iteración: Para llegar a la solución deseada, los algoritmos son comúnmente utilizados en varias ocasiones durante el procesamiento de los datos. Cuando el algoritmo termina y vuelve a correr, se dice que está iterando. Por otro lado, cuando el algoritmo se llama a si mismo para resolver parte del problema, se dice que está recurriendo. Otra posible clasificación de los algoritmos es en base al paradigma de implementación, es decir, la forma en que va a determinar la solución al problema bajo consideración. En términos generales, existen las siguientes categorias (Brassard y Bratley, 1996; Wikipedia.org, 2010). • Solución por fuerza bruta o búsqueda exhaustiva: Este término se utiliza para denominar algoritmos que exploran todas las posibles combinaciones para alcanzar la solución óptima. • Algoritmo ambicioso (“greedy”): Son algoritmos simplistas que toman decisiones en base a la información disponible de forma inmediata y que es pre-definida. Esto permite que sean eficientes, fáciles de desarrollar e implantar, pero su simplicidad no se adapta a muchas situaciones de la vida real y, por tanto, típicamente su solución no es óptima. Su uso principal son los problemas de optimización tales como la ruta más corta o el costo más bajo. • Divide y vencerás: En esta técnica se divide el problema en subconjuntos que se resuelven sucesivamente y de forma independiente. Las soluciones parciales se combinan finalmente para obtener la solución al problema bajo consideración. • Programación dinámica: Es una técnica similar a “divide y vencerás” con la diferencia de que los subconjuntos o subproblemas que trata no son totalmente independientes, sino que tienen cierto grado de solapamiento. • Programación lineal: Utiliza un sistema de ecuaciones y desigualdades que acotan y definen el universo. Estos algoritmos utilizan matemática lineal para hallar la solución óptima del sistema. 7
  • 8. Heurísticas: Estos algoritmos se utilizan para encontrar estimados (soluciones subóptimas) de las soluciones reales en base a experiencias previas del algoritmo y factores aleatorios. • Grafos: Algoritmos basados en la teoría de grafos para modelar sistemas y resolverlos en base a las restricciones impuestas sobre estos. Recursión e Iteración Como se mencionó anteriormente tanto la recursión como la iteración buscan que el algoritmo se ejecute en forma secuencial y consecutiva un cierto número de veces. La diferencia entre éstas estriba en que la iteración ejecuta el algoritmo completamente antes de volverlo a llamar, mientras que la recursión llama al mismo algoritmo para poder resolverlo. Rosen (2003) establece claramente la diferencia entre ambas técnicas con el ejemplo que se presenta a continuación y sugiere que la iteración es mucho más efectiva en términos de tiempo de computación. Rosen toma como ejemplo el cómputo del factorial de un número n. Por definición, n! = n(n − 1)(n − 2)...(1). En base a esto es posible establecer un algoritmo recursivo en C++ que tenga la siguiente estructura. PROCEDURE factorial(n) { IF n = 1 { nfac = 1 } ELSE { nfac = n*factorial(n-1) } RETURN(nfac) Para visualizar la recursividad de este algoritmo, asumamos que n = 4. Este valor entra al algoritmo y se dispone a evaluar nfac = n*factorial(n - 1). Esta ecuación manda a que se evalúe cuanto es factorial( n - 1) antes de proceder. Entonces se llama el algoritmo por segunda vez pero con n = 3. Esta vez, el algoritmo requerirá evaluar factorial(n - 1) con n = 2 y recurrirá al algoritmo por tercera vez. El proceso continúa hasta que en la cuarta recursión se define que factorial(n - 1) con n = 1 resulta en un valor concreto y permite que las incógnitas anteriores se puedan evaluar. 8
  • 9. Debe resultar evidente que la recursión causa que haya valores intermedios que no se pueden evaluar hasta que la recursión se acota. Es entonces cuando el proceso puede regresar y concluir los ciclos computacionales externos. El tener que trabajar con valores intermedios que no pueden ser evaluados completamente requiere de espacio de memoria para almacenar dichos valores y tiempo de computación adicional. A modo de comparación, la implementación del cómputo del factorial de n usando un algoritmo iterativo aparece a continuación. PROCEDURE factorial(n) { nfac = 1 FOR i = 1 TO n { nfac = nfac*i } RETURN(nfac) A diferencia del caso anterior, cada ciclo termina sin dejar incógnitas o valores intermedios sin analizar. Veamos, por ejemplo, el caso para n = 4. Al entrar en el algoritmo, se asigna un valor inicial de 1 a nfac y se define en valor del índice de iteración, i. Esto permite que al evaluar la ecuación se obtenga un resultado concreto cada vez. A pesar de la simpleza de la iteración, la recursión tiene su lugar el las matemáticas y la computación ya que en algunos sistemas hay una dependencia tal entre los estados presente, pasado y futuro que requiere la evaluación de los diferentes estados para poder definir la solución. Goodstein (1964), hablado de la teoría recursiva de números, establece una analogía entre el juego de ajedrez y la aritmética. De acuerdo a esta discusión, las fichas del juego se pueden comparar con los numerales y los movimientos de dichas fichas con las operaciones y propiedades de cada numeral. Goodstein razona que el la pieza denominada rey, no es rey debido a su forma o construcción ya que el objeto puede ser reemplazado por cualquier otro y funcionar igual. Siendo así, lo que hace al rey ser tal, son las reglas que definen sus movimientos particulares. Entonces, cualquier objeto que actúe como rey, se puede usar como tal. De igual forma, cualquier símbolo se puede utilizar para representar al 2, lo importante es que las propiedades y efecto al interactuar en operaciones con otros numerales sean las propias de esa figura. 9
  • 10. Esta analogía sirve para plantear la bondad de los algoritmos recursivos sobre los iterativos. En el ajedrez, un algoritmo iterativo sólo serviría para mover piezas sin más lógica que siguiendo las operaciones permitidas. En cambio, un algoritmo recursivo permitiría la consideración de otras piezas en el tablero y las posibles consecuencias o estados futuros antes de alcanzar una solución. La literatura contiene un sin número de trabajos que documentan los principios y conceptos de la llamada teoría de recursión (Crossley, 1967; Fenstad, 1980; Goodstein, 1964; Greenberg, 2006; Hinman, 1978; Nerode y Shore, 1984) al igual que los principios y aplicaciones de la iteración en las matemáticas y computación (Axelsson, 1994; Beardon, 1991; Palais y Palais, 2009; Norris, 1981). Torre de Hanoi La Torre de Hanoi, también conocida como la Torre de Brahma, es un juego inventado por el matemático francés François Edouard Anatole Lucas en 1883, quien, además de su trabajo en matemática recreacional, es conocido por su contribución relacionada a la secuencia Fibonacci y los algoritmos para determinar si los números son primos (O’Connor y Robertson, 1996). El juego de la Torre de Hanoi (Figura 1), en su formato original, consiste de tres columnas paralelas. En una de las columnas se colocan discos concéntricos de diferentes diámetros de forma que la columna pasa por el centro de los discos y los discos están apilados en orden ascendente de diámetro, es decir, el disco de menor diámetro está arriba y el de mayor diámetro abajo. El objetivo del juego es mover los discos de una columna a otra. Para esto se imponen las restricciones de que (1) sólo se puede mover un disco a la vez, y (2) los discos sólo se pueden colocar en espacios vacíos o sobre discos de mayor diámetro. Figura 1: Juego de la Torre de Hanoi 10
  • 11. Aunque el juego típicamente tiene ocho discos, en la Internet se consiguen variaciones del juego que van desde tres hasta 12 discos. Otras variaciones del juego definen o limitan la columna a la cual se desea mover los discos, el tiempo disponible para hallar la solución, la dirección del movimiento o la cantidad de movidas para alcanzar el objetivo. En relación al número de movidas mínimo para alcanzar el objetivo, Valeiras (2004) reporta que la solución óptima, es decir, el menor número de movidas para alcanzar la solución final, es 2n-1, donde n es el número de discos en el juego. La Figura 2 presenta como el número mínimo de movidas crece exponencialmente con el número de discos en el juego. 300 250 8 Movidas mínimas 200 150 7 100 6 50 5 3 4 0 1 2 0 2 4 6 8 Número de discos Figura 2: Número mínimo de movidas para la solución óptima según la cantidad de discos en el juego Es interesante notar como la observación cuidadosa del número mínimo de movidas requerido para alcanzar la solución sugiere la recursividad del problema. De acuerdo a la Tabla 1, para tres columnas (k=3), para poder alcanzar la solución al problema con n discos, es necesario resolver el problema para n-1 discos primero. Se puede demostrar también que M(n)=2(M(n-1))+1=2n+1. (Snapp, 2005) 11
  • 12. Tabla 1: Movidas necesarias para alcanzar la solución óptima Número de discos Solución óptima Número de movidas M(n) = f(M(n-1)) (n) H(n,3) = 2n+1 M(n) 1 1 1 -- 2 3 2(1)+1 2M(1)+1 3 7 2(2(1)+1)+1 2M(2)+1 4 15 2(2(2(1)+1)+1)+1 2M(3)+1 Otras variantes aumentan el número de columnas (por ejemplo, ‘Reve’s puzzle’ es una variante con cuatro columnas) (Houston y Masum, 2004) o la cantidad de conjuntos de discos a mover (Mascolo, 2007). Estas variantes aún se siguen estudiando y para muchas de ellas no se han identificado soluciones tales como el número mínimo de movimientos para mover de una columna a otra. Berend y Sapir (2006), por ejemplo, estudiaron el problema para, dado alguna variante del juego y cantidad de discos específico, hallar el diámetro del grafo o número máximo de pasos para mover los discos de una configuración inicial a otra final previamente especificada. Para el caso particular del problema con cuatro torres, Frame (1941) y Steward (1941) reportaron acerca de un algoritmo que proveía la solución presuntamente óptima. Sin embargo, dicha solución estaba basada en la llamada conjetura Frame-Steward que dice que FS(n,k)=H(n,k), es decir, que el resultado del algoritmo para n discos y k columnas es realmente la solución óptima. En otras palabras, la solución que provee el algoritmo parece ser óptima, pero no se ha podido probar, ni negar, que en realidad lo es. Chen y Shen (2004) retaron esta paradoja y probaron que FS(n,k) y H(n,k) son de la misma magnitud, lo que ellos llamaron la evidencia más contundente en apoyo a la conjetura Frame-Steward. Figura 3: Solución óptima de Frame-Steward para la Torre de Hanoi (Shen, 2004) Stockmeyer y Lunnon (2008) presentan diversas variaciones del problema con más de un conjunto de discos, donde cada conjunto tiene un color particular. Para cada caso explorado, los autores proveen claves de cómo hallar la solución y algoritmos para poder resolver los problemas. No reclaman, sin embargo, que sus soluciones sean óptimas. El problema de la Torre de Hanoi ha sido estudiado usando diferentes algoritmos o implementaciones de dichos algoritmos. Wikipedia, por ejemplo, presenta 12
  • 13. algoritmos binarios, no-recursivos y sub-óptimos para solucionar el problema. El algoritmo también ha sido implementado en juegos de video y secuencias de almacenamiento de datos en memorias de computadoras y ordenadores. SOLUCIÓN GRAFICA DE LA TORRE DE HANOI Al igual que cualquier otro problema que se desee resolver usando algoritmos recursivos o iterativos, la clave esta en poder identificar un subproblema que al repetir la secuencia nos lleve a la solución final. En el caso de soluciones recursivas, el subproblema debe ser esencialmente una copia reducida del problema mayor. Este es básicamente el concepto de los modelos fractales de Sierpinski. Asumamos que tenemos una Torre de Hanoi con tres columnas (A, B, C) y tres discos. Para propósitos del grafo, asumamos la siguiente nomenclatura. Los discos aumentan de tamaño de izquierda a derecha, es decir, el disco menor está a la izquierda. Además, la localización de disco se identificará con el nombre de la columna. De esta forma, la notación ABC indica que el disco mayor está en la columna A, el segundo disco en la columna B y el disco menor en la columna C. AAA AAB AAC ACB ABC ACC ACA ABA ABB BCC CBB BCA BCB CBC CBA BCB BAB CAC CCA BBB BBC BAC BAA CAA CAB CCB CCC Figura 4: Modelo fractal de Sierpinski que sirve como grafo de la solución al problema de la Torre de Hanoi 13
  • 14. La Figura 4 muestra el modelo fractal de Sierpinski que representa la solución gráfica al problema de la Torre de Hanoi. Nótese que los vértices de la estructura externa (triángulo) son las condiciones en que los tres discos están en la misma columna. Se aprecia, además, que el triángulo externo está formado por tres triángulos internos siguiendo el arreglo de Sierpinski, y que estos, a su vez, están formados por triángulos más pequeños. De este modelo, es posible establecer que el paso más corto (óptimo) para pasar los discos de A hasta C (Figura 4) es AAA-AAC-ABC-ABB-CBB-CBA-CCA-CCC y que consta de siete pasos solamente. Esto concuerda con el número mínimo de 2n - 1 (23 - 1 = 8 – 1 = 7) mencionado anteriormente. AAA AAB AAC ACB ABC ACC ACA ABA ABB BCC CBB BCA BCB CBC CBA BCB BAB CAC CCA BBB BBC BAC BAA CAA CAB CCB CCC Figura 5: Paso óptimo entre A y C De este grafo es posible obtener otros pasos de interés, por ejemplo, el paso Hamiltiniano, es decir, el paso que lleve el conjunto de discos a todas las columnas y los regrese al principio. Hinz y Parisse (2002) probaron que todo grafo de Hanoi es Hamiltoniano isomórfico y realizaron un análisis exhaustivo de su planaridad. Otros pasos de interés son el paso más largo y el paso del vendedor viajero que pasa por todos los puntos del grafo una sola vez y regresa al origen. Además, es posible establecer un paso que lleve los discos desde cualquier configuración inicial permitida hasta la solución final. 14
  • 15. SOLUCIÓN RECURSIVA DE LA TORRE DE HANOI En términos generales, la literatura reporta el siguiente algoritmo para hallar la solución al problema de la Torre de Hanoi con tres torres (identificadas como origen, intermediaria y destino) (McCann, 2007; Snapp, 2005; Valerias, 2004; Wikipedia, 2010). 1. Mover el disco menor a la columna intermediaria si hay un número par de discos. Si hay un número impar de discos, mover el disco menor a la columna destino. 2. Hacer un movimiento legal que no sea reversar el paso anterior (sólo debe haber una posibilidad). 3. Mover el disco menor a la columna de la cual no provino en su movimiento anterior. 4. Repetir los pasos dos y tres hasta mover todos los discos. De forma recursiva, este algoritmo se pude expresar como sigue. 1. Mover los n-1 discos superiores de la columna origen a la columna intermediaria usando la columna destino como intermediaria. 2. Mover el disco n a la columna destino 3. Mover los n-1 discos superiores de la columna intermediaria a la columna destino usando la columna origen como intermediaria. La Figura 6 presenta un algoritmo recursivo programado en Mathematica 7.0.0 para resolver el problema de la Torre de Hanoi con tres torres. Dicha implementación es una adaptación realizada por la autora del algoritmo publicado por Weisstein (2006). El algoritmo de la Figura 6 comienza con la asignación de la cantidad de discos en el juego; información que se guarda en la variable Discos. La cantidad de torres está fija a tres, de acuerdo a la versión original del problema. Con esta cantidad de discos, se procede a calcular la secuencia óptima de juego. Nótese que la recursión del programa está en la función movida que, para poder evaluarse, requiere llamarse a si misma. La Figura 6 presenta además la solución del algoritmo para una corrida con tres discos. En la matriz resultante, cada columna de la matriz representa una torre del juego. Las filas de la matriz representan la secuencia de pasos a ejecutar para llegar a la solución. A la izquierda de la matriz aparece el valor 1.37694 *10-17. Este valor corresponde al tiempo de ejecución del algoritmo para llegar a la solución. 15
  • 16. Figura 6 Algoritmo recursivo para la solución óptima de la Torre de Hanoi SOLUCIÓN ITERATIVA DE LA TORRE DE HANOI El algoritmo recursivo presentado anteriormente fue modificado por la autora para convertirlo en un algoritmo iterativo. El algoritmo modificado aparece en la Figura 7 y su solución para la torre con tres discos aparece en la Figura 8. Al igual que el algoritmo recursivo, esta implementación comienza con la asignación de la cantidad de discos a la variable Discos. Luego se determina la el orden en que se van a mover los discos. Finalmente, se entra en un proceso iterativo que genera la secuencia de pasos necesarios para llegar a la solución óptima. 16
  • 17. Parte de la simpleza del algoritmo radica en que el patrón de movimiento de los discos, una vez reconocidos, se repite para los diferentes discos. Por ejemplo, cuando hay una cantidad par de discos, todos los discos pares se mueven de la primera columna a la segunda, luego a la tercera y regresan a la primera. En cada movimiento del disco, se moverá de columna en columna siguiendo este patrón. 17
  • 18. Figura 7 Algoritmo iterativo para la solución óptima de la Torre de Hanoi Los resultados del algoritmo iterativo para el caso de tres discos se presentan en la Figura 8. Cada matriz representa la condición de las torres (columnas de la matriz) en cada paso de la secuencia. 18
  • 19. Figura 8 Resultado arrojado por el algoritmo iterativo para el caso de tres (3) discos Análisis de Resultados Como se vio en la sección anterior, ambos algoritmos proveen la solución óptima al problema de la Torre de Hanoi. La pregunta queda en relación a su efectividad en términos de tiempo de computación. Como se estableció anteriormente, los algoritmos recursivos son más simples de programar (se pueden programar en menos líneas de código), pero toman más tiempo en ejecutar por la necesidad de mantener valores intermedios para resolver la recursión. Los códigos presentados en la Figuras 6 y 7 ciertamente apoyan lo reportado en la literatura acerca de la complejidad. El código recursivo se completó en menos de la mitad del código requerido para el algoritmo iterativo. Claro está, la autora no reclama ser una experta en programación, por lo que no se concluye que los algoritmos presentados son óptimos en términos de cantidad de líneas de código, pero ciertamente este hallazgo va de acuerdo a lo reportado por otros autores. 19
  • 20. Para probar el reclamo del tiempo de ejecución, los algoritmos anteriormente descritos fueron ejecutados varias veces para verificar su desempeño y poder comparar sus resultados. Para cada caso (cantidad de discos), los algoritmos se ejecutaron cinco (5) veces y se tomó nota del tiempo de ejecución de cada corrida. La Tabla 2 presenta los resultados como el promedio del tiempo de ejecución. Tabla 2: Resultados experimentales del tiempo de ejecución (seg.) Cantidad de Algoritmo Algoritmo iterativo Algoritmo recursivo Discos iterativo modificado* 3 0.0156 1.872056*10-17 0.47705*10-17 4 0.0314 3.23092*10-17 6.04262*10-17 5 0.0686 0.0053 0.0053 6 0.1498 0.0104 0.0107 7 0.3124 0.0156250 0.016 8 0.7062 0.0312500 0.0263 9 1.5590 0.0468750 0.047 10 3.6248 0.0781250 0.094 *Para el algoritmo iterativo modificado se suprimió la impresión de las matrices intermedias y se cambió el comando Timing, por el comando AbsoluteTiming para poder tener mayor precisión de los resultados. Se entiende que, puesto que los resultados de ambos algoritmos difieren en formato, el tiempo de ejecución va a ser diferente. Por tanto, no sería justo el realizar comparaciones estadísticas respecto a sus diferencias. No obstante, es posible hacer comparaciones entre los algoritmos en relación a la diferencia relativa que tardan en trabajar los problemas cuando aumenta la cantidad de discos. Esta comparación se presenta en la Figura 9 donde los datos que forman las curvas se obtuvieron con la siguiente ecuación. Tiempo de computación para N discos N Tiempo de computación para 3 discos 3 20
  • 21. Figura 9 Datos normalizados del tiempo de computación por disco añadido al juego De la gráfica que aparece en la Figura 9 se observa que los tiempos de ejecución de los algoritmos recursivo e iterativo difieren grandemente. Nótese que aunque las curvas tienen formas similares, los ejes no tienen la misma escala. Los tiempos para el algoritmo recursivo (línea verde en el eje de la izquierda) están en el orden de 10-15 mientras que el iterativo (línea azul en el eje de la derecha) toma aproximadamente 70 veces más con diez discos que con 3 discos. No obstante, al comparar contra los datos del algoritmo iterativo modificado, en el que se eliminó la impresión de las matrices intermedias para hacerlo más comparable al funcionamiento del algoritmo recursivo, se observa que el incremento en tiempo con aumento en discos es menor para el algoritmo iterativo que para el recursivo. Esto sugiere que, en efecto, los algoritmos recursivos toman más tiempo de computación que los algoritmos iterativos; lo cual también apoya lo reportado en la literatura. Conclusión Por definición, los algoritmos son “conjuntos ordenados y finitos de operaciones que permiten hallar la solución de un problema”. Estos se pueden clasificar de muchas maneras en base a su estructura, acercamiento al problema, construcción, etcétera. En este trabajo se realizó una comparación entre algoritmos recursivos e iterativos. Como se mencionó anteriormente tanto la recursión como la iteración 21
  • 22. buscan que el algoritmo se ejecute en forma secuencial y consecutiva un cierto número de veces. La diferencia entre éstas estriba en que la iteración ejecuta el algoritmo completamente antes de volverlo a llamar, mientras que la recursión llama al mismo algoritmo para poder resolverlo. De acuerdo a la literatura, los algoritmos recursivos son más simples (requieren menos líneas de código) que los iterativos, pero toman más tiempo de computación. Para verificar esto se construyeron algoritmos recursivos e iterativos para proveer la solución óptima al clásico problema de la Torre de Hanoi. Los algoritmos implementados fueron de forma tal que permiten modificación en la cantidad de discos, pero fija la cantidad de columnas a tres. Los resultados obtenidos de los algoritmos van de acuerdo a lo reportado en la literatura en el sentido de que el algoritmo recursivo requiere menos líneas de código para la implementación, pero el tiempo de ejecución aumenta, en proporción mayor que el iterativo, al aumentar la cantidad de discos en el problema. Referencias • Algoritmia.org. 2010. http://www.algoritmia.org/ • Axelsson, O. 1994. Iterative Solution Methods. Cambridge University Press. • Beardon, A. F. 1991. Iteration of Rational Functions. Graduate Texts in Mathemathics. Number 132. Springer-Verlag. • Berend, D. y Sapir, A. 2006. The Diameter of Hanoi Graphs. Information Processing Letters 98 (2006) 79-85. http://graph.cs.ntust.edu.tw/meeting/ %E8%8E%AB%E5%92%B8%E5%8B%A4/The%20diameter%20of %20Hanoi%20graphs.pdf • Brassard, G. y Bratley, P. 1996. Fundamentals of Algorithmics. Prentice- Hall, Inc. • Chen, X. y Shen, J. 2004. On the Frame-Stewrd Conjeture about the Towers of Hanoi. Society for Industrial and Applied Mathematics. Vol. 33 (3) pp. 584-589. SIAM J. Comput. • Crossley, J. N. 1967. Sets, Models and Recursion Theory. Proceedings of the Summer School in Mathematical Logic and Tenth Logic Colloquium. Leicester. August-September 1965. North-Holland Publishing Company 22
  • 23. Dávila-Rascón, G. 2002. El Desarrollo del Algebra Moderna. Parte I: El álgebra en la antigüedad. Apuntes de Historia de la Matemáticas. Vol. 1, No. 3, Septiembre 2002 • Fenstad, J. E. 1980. General Recursion Theory: An axiomatic approach. Springer-Verlag Berlin Heidelberg. • Frame, J. S. 1941. Solution to advanced problem 3918, Amer. Math. Monthly, 48 (1941), pp. 216–217. • Goodstein, R. L. 1964. Recursive Number Theory. A development of recursive arithmetic in a logic-free equation calculus. North Holland Publishing Company • Greenberg, N. 2006. The Role of True Finiteness in the Admissible Recursively Enumerable Degrees. Memoirs of the American Mathematical Society. Number 854. American Mathematical Society. • Hinman, P. G. 1978. Recursion-Theoretic Hierarchies. Springer-Verlag Berlin Heildelberg. • Hinz, A. M. y Parisse, D. 2002. On the Planarity of Hanoi Graphs. Expositiones Mathematicae. 20(2002):263-268 • Houston, B y Masum, H. 2004. Explorations in 4-peg Tower of Hanoi. Carleton University Technical Report TR-04-10. http://www.exocortex.org/toh/ • Mascolo, V. 2007. Stacking puzzle and method for playing same. US Patent 7566057. http://www.patentstorm.us/patents/7566057/claims.html • McCann, W. 2007. Tower of Hanoi & Reve Puzzles. Ney York University. http://cs.nyu.edu/courses/summer07/G22.2340-001/Presentations/McCan n.pdf • Nerode, A. y Shore, R. A. 1984. Proceedings of Symposia in Pure Mathematics of the American Mathematical Society. Cornell University, Ithaca, New York. American Mathematical Society. Volume 42. • Norris, A. C. 1981. Computational Chemistry: An introduction to numerical methods. John Wiley & Sons. • O’Connor, J. J. y Robertson, E. F. 1996. François Edouard Anatole Lucas. http://www-gap.dcs.st-and.ac.uk/~history/Biographies/Lucas.html 23
  • 24. Palais, R. S. y Palais, R. A. 2009. Differential Equations, Mechanics, and Computation. Student Mathematical Library. IAS/Park City Mathematical Subseries. Volume 51. American Mathematical Society. Institute for Advance Study. • Real Academia Española. 2001. Diccionario de la Lengua Española. Vigésimo segunda edición. http://www.rae.es/rae.html • Rosen, K. H. 2003. Discrete mathematics and its applications. Quinta edición. McGraw-Hill Co. • Shen, J. 2004. On the Frame-Stewart Conjecture about the Tower of Hanoi. Texas State University. http://frank.mtsu.edu/~sseo/shen.pdf • Snapp, R. 2005. Tower of Hanoi. Lecture Notes for CS 5. Delivered on November 14, 2005. http://www.cs.uvm.edu/~snapp/teaching/cs32/lectures/hanoi.pdf • Stewart, B. M. 1941. Solution to advanced problem 3918, Amer. Math. Monthly, 48 (1941), pp. 217–219. • Stockmeyer, P. K. Y Lunnon, F. 2008. New Variations on the Tower of Hanoi. http://www.cs.wm.edu/~pkstoc/greece.pdf • Valeiras, R. 2004. La Torre de Hanoi. http://www.rodoval.com/heureka/hanoi/ • Weisstein, E. W. 2006 "Tower of Hanoi." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/TowerofHanoi.html • Wikipedia.org. 2010. http://es.wikipedia.org 24