Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoElma Capasso Modificato 10 anni fa
1
Divina proportione … 1:a=a:b 0,618 Prof. Fabrizio Camuso
2
In geometria … Il rettangolo aureo Prof. Fabrizio Camuso
3
Pentagono e pentangolo
In geometria … Pentagono e pentangolo Prof. Fabrizio Camuso
4
In geometria … Spirale aurea Prof. Fabrizio Camuso
5
Nella natura !! Spirale aurea fasi di sviluppo di esseri viventi
conchiglie parte inferiore onde marine corna, zanne, becchi, artigli galassie coda comete posizione ombelico Prof. Fabrizio Camuso
6
Fibonacci - 1 0 1 1 2 3 5 8 13 21 34 … Prof. Fabrizio Camuso
7
Fibonacci - 2 Sulla testa di un tipico girasole, per esempio, il numero delle spirali rientra molto spesso in questo schema: 89 spirali che si irradiano ripide in senso orario; 55 che si muovono in senso antiorario e 34 che si muovono in senso orario ma meno ripido. Questi sono tre numeri adiacenti delle sequenza di Fibonacci. Il più grande girasole che si sia mai conosciuto aveva 144, 89 e 55 spirali. Prof. Fabrizio Camuso
8
Fibonacci - 3 In molte specie vegetali, prime fra tutte le Astaracee (girasoli, margherite, ecc.), il numero dei petali di ogni fiore è di solito un numero di Fibonacci, come 5, 13, 55 o perfino 377, come nel caso della diaccola. Prof. Fabrizio Camuso
9
Fibonacci - 4 In molte specie vegetali, prime fra tutte le Astaracee (girasoli, margherite, ecc.), il numero dei petali di ogni fiore è di solito un numero di Fibonacci, come 5, 13, 55 o perfino 377, come nel caso della diaccola. E le pigne ??? Prof. Fabrizio Camuso
10
Fibonacci - 5 Le foglie sono disposte sui rami in modo tale da non coprisi l’una con l’altra per permettere a ciascuna di esse di ricevere la luce del sole. Se prendiamo come punto di partenza la prima foglia di un ramo e passiamo di foglia in foglia in senso orario o antiorario, il numero di giri che compiremo prima di trovare una foglia sopra quella di partenza corrisponde sempre ad un numero di Fibonacci. Partendo da una foglia qualunque, dopo uno, due, tre o cinque giri dalla spirale si trova sempre una foglia allineata con la prima. a seconda delle specie, questa sarà la seconda, la terza, la quinta, l'ottava o la tredicesima foglia. Prof. Fabrizio Camuso
11
Fibonacci – 6 I NUMERI DI FIBONACCI E LA BORSA DI MILANO Un’applicazione moderna dei numeri di Fibonacci si può riscontrare presso la borsa azionistica di Milano. Prendendo spunto da Leonardo Fibonacci da Pisa, uno dei più grandi protagonisti della storia della matematica, Ralph Elson Elliot elaborò una precisa teoria di previsione dei mercati finanziari con la quale in tempi recenti sono stati anticipati i più grandi rialzi e i più grandi crolli di borsa. Usando le onde di Elliot ed i numeri di Fibonacci, il docente universitario G. Migliorino ha previsto con incredibile precisione il punto minimo del drammatico ribasso dell’estate ‘98. . Prof. Fabrizio Camuso
12
Fibonacci – 7 I NUMERI DI FIBONACCI NEL PROCESSORE PENTIUM I numeri di Fibonacci sono utilizzati anche nel sistema informatico di molti computer. In particolare vi è un complesso meccanismo basato su tali numeri, detto "Fibonacci heap" che viene utilizzato nel processore Pentium della Intel per la risoluzione degli algoritmi. Prof. Fabrizio Camuso
13
Fibonacci – 8 Anche la musica non sfugge al fascino del rapporto aureo. Anzitutto le note: in una scala completa (compreso il do della scala successiva) i rapporti fra le note corrispondono molto precisamente ai numeri di Fibonacci … Un ambiente d' ascolto, ma anche una cassa acustica, minimizzerà le risonanze se le dimensioni sono in rapporto aureo tra loro. Ancora oggi la sezione aurea è ampliamente utilizzata: le dimensioni standard di carte di credito, tessere telefoniche, badge per ogni applicazione, corrispondono (salvo tolleranze di fabbricazione) al rettangolo aureo. Prof. Fabrizio Camuso
14
Fibonacci – 9 George Cardas decide di sfruttare il concetto di rapporto aureo per la costruzione di cavi audio ad alte prestazioni e questa trovata e' protetta da ben due brevetti (US Pat e ). Prof. Fabrizio Camuso
15
Fibonacci 0 1 1 2 3 5 8 13 … 0 1 1 2 3 5 8 13 ? … (Versione Iterativa)
int fib_ite(int num) { int i=0, prossimo=0, unoIndietro=0,dueIndietro=0; if (num==1) return 0; else if (num==2) return 1 else; dueIndietro=0; unoIndietro=1; for (int i=3; i<=num; i++) prossimo=unoIndietro+dueIndietro; dueIndietro=unoIndietro; unoIndietro=prossimo; } return prossimo Fibonacci (Versione Iterativa) ? … dueIndietro unoIndietro prossimo … dueIndietro unoIndietro prossimo Prof. Fabrizio Camuso
16
Fibonacci (Versione Ricorsiva) Niente Var locali !! Base della
int fib_ric(int num) { if (num==1) return 0; else if (num==2) return 1; return fib_ric(num-2)+fib_ric(num-1); } Niente Var locali !! Base della ricorsione Passo ricorsivo Prof. Fabrizio Camuso
17
* Di cosa si tratta …(videolezione ‘Ricorsione’ - minuto19.45)
La torre di Hanoi - 1 * Di cosa si tratta …(videolezione ‘Ricorsione’ - minuto19.45) Prof. Fabrizio Camuso
18
La torre di Hanoi – 2 (versione iterativa) ??????
protected void iterativeSolve(int n, int da, int a, int per) { int[] pioli = {da, a, per}; int dim; int n_mvs; int from; int to; for (int i = 0; i < mvlist.length; i++) { dim = calcDim(i + 1); n_mvs = i / (int)Math.pow(2, dim) + 1 / 2; if ((n - dim + 1) % 2 == 1) { from = (int)(n_mvs % 3); to = (from + 1) % 3; } else { from = (int)(-(n_mvs % 3 - 3) % 3); to = (from + 2) % 3; } mvlist[i] = new HanoiMove(pioli[from], pioli[to]); private int calcDim(int mv) { int pos = 0; while (mv > 0) { pos++; if (mv % 2 == 1) mv = 0; else mv /= 2; return pos; La torre di Hanoi – 2 (versione iterativa) ?????? Prof. Fabrizio Camuso
19
(versione ricorsiva)
La torre di Hanoi – 3 (versione ricorsiva) void move(int N, int start, int final, int temp) { if (count > 0) { move(N-1,start,temp,final); cout << "Muovi da {0} a {1}\n“ << start << final; move(N-1,temp,final,start); } Passo ricorsivo Passo ricorsivo Dov’è la base della ricorsione ? Prof. Fabrizio Camuso
20
Strutture ad albero – 1 Radice (root) arco Struct Nodo { string info;
foglia figlio fratelli Struct Nodo { string info; sx: Nodo *; dx: Nodo *; } Prof. Fabrizio Camuso
21
Ma non è tutto oro quello che luccica …
Strutture ad albero – 2 void stampa(Nodo * albero) { if (albero!=null) stampa(albero->sx); cout << albero->info << endl; stampa(albero->dx) } StampaAlbero(inizio) StampaAlbero(inizio^.sx) StampaAlbero(inizio^.dx) StampaAlbero(inizio^.sx^.sx) StampaAlbero(inizio^.dx^.dx) … StampaAlbero(nil) Ma non è tutto oro quello che luccica … Prof. Fabrizio Camuso
22
algoritmi importanti pronti per le architetture parallele
Altre applicazioni algoritmi importanti pronti per le architetture parallele int binsearch(int a[], int sx, int dx, int el) { int x; if (dx < sx) return -1; x = (dx + sx)/2; if (el < a[x]) return binsearch(a,sx,x-1,el); else if (el == a[x]) return x; return binsearch(a,x+1,dx,el); } Prof. Fabrizio Camuso
23
Altre applicazioni - quicksort
Prof. Fabrizio Camuso
24
Altre applicazioni – XML parsing
Prof. Fabrizio Camuso
25
Altre applicazioni – backtracking
Una tecnica classica consiste nell'esplorazione di strutture ad albero e tenere traccia di tutti i nodi e i rami visitati in precedenza, in modo da poter tornare indietro al più vicino nodo che conteneva un cammino ancora inesplorato nel caso che la ricerca nel ramo attuale non abbia successo. Esiste addirittura un famoso linguaggio di programmazione usatissimo per risolvere problemi di intelligenza artificiale basato interamente per il suo funzionamento sul backtracking: il prolog Prof. Fabrizio Camuso
26
Riassumendo … La base della ricorsione: è il caso più semplice, quello per il quale sappiamo subito ‘calcolare’ il risultato. Quello a cui il meccanismo ricorsivo tenta di ricondursi un poco alla volta, passo dopo passo. Il passo ricorsivo: quando non siamo di fronte al caso più semplice dobbiamo tentare di esprimerlo attraverso una ‘formula’ che richiama lo stesso sottoprogramma che stiamo scrivendo ma con argomenti semplificati che ci avvicinano al caso che rappresenta la base della ricorsione Prof. Fabrizio Camuso
27
Fattoriale … Fatt( N ) = 1 se N =0 N * Fatt(N-1) se N>0
Prof. Fabrizio Camuso
28
xy , con x e y interi positivi
1 se y =0 x * XallaY(x,y-1) se y>0 XallaY(x,y) = Prof. Fabrizio Camuso
29
X * Y x se y =1 XperY(x,y) = x + XperY(x,y-1) se y>0
Prof. Fabrizio Camuso
30
Fibonacci 0 se N =1, 1 se N=2 Fib(n) = Fib(N-2)+Fib(N-1) se N>2
Prof. Fabrizio Camuso
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.