View
1
Download
0
Category
Preview:
Citation preview
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.
Recommended