09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

10.3. Otros ejemplos recursivos 217<br />

A B C<br />

Figura 10.3. Las torres de Hanoi.<br />

El juego estaba formado por una base con tres agujas verticales, y <strong>en</strong> una de<br />

ellas se <strong>en</strong>contraban <strong>en</strong>garzados unos discos de tamaño creci<strong>en</strong>te formando una<br />

torre, según se muestra <strong>en</strong> la figura 10.3. El problema por resolver consiste <strong>en</strong><br />

trasladar todos los discos de una aguja a otra, moviéndolos de uno <strong>en</strong> uno, pero<br />

con la condición de que un disco nunca descanse sobre otro m<strong>en</strong>or. En distintas<br />

fases del traslado se deberán usar las agujas como almacén temporal de discos.<br />

Llamaremos A, B y C a cada una de las agujas sin importar el ord<strong>en</strong> siempre<br />

que se mant<strong>en</strong>gan los nombres.<br />

Consideremos inicialm<strong>en</strong>te dos discos <strong>en</strong> A que queremos pasar a B utilizando<br />

C como auxiliar. Las operaciones por realizar son s<strong>en</strong>cillas:<br />

⎧<br />

⎨ Mover un disco de A a C<br />

Pasar dos discos de A a B = Mover un disco de A a B<br />

⎩<br />

Mover un disco de C a B<br />

Ahora supongamos que t<strong>en</strong>emos tres discos <strong>en</strong> A y queremos pasarlos a B.<br />

Haci<strong>en</strong>do algunos tanteos descubrimos que hay que pasar los dos discos superiores<br />

de A a C, mover el último disco de A a B y por último pasar los dos discos de<br />

C a B. Ya conocemos cómo pasar dos discos de A a B usando C como auxiliar,<br />

para pasarlos de A a C usaremos B como varilla auxiliar y para pasarlos de C a<br />

B usaremos A como auxiliar:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!