+ All Categories
Home > Documents > Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Algoritmi e Strutture...

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

Date post: 02-May-2015
Category:
Upload: nicolo-barone
View: 218 times
Download: 2 times
Share this document with a friend
26
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 http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
Transcript
Page 1: Bertossi, Montresor, Algoritmi e strutture di dati © 2014 De Agostini Scuola Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università.

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

Algoritmi e Strutture DatiCapitolo 1 - Introduzione

Alberto MontresorUniversità di Trento

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.

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

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: ingredienti Output: piatto cucinatoAlgoritmo: ricetta Esecutore: cuoco

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

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

Un po' di storiaUn 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, ...)

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

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: guarismoportoghese: algarismo

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

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=a1,...,an una sequenza di dati ordinati e distinti, a1 < a2 < ··· < an. 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

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

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.

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

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 opportunetecniche di programmazione

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

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

Come descrivere un algoritmoCome 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”?

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

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

Esempio: ricerca del minimo in un vettoreEsempio: ricerca del minimo in un vettore

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

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

✦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 ordinatoRicerca in un array ordinato

1 5 12 15 20 23 321 5 12 15 20 23

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

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

Ricerca in un array ordinatoRicerca in un array ordinato

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

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

Pseudo-codice

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

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

Pseudo-codice

✦Tipi di dato composto

✦Vettori, matrici

✦Record

✦Puntatori

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

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

Ricorsione

✦Versioni iterative / ricorsive

✦Ricorsione di coda

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

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 oppurtunetecniche di programmazione

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

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

Valutazione algoritmiValutazione 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

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

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

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

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

Valutazione algoritmi - correttezzaValutazione 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]

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

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

Valutazione algoritmi - correttezzaValutazione 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

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

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

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

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

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

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

Valutazione algoritmi - efficienzaValutazione algoritmi - efficienza

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

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

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

Valutazione algoritmi - efficienzaValutazione algoritmi - efficienza

✦Contiamo il numero di confronti per il problema della ricerca✦Algoritmo “banale” accennato nell’introduzione: n-1✦Algoritmo più efficiente: log n

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

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

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

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 oppurtunetecniche di programmazione

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

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

Come organizzare un algoritmoCome organizzare un algoritmo

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


Recommended