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

60
1 © Alberto Montresor 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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto...

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

1© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

2© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

3© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

4© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

5© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

6© Alberto Montresor

Da “Wikipedia”Da “Wikipedia”

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

7© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

8© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

9© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

10

© Alberto Montresor

Tempo di calcolo di binarySearch()

✦Il vettore viene suddiviso in due parti

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

11

© Alberto Montresor

Tempo di calcolo di binarySearch()

✦Assunzioni✦Per semplicità, assumiamo n potenza di 2: n =2k

✦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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

12

© Alberto Montresor

Tempo di calcolo di binarySearch()

✦Soluzione ricorrenza per sostituzione✦Ricordate che n = 2k ⇒ k = log n

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

13

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

14

© Alberto Montresor

Limiti asintotici superiori e inferiori

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

15

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

16

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

17

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

18

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

19

© Alberto Montresor

Moltiplicare numeri binariMoltiplicare numeri binari

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

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

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

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

x

n2

✦Algoritmo “elementare” del prodotto - prod()

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

20

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

21

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

22

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

23

© Alberto Montresor

Moltiplicare numeri binariMoltiplicare numeri binari

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

✦Costo della procedura pdi()

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

24

© Alberto Montresor

Svolgere la ricorsioneSvolgere la ricorsione

Level i is the sum of 4i copies of n/2i

1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1

. . . . . . . . . . . . . . . . . . . . . . . . . .

n/2 + n/2 + n/2 + n/2

nn0

n/2

n/2

n/2

n/2

1

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

n/4

2

log2 n ............................................................................

.......................

Livello i: ∑4i istanze di dimensione n/2ii

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

25

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

26

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

27

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

28

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

29

© Alberto Montresor

Selection sort

✦Complessità (caso medio, pessimo, ottimo)

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

30

© Alberto Montresor

Insertion Sort

✦Algoritmo efficiente per ordinare piccoli insiemi di elementi

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

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

31

© Alberto Montresor

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 il vettore sia già ordinato?

✦Qual è il costo nel caso il vettore sia ordinato in ordine inverso?

✦Cosa succede “in media”?✦Informalmente

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

32

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

33

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

34

© Alberto Montresor

Merge SortMerge Sort

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

35

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

36

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

37

© Alberto Montresor

Merge SortMerge Sort

Partizionamento

Merge

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

38

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

39

© Alberto Montresor

Confronto fra ordini di grandezza

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

40

© Alberto Montresor

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 alla complessità del problema - f(n)

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

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

41

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

42

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

43

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

44

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

45

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

46

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

47

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

48

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

49

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

50

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

51

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

52

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

53

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

54

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

55

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

56

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

57

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

58

© Alberto Montresor

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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

59

© Alberto Montresor

Esempio 2 – Metodo del potenzialeEsempio 2 – Metodo del potenziale

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

✦Nota:✦t è il numero di bit 1 incontrati a partire dal meno significativo, prima di incontrare un bit 0

✦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 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 2 - Analisi di algoritmi Alberto Montresor Università di Trento This work is licensed under the.

60

© Alberto Montresor

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.