domingo, 14 de marzo de 2010

Pseudocódigo

Pseudocodigo Algoritmo Recursivo

hanoi(n, origen, destino, auxiliar)

si n=1

entonces

mover un disco de la torre origen a la torre destino //{solucion del metodo recursivo}

si no

//{mover n-1 discos de la torre origen a la torre auxiliar}
llamar hanoi(n-1, origen, auxiliar, destino) //{llamada recursiva}
Mover un disco de la torre origen a la torre destino

//{mover n-1 discos de la torre auxiliar a la torre destino}

llamar metodo hanoi(n-1, axuliar, destino, origen) //{llamada recursiva}



fin

fin




Pseudocódigo Algoritmo Iterativo

//los argumentos origen, destino y axuliar son variables representando las tres torres del problema original (pueden ser estructuras o simplemente el nombre de cada torre, en este caso solo representan el nombre de las torres por tanto, se asume que son de tipo texto).
//n es el numero de discos
//pilaN, pilaO, pilaD y pilaA son estructuras de tipo PILA
//tope es una variable de tipo entero.
//varaux es una variable de tipo texto (en este caso por que las torres son representadas unicamente por su nombre, es decir, esta variable debe ser del mismo tipo que origen, destino y auxiliar)
//bandera es una variable de tipo boleano

Solución Iterativa(n, origen, destino, auxiliar)

hacer tope=0 y bandera = falso
repetir mientras (n>0) y (bandera=falso)

repetir mientras (N>1)

//se guardan en las pilas los valores actuales de los parametros
tope=tope+1
pilaN[tope]=n
pilaO[tope]=origen
pilaD[tope]=destio
pilaA[tope]=auxiliar

n=n-1
varaux=destino
destino=auxiliar
auxiliar = varaux

Fin //fin de repetir mientras (N>1)

mover disco de origen a destino
bandera=verdadero

si tope >0 entonces //quiere decir que las pilas no estan vacias

n=pilaN[tope]
origen=pilaO[tope]
destino=pilaD[tope]
auxiliar=pilaA[tope]
tope=tope-1

mover disco de origen a destino

n=n-1
varaux=origen
origen=auxiliar
auxiliar=varaux
bandera=falso

Fin //fin de si tope >0 entonces
Fin //fin de repetir mientras (n>0) y (band=falso)
Fin //fin del metodo

No hay comentarios:

Publicar un comentario