1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di...

60
1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution- NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Transcript of 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di...

Page 1: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

1

Algoritmi e Strutture DatiCapitolo 2 - Analisi di algoritmi

Alberto MontresorUniversità di Trento

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

Page 2: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

2

Valutare la complessità in tempo

✦Complessità in tempo: cosa serve?

✦Per stimare il tempo impiegato da un programma

✦Per stimare il più grande input gestibile in tempi ragionevoli

✦Per confrontare l'efficienza di algoritmi diversi

✦Per ottimizzare le parti più importanti

✦“Complessità”: “Dimensione” → “Tempo”

✦Dobbiamo definire “dimensione” e “tempo”!

Page 3: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

3

Dimensione dell'input

✦Criterio di costo logaritmico:

✦La taglia dell'input è il numero di bit necessari per rappresentarlo

✦Esempio: moltiplicazione di numeri binari lunghi n bit

✦Criterio di costo uniforme

✦La taglia dell'input è il numero di elementi che lo costituiscono

✦Esempio: ricerca minimo in un array di n elementi

✦In molti casi:

✦Possiamo assumere che gli “elementi” siano rappresentati da un numero costante di bit

✦Le due misure coincidono a meno di una costante moltiplicativa

Page 4: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

4

Definizione di tempo

✦Tempo = “Wall-clock” time:

✦Il tempo effettivamente impiegato per eseguire un algoritmo

✦Dipende da troppi parametri:

✦bravura del programmatore

✦linguaggio di programmazione utilizzato

✦codice generato dal compilatore

✦processore, memoria (cache, primaria, secondaria)

✦sistema operativo, processi attualmente in esecuzione

✦Dobbiamo considerare un modello astratto

Page 5: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

5

Definizione di tempo

✦Tempo = “# operazioni elementari”

✦Quali operazioni possono essere considerate elementari?

✦Esempio: min(A, n)

✦Modello di calcolo: rappresentazione astratta di un calcolatore

✦Astrazione: deve semplificare dettagli, altrimenti è inutile

✦Realismo: deve riflettere la situazione reale

✦“Potenza” matematica:deve permettere di trarre conclusioni “formali” sul costo

Page 6: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

6

Da “Wikipedia”Da “Wikipedia”

Page 7: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

7

Macchina di TuringMacchina di Turing

…a1 a2D

Meccanismo di controllo

(Programma)

Nastro

Cella

Testina

La macchina:legge il simbolo sotto la testinamodifica il proprio stato (finito) internoscrive un nuovo simbolo nella cellamuove la testina a destra o a sinistraMarcatore della prima

cella

✦Fondamentale nello studio della calcolabilità✦Non adatto per i nostri scopi

✦Livello troppo basso

✦Non sufficientemente realistico

Page 8: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

8

Modello RAMModello RAM

✦Random Access Machine (RAM)

✦Memoria:✦Quantità infinita di celle di dimensione finita✦Accesso in tempo costante (indipendente dalla posizione)

✦ Processore (singolo)✦Set di istruzioni elementari simile a quelli reali:

✦somme, addizioni, moltiplicazioni, operazioni logiche, etc. ✦istruzioni di controllo (salti, salti condizionati)

✦Costo delle istruzioni elementari✦Uniforme, ininfluente ai fini della valutazione (come vedremo)

Page 9: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

9

Tempo di calcolo di min()

✦Ogni istruzione richiede un tempo costante per essere eseguita

✦Costante diversa da istruzione a istruzione

✦Ogni istruzione viene eseguita un certo # di volte, dipendente da n

Page 10: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

10

Tempo di calcolo di binarySearch()

✦Il vettore viene suddiviso in due parti

Page 11: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

11

Tempo di calcolo di binarySearch()

✦Assunzioni

✦Per semplicità, n =2k è una potenza di 2

✦L’elemento cercato non è presente (caso pessimo)

✦Ad ogni suddivisione, scegliamo sempre la parte DX di dimensione n/2(caso pessimo)

✦Due casi

✦Equazione di ricorrenza

Page 12: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

12

Tempo di calcolo di binarySearch()

✦Soluzione ricorrenza per sostituzione

✦Ricordate che n = 2k ⇒ k = log n

Page 13: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

13

Analisi di algoritmi

