La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

Presentazioni simili


Presentazione sul tema: "1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative."— Transcript della presentazione:

1 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

2 2 © Alberto Montresor Introduzione Problema computazionale La relazione formale che intercorre fra l'input e l'output desiderato Algoritmo La descrizione di una sequenza di azioni che un esecutore deve compiere per giungere alla soluzione di un problema Gli algoritmi rappresentano e organizzano input, output e tutti i dati intermedi necessari per lo svolgimento Esempio Input: ingredientiOutput: piatto cucinato Algoritmo: ricettaEsecutore: cuoco

3 3 © Alberto Montresor Un po' di storia Algoritmi nella storia Papiro di Ahmes (algoritmo per la moltiplicazione) Algoritmi di tipo numerico furono studiati da matematici babilonesi ed indiani Algoritmi in uso fino a tempi recenti furono studiati dai matematici greci più di 2000 anni fa Algoritmo di Euclide per il Massimo Comune Divisore Algoritmi geometrici (calcolo di tangenti, sezioni di angoli,...)

4 4 © Alberto Montresor Un po' di storia Abu Abdullah Muhammad bin Musa al-Khwarizmi Al-Kitāb al-mu ta ar fī isāb al-ğabr wa-l-muqābala Famoso per: essere uno dei padri dell'algebra aver introdotto i numeri indiani nel mondo occidentale un notevole influsso sulle lingue: algorismus, algoritmo, algorithm algebra spagnolo: guarismo portoghese: algarismo

5 5 © Alberto Montresor Problema computazionale: esempi Minimo Il minimo di un insieme A è lelemento di A che è minore o uguale ad ogni elemento di A Ricerca Sia A=a 1,...,a n una sequenza di dati ordinati e distinti, a 1 < a 2 < ··· < a n. Eseguire una ricerca della posizione di un dato v in A consiste nel restituire lindice corrispondente, se v è presente, oppure 0, se v non è presente

6 6 © Alberto Montresor Algoritmo: esempio Minimo Per trovare il minimo di un insieme, confronta ogni elemento con tutti gli altri; lelemento che è minore di tutti è il minimo. Ricerca Per trovare un valore v nella sequenza A, confronta v con tutti gli elementi di A, in sequenza, e restituisci la posizione corrispondente; restituisci 0 se nessuno degli elementi corrisponde.

7 7 © Alberto Montresor Problemi Le descrizioni precedenti presentano diversi problemi: Descrizione Descritti in linguaggio naturale, imprecisi Abbiamo bisogno di un linguaggio più formale Valutazione Esistono algoritmi migliori di quelli proposti? Dobbiamo definire il concetto di migliore

8 8 © Alberto Montresor Come descrivere un algoritmo E' necessario utilizzare una descrizione il più possibile formale Indipendente dal linguaggio: Pseudo-codice Particolare attenzione va dedicata al livello di dettaglio Da una ricetta di canederli (google:canederli ricetta), leggo:... amalgamate il tutto e fate riposare un quarto d'ora... Cosa significa amalgamare? Cosa significa far riposare? E perché non c'è scritto più semplicemente prepara i canederli?

9 9 © Alberto Montresor Esempio: ricerca del minimo in un vettore

10 10 © Alberto Montresor Problema Dato un vettore A contenente n elementi, verificare se un certo elemento v è presente Esempi: elenco del telefono, dizionario Una soluzione banale Scorro gli elementi in ordine, finché non trovo un oggetto maggiore o uguale a v 21 Ricerca in un array ordinato

11 11 © Alberto Montresor Una soluzione efficiente Considero l'elemento centrale (indice m ) del vettore Se A[m] = v, ho finito Se v < A[m], cerco nella metà di sinistra Se A[m] < v, cerco nella metà di destra 21? Ricerca in un array ordinato m

12 12 © Alberto Montresor Una soluzione efficiente Considero l'elemento centrale (indice m ) del sottovettore che sto analizzando: Se A[m]=v, ho finito Se v

13 13 © Alberto Montresor Una soluzione efficiente Considero l'elemento centrale (indice m ) del sottovettore che sto analizzando: Se A[m]=v, ho finito Se v

