1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi...
-
Upload
violetta-capelli -
Category
Documents
-
view
250 -
download
0
Transcript of 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi...
![Page 1: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/1.jpg)
1
Algoritmi
![Page 2: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/2.jpg)
2
Definizione di algoritmo
Metodo per risolvere un problemaSequenza ordinata di passiPassi eseguibili
Es.: elencare tutti i numeri reali
Passi non ambigui Deve terminare
![Page 3: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/3.jpg)
3
Algoritmi, programmi e processi
Programma: descrizione di un algoritmo in un linguaggio di programmazione
Processo: esecuzione dell’algoritmo descritto da un programma
![Page 4: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/4.jpg)
4
Rappresentazione di un algoritmo
Varie notazioni: Linguaggio naturale Immagini Diagrammi di flusso Pseudocodice
Linguaggio di programmazione: Insieme di primitive (passi singoli) Regole che dicono come combinare le primitive per
descrivere passi piu’ complessi Primitiva: sintassi (simbolo/i) + semantica (significato)
![Page 5: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/5.jpg)
5
Immagini per descrivere un algoritmo -- 1
![Page 6: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/6.jpg)
6
Immagini per descrivere un algoritmo -- 2
![Page 7: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/7.jpg)
7
Primitive per gli origami
![Page 8: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/8.jpg)
8
Quali primitive?
Istruzioni del linguaggio macchinaNon ambigue Algoritmo pronto per essere eseguitoMa troppo a basso livello
Pseudocodice: versione meno formale di un linguaggio di programmazione
![Page 9: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/9.jpg)
9
Pseudocodice
Nomi per indicare valori Associazione nome-valore:
Nome espressioneAssegna a nome il valore di espressioneEs.: temperatura-oggi temperatura-ieri +10
![Page 10: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/10.jpg)
10
If then else
Scelta tra due alternative, se una condizione e’ vera
If (condizione) then (attivita’) else (attivita’) If (condizione) then (attivita’) Es.: if (ci sono biglietti) then (compra un
biglietto)
![Page 11: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/11.jpg)
11
While do
Eseguire un’attivita’ purche’ una condizione rimanga vera:
While (condizione) do (azione)
Es.: while (ci sono biglietti) do (vendi un biglietto)
![Page 12: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/12.jpg)
12
Ciclo
While (condizione) do (azione)
Controlla la condizione: vera Esegui l’azione Controlla la condizione: vera Esegui l’azione .... Controlla la condizione: falsa Stop
![Page 13: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/13.jpg)
13
Fasi del ciclo
Inizializzazione: stato iniziale, che verra’ modificato dall’azione
Controllo della condizione di terminazione: confronto tra stato corrente e condizione, terminazione se uguali
Modifica dello stato: per andare verso la condizione di terminazione
![Page 14: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/14.jpg)
14
Esempio di pseudocodice
Procedure Saluti
Conta 3;
While (Conta > 0) do
(stampa il messaggio “Saluti” e
Conta Conta - 1)
Nome del pezzo (procedura) di pseudocodice possiamochiamare questo pezzo per nome all’interno di un altra procedura
Inizializzazione: Conta 3Condizione di terminazione: conta <0 o conta =0Modifica stato: Conta Conta -1
![Page 15: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/15.jpg)
15
Parametri
Pseudocodice piu’ generico possibile Es.: procedure Ordina (Lista) Lista e’ un nome generico per una
qualsiasi lista di numeri Ogni volta che useremo la procedura
Ordina decideremo che lista considerare
![Page 16: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/16.jpg)
16
Ricerca sequenziale Verificare se un elemento e’ presente in un elenco di elementi Supponiamo ordine crescente (alfabetico o numerico) Scorriamo tutto l’elenco dall’inizio alla fine finche’ troviamo l’elemento o non ci
sono piu’ elementi da guardare o gli elementi rimasti sono maggiori
Procedure Cerca (lista, valorecercato)if (elenco vuoto) then (stampa no) else (valore primo-elemento; while (valorecercato > valore e ci sono ancora elementi) do (valore elemento successivo); if (valorecercato = valore) then (stampa si) else (stampa no))
![Page 17: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/17.jpg)
17
Attenzione alle fasi di un ciclo
numero 1;while (numero =/= 6) do (numero numero +2)
Condizione di terminazione: numero = 6Non verra’ mai raggiunta!
![Page 18: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/18.jpg)
18
While e repeat
while (condizione) do (azione): prima si controlla la condizione e poi si effettua l’azione
repeat (azione) until (condizione): prima esecuzione dell’azione, poi controllo condizione azione sempre eseguita almeno una volta
![Page 19: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/19.jpg)
19
while repeat
![Page 20: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/20.jpg)
20
Ordinamento
Vogliamo ordinare una lista di nomi Es.: Fred, Alice, David, Bill, Carol Ordine alfabetico da sinistra a destra
Alice, Bill, Carol, David, Fred
![Page 21: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/21.jpg)
21
Esempio
Il pezzo “Fred” e’ ordinato, ma “Fred-Alice” no scambio
![Page 22: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/22.jpg)
22
Esempio
![Page 23: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/23.jpg)
23
Esempio
![Page 24: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/24.jpg)
24
In generale ...
Scelgo il primo elemento della parte non ordinata (pivot)
Faccio scorrere verso il basso gli elementi ordinati maggiori del pivot
Inserisco il pivot nella posizione vuota All’inizio: pivot secondo elemento Ad ogni passo: pivot elemento successivo Ordinamento per inserimento
![Page 25: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/25.jpg)
25
Pseudocodiceprocedure Ordina(Lista)N 2;while (N ≤ lunghezza-lista) do(pivot elemento-n;sposta pivot in posizione temporanea lasciando uno spazio
vuoto);while (c’e’ un elemento > pivot sopra lo spazio vuoto) do(sposta elemento verso il basso);sposta pivot nello spazio vuoto;N N+1)
![Page 26: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/26.jpg)
26
Strutture ricorsive
Ciclo: iterazione di una sequenza di passi Ricorsione: ripetizione di tutte le istruzioni
come sottocompito su dati parziali Esempio: telefonata all’interno di un’altra
![Page 27: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/27.jpg)
27
Esempio: algoritmo di ricerca binaria (in un insieme ordinato) Tecnica che usiamo spesso pr cercare una voce
in un dizionario: Apriamo il dizionario in un punto (a meta’) Se non c’e’ la voce che cerchiamo, andiamo nella
prima parte o nella seconda Finche’
Troviamo la voce cercata si Guardiamo un pezzo con un elemento singolo e non
e’ la voce cercata no
![Page 28: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/28.jpg)
28
Esempio
![Page 29: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/29.jpg)
29
Pseudocodice 1if (lista vuota) then fallimento else (elemento-test elemento-a-meta’; Scelta fra tre casi: Caso 1: elemento-cercato = elemento-test (successo) Caso 2: elemento-cercato < elemento-test (cerca nella parte prima di elemento-test) Caso 3: elemento-cercato > elemento-test (cerca nella parte dopo elemento-test) )
![Page 30: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/30.jpg)
30
Pseudocodice 2: nome della proceduraProcedure Ricerca(lista, elemento-cercato)if (lista vuota) then fallimento else (elemento-test elemento-a-meta’; Scelta fra tre casi: Caso 1: elemento-cercato = elemento-test (successo) Caso 2: elemento-cercato < elemento-test (Ricerca(parte prima di elemento-test,ec)) Caso 3: elemento-cercato > elemento-test (Ricerca(parte dopo elemento-test,ec)) )
![Page 31: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/31.jpg)
31
Esempio 1
Cerchiamo Bill nella lista (Alice, Bill, Carol, David, Evelyn, Fred, George)
Seleziono David David =/= Bill cerco nella prima meta’ (Alice,
Bill, Carol) Sospendo l’esecuzione di Ricerca in corso, e attivo
un’altra esecuzione della procedura Ricerca Seleziono Bill Bill = Bill si
Ritorno nella prima esecuzione si
![Page 32: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/32.jpg)
32
Esempio 1
![Page 33: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/33.jpg)
33
Esempio 2 Cerchiamo David nella lista (Alice, Carol, Evelyin, Fred,
George) Seleziona Evelyin Evelyin =/= David cerca nella prima meta’ (Alice, Carol)
Seconda esecuzione:Seleziona CarolCarol =/= David cerca nella lista vuota
Terza esecuzione, su lista vuota fallimento Finisce la terza esecuzione
Finisce la seconda esecuzione (fallimento) Finisce la prima esecuzione (fallimento)
![Page 34: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/34.jpg)
34
![Page 35: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/35.jpg)
35
![Page 36: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/36.jpg)
36
![Page 37: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/37.jpg)
37
Riassunto
Divide la lista in due parti Cerca su una delle due parti Ricerca binaria Ogni volta ricerca su una parte piu’ piccola
prima o poi arrivera’ a trvare l’elemento o a cercare nella lista vuota
![Page 38: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/38.jpg)
38
Ricerca sequenziale e binaria In entrambi i casi: ripetere una sequenza di istruzioni Ricerca sequenziale: ciclo => ripete la sequenza sulla
stessa lista con diverso stato iniziale Ricerca binaria: ripete la sequenza come
sottocompito della ricerca in corso ricorsione Varie attivazioni della procedura
Una attiva, le altre sospeseOgni attivazione sospesa attende che un’altra
termini per continuare
![Page 39: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/39.jpg)
39
Sistema ricorsivi
Condizione di terminazione (caso base) Istruzioni che assicurano che verra’ soddisfatta prima
o poi Inizializzazione, modifica, verifica terminazione Di solito verifica del caso base prima della ripetizione Non verificata altra attivazione su un sottoproblema
piu’ vicino alla terminazione Verificata termina l’attivazione corrente e non ne
attiva altre
![Page 40: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/40.jpg)
40
Nell’esempio ...
Inizializzazione: attivazione di ricerca su intera lista
Caso base: trovare valore cercato o cercare su lista vuota
Modifica: nuove attivazioni, stesso valore da cercare in una lista piu’ piccola
Lista finita, ogni fase ricorsiva su una lista piu’ piccola prima o poi valore trovato o lista vuota termina sempre
![Page 41: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/41.jpg)
41
Esercizio
Ricerca di Joe nella lista (Alice, Bob, Carol, David, Evelyin, Fred, George, Henry, Irene, Joe, Karl, Larry, Mary, Nancy, Oliver)Quali nomi vengono esaminati?
Henry, Larry, Joe
![Page 42: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/42.jpg)
42
Esercizio
Numero massimo di voci esaminate in una lista di 200 voci?
Una 100 Due 50 Tre 25 Quattro 12 Cinque 6 Sei 3 Sette 1 Otto Nota: 28 = 256, 27 = 128
![Page 43: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/43.jpg)
43
Da while a repeat
contatore 2;while (contatore < 7) do(stampa valore di contatore;contatore contatore +1)
contatore 2;repeat (stampa contatore; contatore contatore
+1)until contatore = 7
![Page 44: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/44.jpg)
44
Da repeat a while
contatore 1;repeat (stampa valore di contatore;contatore contatore +1)until (contatore = 5)
contatore 1;while contatore < 5 do (stampa contatore; contatore contatore +1)
![Page 45: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/45.jpg)
45
Sequenza di Fibonacci
ultimo 0;corrente 1;while (corrente < 100) do(stampa valore di corrente;temp ultimo;ultimo corrente;corrente ultimo + temp)
1. Corpo del ciclo? 2. Inizializzazione?3. Modifica?4. Terminazione?5. Verifica?6. Numeri stampati?
![Page 46: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/46.jpg)
47
Esercizio
Ricerca binaria, ricerca di J nella lista A,B,C,D,E,F,G,H,I,J,K,L,M,N,O
Quali lettere vengono esaminate? H, L, J Quali se si cerca Z? H, L, N, O
![Page 47: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/47.jpg)
48
Esercizio
Contatore 1;
while (Contatore =/= 7) do
(stampa Contatore;
Contatore Contatore +3)
1. Quante volte viene eseguito il corpo del ciclo?
2. Se il test fosse (Contatore =/= 6)?
![Page 48: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/48.jpg)
49
Esercizio
procedure Test1(Contatore)if (Contatore =/= 5) then (stampa Contatore; Test1(Contatore+1))
procedure Test2(Contatore)if (Contatore =/= 5) then (Test2(Contatore+1); stampa Contatore)
Ingresso 1: che uscita dalle due procedure?Test1: 1,2,3,4Test2: 4,3,2,1
![Page 49: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/49.jpg)
50
Ricerca sequenziale e binaria
Lista (A,B,C,D,E,F,G,H,I) Ricerca sequenziale o binaria piu’ veloce per
cercare G? Per A? Per Bi? Per S? Quante voci esaminate da ricerca sequenziale di
E? E da ricerca binaria?
![Page 50: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/50.jpg)
51
Fattoriale - 1
Fattoriale(0)=1 Fattoriale(n) = n x fattoriale(n-1) Es.:
fatt(3)=3xfatt(2)=3x2xfatt(1)=3x2x1xfatt(0)=3x2x1x1=6
Algoritmo ricorsivo per calcolare il fattoriale di n
![Page 51: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/51.jpg)
52
Fattoriale - 2
procedure Fatt(n,k)
if n=0 then
(k 1)
else
(attiva Fatt(n-1,k1);
k n x k1)
![Page 52: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/52.jpg)
53
Efficienza degli algoritmi
Ricerca su una lista (es. 30.000 elementi) Ricerca sequenziale: in media esamina meta’
elementi (es.: 15.000) Se 10millisec per ogni elemento, in media 150
sec. (2.5 minuti) Ricerca binaria: prima 30.000, poi 15.000, poi
7.500, poi 3.750, ... Al massimo 15 voci esaminate
Se 10 millisec per ogni elemento, al massimo 15/10 sec.
![Page 53: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/53.jpg)
54
Analisi generica
Qualunque lista, di lunghezza arbitraria Caso migliore, peggiore, medio Nell’esempio: caso medio per ricerca
sequenziale, caso peggiore per ricerca binaria In generale, per liste con n elementi: Ricerca sequenziale: in media n/2 elementi Ricerca binaria: al massimo log2(n) elementi
![Page 54: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/54.jpg)
55
Esempio: ordinamento per inserimento Caso migliore: ogni pivot e gia’ al suo posto n-1
confronti Caso peggiore: ogni pivot deve essere confrontato
con tutti i precedenti (lista in ordine inverso all’inizio) Primo pivot: confronto con 1 elementoSecondo pivot: con 2 elementi, ...Numero totale di confronti: 1+2+...+(n-1) = n(n-1)/2
= ½(n2-n)Esempio: lista con 10 elementi 45 confronti nel
caso peggiore
![Page 55: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/55.jpg)
56
Esempio di caso peggiore
![Page 56: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/56.jpg)
57
Caso medio
Meta’ dei confronti del caso peggiore ¼(n2-n)
Esempio: per liste con 10 elementi, 22,5 confronti
Caso migliore, medio, peggiore: approssimano il tempo (numero di passi) per eseguire l’algoritmo
![Page 57: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/57.jpg)
58
Grafico del caso peggiore: ½(n2-n)
All’aumentare del numerto di elementi, il tempo aumenta anche di piu’ Algoritmo meno efficiente all’aumentare della lunghezza della lista
![Page 58: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/58.jpg)
59
Grafico per ricerca binaria (caso pessimo: log2(n))
All’aumentare del numero di elementi, il tempo aumenta, ma meno algoritmo piu’ efficiente all’aumentare della lunghezza della lista
![Page 59: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/59.jpg)
60
Forma dei grafici
Dipende dall’espressione matematica Espressione lineare linea retta Espressioni quardatiche curva parabolica Espressioni logaritmiche forma logaritmica Forma identificata con la espressione piu’ semplice che
la identifica Parabola: O(n2) Logaritmica: O(log2n)
Notazione O: caso pessimo Confronto tra algoritmi
![Page 60: 1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.](https://reader034.fdocument.pub/reader034/viewer/2022042500/5542eb4f497959361e8bf2db/html5/thumbnails/60.jpg)
61
Esercizi
Algoritmi per somma e moltiplicazione di numeri decimali con n cifre
Somma, caso pessimo: n+1 somme O(n)
Moltiplicazione, caso pessimo: nxn O(n2)