✦Analisi del caso pessimo ✦La più importante✦Il tempo di esecuzione nel caso peggiore è un limite superiore al tempo di esecuzione per qualsiasi input✦Per alcuni algoritmi, il caso peggiore si verifica molto spesso

✦Es.: ricerca di dati non presenti in un database✦Il caso medio è spesso cattivo quanto quello peggiore

✦Vedi insertionSort()✦Analisi del caso medio

✦Difficile in alcuni casi: cosa si intende per “medio”?✦Distribuzione uniforme

✦Analisi del caso ottimo✦Può avere senso se l’input ha una distribuzione particolare

Page 14: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

14

Limiti asintotici superiori e inferiori

Page 15: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

15

Algoritmi: primi esempiAlgoritmi: primi esempi

✦Nei prossimi lucidi, vedremo alcuni semplici algoritmi

✦Somme e moltiplicazioni (!)

✦Ordinamento

✦Vogliamo riflettere su:

✦In alcuni casi, si può migliorare quanto si ritiene “normale”

✦In altri casi, è impossibile fare di meglio

✦Qual è il rapporto fra un problema computazionale e l'algoritmo?

2 X 2 = 5

Page 16: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

16

Moltiplicare numeri complessi

✦Ricordate come moltiplicare due numeri complessi?

✦(a+bi)(c+di) = [ac – bd] + [ad + bc]i

✦Input: a, b, c, d Output: ac-bd, ad+bc

✦Modello di calcolo:

✦Costo moltiplicazione: 1, costo addizione/sottrazione: 0.01

✦Domande

✦Quanto costa l'algoritmo “banale” dettato dalla definizione?

✦Potete fare di meglio? (Soluzione di Gauss)

✦Qual è il ruolo del modello di calcolo?

Page 17: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

17

Moltiplicare numeri complessiMoltiplicare numeri complessi

✦Questioni aperte...

✦Si può fare di meglio?

✦Oppure, è possibile dimostrare che non si può fare di meglio?

✦Alcune riflessioni

✦In questo modello “estremamente semplice”, effettuare 3 moltiplicazioni invece di 4 risparmia il 25% del costo

✦Esistono contesti in cui effettuare 3 moltiplicazioni invece di 4 può produrre un risparmio maggiore

Page 18: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

18

Sommare numeri binariSommare numeri binari

✦Algoritmo elementare della somma - sum()

✦richiede di esaminare tutti gli n bit

✦costo totale cn (c ≡ costo per sommare tre bit e generare riporto)

✦Domanda

✦Esiste un metodo più efficiente?

* * * * * * * * * * * * * * ** * * * * * * * * * * * * * *

+* * * * * * * * * * * * * *

* * * * * * * * * * * * * * * *

Page 19: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

19

Moltiplicare numeri binariMoltiplicare numeri binari

* * * * * * * * * * * * * *

* * * * * * ** * * * * * *

* * * * * * ** * * * * * ** * * * * * *

* * * * * * * * * * * * * *

x

n2

✦Algoritmo “elementare” del prodotto - prod()

Page 20: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

20

Moltiplicare numeri binari

✦Confronto fra i costi di esecuzione

✦Somma: Tsum(n) = c1n

✦Prodotto: Tprod(n) = c2n2 + c3n

✦Si potrebbe erroneamente concludere che...

✦Il problema della moltiplicazione è inerentemente più costoso del problema dell'addizione

✦“Conferma” la nostra esperienza

Page 21: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

21

Moltiplicare numeri binari

✦ Confronto fra problemi

✦Per provare che il problema del prodotto è più costoso del problema della somma, dobbiamo provare che non esiste una soluzione in tempo lineare per il prodotto

✦Abbiamo confrontato gli algoritmi, non i problemi

✦A parità di dimensione dell'input:l'algoritmo di somma è più efficiente dell'algoritmo del prodotto

✦Questione aperta se esista un algoritmo in tempo lineareper il prodotto

✦Esiste comunque la possibilità di migliorare

Page 22: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

22

Moltiplicare numeri binariMoltiplicare numeri binari

✦Un metodo algoritmico: divide-et-impera✦Divide: dividi il problema in sottoproblemi di dimensioni inferiori✦Impera: risolvi i sottoproblemi in maniera ricorsiva✦Combina: unisci le soluzioni dei sottoproblemi in modo da ottenere la risposta del problema principale

