Capitolo 10 - Home di homes.di.unimi.it

annuncio pubblicitario
Algoritmi
Algoritmo
• Un metodo preciso e sistematico per
ottenere uno specifico risultato
• Ne abbiamo già incontrati diversi:
– riconoscimento del clic di un pulsante
– la tecnica del segnaposto
– conversione esadecimale/binario e
viceversa
2
Algoritmi nella vita quotidiana
• alcuni li abbiamo imparati a scuola – per
esempio le operazioni aritmetiche
• alcuni li abbiamo ricostruiti da soli – come la
ricerca di un numero telefonico
• altri hanno istruzioni scritte – le ricette di
cucina, le istruzioni di assemblaggio dei
mobili, le mappe stradali...
3
Le cinque proprietà essenziali
degli algoritmi
1. Input specificato
–
i dati che saranno trasformati attraverso i calcoli
per produrre l’output
–
devono specificare il tipo, la quantità e la forma
che dovranno avere i dati
2. Output specificato
–
il risultato della computazione
–
talvolta è possibile non avere alcun output
4
Le cinque proprietà essenziali
degli algoritmi (cont.)
3. Determinatezza
–
la sequenza degli eventi dev’essere specificata
–
ogni passo dev’essere descritto in ogni suo
aspetto, inclusa la gestione degli errori
4. Efficacia
–
le operazioni devono essere effettivamente
eseguibili da parte dell’agente
5. Terminazione
–
l’elaborazione deve giungere al termine in un
tempo finito
5
Algoritmi e linguaggi
• Linguaggio naturale
– utilizzato dalle persone: noi usiamo un
linguaggio naturale come l’italiano
– l’ambiguità è comune nei linguaggi naturali
• Linguaggi di programmazione
– linguaggi formali progettati per esprimere
algoritmi
– hanno una definizione precisa; non ci sono
ambiguità
6
Programmi e algoritmi
• Un programma è un algoritmo concepito per
operare in un determinato insieme di
circostanze ed espresso in un particolare
linguaggio
7
Un algoritmo: Ordina CD
• Immaginate dei CD disposti in modo
disordinato su uno scaffale
• Volete ordinarli alfabeticamente in base al
nome del gruppo, del cantante o del
compositore
• Come risolvere questo problema?
8
Ordina CD (cont.)
•
Input: una sequenza non ordinata di CD che
riempie una scaffalatura
•
Output: gli stessi CD nella stessa
scaffalatura, ordinati alfabeticamente
•
Istruzioni:
1.
Usiamo il termine Artista per riferirci al nome del gruppo,
del cantante o del compositore di un CD
2.
Decidete quale estremo della rastrelliera corrisponde
all’inizio della sequenza alfabetica e chiamate Alfa la
prima posizione di quell’estremo
3.
Chiamate Beta la posizione immediatamente adiacente ad
Alfa
9
Ordina CD (cont.)
4. Se l’Artista del CD nella posizione Beta precede
alfabeticamente l’Artista del CD nella posizione Alfa
scambiate i due CD; in caso contrario continuate.
5. Se c’è ancora almeno un posto dopo Beta, consideratela la
nuova posizione Beta e tornate all’istruzione 4; in caso
contrario continuate.
6. Se ci sono due o più posti dopo Alfa, considerate quello
immediatamente successivo come nuova posizione Alfa e
quello ancora dopo come nuova posizione Beta e saltate
all’istruzione 4; in caso contrario l’esecuzione è terminata.
10
Istruzione 1
• Usiamo il termine Artista per riferirci al nome
del gruppo, del cantante o del compositore di
un CD
• Questo passo assegna un nome
all’operazione utilizzata per determinare il
nome in base a cui sarà effettuato per
l’ordinamento
11
12
Istruzione 2
• Decidete quale estremo della rastrelliera
corrisponde all’inizio della sequenza
alfabetica e chiamate Alfa la prima posizione
di quell’estremo
• Dà un punto di partenza al processo e
definisce Alfa. All’inizio, Alfa si riferisce alla
prima posizione nella sequenza alfabetica;
man mano che l’esecuzione prosegue, il
nome fa riferimento a posizioni successive
13
14
Istruzione 3
• Chiamate Beta la posizione immediatamente
adiacente ad Alfa
• Dà un significato iniziale a Beta. Alfa e Beta
non hanno un significato intrinseco; sono i
termini scelti per indicare due posizioni sullo
scaffale
15
16
Istruzione 4
●
Se l’Artista del CD nella posizione Beta
precede alfabeticamente l’Artista del CD nella
posizione Alfa scambiate i due CD; in caso
contrario continuate.
• Questa è l’istruzione che svolge la gran parte
del lavoro. L’istruzione confronta i nomi degli
artisti che caratterizzano i CD in Alfa e Beta e,
se necessario, li scambia in modo che siano
nell’ordine corretto
17
18
Istruzione 5
Se c’è ancora almeno un posto dopo Beta,
consideratela la nuova posizione Beta e
tornate all’istruzione 4; in caso contrario
continuate.
• Ridefinisce Beta in modo che il nome si
riferisca alla posizione successiva nella
sequenza, se esiste.Con questa nuova
definizione di Beta è possibile eseguire
nuovamente l’Istruzione 4, confrontando una
diversa coppia di CD
●
19
20
Istruzione 6
●
Se ci sono due o più posti dopo Alfa, considerate
quello immediatamente successivo come nuova
posizione Alfa e quello ancora dopo come nuova
posizione Beta e saltate all’istruzione 4; in caso
contrario l’esecuzione è terminata.
• Quando arriviamo a quest’istruzione, il CD che
precede tutti gli altri si trova in Alfa. Possiamo far
avanzare Alfa di un posto e percorrere ancora tutti i
CD, localizzando il CD che precede alfabeticamente
tutti gli altri. Quando non ci sono più due posti per
definire le posizioni Alfa e Beta, l’intera scaffalatura è
stata ordinata e l’algoritmo termina
21
Analisi dell’algoritmo Ordina CD
• Illustra le cinque caratteristiche base degli algoritmi
– Gli input e gli output sono specificati
– Ogni istruzione è definita in modo preciso (determinatezza)
– Le operazioni sono efficaci perché semplici e
meccanicamente eseguibili
– L’ordinamento alfabetico è meccanico, così il nostro
algoritmo è efficace
– Il requisito di terminazione è soddisfatto: dato che con un
numero finito di posti esiste un numero finito di coppie
distinte, le istruzioni 4, 5 e 6 non possono essere ripetute
all’infinito
22
Un’analisi più approfondita
• Caratteristiche strutturali
– due istruzioni, 5 e 6, in cui l’agente deve ripetere
azioni già eseguite. In questi casi si dice che
l’algoritmo presenta un ciclo
– Cicli e test
• Un ciclo deve includere un test per determinare se le
istruzioni devono essere ripetute ancora una volta
– Ipotesi di partenza
• Ipotizziamo che
– lo scaffale sia pieno di CD (senza spazi vuoti)
– la parola "dopo" significa lo slot più lontano dal punto iniziale
23
24
L’algoritmo di ordinamento per scambio
• L’esempio Ordina CD illustra un algoritmo
standard chiamato ordinamento per scambio
– confronta coppie di oggetti scelti in modo
particolare, li scambia se non sono ordinati e
prosegue considerandoli tutti uno dopo l’altro
– possiamo usare lo stesso algoritmo con un diverso
criterio di ordinamento
25
L’astrazione nel pensiero algoritmico
• Possiamo considerare alcune parti del
comportamento di un algoritmo come unità
funzionali piuttosto che come singole
istruzioni
26
Astrazione della scansione Beta
• Le istruzioni 4 e 5 illustrano l’idea di un’unità
computazionale, che chiameremo scansione
Beta
– l’operazione consiste nello scandire nell’ordine
tutti i CD che seguono una specifica posizione Alfa
– mentre Alfa rimane in una posizione fissa per tutta
la scansione, Beta visita ogni posizione
successiva ad Alfa, confrontando i CD e
scambiandoli quando necessario
– il suo effetto è trovare il CD successivo
nell’ordinamento e di spostarlo nella posizione Alfa
27
28
Astrazione della scansione Alfa
• Alfa percorre lo scaffale a partire dalla
posizione in cui comincia l’ordinamento e
occupa tutte le posizioni (tranne l’ultima)
eseguendo a ogni iterazione le istruzioni della
scansione Beta
29
30
31
Proprietà della scansione Alfa
1.
2.
3.
4.
5.
Esaustiva. Prende in considerazione tutti i CD dalla prima posizione
all’ultima (esclusa)
Non ridondante. Nessun posto è assegnato ad Alfa più di una volta.
Ne consegue che il processo termina se la scansione Beta termina
Progressiva. Alla fine di ogni scansione Beta, il CD che segue
immediatamente nell’ordinamento tutti quelli già ordinati si trova nella
posizione Alfa
Completa. Quando l’ultima scansione Beta è completata, il CD
nell’ultima posizione segue quello nella penultima
Risolutiva. Il CD che precede alfabeticamente tutti gli altri si trova nel
primo posto dello scaffale, in virtù della proprietà 4 e del fatto che
sono stati presi in considerazione tutti i CD. Per ogni nuova
posizione di Alfa, Beta assegna il CD immediatamente successivo
nell’ordinamento. Ne segue che il programma esegue correttamente
un ordinamento alfabetico.
32
Astrazioni per altri algoritmi e programmi
• Le astrazioni delle scansioni Alfa e Beta si applicano
specificatamente all’algoritmo di ordinamento di
scambio e ai programmi da esso derivati
• Altri algoritmi e programmi si comportano
diversamente e richiedono astrazioni differenti, con
altre caratteristiche
• Ogni situazione è diversa, ma l’approccio –
astrazione del comportamento e analisi delle
proprietà – è sempre lo stesso
33
Scarica