La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali.

Presentazioni simili


Presentazione sul tema: "1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali."— Transcript della presentazione:

1 1 Algoritmi

2 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali Passi non ambigui Deve terminare

3 3 Algoritmi, programmi e processi Programma: descrizione di un algoritmo in un linguaggio di programmazione Processo: esecuzione dellalgoritmo descritto da un programma

4 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)

5 5 Immagini per descrivere un algoritmo -- 1

6 6 Immagini per descrivere un algoritmo -- 2

7 7 Primitive per gli origami

8 8 Quali primitive? Istruzioni del linguaggio macchina Non ambigue Algoritmo pronto per essere eseguito Ma troppo a basso livello Pseudocodice: versione meno formale di un linguaggio di programmazione

9 9 Pseudocodice Nomi per indicare valori Associazione nome-valore: Nome espressione Assegna a nome il valore di espressione Es.: temperatura-oggi temperatura-ieri +10

10 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)

11 11 While do Eseguire unattivita purche una condizione rimanga vera: While (condizione) do (azione) Es.: while (ci sono biglietti) do (vendi un biglietto)

12 12 Ciclo While (condizione) do (azione) Controlla la condizione: vera Esegui lazione Controlla la condizione: vera Esegui lazione.... Controlla la condizione: falsa Stop

13 13 Fasi del ciclo Inizializzazione: stato iniziale, che verra modificato dallazione Controllo della condizione di terminazione: confronto tra stato corrente e condizione, terminazione se uguali Modifica dello stato: per andare verso la condizione di terminazione

14 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 possiamo chiamare questo pezzo per nome allinterno di un altra procedura Inizializzazione: Conta 3 Condizione di terminazione: conta <0 o conta =0 Modifica stato: Conta Conta -1

15 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

16 16 Ricerca sequenziale Verificare se un elemento e presente in un elenco di elementi Supponiamo ordine crescente (alfabetico o numerico) Scorriamo tutto lelenco dallinizio alla fine finche troviamo lelemento 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))

17 17 Attenzione alle fasi di un ciclo numero 1; while (numero =/= 6) do (numero numero +2) Condizione di terminazione: numero = 6 Non verra mai raggiunta!

18 18 While e repeat while (condizione) do (azione): prima si controlla la condizione e poi si effettua lazione repeat (azione) until (condizione): prima esecuzione dellazione, poi controllo condizione azione sempre eseguita almeno una volta

19 19 while repeat

20 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

21 21 Esempio Il pezzo Fred e ordinato, ma Fred-Alice no scambio

22 22 Esempio

23 23 Esempio

24 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 Allinizio: pivot secondo elemento Ad ogni passo: pivot elemento successivo Ordinamento per inserimento

25 25 Pseudocodice procedure Ordina(Lista) N 2; while (N lunghezza-lista) do (pivot elemento-n; sposta pivot in posizione temporanea lasciando uno spazio vuoto); while (ce un elemento > pivot sopra lo spazio vuoto) do (sposta elemento verso il basso); sposta pivot nello spazio vuoto; N N+1 )

26 26 Strutture ricorsive Ciclo: iterazione di una sequenza di passi Ricorsione: ripetizione di tutte le istruzioni come sottocompito su dati parziali Esempio: telefonata allinterno di unaltra

27 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 ce 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

28 28 Esempio

29 29 Pseudocodice 1 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 (cerca nella parte prima di elemento-test) Caso 3: elemento-cercato > elemento-test (cerca nella parte dopo elemento-test) )

30 30 Pseudocodice 2: nome della procedura Procedure 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)) )

31 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 lesecuzione di Ricerca in corso, e attivo unaltra esecuzione della procedura Ricerca Seleziono Bill Bill = Bill si Ritorno nella prima esecuzione si

32 32 Esempio 1

33 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 Carol Carol =/= 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)

34 34

35 35

36 36

37 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 lelemento o a cercare nella lista vuota

38 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 sospese Ogni attivazione sospesa attende che unaltra termini per continuare

39 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 lattivazione corrente e non ne attiva altre

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

41 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

42 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: 2 8 = 256, 2 7 = 128

43 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

44 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)

45 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?

46 46 Esercizio procedure Mistero(Ultimo, Corrente) if (Corrente < 100) then (stampa Corrente; Temp Corrente + Ultimo; Mistero(Corrente, Temp)) Lista valori stampati con Ultimo=0 e Corrente=1?

47 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

48 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)?

49 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,4 Test2: 4,3,2,1

50 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?

51 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

52 52 Fattoriale - 2 procedure Fatt(n,k) if n=0 then (k 1) else (attiva Fatt(n-1,k1); k n x k1)

53 53 Efficienza degli algoritmi Ricerca su una lista (es elementi) Ricerca sequenziale: in media esamina meta elementi (es.: ) Se 10millisec per ogni elemento, in media 150 sec. (2.5 minuti) Ricerca binaria: prima , poi , poi 7.500, poi 3.750,... Al massimo 15 voci esaminate Se 10 millisec per ogni elemento, al massimo 15/10 sec.

54 54 Analisi generica Qualunque lista, di lunghezza arbitraria Caso migliore, peggiore, medio Nellesempio: 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 log 2 (n) elementi

55 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 allinizio) Primo pivot: confronto con 1 elemento Secondo pivot: con 2 elementi,... Numero totale di confronti: (n-1) = n(n-1)/2 = ½(n 2 -n) Esempio: lista con 10 elementi 45 confronti nel caso peggiore

56 56 Esempio di caso peggiore

57 57 Caso medio Meta dei confronti del caso peggiore ¼(n 2 -n) Esempio: per liste con 10 elementi, 22,5 confronti Caso migliore, medio, peggiore: approssimano il tempo (numero di passi) per eseguire lalgoritmo

58 58 Grafico del caso peggiore: ½(n 2 -n) Allaumentare del numerto di elementi, il tempo aumenta anche di piu Algoritmo meno efficiente allaumentare della lunghezza della lista

59 59 Grafico per ricerca binaria (caso pessimo: log 2 (n)) Allaumentare del numero di elementi, il tempo aumenta, ma meno algoritmo piu efficiente allaumentare della lunghezza della lista

60 60 Forma dei grafici Dipende dallespressione 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(n 2 ) Logaritmica: O(log 2 n) Notazione O: caso pessimo Confronto tra algoritmi

61 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(n 2 )


Scaricare ppt "1 Algoritmi. 2 Definizione di algoritmo Metodo per risolvere un problema Sequenza ordinata di passi Passi eseguibili Es.: elencare tutti i numeri reali."

Presentazioni simili


Annunci Google