Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 ·...

28
Algoritmi e loro proprietà Algoritmi e loro proprietà •Proprietà formali degli Algoritmi •Efficienza rispetto al tempo •Efficienza rispetto allo spazio

Transcript of Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 ·...

Page 1: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Algoritmi e loro proprietàAlgoritmi e loro proprietà

•Proprietà formali degli Algoritmi•Efficienza rispetto al tempo•Efficienza rispetto allo spazio

Page 2: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 2

Cos’è l’informatica ?

L’informatica è la scienza dellarappresentazione e dell’elaborazionedell’informazione

L’informatica è lo studio degli algoritmi:• delle loro proprietà formali e matematiche• delle loro realizzazioni hardware• delle loro realizzazioni linguistiche• delle loro applicazioni

Page 3: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 3

Che cos’è un algoritmo ?

Un insieme ben ordinato e finitodi operazioni non ambigueed effettivamente calcolabili che,applicate ad un insieme di condizioni iniziali,produce un risultato etermina in una quantità di tempo finita.

Page 4: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 4

Un esempio di algoritmoLa somma dei primi 100 numeri interi (da 0 a 99!):

1. Poni somma = 02. Poni indice = 13. Finché indice è minore di 100 ripeti i passi 4. e 5.

4. Aggiungi indice a somma5. Incrementa indice di 1

6. Stampa somma7. Fermati

Page 5: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 5

Proprietà formali e matematichedegli algoritmi

La prima proprietà è ovviamente la correttezza

Ma ha una fondamentale importanza anchel’efficienza, che si misura rispetto alla risorsaspazio e rispetto alla risorsa tempo

Page 6: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 6

Scrivere un algoritmoLa ricerca del giusto algoritmo per lasoluzione di un dato problema è la parte piùcreativa del lavoro di un informatico.

Ogni algoritmo può essere scomposto in tre tipifondamentali di operazioni:

• Operazioni sequenziali• Operazioni condizionali• Operazioni iterative

Page 7: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 7

Operazioni sequenziali

• Istruzioni di elaborazione• Esempi:

Poni indice = 1Aggiungi indice a sommaIncrementa indice di 1

• Istruzioni di Input/Output (I/O)• Esempi:

Acquisisci misuraAcquisisci errore assolutoStampa errore relativo

Page 8: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 8

Operazioni condizionali

Esempio:

1. Se misura ≠ 0 allora2. Esegui algoritmo trova errore relativo

3. Altrimenti4. Stampa il messaggio “errore relativo non

definito”5. . . . . . . . . . .

Page 9: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 9

Operazioni iterativeCiclo “do While”:

Inizio ciclo: esegui. . . . .Fine del cicloFino a che (condizione) rimane vera ripeti ciclo

eseguito almeno 1 volta

Ciclo WhileMentre (condizione) rimane vera ripeti:. . . . . .Fine del ciclo

eseguito 0 o più volte

Page 10: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 10

Pseudocodice

Notate che:

• tutte le linee contengono un verbo specifico(azione)

• i passi sono numerati in modo tale che per ogniriga viene eseguita una sola azione

• se la linea richiede due passi viene suddivisa inlinee successive indentate

Gli algoritmi presentati sono stati scritti secondo unoschema strutturato chiamato pseudocodice

Page 11: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 11

Correttezza di un algoritmoDeterminare la correttezza dell’algoritmo elaboratoper un dato problema può essere arduo…lecondizioni per essere ragionevolmente sicuri diaverlo trovato sono:

– Comprensione effettiva del problema– Validità della soluzione indipendentemente

da condizioni particolari odal valore dei dati in ingresso

– Livello di approssimazione del risultatosufficiente agli scopi di progetto

Page 12: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12

Comprensione del problema

Esempio: Qual è la via più breve fra le città A e B ?

Algo 1: Esamina tutte le strade che congiungono A a B e scegliquella di lunghezza inferiore

Algo 2: Esamina tutte le strade che congiungono A a B e scegliquella il cui tempo di percorrenza medio è minimo

La condizione necessaria per trovare un correttoalgoritmo a un problema è ovviamente la correttaformulazione e comprensione del problema

Page 13: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 13

Dipendenza dai dati in ingresso

Algoritmo per risolvere equazioni algebrichedi secondo grado:

1. Acquisisci a, b, c2. Poni

3. Stampa x1 , x2

4. Fermati

!

x1

="b + b

2" 4ac

2a

!

x21

="b " b

2" 4ac

2a

Page 14: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 14

Dipendenza dalle condizioni del problema

Esempio: gittata di un proiettile:

1. Acquisisci v, θ2. Poni

3. Stampa G4. Fermati …valido solo se il cannone è al suolo...

g

sinvG

!! cos22

=

Page 15: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 15

Livello di approssimazione richiesto

Spesso il risultato di un algoritmo è soloun’approssimazione, più o meno buonadella risposta corretta.

Ad esempio se il risultato è un numeroreale, un calcolatore potrà fornire solo unnumero finito di cifre significative: occorreràstabilire in base all’uso che della soluzionesi deve fare quale approssimazione èaccettabile come corretta.

Page 16: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 16

Efficienza degli algoritmiUna volta determinato un algoritmo correttoper la soluzione di un problema, occorrepreoccuparsi della sua efficienza, ovvero dicome esso gestisca le risorsetempo (numero di operazioni necessariealla soluzione) espazio (memoria occorrente per trovare lasoluzione)che saranno in quantità finita perqualunque elaboratore reale.