14 14 © Alberto Montresor Ricerca in un array ordinato

15 15 © Alberto Montresor Pseudo-codice 15

16 16 © Alberto Montresor Pseudo-codice Tipi di dato composto Vettori, matrici Record Puntatori Procedure e funzioni Parametri formali Parametri attuali

17 17 © Alberto Montresor Ricorsione Versioni iterative / ricorsive Ricorsione di coda

18 18 © Alberto Montresor Cè qualcosa… che non va... Le descrizioni precedenti presentano diversi problemi: Descrizione Descritti in linguaggio naturale, imprecisi Cè bisogno di un linguaggio più formale Valutazione Esistono algoritmi migliori? Definire il concetto di migliore…

19 19 © Alberto Montresor Valutazione algoritmi Risolve correttamente il problema? Dimostrazione matematica, descrizione informale Nota: Alcuni problemi non possono essere risolti Nota: Alcuni problemi vengono risolti in modo approssimato Risolve il problema in modo efficiente? Definizione di efficienza? Alcuni problemi non possono essere risolti in modo efficiente Esistono soluzioni ottime: non è possibile essere più efficienti Quali altre proprietà entrano in gioco? Semplicità, modularità, manutenibilità, espandibilità, sicurezza e robustezza

20 20 © Alberto Montresor Valutazione algoritmi - correttezza Concetto di invariante Condizione sempre vera in un certo punto del programma Esempi: Invariante di ciclo : una condizione che è sempre vera all'inizio di un ciclo inizio del ciclo: da definire Invariante di classe : una condizione che è sempre vera al termine dell'esecuzione di un metodo su una classe

21 21 © Alberto Montresor Valutazione algoritmi - correttezza Invariante di min() All'inizio di ogni iterazione del ciclo for, la variabile min contiene il minimo parziale degli elementi A[1.. i 1]

22 22 © Alberto Montresor Valutazione algoritmi - correttezza Il concetto di invariante di ciclo ci aiuta a dimostrare la correttezza di un algoritmo: Inizializzazione (caso base) : la condizione è vera all'inizio Conservazione (passo induttivo) : se la condizione è vera prima di un'iterazione del ciclo, allora rimane vera al termine (quindi prima della successiva iterazione) Conclusione : Quando il ciclo termina, l'invariante deve rappresentare la correttezza dell'algoritmo Domanda Dimostrare che l'invariante di min() è rispettato Induzione

23 23 © Alberto Montresor Valutazione algoritmi - correttezza Domanda: dimostrazione di correttezza di binarySearch() Suggerimento: per induzione sulla dimensione dellinput

24 24 © Alberto Montresor Valutazione algoritmi - efficienza Complessità di un algoritmo Analisi delle risorse impiegate da un algoritmo per risolvere un problema, in funzione della dimensione e dal tipo dell'input Risorse Tempo : tempo impiegato per completare l'algoritmo Spazio : quantità di memoria utilizzata Banda : quantità di bit spediti Algoritmi distribuiti

25 25 © Alberto Montresor Valutazione algoritmi - efficienza Contiamo il numero di confronti per il problema del minimo Algoritmo banale accennato nellintroduzione: n(n-1)/2 Algoritmo più efficiente: n-1 Perché contare i confronti?

26 26 © Alberto Montresor Valutazione algoritmi - efficienza Contiamo il numero di confronti per il problema della ricerca Algoritmo banale accennato nellintroduzione: n-1 Algoritmo più efficiente: log n

27 27 © Alberto Montresor Valutazione algoritmi - altre proprietà Lelenco può essere lungo: Semplicità, modularità, manutenibilità, espandibilità, sicurezza e robustezza Out-of-scope per algoritmi e strutture dati Ingegneria del software Un commento: Alcune proprietà hanno un costo aggiuntivo in termini di prestazioni Codice modulare costo gestione chiamate Java bytecode costo interpretazione Progettare algoritmi efficienti è un prerequisito per poter pagare questi costi


Scaricare ppt "1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative."

Presentazioni simili


Annunci Google