+ All Categories
Home > Documents > 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor...

1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor...

Date post: 01-May-2015
Category:
Upload: filiberto-pastore
View: 219 times
Download: 1 times
Share this document with a friend
27
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 http://creativecommons.org/licenses/by-nc-sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California,
Transcript
Page 1: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

1© Alberto Montresor

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: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

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

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

3© Alberto Montresor

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: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

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

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

5© Alberto Montresor

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: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

6© Alberto Montresor

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 sequenza, e restituisci la posizione corrispondente; restituisci 0 se nessuno degli elementi corrisponde.

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

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

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

8© Alberto Montresor

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: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

9© Alberto Montresor

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

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

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

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

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

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

m

1 5 12 15 20 23 32151 5 12 15

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

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<A[m], cerco nella “metà di sinistra”✦Se A[m]<v, cerco nella “metà di destra”

21?

Ricerca in un array ordinatoRicerca in un array ordinato

m

1 5 12 15 20 23 32151 5 12 15 23 3223

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

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<A[m], cerco nella “metà di sinistra”✦Se A[m]<v, cerco nella “metà di destra”

21?

Ricerca in un array ordinatoRicerca in un array ordinato

m

1 5 12 15 20 23 32151 5 12 15 23 322320

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

14

© Alberto Montresor

Ricerca in un array ordinatoRicerca in un array ordinato

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

15

© Alberto Montresor

Pseudo-codice

15

www.xkcd.com

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

16

© Alberto Montresor

Pseudo-codice

✦Tipi di dato composto✦Vettori, matrici

✦Record

✦Puntatori

✦Procedure e funzioni✦Parametri formali

✦Parametri attuali

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

17

© Alberto Montresor

Ricorsione

✦Versioni iterative / ricorsive✦Ricorsione di coda

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

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…

www.xkcd.com

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

19

© Alberto Montresor

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 20: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

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

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

21

© Alberto Montresor

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 22: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

22

© Alberto Montresor

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 23: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

23

© Alberto Montresor

Valutazione algoritmi - correttezza

✦Domanda: dimostrazione di correttezza di binarySearch()✦Suggerimento: per induzione sulla dimensione dell’input

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

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

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

25

© Alberto Montresor

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 26: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

26

© Alberto Montresor

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 27: 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 1 - Introduzione Alberto Montresor Università di Trento This work is licensed under the Creative.

27

© Alberto Montresor

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


Recommended