La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Unità F1 Analisi della complessità degli algoritmi.

Presentazioni simili


Presentazione sul tema: "Unità F1 Analisi della complessità degli algoritmi."— Transcript della presentazione:

1 Unità F1 Analisi della complessità degli algoritmi

2 Obiettivo principale Confrontare algoritmi corretti che risolvono lo stesso problema, allo scopo di scegliere quello migliore in relazione a uno o più parametri di valutazione.

3 Valutazione con un parametro Se si ha a disposizione un solo parametro per valutare un algoritmo, per esempio il tempo d esecuzione, è semplice la scelta: il più veloce. Ogni altra caratteristica non viene considerata.

4 Valutazione con più parametri Nel caso di due parametri normalmente si considera o il tempo. numero di passi (istruzioni) che occorrono per produrre il risultato finale. Passi e non secondi o millisecondi perché il tempo varia al variare delle potenzialità del calcolatore. o lo spazio occupazione di memoria

5 Durata delle istruzioni Le istruzioni non hanno tutte lo stesso tempo di esecuzione. Il tempo di esecuzione di un algoritmo è una somma pesata delle istruzioni: T totale =(i 0 *t 0 *n 0 )+(i 1 *t 1 *n 1 )+…+(i m *t m *n m ) o i j è l istruzione, o t j è il costo dell istruzione, il tempo di esecuzione o n j è il numero di volte che viene eseguita.

6 Misura dell efficienza L approssimazione di una funzione con una funzione asintotica è molto utile per semplificare i calcoli sul tempo di esecuzione di un algoritmo. La notazione asintotica di una funzione consente di descriverne il comportamento in modo semplificato, ignorando dettagli della formula. Esempio: per valori sufficientemente alti di x il comportamento della funzione f(x) = x 2 – 3x + 1 è approssimabile con la funzione f(x) = x 2. Per un algoritmo con un input di dimensione n, possiamo definirne l efficienza dicendo che l algoritmo per calcolare il risultato finale impiega al più f(n) passi, l algoritmo ha complessità f(n).

7 Terminologia O (O grande) equivale al simbolo <=. o Corrisponde a al più come. o la complessità dell algoritmo è O(f(n)) equivale a il tempo d esecuzione dell algoritmo è <= a f(n). o (o piccolo) equivale al simbolo <. o la complessità dell algoritmo è o(f(n)) equivale a il tempo d esecuzione dell algoritmo è strettamente < a f(n). Θ (teta) corrispondente al simbolo =. o la complessità dell algoritmo è Θ(f(n)) equivale a il tempo d esecuzione dell algoritmo è = a f(n).

8 Terminologia Ω (omega grande) equivale al simbolo >=. o la complessità dell algoritmo è Ω(f(n)) equivale a dire il tempo d esecuzione dell algoritmo è >= a f(n). ω (omega piccolo) equivale al simbolo >. o la complessità dell algoritmo è ω(f(n)) è uguale a il tempo d esecuzione dell algoritmo è strettamente > di f(n).

9 Complessità computazionale La complessità computazionale di un algoritmo è la quantità di tempo necessaria per produrre il risultato finale. La complessità si esprime sotto forma di una funzione matematica che mette in relazione il tempo di esecuzione di un algoritmo con la dimensione dei dati di input. Il caso peggiore per un algoritmo è il caso in cui questo, per generare il risultato, impiega più tempo.

10 Complessità In molti casi la complessità è legata al tipo o al numero dei dati di input o Ad esempio la ricerca di un valore in un vettore ordinato dipende dalla dimensione del vettore La complessità può dipendere anche dalla disposizione e dal tipo di dati o Sempre nell algoritmo di ricerca in un vettore ordinato avremo il caso: Ottimo Pessimo Medio

11 Tipi di complessità lineare; logaritmica; quadratica; esponenziale; fattoriale.

12 Lineare l algoritmo ha complessità O(n) Esempio: o algoritmo di ricerca sequenziale di un elemento in un array

13 Logaritmica Esempio ricerca dicotomica in un array La ricerca dicotomica ha complessità O(log 2 (n))

14 Quadratica Un esempio è l algoritmo di ordinamento bubblesort eseguito su un array di elementi l algoritmo ha complessità O(n 2 )

15 Esponenziale l algoritmo della Torre di Hanoi ha complessità Ω(2 n ), La Torre di Hanoi è un rompicapo matematico composto da tre paletti e un certo numero di dischi di grandezza decrescente, che possono essere infilati in uno qualsiasi dei paletti. Il gioco inizia con tutti i dischi incolonnati su un paletto in ordine decrescente, in modo da formare un cono. Lo scopo del gioco è portare tutti dischi sull ultimo paletto, potendo spostare solo un disco alla volta e potendo mettere un disco solo su un altro disco più grande, mai su uno più piccolo

16 Torre di Hanoi

17 Fattoriale E quella che cresce più velocemente rispetto a tutte le precedenti. Esempio: algoritmo che calcola tutti gli anagrammi di una parola di n lettere distinte. la complessità di un tale algoritmo è Θ(n!)

18 logaritmica < lineare < quadratica < esponenziale < fattoriale

19 Alcuni esempi Calcolo complessità e confronto

20 Algoritmo 1 – Calcolo x 5 ALGORITMO 1 x,i,p: intero INIZIO leggi(x) i 1 p x MENTRE i<5 ESEGUI p p*x i i+1 FINEMENTRE scrivi(p) FINE x5 2x4 1 17

21 Algoritmo 2 – Calcolo x n ALGORITMO 2 x,i,p: intero INIZIO leggi(x) leggi(n) i n p 1 MENTRE i>0 ESEGUI p p*x i i-1 FINEMENTRE scrivi(p) FINE x n+1 1 3n+6

22 Ricerca sequenziale FUNZIONE RicercaSequenziale(V:vettore;N,P:Intero):Booleano Trovato : Booleano I : Intero INIZIO Trovato Falso I 1 MENTRE (I

23 Ricerca binaria FUNZIONE RicercaBinaria(V:vettore;N,X:Intero):Booleano Primo, Ultimo, Centro : Intero ; Trovato : Booleano INIZIO Primo 1; Ultimo N; Trovato Falso MENTRE (Primo<=Ultimo) AND (NOT Trovato) Centro (Primo+Ultimo)/2 SE V[Centro]=X ALLORA Trovato Vero ALTRIMENTI SE V[Centro]

24 Confronto fra n - n/2 - log(n)


Scaricare ppt "Unità F1 Analisi della complessità degli algoritmi."

Presentazioni simili


Annunci Google