Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoRenata Lolli Modificato 9 anni fa
1
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Capitolo 1 Un’introduzione informale agli algoritmi Algoritmi e Strutture Dati
2
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Il tempo di esecuzione non è la sola risorsa di calcolo che ci interessa. Anche la quantità di memoria necessaria può essere cruciale. Se abbiamo un algoritmo lento, dovremo solo attendere più a lungo per ottenere il risultato Ma se un algoritmo richiede più spazio di quello a disposizione, non otterremo mai la soluzione, indipendentemente da quanto attendiamo! Occupazione di memoria
3
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl fibonacci3 usa un array di dimensione n In realtà non ci serve mantenere tutti i valori di F n precedenti, ma solo gli ultimi due, riducendo lo spazio a poche variabili in tutto: Algoritmo fibonacci4 algoritmo fibonacci4 (intero n) intero a b 1 for i = 3 to n do c a+b a b b c return b
4
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Misurare T(n) come il numero di linee di codice mandate in esecuzione è una misura molto approssimativa del tempo di esecuzione Se andiamo a capo più spesso, aumenteranno le linee di codice sorgente, ma certo non il tempo richiesto dall’esecuzione del programma! Notazione asintotica (1 di 3)
5
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Per lo stesso programma impaginato diversamente potremmo concludere ad esempio che T(n)=3n oppure T(n)=5n Vorremmo un modo per descrivere l’ordine di grandezza di T(n) ignorando dettagli inessenziali come le costanti moltiplicative, additive e sottrattive Useremo a questo scopo la notazione asintotica O Notazione asintotica (2 di 3)
6
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Ad esempio, rimpiazzeremo: –T(n)=3F n -2 con T(n)=O(F n ) ≈ O( n ) –T(n)=2n+3 con T(n)=O(n) –T(n)=4n-178 con T(n)=O(n) Notazione asintotica (3 di 3)
7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Possiamo sperare di calcolare F n in tempo inferiore a O(n)? Un nuovo algoritmo
8
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl fibonacci4 non è il miglior algoritmo possibile E’ possibile dimostrare per induzione la seguente proprietà di matrici: Potenze ricorsive 11 10 n = F n+1 FnFn FnFn F n-1 Useremo questa proprietà per progettare un algoritmo più efficiente
9
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl …prodotto di matrici (AB) i,j = a i,k b k,j k=1 n i=1,…, n j=1,…, n
10
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Dimostrazione per induzione Base induzione: n=2 11 10 2 = F3F3 F2F2 F2F2 F1F1 11 10 11 10 = 21 11 = F n+1 FnFn FnFn F n-1 Hp induttiva: 11 10 n-1 = FnFn F n-1 F n-2 11 10 n = FnFn F n-1 F n-2 11 10 F n +F n-1 F n-1 + F n-2 = = FnFn F n-1
11
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmo fibonacci5 Il tempo di esecuzione è ancora O(n) Cosa abbiamo guadagnato?
12
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Possiamo calcolare la n-esima potenza elevando al quadrato la ( └ n/2 ┘ )-esima potenza Se n è dispari eseguiamo una ulteriore moltiplicazione Esempio: 3 2 =9 3 4 =(3 2 ) 2= (9) 2 =81 3 8 =(3 4 ) 2= (81) 2 =6561 Calcolo di potenze
13
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Algoritmo fibonacci6
14
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Tutto il tempo è speso nella procedura potenzaDiMatrice –All’interno della procedura si spende tempo costante –Si esegue una chiamata ricorsiva con input n/2 L’equazione di ricorrenza è pertanto: Tempo di esecuzione T(n) = O(1) + T(n/2)
15
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Metodo dell’iterazione Si può dimostrare che T(n) ≤ c log 2 n + T(1) = O(log 2 n ) Infatti: T(n)=T(n/2)+O(1)=[T(n/4)+O(1)]+O(1)= =[{T(n/8)+O(1)}+O(1)] +O(1)=… …=((…(T(1)+O(1))+O(1))+…)+O(1)=O(log n) fibonacci6 è quindi esponenzialmente più veloce di fibonacci3 !
16
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl Riepilogo fibonacci6 fibonacci5 fibonacci4 fibonacci3 fibonacci2 O(log n) O(n) O( n ) O(log n) O(1) O(n) Tempo di esecuzione Occupazione di memoria
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.