✦Moltiplicazione ricorsiva✦X = a 2n/2 + b ✦Y = c 2n/2 + d✦XY = ac 2n + (ad+bc) 2n/2 + bd✦Nota:

✦Moltiplicare per 2t ≡ shift di t posizioni, in tempo lineare✦Sommare due vettori di bit anch’esso in tempo lineare

a b

c d

Page 23: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

23

Moltiplicare numeri binariMoltiplicare numeri binari

✦Algoritmo pdi(): prodotto divide-et-impera

✦Costo della procedura pdi()

Page 24: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

24

Svolgere la ricorsioneSvolgere la ricorsione

Page 25: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

25

Moltiplicare numeri binari

✦Confronto fra algoritmi: tutto questo lavoro per niente?

✦Tprod(n) = O(n2)

✦Tpdi(n) = O(n2)

✦La versione ricorsiva chiama se stessa 4 volte.

✦X = a 2n/2 + b

✦Y = c 2n/2 + d

✦XY = ac 2n + (ad+bc) 2n/2 + bd

✦Domanda

✦E' possibile ridurre il numero di moltiplicazioni?

Page 26: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

26

Moltiplicazione di Karatsuba (1962)

✦Gaussified-product (Karatsuba 1962)

✦A1 = ac

✦A3 = bd

✦m = (a+b)(c+d)=ac+ad+bc+bd

✦A2 = m−A1−A3=ad+bc

Page 27: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

27

Moltiplicare numeri binariMoltiplicare numeri binari

✦Gaussified-product (Karatsuba 1962)

✦Esempio: ✦Tpdi(106) =1012

✦Tkaratsuba(106) = 3 10⋅ 9

✦Conclusioni

✦L'algoritmo “naif” non è sempre il migliore...

✦... può esistere spazio di miglioramento...

✦... a meno che non sia possibile dimostrare il contrario!

Page 28: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

28

Ordinamento

✦Problema dell'ordinamento

✦Input: una sequenza A di n numeri <a1, a2, ..., an>

✦Output: una permutazione B=<b1, b2, ..., bn> di A tale per cuib1 ≤ b2 ≤ ... ≤ bn

✦Algoritmo “naif”

✦Generare tutte le permutazioni (n!) e verificare in tempo O(n)se sono ordinate

✦Costo totale: O(n n!)

Page 29: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

29

Selection sort

✦Complessità (caso medio, pessimo, ottimo)

Page 30: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

30

Insertion Sort

✦Algoritmo efficiente per ordinare piccoli insieme di elementi

✦Come ordinare una sequenza di carte da gioco “a mano”

Page 31: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

31

Insertion Sort - AnalisiInsertion Sort - Analisi

✦Per questo algoritmo:

✦Il costo di esecuzione non dipende solo dalla dimensione...

✦ma anche dalla distribuzione dei dati in ingresso

✦Domande

✦Qual è il costo nel caso l'array sia già ordinato?

✦Qual è il costo nel caso l'array sia ordinato in ordine inverso?

✦Cosa succede “in media”?✦Informalmente

Page 32: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

32

Merge Sort

✦Insertion Sort

✦E' basato su un approccio incrementale (A[1...j-1] ordinato, aggiungi A[j])

✦Merge Sort

✦E' basato sulla tecnica divide-et-impera vista in precedenza

✦Divide:✦Dividi l'array di n elementi in due sottovettori di n/2 elementi

✦Impera:✦Chiama MergeSort ricorsivamente su i due sottovettori

✦Combina:✦Unisci (merge) le due sequenze ordinate

Page 33: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

33

Merge Sort

✦Il nucleo di Merge Sort è nel passo combina (merge)

✦merge(A, primo, ultimo, mezzo)✦A è un array di lunghezza n✦primo, ultimo, mezzo indici tali per cui

1 ≤ primo ≤ mezzo < ultimo ≤ n

✦La procedura merge() suppone che i sottovettori A[primo...mezzo] e A[mezzo+1...ultimo] siano ordinati

✦I due vettori vengono fusi in un unico sottovettore ordinato A[primo...ultimo]

✦Qual è l'idea?

✦Fondere i due sottovettori “sfruttando” il fatto che sono ordinati

