La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Elementi di complessità Complessità di un algoritmo Esempio: insertion sort Considerazioni Notazione asintotica.

Presentazioni simili


Presentazione sul tema: "Elementi di complessità Complessità di un algoritmo Esempio: insertion sort Considerazioni Notazione asintotica."— Transcript della presentazione:

1 Elementi di complessità Complessità di un algoritmo Esempio: insertion sort Considerazioni Notazione asintotica

2 Complessità di un algoritmo In genere, la complessità di un algoritmo si valuta a seconda del tempo di esecuzione e dello spazio di memoria occupato durante la sua esecuzione. Tempo di esecuzione: si vuole dare una stima del tempo necessario per eseguire lalgoritmo, dal suo inizio fino al suo temine. Molto spesso si cerca di definire questo a seconda della dimensione dellinput. Spazio di memoria : si vuole dare una stima della memoria necessaria per eseguire lalgoritmo, dal suo inizio fino al suo temine. Informalmente, tutte le variabili utilizzate durante lalgoritmo contribuiscono ad aumentare la quantità di memoria che deve essere allocata.

3 Esempio di calcolo del tempo di esecuzione Si vuole associare ad ogni istruzione un tempo di esecuzione dato il modello computazionale. INSERTION-SORT(A) 1. for j 2 to lenght[A] 2. do key A[j] 3. i j-1 4. while (i>0) and (A[i]>key) 5. do A[i+1] A[i] 6. i i-1 7.A[i+1] key Ad ogni ciclo for Si vuole che il vettore A[1,…,n] sia ordinato in ordine crescente, ossia A[1] A[2] … A[n] key

4 Esempio di calcolo del tempo di esecuzione Analisi: INSERTION-SORT(A) 1. for j 2 to lenght[A] 2. do key A[j] 3. i j-1 4. while (i>0) and (A[i]>key) 5. do A[i+1] A[i] 6. i i-1 7.A[i+1] key Costo c1 c2 c3 c4 c5 c6 c7 Volte eseguite t j dipende dal numero di volte che il controllo per eseguire ciclo while viene fatto ad ogni ciclo for (j). Si ha 1 t j i o anche 1 t j j-1.

5 Esempio di calcolo del tempo di esecuzione Supponiamo che c1=c2=…=c7=c=1. Possiamo calcolare il tempo complessivo dellalgoritmo: Nel caso migliore (BEST CASE) si ha t j =1 per ogni ciclo while. Nel caso peggiore (WORST CASE) si ha t j =j per ogni ciclo while.

6 Esempio di calcolo del tempo di esecuzione Alcune considerazioni: Il tempo di complessità nel caso peggiore ci dà una garanzia del tempo massimo di esecuzione dellalgoritmo. Spesso succede che il caso medio ha un comportamento simile a quello del caso peggiore. Nel nostro caso si ha infatti: Il calcolo del tempo nel caso medio risulta spesso più complesso del caso peggiore.

7 Quando un algoritmo ha una buona complessità? Quando il tempo di complessità è polinomiale. Quando il tempo di complessità è limitata da una funzione polinomiale. Ecco una motivazione pratica: nn lognn2n2 n3n3 2n2n 1 ms 1000 dati 140 dati 31 dati 10 dati 9 dati 1 sec 10 6 dati dati 1000 dati 100 dati 19 dati 1 ora 3,6x 10 9 dati 1,6X 10 8 dati dati 1532 dati 31 dati Si suppone che in 1 ms si riesca ad eseguire 1000 operazioni (istruzioni).

8 Notazione asintotica Θ f(n) c 1 g(n) c 2 g(n) f(n) cresce asintoticamente come g(n)! Esempio: n0n0

9 Notazione asintotica О f(n) c g(n) f(n) cresce asintoticamente come non più di g(n)! Esempio: n0n0

10 Notazione asintotica Ω f(n) c g(n) f(n) cresce asintoticamente come almeno quanto g(n)! Esempio: n0n0

11 Alcune proprietà Proprietà transitiva Proprietà riflessiva Proprietà simmetrica Proprietà antisimmetrica


Scaricare ppt "Elementi di complessità Complessità di un algoritmo Esempio: insertion sort Considerazioni Notazione asintotica."

Presentazioni simili


Annunci Google