Page 17: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 17

. . . . proseguendo

Un criterio per la valutazione dell’efficienza diun algoritmo e’ di grande utilita’ in quantodobbiamo assicurarci la possibilita’ di operareconfronti tra diversi algoritmi,indipendentemente dal linguaggio con cui sarannoimplementati e dalla “potenza” della macchina sucui saranno eseguiti.

Page 18: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 18

Valutare l’efficienza rispetto al tempoL’efficienza rispetto alla risorsa tempo puòessere valutata in generale contando il numerodi operazioni richieste dall’algoritmo per arrivarealla soluzione del problema in funzione delnumero n dei dati in ingresso.

In questa valutazione non è importante il valore esattoquanto la dipendenza funzionale e l’ordine digrandezza. Si parlerà allora di algoritmi o complessita’O(n), O(n2), O(log n) , O(2n) etc a seconda degliandamenti.

Page 19: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 19

L’algoritmo di ricerca sequenziale...

Supponiamo di voler cercare unnome in una rubrica telefonicacontenente 100 nomi.

Il primo algoritmo che viene inmente potrebbe essere:

Page 20: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 20

1 . Acquisisci nome1…. .nome10 02 . Acquisisci tel1……tel1 0 03 . Acquisisci nome cercato 4 . Poni trovato = falso5 . Poni i = 16 . Ripeti finche trovato d iventa vero o i > 1 0 07 . Se nomei = nome cercato allora8 . Stampa teli 9 . Poni trovato = vero

Altrim enti1 0 . Incrementa i d i 1

1 1 . Fine del ciclo1 2 . Se trovato = falso allora1 3 .Stampa messag g io ‘ Nome non in elenco’

1 4 . Ferm ati

Page 21: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 21

…e quello di ricerca binaria

L’algoritmo di ricerca sequenziale èsemplice e corretto... ma non sfrutta ilfatto che la rubrica è ordinata !

“Riesco a trovare i nomi molto più velocemente suldizionario, da quando ho scoperto che sono in ordinealfabetico ” (Groucho Marx)

Page 22: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 22

1. Acquisisci nome1…..nome1002. Acquisisci tel1……tel1003. Acquisisci nome cercato4. Poni trovato = falso5. Poni inizio = 1 e fine = 1006. Ripeti finché trovato diventa vero o fine<inizio

7. Poni i a (inizio+fine)/28. Se nomei = nome cercato allora

9. Stampa teli10. Poni trovato = vero

AltrimentiSe nome cercato precede alfabeticamente nomei

11. Poni fine = i -1altrimenti (nome cercato segue nomei)

12. Poni inizio = i +113. Fine del ciclo14. Se trovato = falso allora

15.Stampa messaggio ‘ Nome non in elenco’16. Fermati

Page 23: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 23

a b c d e f g h i j k l m n o p

Carattere cercato: mPassi = 4

h

d l

n

m

Carattere cercato: bPassi = 3

b

Page 24: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 24

Ricerca Binaria: Complessita’

1 = n/2 (s-1)s…………n/2 (k-1)k……………n/234n/2/2 = n/223n /22n1

Numero di dati per passoPassi(confronti)

2(s-1) = n ; s-1 = log2n ; s = log2n + 1 O(log2n)

Casopeggiore

Page 25: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 25

Confronto fra ricercasequenziale e ricerca binaria

Elenco di Napoli (106 abitanti):

Elenco di New York (2*107 abitanti):

ricerca binariaRicerca sequenzialeAlgoritmo

7*1077*1011Operazione/sec

~ 50 €30 Milioni €Costo

Pentium Pro 200CRAY T3E-900 1360processori in parallelo

Page 26: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 26

Ordini di grandezza• gli algoritmi di complessita’ di tipo polinomiale O(nk)

producono una soluzione trattabile ad un problema;• gli algoritmi di complessita’ di tipo esponenziale O(kn)

producono una soluzione intrattabile

1.6 • 1010 s1.6 • 107 s1.6 • 10-2 s10-5 s2n36 • 10-6 s25 • 10-6 s4 • 10-6 s10-6 sn2

6 •10-7 s5 • 10-7 s2 • 10-7 s10-7 sn60502010

7 • 107 op. al secondo

Page 27: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 27

Efficienza rispetto allo spazio• Tutti gli algoritmi mostrati finora sono O(n) nel

numero di celle di memoria da utilizzare.

• In alcuni casi (ordinamento di elenchi conricopiature e spostamenti etc) la risorsa spaziopuò essere utilizzata in modo più intenso.

• In generale esiste un trade-off tempo - spazio : lasoluzione più efficiente per la risorsa tempo tendea utilizzare maggiormente la risorsa spazio eviceversa.

Page 28: Algoritmi e loro proprietàpeople.na.infn.it/~itaco/informatica/old/Lezione_6.pdf · 2008-05-02 · Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 12 Comprensione

Corso di Informatica - AA. 2006-2007 8 - Algoritmi e proprieta' 28

Riassumendo...• Abbiamo definito gli algoritmi e visto alcuni esempi.

Ci siamo preoccupati delle proprietà formali deglialgoritmi.

• Abbiamo visto che gli algoritmi possono sempreessere ricondotti ad operazioni sequenziali-condizionali-iterative

• Abbiamo trovato dei criteri per studiare lacorrettezza e l’efficienza degli algoritmi.

• Abbiamo imparato che algoritmi di tipoesponenziale sono di fatto inutilizzabili.