Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf ·...

40
Il concetto di Algoritmo Analisi di Algoritmi Corso di Perfezionamento Modelli di calcolo e analisi di algoritmi Maria Rita Di Berardini 1 1 Dipartimento di Matematica e Informatica Universit` a di Camerino 11 febbraio 2009 Maria Rita Di Berardini Corso di Perfezionamento

Transcript of Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf ·...

Page 1: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

Corso di PerfezionamentoModelli di calcolo e analisi di algoritmi

Maria Rita Di Berardini1

1Dipartimento di Matematica e InformaticaUniversita di Camerino

11 febbraio 2009

Maria Rita Di Berardini Corso di Perfezionamento

Page 2: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Il concetto di “algoritmo”

In maniera informale, un algoritmo e definito come una seriecompleta e non ambugua di regole (passi, operazioni, ... ) checonsentono di risolvere un dato problema computazionale.

Un problema computazionale e caratterizzato dai dati di cui sidispone all’inizio (dati in ingresso, o valori in input) e dairisultati che si vogliono ottenere (valori in output)

Risolve un problema computazionale significa fornire unmetodo, ossia un algoritmo, che consenta di ottenere irisultati attesi a partire da un certo insieme di dati in input

Maria Rita Di Berardini Corso di Perfezionamento

Page 3: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Un po di storia

Etimologia:Il termine algoritmo significa procedimento di calcolo. Deriva daltermine latino medievale algorismus, che a sua volta deriva dalnome del matematico persiamo Abu Jafar Mohammad ibn-Musaal-Khowarismi, vissuto nel IX (?) secolo

Algoritmi nella storia

Algoritmi di tipo numerico sono studiati da babilonesi e indiani

Algoritmi in uso ancora oggi sono stati studiati da matematici greci2000 anni fa – Algor. di Euclide per il MCD, algoritmi geometrici,

Maria Rita Di Berardini Corso di Perfezionamento

Page 4: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Algoritmo Euclideo per il calcolo del MCD

Siano a e b due numeri interi non entrambi pari a zero. Ilmassimo comun divisore tra a e b (MCD(a, b)) e il piu grandenumero naturale per il quale possono essere divisi sia a che b.

Proprieta del MCD:

se a = b allora MCD(a, b) = ase a > b allora MCD(a, b) = MCD(a− b, b)se a < b allora MCD(a, b) = MCD(a, b − a)

Algoritmo1 se a = b allora poni MCD(a, b) = a e termina2 se a > b allora poni a = a− b3 se a < b allora poni b = b − a4 torna al punto 1

Maria Rita Di Berardini Corso di Perfezionamento

Page 5: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Determinazione del minimo

Definizione del problema: ricerca del minimo in un array:

min(A[1 . . . n]) = a sse a ≤ A[i ] per ogni i = 1, . . . , n

(stabilisce una relazione tra input e output)

Algoritmo (descrive una procedura computazionale per realizzaretale relazione):

min(A) min(A) //se A e ordinatoa← A[1] return A[1]for i ← 2 to length[A]

do if A[i ] < aa← A[i ]

return a

Maria Rita Di Berardini Corso di Perfezionamento

Page 6: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Algoritmo: una definizione piu formale

Definition

Un algoritmo e un insieme finito e ordinato di passisemplici, eseguibili e non ambigui, che definisconoun procedimento atto a risolvere un problema, ouna classe di problemi, utilizzando dei dati iniziali eottenendo dei risultati.

Maria Rita Di Berardini Corso di Perfezionamento

Page 7: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Le quattro proprieta fondamentali di un algoritmo

1 Finitezza: la sequenza di passi di cui si compone un algoritmo deveessere finita. Nonostante cio l’esecuzione dell’algoritmo potrebberichiedere un tempo non finito.

2 Risolutivita: la sequenza di passi di cui si compone un algoritmodeve portare ad un risultato che consista nella soluzione delproblema o nella diagnostica sulla mancata soluzione.

3 Effettuabilita: le istruzioni devono essere eseguibili materialmente,ossia deve esistere un agente di calcolo in grado di eseguire ogniistruzione in un tempo finito.

4 Definitezza: ogni passo deve essere non ambiguo. Questo implicanon solo che i passi devono essere espressi chiaramente, ma ancheche il passaggio da un passo al successivo deve avvenire in modoesplicitamente previsto dall’algoritmo.

Maria Rita Di Berardini Corso di Perfezionamento

Page 8: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Perche parliamo di algoritmi

La teoria degli algoritmi ha iniziato a stabilizzarsi agli inizi del XX secolo,mentre ...

Le tecniche di progettazione di algoritmi e di analisi di correttezza e diefficienza si sono evolute nella seconda meta del XX secolo grazie alladiffusione dei calcolatori elettronici

Ovunque si impieghi un calcolatore occorrono algoritmi corretti eefficienti che ne utilizzino al massimo le possibilita. Esempi:

controllo dei voli aerei

regolazione reattori nucleari

reperimento d’informazioni da archivi

smistamento di comunicazioni telefoniche

gioco degli scacchi

controllo della produzione di una catena di montaggio

Maria Rita Di Berardini Corso di Perfezionamento

Page 9: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Come valutiamo gli algoritmi

Risolve correttamente il problema?

un algoritmo si dice corretto se, per ogni istanza di input, siferma con l’output corretto

un algoritmo corretto risolve il problema computazionale dato

dimostrazione matematica, descrizione informale

Risolve il problema in maniera efficiente (analisi di algoritmi)?

definizione di efficienza (tempo o memoria)

alcuni problemi non possono essere risolti in maniera efficiente

esistono delle soluzioni ottime: non e possibile fare di meglio

Maria Rita Di Berardini Corso di Perfezionamento

Page 10: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Algoritmi e Programmi

Gli algoritmi vengono descritti tramite programmi, che si avvalgonodi istruzioni e costrutti dei linguaggi di programmazione per essereeseguiti da calcolatori elettronici

I programmi sono formulazioni concrete di algoritmi astratti che sibasano su particolari rappresentazioni dei dati, e utilizzanooperazioni di manipolazione dei dati, messe a disposizione da unospecifico linguaggio di programmazione

Le proprieta degli algoritmi sono talmente fondamentali, generali erobuste, da essere indipendenti dalle caratteristiche di specificilinguaggi di programmazione o di particolari calcolatori elettronici

Maria Rita Di Berardini Corso di Perfezionamento

Page 11: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Strutture Dati

Il concetto di algoritmo e inscindibile da quello di dato: perrisolvere un problema computazionale, occorre organizzare edelaborare dati in input per produrre dati in output.

Un algoritmo puo essere visto come un manipolatore di dati: afronte di dati in ingresso che descrivono il problema producedati in uscita come risultato del problema.

E fondamentale che i dati siano ben organizzati e strutturatiin modo che il calcolatore li possa elaborare efficientemente.

L’efficienza di un algoritmo dipende in maniera critica dalmodo in cui sono organizzati i dati su cui l’algoritmo stessodeve operare.

Maria Rita Di Berardini Corso di Perfezionamento

Page 12: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Strutture Dati

Tra i dati su cui un algoritmo opera possono sussistere dellerelazioni logiche che definiscono delle “strutturazioni” dei datistessi.

Per esempio, e possibile rappresentare dati eterogenei quali ilnome, cognome e data di nascita di una persona, definendoun “dato strutturato” (un record) costituito dall’ insieme deidue campi di testo (per il nome ed il cognome) ed unoalfa-numerico (per la data di nascita).

Una struttura dati e un insieme di valori logicamente correlatie opportunamente memorizzati, per i quali sono definiti deicostruttori, degli operatori di selezione e degli operatori dimanipolazione.

Maria Rita Di Berardini Corso di Perfezionamento

Page 13: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

algoritmi, programmi e strutture dati

Strutture Dati

Le strutture dati possono essere classicate in base alla lorooccupazione di memoria

Strutture dati statiche: la quantita di memoria di cuinecessitano e determinabile a priori (esempi: array, record).

Strutture dati dinamiche: la quantita di memoria di cui essenecessitano varia a tempo desecuzione e puo essere diversa daesecuzione a esecuzione (esempi: liste, code, pile, alberi,grafi).

Analizzeremo le principali strutture dati (ed in particolare,pile, code, liste, alberi, grafi) per fornirvi gli strumentinecessari per scegliere di volta in volta la struttura dati chemegli si adatta all’algoritmo che state progettando.

Maria Rita Di Berardini Corso di Perfezionamento

Page 14: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

Analisi di Algoritmi

Analizzare un algoritmo vuol dire determinare le risorse necessarieall’algoritmo in termini di

spazio di memoria(quantita di memoria utilizzata durante l’esecuzione)

etempo computazionale

(tempo di esecuzione)

Maria Rita Di Berardini Corso di Perfezionamento

Page 15: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

Analisi di Algoritmi

L’analisi della complessita di un algoritmo in termini di tempo diesecuzione consente di:

stimare il tempo impiegato

stimare il piu grande input gestibile in termini ragionevoli

confrontare l’efficienza di due algoritmi diversi

ottimizzare le parti “critiche”

La complessita di un algoritmo viene descritta tramite una funzione

T : dimensione→ tempo impiegato

Maria Rita Di Berardini Corso di Perfezionamento

Page 16: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

Dimensione dell’input

Per molti problemi (ex. l’ordinamento) la misura piu naturale e ilnumero di elementi (criteri di costo uniforme)

Per altri (ex. moltiplicazione di numeri interi) la misura migliore eil numero totale di bit necessari per la rappresentazione dell’input(criteri di costo logaritmico)

In realta ciascun elemento e rappresentato da un numero costantedi bit, quindi le due misure coincidono a meno di una costantemoltiplicativa

In altri casi ancora, e piu appropriato descrivere la dimensione condue numeri; ex: se l’input e una matrice bidimensionale ladimensione dell’input e #righe ×#colonne

Maria Rita Di Berardini Corso di Perfezionamento

Page 17: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

Rappresentazione del “Tempo”

Abbiamo bisogno di stabilire quale sara la tecnologia di riferimentoutilizzata per eseguire gli algoritmi quando saranno realizzati comeprogrammi

Assumiamo di utilizzare

Mono-Processore + RAM (Random Access Memory)

assenza di concorrenza e parallelismo

Maria Rita Di Berardini Corso di Perfezionamento

Page 18: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

Definizione di tempo

Tempo = “wall-clock time”, il tempo effettivamente impiegato pereseguire l’algoritmo

Dipende da troppi fattori (non sempre prevedibili)

1 bravura del programmatore

2 linguaggio di programmazione utilizzato

3 processore, memoria (cache, primaria, secondaria)

4 sistema operativo, processi attualmente in esecuzione

Dobbiamo usare un modello astratto: introduciamo un concetto ditempo legato al numero di operazioni elementari o di passieseguiti per il calcolo dell’output corrispondente

Maria Rita Di Berardini Corso di Perfezionamento

Page 19: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Il concetto di AlgoritmoAnalisi di Algoritmi

Tempo di esecuzione

Numero di operazioni elementari o “passi” eseguitiper il calcolo dell’output

passo ∼= una linea di pseudocodice

Hp: ogni passo riferito ad una linea i , e eseguito inun tempo costante ci

Maria Rita Di Berardini Corso di Perfezionamento

Page 20: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Parte I

Il problema dell’ordinamento

Maria Rita Di Berardini Corso di Perfezionamento

Page 21: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Il problema dell’ordinamento

Definition

Dato un insieme di n numeri 〈a1, a2, . . . , an〉, trovare un’opportunapermutazione 〈a′

1, a′2, . . . , a

′n〉 tale che a′

1 ≤ a′2 ≤ . . . ≤ a′

n

Input: 〈a1, a2, . . . , an〉

Output: 〈a′1, a

′2, . . . , a

′n〉 oppure

〈aπ(1), aπ(2), . . . , aπ(n)〉dove π e una permutazione degli indici 1, . . . , nπ : {1, ..., n} −→ {1, ..., n} tale che se π(i) = jallora j e la corretta posizione dell’elementooriginariamente in posizione i

Maria Rita Di Berardini Corso di Perfezionamento

Page 22: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Istanza del problema

Input: (31, 41, 59, 26, 43, 58)

Output: (26, 31, 41, 43, 58, 59)

La scelta del migliore algoritmo dipende:

dal numero di elementi da ordinare

da quanto gli elementi siano gia ordinati

dispositivo di memoria (metodo d’accesso)

Maria Rita Di Berardini Corso di Perfezionamento

Page 23: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Idea per ordinare

Maria Rita Di Berardini Corso di Perfezionamento

Page 24: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Idea per ordinare

Ad ogni passo si ha una sottosequenza ordinata in cui inserisco unnuovo elemento dell’input:

   

ordinatiA[j] = key

non necessariamente ordinati

ordinati

non necessariamente ordinati

≥ key

Maria Rita Di Berardini Corso di Perfezionamento

Page 25: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Insertion Sort

L’algoritmo di ordinamento Insertion Sort risulta efficiente nelcaso in cui il numero n degli elementi da ordinare e piccolo

for j ← 2 to lenght[A]

do key ← A[j]

. key viene inserito nella sequenza ordinata

. A[1 ... j-1]

i ← j-1

while i > 0 e A[i] > key

do A[i+1] ← A[i]

i ← i-1A[i+1] ← key

Maria Rita Di Berardini Corso di Perfezionamento

Page 26: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Istanza A = {5, 2, 4, 6, 1, 3}

1 2 3 4 5 6j = 2 5 2 4 6 1 3j = 3 2 5 4 6 1 3j = 4 2 4 5 6 1 3j = 5 2 4 5 6 1 3j = 6 1 2 4 5 6 3j = 7 1 2 3 4 5 6

Maria Rita Di Berardini Corso di Perfezionamento

Page 27: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Insertion Sort

Il tempo computazionale impiegato dalla procedura Insertion Sortdipende

dalla dimensione input, il numero degli elementi

dallo ordinamento implicito nella sequenza

Il tempo di esecuzione e espresso in funzione della dimensione delproblema, cioe dell’input

Maria Rita Di Berardini Corso di Perfezionamento

Page 28: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Insertion Sort

Insertion-sort(A,n)

statement costo1. for j = 2 to n { c1

2. key ← A[j] c2

3. i ← j-1 c3

4. while (i > 0) and (A[i ] > key) { c4

5. A[i + 1]← A[i ] c5

6. i ← i − 1 c6

7. }8. A[i + 1]← key c8

9. }

Maria Rita Di Berardini Corso di Perfezionamento

Page 29: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Insertion Sort

Indichiamo con ni il numero di volte che un passo iviene eseguito:

T (n) = n1c1 + n2c2 + . . . nkck =k∑

i=1

nici

Maria Rita Di Berardini Corso di Perfezionamento

Page 30: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Insertion-sort

statement costo volte1. for j = 2 to n { c1 n2. key = A[j] c2 n − 13. i = j-1 c3 n − 14. while (i > 0) and (A[i ] > key) { c4 n4???5. A[i + 1] = A[i ] c5 n5???6. i = i − 1 c6 n6???7. }8. A[i + 1] = key c8 n − 19. }

Sia tj= numero di volte che la guardia del ciclo while di riga 4viene valutata, per j = 2, . . . , n, i.etj = (elementi in A[1, . . . , j − 1] > key) + 1

n4 =n∑

j=2

tj n5 = n6 =n∑

j=2

(tj − 1)

Maria Rita Di Berardini Corso di Perfezionamento

Page 31: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Insertion Sort

Il che ci porta ad un costo

T (n) = c1n+(c2+c3+c8)(n−1)+c4

n∑j=2

tj+(c5+c6)n∑

j=2

(tj−1)

Maria Rita Di Berardini Corso di Perfezionamento

Page 32: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Insertion Sort: analisi del costo computazionale

tj A[j]

Il valore di tj = (elementi in A[1, . . . , j − 1] > key) + 1 dipende dalvettore in input:

Caso ottimo (vettore gia ordinato) tj = 1

Caso peggiore (ordinato in maniera decrescente) tj = j

Caso medio tj = j/2

Maria Rita Di Berardini Corso di Perfezionamento

Page 33: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi del costo computazionale nel caso ottimo

Costo “generico”

T (n) = c1n+(c2+c3+c8)(n−1)+c4

n∑j=2

tj+(c5+c6)n∑

j=2

(tj−1)

nel caso ottimo — tj = 1 e tj − 1 = 0

T (n) = c1n + (c2 + c3 + c8)(n − 1) + c4

∑nj=2 1

= c1n + (c2 + c3 + c8)(n − 1) + c4(n − 1)= (c1 + c2 + c3 + c4 + c8)n − (c2 + c3 + c4 + c8)

T (n) = an + bdove a e b sono delle opportune costanti

T (n) e una funzione lineare in n

Maria Rita Di Berardini Corso di Perfezionamento

Page 34: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi del costo computazionale nel caso peggiore

Nel caso peggiore tj = j , quindi

T (n) = c1n + (c2 + c3 + c8)(n − 1) + c4

∑nj=2 tj + (c5 + c6)

∑nj=2(tj − 1)

= c1n + (c2 + c3 + c8)(n − 1) + c4

∑nj=2 j + (c5 + c6)

∑nj=2(j − 1)

Fact

n∑j=2

j =( n∑

j=1

j)− 1 =

n(n + 1)

2− 1 =

n2

2+

n

2− 1

n∑j=2

(j − 1) =n−1∑j=1

j =(n − 1)n

2=

n2

2− n

2

Maria Rita Di Berardini Corso di Perfezionamento

Page 35: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi del costo computazionale nel caso peggiore

T (n) = c1n + (c2 + c3 + c8)(n − 1) + c4

∑nj=2 j + (c5 + c6)

∑nj=2(j − 1)

= c1n + (c2 + c3 + c8)(n − 1) + c4(n2

2 + n2 − 1) + (c5 + c6)(

n2

2 −n2 )

= c4+c5+c6

2 n2 + (c1 + c2 + c3 + c4−c5−c6

2 + c8)n − (c2 + c3 + c4 + c8)

T (n) = an2 + bn + cdove a, b e c sono delle costanti

T (n) e una funzione quadratica in n

Maria Rita Di Berardini Corso di Perfezionamento

Page 36: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi nel caso medio

L’analisi del tempo di esecuzione nel caso medio analizza come sicomporta l’algoritmo in “media”

E legato al fatto che in alcune circostanze non e necessario che unalgoritmo operi con una quantita limitata di risorsa per ognipossibile input, ma e sufficiente che sia “generalmente efficiente”

Per ogni n, il costo dell’algoritmo viene calcolato come la sommadei costi per ogni possibile input di dimensione n tenendo contodella probabilita che ciascun singolo caso si verifichi

Tmedio(n) =∑

{I :|I |=n}

T (I )Pr(I )

Maria Rita Di Berardini Corso di Perfezionamento

Page 37: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi nel caso medio

Bisogna determinare la distribuzione di probabilita di ciascun input

Problema: non sempre si dispone delle informazioni necessarie perdeterminare la distribuzione Pr

Una possibile soluzione: fare delle assunzioni plausibili sullecaratteristiche del problema

Ad esempio, nel caso del Insersion sort e plausibile assumere che,mediamente, solo la meta degli elementi della porzione di vettoreA[1...j − 1] sia maggiore di key , e quindi che tj = j/2

Maria Rita Di Berardini Corso di Perfezionamento

Page 38: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi del costo computazionale nel caso medio

Nel caso medio tj = j/2, quindi

T (n) = c1n + (c2 + c3 + c8)(n − 1) + c4

∑nj=2 tj + (c5 + c6)

∑nj=2(tj − 1)

= c1n + (c2 + c3 + c8)(n − 1) + c4

∑nj=2 j/2

+(c5 + c6)∑n

j=2(j/2− 1)

n∑j=2

j/2 =1

2

n∑j=2

j =1

2(

n∑j=1

j − 1) =1

2(n2

2+

n

2− 1) =

n2

4+

n

4− 1

2

n∑j=2

(j/2− 1) =n∑

j=2

j − 2

2=

1

2

n∑j=2

j − 2 =1

2

n−2∑j=0

j =1

2

n−2∑j=1

j =

1

2

(n − 2)(n − 1)

2=

1

2

n2 − 3n + 2

2=

n2

4− 3n

4+

1

2

Maria Rita Di Berardini Corso di Perfezionamento

Page 39: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi del costo computazionale nel caso medio

T (n) = c1n + (c2 + c3 + c8)(n − 1) + c4

∑nj=2 j/2

+(c5 + c6)∑n

j=2(j/2− 1)

= c1n + (c2 + c3 + c8)(n − 1) + c4(n2

4 + n4 −

12 )+

(c5 + c6)(n2

4 −3n4 + 1

2 )

= c4+c5+c6

4 n2 + (c1 + c2 + c3 + c4−3c5−3c6

2 + c8)n+( c5+c6

2 − (c2 + c3 + c4

2 + c8))

T (n) = an2 + bn + cdove a, b e c sono delle costanti

T (n) e una funzione quadratica in n

Maria Rita Di Berardini Corso di Perfezionamento

Page 40: Corso di Perfezionamento - Modelli di calcolo e analisi di algoritmi01]Modelli.pdf · 2020-02-05 · Il concetto di Algoritmo Analisi di Algoritmi algoritmi, programmi e strutture

Definizione del problema dell’ordinamentoInsertion-Sort

Analisi del caso peggiore vs. analisi del caso medio

Il tempo di esecuzione nel caso ottimo non e molto significativo

Di solito prenderemo in considerazione il tempo di esecuzione nelcaso peggiore. Perche??

il tempo di esecuzione nel caso peggiore rappresenta unalimitazione superiore sui tempi di esecuzione per qualsiasiinput, non possiamo fare di peggio

per alcuni algoritmi il caso peggiore si verifica abbastanzaspesso (ex. ricerca di un elemento in una base di dati)

il caso medio e in generale altrettanto cattivo quanto il casopeggiore (vedi Insertion Sort)

Maria Rita Di Berardini Corso di Perfezionamento