Page 34: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

34

Merge SortMerge Sort

Page 35: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

35

Merge Sort

✦Come funziona merge():

A B

1 5 7 + 2 4 6

5 7 + 2 4 6 1

5 7 + 4 6 1 2

5 7 + 6 1 2 4

7 + 6 1 2 4 5

7 + 1 2 4 5 6

+ 7 1 2 4 5 6

1 2 4 + 5 6 7 ✦Domanda

✦ Costo computazionale di merge()

Page 36: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

36

Merge SortMerge Sort

✦Programma completo

✦Chiama ricorsivamente se stesso e usa merge() per unire i risultati

✦Caso base: sequenze di lunghezza ≤ 1 sono già ordinate

Page 37: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

37

Merge SortMerge Sort

Page 38: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

38

Analisi di Merge-Sort

✦Una assunzione semplificativa

✦n=2k, ovvero l'altezza dell'albero di sottodivisioni è esattamente k

✦tutti i sottovettori hanno dimensioni che sono potenze esatte di 2

✦Costi di Merge Sort

✦Risoluzione della ricorrenza

✦Domanda

✦Ricavare questo risultato svolgendo l’equazione di ricorrenza

Page 39: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

39

Confronto fra ordini di grandezza

Page 40: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

40

Limitazioni inferiori e algoritmi ottimi

✦Dato un problema

✦Se trovate un algoritmo A con complessità O(g(n)), avete stabilito un limite superiore alla complessità del problema - g(n)

✦Se dimostrate che qualunque algoritmo per il problema deve avere complessità Ω(f(n)), avete stabilito un limite inferiore all complessità del problema - f(n)

✦Se f(n)=g(n), allora A è un algoritmo ottimo

Page 41: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

41

Limitazioni inferiori - tecniche

✦Dimensione dei dati✦Se un problema ha in ingresso n dati e richiede di esaminarli tutti, allora una limitazione inferiore della complessità è Ω(n)✦Esempio: sommare due numeri binari

✦Eventi contabili✦Se un problema richiede che un certo evento sia ripetuto almeno n volte, allora una limitazione inferiore della complessità è Ω(n)✦Esempio: ricerca del minimo richiede almeno n-1 confronti

✦Oracolo✦Se un oracolo, utilizzando una certa regola ignota all’algoritmo, “divina” ad ogni opportunità la situazione più sfavorevole, allora combattendo contro di esso si può individuare una limitazione inferiore✦Esempio: merge()

Page 42: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

42

Limitazioni inferiori

✦Caveat emptor!

✦Le tecniche illustrate sono semplici, ma nascondono sottigliezze

✦Fare attenzioni alle assunzioni di base✦Ricerca in vettore ordinato: O(log n), non O(n)!✦Ricerca del minimo in vettore ordinato: O(1), non O(n)!

✦Esempio più complesso: ordinamento

✦Limitazione inferiore Ω(n) - perché?

✦Limitazione superiore O(n log n)

✦Possiamo “restringere” questo scarto?

✦Più avanti mostremo...

Page 43: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

43

Limitazioni inferiori

✦Caveat emptor!✦Le tecniche illustrate sono semplici, ma nascondono sottigliezze✦Fare attenzioni alle assunzioni di base

✦Ricerca in vettore ordinato: O(log n), non O(n)!✦Ricerca del minimo in vettore ordinato: O(1), non O(n)!

✦Esempio più complesso: ordinamento✦Limitazione inferiore Ω(n) - perché?✦Limitazione superiore O(n log n)✦Possiamo “restringere” questo scarto?✦Più avanti mostreremo...

✦che Merge Sort è ottimo, in quanto è possibile dimostrare che Ω(n log n) è un limite inferiore all’ordinamento per gli algoritmibasati su confronti

Page 44: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

44

Counting Sort

✦Come funziona:

✦I numeri da ordinare sono compresi in un range [1..k]

✦Costruire un array B[1..k] che conta il numero di volte che compare un valore in [1..k]

✦Ricollocare i valori così ottenuti in A

Page 45: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

45

Counting Sort

✦Complessità

✦O(n+k)

✦Se k è O(n), allora la complessità è O(n)

✦Discussione su limite inferiore

✦Counting Sort non è basato su confronti

✦Abbiamo cambiato le condizioni di base

