IPB

Benvenuto Visitatore ( Log In | Registrati )

Registrati per comunicare con gli altri e per accedere a tutte le altre funzionalità del sito!
Per qualsiasi info scrivi a staff [AT] ferraraforum [PUNTO] it.


NOTA Il forum è offline ormai da parecchi anni, rimane online solo per archivio. Per informazioni contattare guidopotena@gmail.com

> Un Simpatico Algoritmo!, la torre di Hanoi
pottydj
messaggio 26 Jan 2006 - 14:54
Messaggio #1


....alla vecchia....
Gruppo icone

Gruppo: Amministratore
Messaggi: 27586
Iscritto il: 26 March 2005
Età: 39
Da: P Rio
Utente Nr.: 4



Esercizio: Torre di Hanoi
Siano dati 3 pioli verticali, numerari da 0 a 2, ed un numero n di dischi di dimensioni decrescenti.
All’inizio del gioco i dischi sono tutti impilati in ordine di grandezza decrescente, dal basso verso l’alto, sul
primo piolo.
L’obiettivo del gioco è quello di spostare tutti i dischi dal piolo 0 al piolo 1 rispettando le seguenti regole:
1. è possibile spostare un solo disco alla volta
2. un disco non può essere impilato su un altro disco di dimensioni più piccole
NOTA: Il piolo 2 è usato come piolo di supporto durante i trasferimenti.

Il seguente algoritmo risolve il problema osservando che, l’unico modo per spostare il disco più grande dal
piolo 0 al piolo 1 consiste nello spostare prima tutti gli altri dischi sul piolo 2. Quindi:
1. sposta i primi n − 1 dischi dal piolo 0 al piolo 2, rispettando la legge
2. sposta l’ultimo disco dal piolo 0 al piolo 1
3. sposta i primi n − 1 dischi dal piolo 2 al piolo 1
I punti 1 e 3 implicano la risoluzione del problema di dimensione n − 1 con una permutazione dei nomi dei
pioli (al secondo passo il piolo 0 diviene il piolo di supporto).

CODICE
//Utilizzando il tipo di dato pila per definire un piolo, la procedura specifica in precedenza per la risoluzione del problema può essere così codificata:

void torredihanoi ( int n, piolo origine, piolo destinazione, piolo intermedio ) {
if ( n == 1 ) {
muovidisco ( origine , destinazione );
} else {
torredihanoi ( n − 1 , origine , intermedio , destinazione ); //RICORSIONE!!
muovidisco ( origine , destinazione );
torredihanoi ( n − 1 , intermedio , destinazione , origine ); //RICORSIONE!!
}
}


La procedure muovidisco deve:
1. leggere l’elemento di testa dal piolo origine (LEGGIPILA) e scriverlo in testa al piolo destinazione
(SCRIVIPILA)
2. cancellare l’elemento di testa del piolo origine (CANCPILA)


in pratica questo algoritmo varia esponenzialmente! Se si usano anche solo 18 dischi di dimensione crescente (che poi nell'impelementazione sono semplicemente dei valori interi crescenti) il tempo di calcolo (costo computazionale) equivale ad 1 giorno!! con 31-32 si passa già ad un secolo... affascinante!! Che ne dite?!
Go to the top of the page
+Quote Post
 
Start new topic
Risposte
Senbee Norimaki
messaggio 31 Jan 2006 - 15:28
Messaggio #2


Super Member
Gruppo icone

Gruppo: Utente
Messaggi: 15258
Iscritto il: 14 December 2005
Età: 17
Utente Nr.: 459



Esatto. Vabbè, basta tagliarlo, invece di piegarlo. Però cavoli, ci vuole un pezzo bello grosso!
Go to the top of the page
+Quote Post

Inserisci in questo messaggio
- pottydj   Un Simpatico Algoritmo!   26 Jan 2006 - 14:54
- - potemkin   x me è stupendo!!!   26 Jan 2006 - 15:26
- - cj@cc.gatech.edu   E' il cosiddetto gioco delle Torri di Hanoi (v...   26 Jan 2006 - 16:04
- - galva   pot quando lo facciamo ? (sempre che tu non l'abb...   26 Jan 2006 - 19:13
|- - pottydj   CITAZIONE (galva @ 26 Jan 2006 - 19...   27 Jan 2006 - 00:42
- - MJ83®   Ce l'avevo sul vecchio cellulare sto giochino, mi ...   26 Jan 2006 - 19:17
- - cj@cc.gatech.edu   C'era anche in Ultima VIII... chi di voi l...   26 Jan 2006 - 20:45
- - pottydj   CE L'HO FATTA AD IMPLEMENTARLO! vabeh nn era poi...   30 Jan 2006 - 01:42
- - Senbee Norimaki   Mi ricorda il famoso calcolo per cui, piegando un ...   30 Jan 2006 - 17:20
- - MJ83®   Solo in teoria però, perché è provato che è imposs...   30 Jan 2006 - 18:33
- - Senbee Norimaki   Esatto. Vabbè, basta tagliarlo, invece di piegarlo...   31 Jan 2006 - 15:28
|- - pottydj   CITAZIONE (Senbee Norimaki @ 31 Jan 2006 ...   31 Jan 2006 - 17:15
- - Frabe   tipo la scacchiera e i chicchi di grano?   31 Jan 2006 - 16:03
- - bzbiz   Up   30 Jan 2009 - 10:39
- - Galen   Ah, da piccolo ce l'avevo come rompicapo, ho a...   30 Jan 2009 - 11:39
- - Matt   algoritmi........... fabio schifano....   30 Jan 2009 - 20:31
- - tasso85   Schifano NUOOOOOOOOO! comunque, quell'a...   30 Jan 2009 - 20:52
- - sayian   Nella mia breve esperienza di ottimizzazione di al...   31 Jan 2009 - 11:47
|- - tasso85   CITAZIONE (sayian @ 31 Jan 2009 - 11...   31 Jan 2009 - 19:16
- - A.L.G.   non ho capito una fava... algoritmo?   31 Jan 2009 - 14:12
- - sayian   Corretto, ho sbagliato io, mi ricordavo male.   1 Feb 2009 - 19:18


Reply to this topicStart new topic
7 utenti stanno leggendo questa discussione (7 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Passa a: Normale · Passa a: Lineare · Outline




Versione Lo-Fi Oggi è il: 24 Nov 2024 - 03:36


Page top
Contattaci a staff@ferraraforum.it - visitatori dal 25 Marzo 2005 ( oggi)