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

Post on 13-Aug-2020

1 views 0 download

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

Algoritmi e loro proprietàAlgoritmi e loro proprietà

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

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

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.

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

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

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

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

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. . . . . . . . . . .

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

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

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

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

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

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

=

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.

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.

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.

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.

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:

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

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)

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

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

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

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

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

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.

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.