✦Se k è O(n3), questo algoritmo è peggiore di tutti quelli visti finora

Page 46: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

46

Tecniche di analisi

✦Per risolvere le relazioni di ricorrenza

✦Analisi per sostituzione (accennata)

✦Analisi per livelli (accennata)

✦Relazioni di ricorrenza comuni✦Ricorrenze lineari di ordine costante✦Ricorrenze lineari con partizione bilanciata

✦Analisi per tentativi

✦Alla lavagna!

Page 47: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

47

Analisi ammortizzata

Si considera il tempo richiesto per eseguire, nel caso pessimo, un'intera sequenza di operazioni

✦Sequenza

✦Operazioni costose e meno costose

✦Se operazioni più costose sono poco frequenti, allora il loro costo può essere ammortizzato dalle operazioni meno costose

✦Importante differenza

✦Analisi del caso medio: ✦basata su probabilità, su singola operazione

✦Analisi ammortizzata: ✦deterministica, su operazioni multiple, caso pessimo

Page 48: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

48

Metodi per l'analisi ammortizzata

✦Metodo dell'aggregazione

✦Si calcola la complessità O(f(n)) per eseguire n operazioni in sequenza nel caso pessimo

✦Il costo ammortizzato di una singola operazione è O(f(n)/n)

✦Metodo degli accantonamenti (o del contabile)

✦Alle operazioni vengono assegnati costi ammortizzati che possono essere maggiori/minori del loro costo effettivo

✦Provare che la somma dei costi ammortizzati è unlimite superiore al costo effettivo

✦Metodo del potenziale

✦Lo stato del sistema viene descritto tramite differenze di potenziale

✦Tecnica derivata dalla fisica

Page 49: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

49

EsempioEsempio

✦Contatore binario

✦Implementiamo un contatore binario di k bit con un array di bit

✦Un numero binario x registrato in A ha il bit meno significativo in A[0] e il più significativo in A[k-1] per cui:

✦Supponiamo che A venga usato per contare a partire da x=0 usando l’operazione di incremento

Page 50: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

50

Esempio - ContatoreEsempio - Contatore

8 0 0 0 0 1 0 0 0 15

9 0 0 0 0 1 0 0 1 16

10 0 0 0 0 1 0 1 0 18

14 0 0 0 0 1 1 1 0 25

13 0 0 0 0 1 1 0 1 23

11 0 0 0 0 1 0 1 1 19

12 0 0 0 0 1 1 0 0 22

15 0 0 0 0 1 1 1 1 26

16 0 0 0 1 0 0 0 0 31

x A[7] A[6] A[5] A[4] A[3] A[2] A[1] A[0] costo

0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 1 1

2 0 0 0 0 0 0 1 0 3

3 0 0 0 0 0 0 1 1 4

4 0 0 0 0 0 1 0 0 7

5 0 0 0 0 0 1 0 1 8

6 0 0 0 0 0 1 1 0 10

7 0 0 0 0 0 1 1 1 11

Page 51: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

51

Esempio - Contatore

✦Analisi “grossolana”

✦Una singola operazione di incremento richiede tempo O(k) nel caso pessimo

✦Limite superiore O(nk) per una sequenza di n incrementi

✦Considerazioni per un'analisi più stretta

✦Possiamo però osservare che il tempo necessario ad eseguire l’intera sequenza è proporzionale al numero di bit che vengono modificati

✦Quanti bit vengono modificati?

Page 52: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

52

Esempio: funzionamentoEsempio: funzionamento

8 0 0 0 0 1 0 0 0 15

9 0 0 0 0 1 0 0 1 16

10 0 0 0 0 1 0 1 0 18

14 0 0 0 0 1 1 1 0 25

13 0 0 0 0 1 1 0 1 23

11 0 0 0 0 1 0 1 1 19

12 0 0 0 0 1 1 0 0 22

15 0 0 0 0 1 1 1 1 26

16 0 0 0 1 0 0 0 0 31

x A[7] A[6] A[5] A[4] A[3] A[2] A[1] A[0] costo

0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 1 1

2 0 0 0 0 0 0 1 0 3

3 0 0 0 0 0 0 1 1 4

4 0 0 0 0 0 1 0 0 7

5 0 0 0 0 0 1 0 1 8

