1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 11: Strutture di dati e Progettazione...
-
Upload
anselmo-casati -
Category
Documents
-
view
215 -
download
0
Transcript of 1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 11: Strutture di dati e Progettazione...
1© Alberto Montresor
Algoritmi e Strutture DatiCapitolo 11: Strutture di dati e Progettazione
Algoritmi
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.
2© Alberto Montresor
Introduzione
✦Dato un problema
✦Non ci sono “ricette generali” per risolverlo in modo efficiente
✦Tuttavia, è possibile evidenziare quattro fasi
✦Classificazione del problema
✦Caratterizzazione della soluzione
✦Tecnica di progetto
✦Utilizzo di strutture dati
✦Note
✦Non sono fasi strettamente sequenziali
3© Alberto Montresor
Classificazione di un problema
Fa parte di una classe più ampia di problemi?
✦ Problemi decisionali:
✦Il dato di ingresso soddisfa una certa proprietà?
✦Soluzione: risposta sì/no
✦Es: Stabilire se un grafo è connesso
✦ Problemi di ricerca:
✦Spazio di ricerca: insieme di “soluzioni” possibili
✦Soluzione ammissibile: soluzione che rispetta certi vincoli
✦Es: posizione di una sottostringa in una stringa
4© Alberto Montresor
Introduzione
✦Problemi di ottimizzazione:
✦Ogni soluzione è associata ad una funzione di costo
✦Vogliamo trovare la soluzione di costo minimo
✦Es: cammino più breve fra due nodi
✦Problemi di approssimazione:
✦A volte, trovare la soluzione ottima è computazionalmente impossibile
✦Ci si accontenta di una soluzione approssimata:✦costo basso, ma non sappiamo se ottimo
✦Es: problema del commesso viaggiatore
5© Alberto Montresor
Caratterizzazione della soluzione
✦Definire la soluzione dal punto di vista matematico
✦Spesso la formulazione è banale...
✦... ma può suggerire una prima idea di soluzione
✦Es: Selection Sort: Data una sequenza di n elementi, una permutazione ordinata è data dal minimo seguita da una permutazione ordinata dei restanti n-1 elementi
✦Le caratteristiche matematiche della soluzione possono suggerire una possibile tecnica
✦Esempio: sottostruttura ottima → programmazione dinamica
6© Alberto Montresor
Problema cammini minimi
✦Input
✦Grafo orientato G=(V,E)
✦Un nodo di partenza r
✦Funzione di peso w: E → R
✦Definizione
✦Dato un cammino c = v1,v2, ..., vk con k > 1, il costo del cammino è dato da
✦Output
✦Trovare un cammino da r ad u, per ogni nodo u ∈ V , il cui costo sia minimo, ovvero più piccolo o uguale del costo di qualunque altro cammino da r a u.
7© Alberto Montresor
Prospettiva
✦Cammini minimi da sorgente unica
✦Input: nodo radice r
✦Output: i cammini minimi che vanno da r a tutti gli altri nodi v
✦Cammino minimo tra una coppia di vertici
✦Input: una coppia di vertici r, d
✦Output: un cammino minimo fra r e d
✦Si risolve il primo problema e si estrae il cammino richiesto. Non si conoscono algoritmi che abbiano tempo di esecuzione migliore.
✦Cammini mimimi tra tutte le coppie di vertici
✦Input: il grafo.
✦Output: i cammini minimi fra tutte le coppie di vertici.
✦Programmazione dinamica
8© Alberto Montresor
Problema cammini minimi
✦Come descrivere l’output:
✦Si noti che due cammini minimi possono avere un tratto comune:
✦Non possono convergere in un nodo comune s dopo aver percorso un tratto iniziale distinto
✦Quindi, una soluzione ammissibile altro non è che un albero di copertura, radicato in r, che include un cammino da r ad ogni altro nodo.
r su
v
r su
vs
9© Alberto Montresor
Esempio
✦Nella figura
✦ un grafo con un ciclo negativo
✦ un grafo senza cicli negativi
✦ una soluzione ammissibile per G2
✦ una soluzione ottima per G2
✦ Esempio di pesi negativi
✦Proprietario TIR
✦Viaggiare carico → profitto✦Peso negativo
✦Viaggiare scarico → perdita✦Peso positivo
10
© Alberto Montresor
Caratterizzazione matematica soluzione
✦Definizione
✦Sia T una soluzione ammissibile. Ogni nodo u è caratterizzato da un valore du, che indica la distanza di u da r in T, uguale al costo del cammino fra r ed u in T
✦Quali caratteristiche devono avere le distanze affinché T sia una soluzione ottima?
✦Teorema di Bellman
✦Una soluzione ammissibile T è ottima se e solo se valgono le seguenti condizioni: ✦dv = du + w(u,v) per ogni arco (u,v) ∈ T✦dv ≤ du + w(u,v) per ogni arco (u,v) ∈ E
✦Dimostrazione
11
© Alberto Montresor
Programma prototipo
✦Note
✦Se al termine dell’esecuzione qualche nodo mantiene una distanza infinita, esso non è raggiungibile da r
✦Come implementare la condizione ?∃
12
© Alberto Montresor
Programma prototipo - maggiori dettagli
13
© Alberto Montresor
Programma prototipo - maggiori dettagli
14
© Alberto Montresor
Algoritmo di Dijkstra (1959)
✦Struttura dati
✦Coda con priorità, realizzata tramite vettore / lista non ordinati
15
© Alberto Montresor
Algoritmo di Dijkstra (1959)
16
© Alberto Montresor
Algoritmo di Dijkstra
✦Ipotesi: tutti i pesi sono positivi
✦Ogni nodo viene estratto una e una sola volta
✦Al momento dell’estrazione la sua distanza è minima
✦Costo totale: O(n2)
Costo Ripetizioni
✦Riga (1): O(n) 1
✦Riga (2): O(n) O(n)
✦Riga (3): O(1) O(n)
✦Riga (4): O(1) O(m)
17
© Alberto Montresor
Algoritmo di Johnson (1977)
✦Struttura dati
✦Coda con priorità, realizzata tramite Heap binario
18
© Alberto Montresor
Algoritmo di Johnson
✦Ipotesi: tutti i pesi sono positivi
✦Ogni nodo viene estratto una e una sola volta
✦Al momento dell’estrazione la sua distanza è minima
✦Costo totale: O(m log n)
Costo Ripetizioni
✦Riga (1): O(n) 1
✦Riga (2): O(log n) O(n)
✦Riga (3): O(log n) O(n)
✦Riga (4): O(log n) O(m)
19
© Alberto Montresor
Algoritmo di Fredman-Tarjan (1987)
✦Struttura dati
✦Coda con priorità, realizzata tramite Heap di Fibonacci
20
© Alberto Montresor
Algoritmo di Fredman-Tarjan (1987)
✦Ipotesi: tutti i pesi sono positivi
✦Ogni nodo viene estratto una e una sola volta
✦Al momento dell’estrazione la sua distanza è minima
✦Costo totale: O(m + n log n)
Costo Ripetizioni
✦Riga (1): O(n) 1
✦Riga (2): O(log n) O(n)
✦Riga (3): O(log n) O(n)
✦Riga (4): O(1) O(m)
21
© Alberto Montresor
Algoritmo di Bellman - Ford - Moore (1958)
✦Struttura dati
✦Coda
www.xkcd.com
22
© Alberto Montresor
Algoritmo di Bellman - Ford - Moore (1958)
✦Funziona anche con pesi negativi
✦Ogni nodo viene estratto al massimo n-1 volte
✦Passata - definizione ricorsiva
✦per k = 0, la zeresima passata consiste nell’estrazione del nodo r dalla coda S;
✦per k > 0, la k-esima passata consiste nell’estrazione di tutti i nodi presenti in S al termine della passata (k − 1)-esima.
✦Passata k - cammini di lunghezza k
✦Costo totale: O(mn)
Costo Ripetizioni
✦Riga (1): O(1) 1
✦Riga (2): O(1) O(n2)
✦Riga (3): O(1) O(mn)
23
© Alberto Montresor
Algoritmo di Pape - D’Esopo (1974)
✦Struttura dati
✦DeQueue
24
© Alberto Montresor
Algoritmo di Pape - D’Esopo (1974)
✦Tempo di calcolo
✦In generale, superpolinomiale
✦In pratica, veloce per grafi che rappresentano reti di circolazione stradale