dipartimento di elettronica e informazione iterazione vs ricorsione marco d. santambrogio –...
TRANSCRIPT
![Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/1.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Iterazione Vs Iterazione Vs RicorsioneRicorsione
Marco D. Santambrogio – [email protected]. aggiornata al 23 Dicembre 2014
![Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/2.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Gli esami sono stati Gli esami sono stati corretticorretti
Online @ http://home.deib.polimi.it/santambr/dida/infob/1415/doc/risultati/InfoB2014_RisultatiEsami26Nov2014.pdf
2
![Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/3.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Gli esami sono stati Gli esami sono stati corretticorretti
Online @ http://home.deib.polimi.it/santambr/dida/infob/1415/doc/risultati/InfoB2014_RisultatiEsami26Nov2014.pdf
Oggi è il 23 Dicembre e voi siete comunque qui!
3
![Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/4.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Gli esami sono stati Gli esami sono stati corretticorretti
Online @ http://home.deib.polimi.it/santambr/dida/infob/1415/doc/risultati/InfoB2014_RisultatiEsami26Nov2014.pdf
Oggi è il 23 Dicembre e voi siete comunque qui!Premio: 1 punto in più per tutti all’esame
4
![Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/5.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Gli esami sono stati Gli esami sono stati corretticorretti
5
![Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/6.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
• Induzione matematica• Iterazione• Cosa significa “ricorsivo”• Iterazione Vs ricorsione
6
![Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/7.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
L’induzione matematicaL’induzione matematica
• Si usa nelle definizioni e nelle dimostrazioni
• Definizione: numeri pari 1) 0 è un numero pari 2) se n è un numero pari anche n+2 è un numero pari
• Dimostrazione: dimostro che (2n)2=4n2
(distributività della potenza di 2 risp. alla moltiplicazione)
1) n=1 : vero 2) suppongo sia vero per k, lo dimostro per k+1:(2(k+1))2=(2k+2)2=(2k)2+8k+4= (per hp di induzione) 4k2 +8k+4 = 4(k2 +2k+1) = 4(k+1)2
1) è il passo base, 2) è il passo di induzione
7
![Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/8.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il tacchino induttivistaIl tacchino induttivista
• Un tacchino induttivista viene allevato in una fattoria del Maine (USA)
• Ogni giorno alle 7am Mr Jones porta il cibo al tacchino induttivista
• Il tacchino segue il seguente ragionamento: Il giorno 1 Mr Jones mi ha portato il cibo @ 7am
Ieri era il giorno “n” e Mr Jones mi ha portato il cibo @ 7am
Oggi è il giorno “n+1” ed il cibo è arrivato
Tutti i giorni @l 7am Mr Jones mi porterà il cibo
• … Thanksgiving8
![Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/9.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Iterazione e ricorsioneIterazione e ricorsione
• Sono i due concetti informatici che nascono dal concetto di induzione
9
![Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/10.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
IterazioneIterazione
• L’iterazione si realizza mediante la tecnica del ciclo
• Il calcolo del fattoriale: 0!=1 n!=n(n-1)(n-2)….1 (realizzo un ciclo)
10
![Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/11.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
IterazioneIterazione
• Il calcolo del fattoriale mediante una tecnica iterativa:
function [f]=fact(n)
f=1;
for i=1:n
f=f*i;
end
11
![Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/12.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
La ricorsioneLa ricorsione
• Dal latino re-currere ricorrere, fare ripetutamente la stessa azione
• In informatica: si tratta di procedure/funzioni che richiamano se stesse
• Il concetto di ricorsione viene usato nel contesto di: algoritmi strutture dati
12
![Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/13.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
““FlussoFlusso”” di lavoro di lavoro
• Il programmatore formula l’algoritmo dal generale al particolare Si descrivono la funzione sulla globalità dei dati in termini della funzione stessa sui dati disgregati
• L’algoritmo viene poi eseguito dal particolare al generale Vengono infatti lasciate in sospeso le operazioni globali e il calcolo vero e proprio inizia dai dati atomici
13
![Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/14.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Definizione ricorsiva del Definizione ricorsiva del fattorialefattoriale
1) n!=1 se n=0
2) n!= n*(n-1)! se n>0
riduce il calcolo a un calcolo più semplice
ha senso perché si basa sempre sul fattoriale del numero più piccolo, che io conosco
ha senso perché si arriva a un punto in cui non è più necessario riusare la def. 2) e invece si usa la 1)
1) è il passo base, 2) è il passo di ricorsione
14
![Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/15.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algoritmo ricorsivo per Algoritmo ricorsivo per fattorialefattoriale
function [f]=factRic(n)
if (n==0)
f=1;
else
f=n*factRic(n-1);
end•Quando si può dire che una ricorsione è ben definita?
Informalmente: se ogni volta che applico la ricorsione sono significativamente più vicino al passo base, allora la definizione non è circolare.
15
![Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/16.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esempio di tracciaEsempio di traccia
• Calcoliamo il fattoriale di 4:• 4=0? No: calcoliamo il fattoriale di 3 e molt. per 4• 3=0? No: calcoliamo il fattoriale di 2 e molt. per 3• 2=0? No: calcoliamo il fattoriale di 1 e molt. per 2• 1=0? No: calcoliamo il fattoriale di 0 e molt. per 1• 0=0? Si: il fattoriale di 0 è 1. Risaliamo:• il fattoriale di 1 è 1 per il fattoriale di 0 cioè 1*1=1
• il fattoriale di 2 è 2 per il fattoriale di 1 cioè 2*1=2
• il fattoriale di 3 è 3 per il fattoriale di 2 cioè 3*2=6
• il fattoriale di 4 è 4 per il fattoriale di 3 cioè 4*6=24
16
![Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/17.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
17
![Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/18.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
n:3 f:..factRic
(2)
n:2 f:..factRic
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
18
![Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/19.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
n:3 f:..factRic
(2)
n:2 f:..factRic
n:3 f:..factRic
(3)
n:2 f:..factRic
n:1 f:..factRic
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
19
![Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/20.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
n:3 f:..factRic
(2)
n:2 f:..factRic
n:3 f:..factRic
(3)
n:2 f:..factRic
n:1 f:..factRic
n:3 f:..factRic
(4)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:..factRic
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
20
![Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/21.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
n:3 f:..factRic
(2)
n:2 f:..factRic
n:3 f:..factRic
(3)
n:2 f:..factRic
n:1 f:..factRic
n:3 f:..factRic
(4)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:..factRic
n:3 f:..factRic
(5)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:1factRic
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
21
![Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/22.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
n:3 f:..factRic
(2)
n:2 f:..factRic
n:3 f:..factRic
(3)
n:2 f:..factRic
n:1 f:..factRic
n:3 f:..factRic
(4)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:..factRic
n:3 f:..factRic
(5)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:1factRic
n:3 f:..factRic
(6)
n:2 f:..factRic
n:1 f:1factRic
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
22
![Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/23.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
n:3 f:..factRic
(2)
n:2 f:..factRic
n:3 f:..factRic
(3)
n:2 f:..factRic
n:1 f:..factRic
n:3 f:..factRic
(4)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:..factRic
n:3 f:..factRic
(5)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:1factRic
n:3 f:..factRic
(6)
n:2 f:..factRic
n:1 f:1factRic
n:3 f:..factRic
(7)
n:2 f:2factRic
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
23
![Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/24.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
n:3 f:..factRic
(1)
n:3 f:..factRic
(2)
n:2 f:..factRic
n:3 f:..factRic
(3)
n:2 f:..factRic
n:1 f:..factRic
n:3 f:..factRic
(4)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:..factRic
n:3 f:..factRic
(5)
n:2 f:..factRic
n:1 f:..factRic
n:0 f:1factRic
n:3 f:..factRic
(6)
n:2 f:..factRic
n:1 f:1factRic
n:3 f:..factRic
(7)
n:2 f:2factRic
n:3 f:6factRic
(8)
Ambienti locali gestiti in modo LIFO (Last In First Out)Cancellati in ordine inverso a quello un cui sono stati creatiSi usa una struttura di dati detta PILA
Gestione a pila degli ambienti Gestione a pila degli ambienti locali delle funzionilocali delle funzioni
24
![Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/25.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altri esempi di funzioni Altri esempi di funzioni ricorsivericorsive
• I numeri di Fibonacci (dinamiche di popolazione)
• Il Massimo Comun Divisore (algoritmo di Euclide)
• Il problema delle torri di Hanoi
25
![Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/26.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
FibonacciFibonacci
• Leonardo Fibonacci Matematico italiano Compie numerosi viaggi e assimila le conoscenze matematiche del mondo arabo,
Nel 1202 pubblica: il Liber abaci
Con Liber abaci si propose di diffondere nel mondo scientifico occidentale le regole di calcolo note agli Arabi• il sistema decimale
26
![Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/27.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il problema dei “Il problema dei “conigliconigli””
“Un tale mise una coppia di conigli in un luogo completamente circondato da un muro, per scoprire quante coppie di conigli discendessero da questa in un anno: per natura le coppie di conigli generano ogni mese un'altra coppia e cominciano a procreare a partire dal secondo mese dalla nascita.”
L. Fibonacci da Liber Abaci
27
![Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/28.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
I numeri di FibonacciI numeri di Fibonacci
Idea di base
1) fib(n)=1 se n=0 opp. n=1
2) fib(n)= fib(n-1) + fib(n-2) se n>1
28
![Page 29: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/29.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
I numeri di FibonacciI numeri di Fibonacci
1) fib(n)=1 se n=0 opp. n=1
2) fib(n)= fib(n-1) + fib(n-2) se n>1
Vengono usati per modellare la crescita di animali per diverse generazioni
function [f]=fib (n)
if n==1 | n==2
f = 1;
else
f = fib(n - 2) + fib(n - 1);
end
29
![Page 30: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/30.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il MCDIl MCD
Definizione:1) MCD(m,n)=m se m=n2a) MCD(m,n)= MCD(m-n,n) se m>n2b) MCD(m,n)=MCD(m,n-m) se n>m
esempio:MCD(21,56) = MCD(21,35) = MCD(21,14)=
= MCD(7,14) = MCD(7,7) = 7
30
![Page 31: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/31.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
IL MCDIL MCD
Iterativo:
function [M]=MCDeuclid(m,n)
while m ~= n
if m>n
m=m-n;
else
n=n-m;
end
end
M=m;
31
![Page 32: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/32.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
IL MCDIL MCD
Iterativo:
function [M]=MCDeuclid(m,n) while m ~= n if m>n m=m-n; else n=n-m; end end M=m;
Ricorsivo:
function [M]=MCDeuclidRic(m,n)
if m==n
M=m;
else if m>n
M = MCDeuclidRic(m-n,n);
else
M = MCDeuclidRic(m,n-m);
end
end• Attenzione alla condizione di terminazione!!!!!
• N.B. è sempre possibile trovare un corrispondente iterativo di un programma ricorsivo!!!
32
![Page 33: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/33.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Pausa…Pausa…
33
![Page 34: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/34.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un problema interessante:Un problema interessante:La torre di BrahmaLa torre di Brahma
34
![Page 35: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/35.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
La leggendaLa leggenda
• Narra la leggenda che all'inizio dei tempi, Brahma portò nel grande tempio di Benares, sotto la cupola d'oro che si trova al centro del mondo, tre colonnine di diamante e sessantaquattro dischi d'oro, collocati su una di queste colonnine in ordine decrescente, dal più piccolo in alto, al più grande in basso.
• E' la sacra Torre di Brahma che vede impegnati, giorno e notte, i sacerdoti del tempio nel trasferimento della torre di dischi dalla prima alla terza colonnina.
• Essi non devono contravvenire alle regole precise, imposte da Brahma stesso, che richiedono di spostare soltanto un disco alla volta e che non ci sia mai un disco sopra uno più piccolo.
• Quando i sacerdoti avranno completato il loro lavoro e tutti Quando i sacerdoti avranno completato il loro lavoro e tutti i dischi saranno riordinati sulla terza colonnina, la torre e il i dischi saranno riordinati sulla terza colonnina, la torre e il tempio crolleranno e sarà la fine del mondo. tempio crolleranno e sarà la fine del mondo.
35
![Page 36: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/36.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Le torri di HanoiLe torri di Hanoi
http://www.cs.cmu.edu/~cburch/survey/recurse/hanoi.html
Problema: spostare tutti i dischi dalla torre A alla torre B
(usando la torre C come “supporto intermedio”) in modo che si trovino nello stesso ordine 36
![Page 37: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/37.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Le torri di HanoiLe torri di Hanoi
• Scriveremo una funzione ricorsiva che prende come parametro il numero del disco più grande che vogliamo spostare (da 0 a 5 come nel disegno)
• La funzione prenderà anche tre parametri che indicano: da quale asta vogliamo partire (source), a quale asta vogliamo arrivare (dest), l’altra asta, che possiamo usare come supporto temporaneo (spare).
37
![Page 38: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/38.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
L’idea di baseL’idea di base
• Voglio spostare n anelli dal piolo sorgente, a quello destinazione, usando come appoggio il piolo ausiliario Devo quindi prima spostare n - 1 anelli dal sorgente all'ausiliario, usando come appoggio il piolo destinazione
Poi sposto l'unico anello rimasto dal sorgente al piolo destinazione
Infine sposto gli n - 1 anelli che si trovano sull'ausilliario all'anello destinazione..
38
![Page 39: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/39.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
L’uso della ricorsioneL’uso della ricorsione
• Quando si spostano gli n - 1 anelli la funzione hanoi richiama se stessa, cioè effettua una chiamata ricorsiva, semplificando però il problema perché bisogna spostare un numero di anelli inferiore.
• In pratica, con la ricorsione il problema viene continuamente ridotto di complessità fino alla soluzione banale in cui rimane solo un anello, che viene semplicemente spostato nel piolo destinazione.
39
![Page 40: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/40.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Le torri di Hanoi: Le torri di Hanoi: strategiastrategia
Ridurremo il problema a quello di spostare 5 dischi dalla torre Calla torre B, dopo che il disco 5 è stato già messo nella posizione giusta
40
![Page 41: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/41.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Le torri di Hanoi: Le torri di Hanoi: pseudocodicepseudocodice
FUNCTION MoveTower(disk, source, dest, spare):IF disk == 0, THEN: move disk from source to destELSE: MoveTower(disk - 1, source, spare, dest) /* (Passo 1) */ move disk from source to dest //
/* (Passo 2) */ MoveTower(disk - 1, spare, dest, source) //
/* (Passo 3) */END IF
Nota: l’algoritmo aggiunge un caso base: quando il disco è il più piccolo (il numero 0). In questo caso possiamo muoverlo direttamente perché non ne ha altri sopra. Negli altri casi, seguiamo la procedura descritta per il disco 5.
41
![Page 42: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/42.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione in codice MATLAB con simulazioneSoluzione in codice MATLAB con simulazione
function []=hanoi(n, da, a, per) if (n>1) hanoi(n-1, da, per, a); end; fprintf('\n sposta un disco dal piolo %d al piolo %d \n', da, a); if (n>1) hanoi(n-1, per, a, da); end;
>> hanoi(3, 1, 2, 3) sposta un disco dal piolo 1 al piolo 2 sposta un disco dal piolo 1 al piolo 3 sposta un disco dal piolo 2 al piolo 3 sposta un disco dal piolo 1 al piolo 2 sposta un disco dal piolo 3 al piolo 1 sposta un disco dal piolo 3 al piolo 2 sposta un disco dal piolo 1 al piolo 2 >>
hanoi(3, 1, 2, 3)
hanoi(2, 1, 3, 2) hanoi(2, 3, 2, 1)
hanoi(1, 1, 2, 3) hanoi(1, 2, 3, 1) hanoi(1, 3, 1, 2) hanoi(1, 1, 2, 3)
42
![Page 43: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/43.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
E ora…E ora…
• Buone feste, a voi e a tutti i vostri cari!
43
![Page 44: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Iterazione Vs Ricorsione Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 23 Dicembre](https://reader036.vdocuments.net/reader036/viewer/2022062512/5542eb77497959361e8e1daa/html5/thumbnails/44.jpg)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio
Introduzione alla programmazione in MATLAB, A.Campi, E.Di Nitto, D.Loiacono, A.Morzenti, P.Spoletini, Ed.Esculapio•Capitolo 4
– Particolare attezione al 4.5
• Credits Prof W. Fornaciari Prof. A. Morzenti
44