6 0 0 0 0 0 1 1 0 10

7 0 0 0 0 0 1 1 1 11

Page 53: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

53

Esempio – Metodo dell'aggregazione

✦Dalla simulazione si vede che:

✦A[0] viene modificato ad ogni incremento del contatore,

✦A[1] viene modificato ogni 2 incrementi,

✦A[2] viene modificato ogni 4 incrementi....✦In generale,

✦A[i] viene modificato ogni 2i incrementi✦Quindi:

✦Costo aggregato:

✦Costo ammortizzato: 2n/n = 2 = O(1)

Page 54: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

54

Metodo degli accantonamenti o del contabile

✦Si assegna un costo ammortizzato distinto(*) ad ognuna delle operazioni possibili

✦Il costo ammortizzato può essere diverso dal costo effettivo

✦Le operazioni meno costose vengono caricate di un costo aggiuntivo detto credito

✦costo ammortizzato = costo effettivo + credito prodotto

✦I crediti accumulati saranno usati per pagare le operazioni più costose✦costo ammortizzato = costo effettivo – credito consumato

(*) Nell'aggregazione, abbiamo calcolato costo ammortizzato costante

Page 55: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

55

Come assegnare costi ammortizzati?Come assegnare costi ammortizzati?

✦Lo scopo è:

✦dimostrare che la somma dei costi ammortizzati ai è un limite superiore ai costi effettivi ci:

✦dimostrare che il valore così ottenuto è “poco costoso”

✦Alcuni punti da ricordare

✦La dimostrazione deve essere valida per tutte le sequenze di input (caso pessimo)

✦Il credito è espresso dalla seguente formula e quindi è positivo

Page 56: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

56

Esempio – Metodo degli accantonamentiEsempio – Metodo degli accantonamenti

✦Costi

✦Costo effettivo dell'operazione increment(): d (dove d è il numero di bit che cambiano valore)

✦Costo ammortizzato dell'operazione increment(): 2✦1 per cambio del bit da 0 a 1 (costo effettivo)✦1 per il futuro cambio dello stesso bit da 1 a 0

✦Ne segue che: ✦in ogni istante, il credito è pari al numero di bit 1 attualmente presenti

✦Costo totale ammortizzato: O(n)

Page 57: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

57

Metodo del potenzialeMetodo del potenziale

✦Come funziona

✦Si associa alla struttura dati D una funzione di potenziale Φ(D)

✦Requisiti:✦le operazioni meno costose devono incrementare Φ(D)✦le operazioni più costose devono decrementare Φ(D)

✦Costo ammortizzato:

✦sommatoria del costo effettivo e della variazione di potenziale

Page 58: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

58

Metodo del potenzialeMetodo del potenziale

✦Il costo ammortizzato di una sequenza di n operazioni è:

✦Se la variazione di potenziale Φ(Dn)-Φ(D0) è non negativa:

✦il costo ammortizzato A è un limite superiore al costo reale

✦Altrimenti:

✦la variazione di potenziale negativa deve essere compensata da un aumento adeguato del costo ammortizzato delle operazioni.

Page 59: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

59

Esempio 2 – Metodo del potenzialeEsempio 2 – Metodo del potenziale

✦Scegliamo come funzione potenziale Φ(A) il numero bit 1 presenti nel contatore.

✦Caso 1: Partendo dal valore 0

✦All'inizio, zero bit accesi → Φ(A0) = 0

✦Alla fine, Φ(An) ≥ 0 → la differenza di potenziale è non negativa

operazione costo differenza di costo effettivo potenziale ammortizzato

add 1+t -t+1 2

Page 60: 1 Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the Creative Commons.

60

EserciziEsercizi

✦Esercizio 1

✦Dato un array A[1..n] di interi e un intero v, descrivere un algoritmo che determini se esistono due elementi in A la cui somma è esattamente v

✦Esercizio 2

✦Dato un array A[1..n] di interi positivi, descrivere un algoritmo O(n) che determini se esistono due elementi in A la cui somma è esattamente 17

✦Esercizio 3

✦Siano date n monete d'oro, tutte dello stesso peso tranne una contraffatta che pesa meno, ed una bilancia con due piatti.Disegnare un algoritmo per individuare la moneta contraffatta in al più log n pesate.