La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università.

Presentazioni simili


Presentazione sul tema: "Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università."— Transcript della presentazione:

1 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola ✦ 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 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Problema computazionale: esempi ✦ Minimo ✦ Il minimo di un insieme A è l’elemento 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 l’indice corrispondente, se v è presente, oppure 0, se v non è presente

6 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Algoritmo: esempio ✦ Minimo ✦ Per trovare il minimo di un insieme, confronta ogni elemento con tutti gli altri; l’elemento che è minore di tutti è il minimo. ✦ Ricerca ✦ Per trovare un valore v nella sequenza A, confronta v con tutti gli elementi di A, in ordine, e restituisci la posizione corrispondente; restituisci 0 se nessuno degli elementi corrisponde.

7 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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 ✦ Progettazione ✦ Questi problemi sono semplici ✦ Problemi più complessi devono essere affrontati con opportune tecniche di programmazione

8 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola ✦ 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 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola

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

11 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola

12 Pseudo-codice

13 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Pseudo-codice ✦ Tipi di dato composto ✦ Vettori, matrici ✦ Record ✦ Puntatori

14 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Ricorsione ✦ Versioni iterative / ricorsive ✦ Ricorsione di coda

15 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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 ✦ Progettazione ✦ Questi problemi sono semplici ✦ Problemi più complessi devono essere affrontati con oppurtune tecniche di programmazione

16 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola ✦ 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

17 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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

18 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola ✦ Invariante di min() ✦ All'inizio di ogni iterazione del ciclo for, la variabile min contiene il minimo parziale degli elementi A[1.. i − 1]

19 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola ✦ 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

20 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Valutazione algoritmi - correttezza ✦ Domanda: dimostrazione di correttezza di binarySearch() ✦ Suggerimento: per induzione sulla dimensione dell’input

21 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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

22 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola ✦ Contiamo il numero di confronti per il problema del minimo ✦ Algoritmo “banale” accennato nell’introduzione: n(n-1)/2 ✦ Algoritmo più efficiente: n-1 ✦ Perché contare i confronti?

23 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola ✦ Contiamo il numero di confronti per il problema della ricerca ✦ Algoritmo “banale” accennato nell’introduzione: n-1 ✦ Algoritmo più efficiente: log n

24 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Valutazione algoritmi - altre proprietà ✦ L’elenco 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

25 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola 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 ✦ Progettazione ✦ Questi problemi sono semplici ✦ Problemi più complessi devono essere affrontati con oppurtune tecniche di programmazione

26 Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Liste ✦ Base di conoscenza ✦ Strutture di dati ✦ Problemi “classici” e loro soluzioni ✦ Tecniche di progettazione ✦ Divide-et-impera ✦ Programmazione dinamica ✦ Greedy ✦ Ricerca locale ✦ Backtrack ✦ Probabilismo


Scaricare ppt "Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università."

Presentazioni simili


Annunci Google