Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 19 - Tecniche risolutive per problemi intrattabili Alberto Montresor Università di Trento This.
Introduzione Cosa sono le reti di Petri?
Algoritmi e Strutture Dati
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Cammini minimi con sorgente singola
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
UN SEMPLICE PIANO DI MARKETING
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
PARTE PRIMA: Reti Cablate
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Cammini minimi da un sorgente
Algoritmi e Strutture Dati
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Laureando: Enrico Sperindio Relatore: Prof. GIORGIO ROMANIN JACUR
Prof. Cerulli – Dott. Carrabs
Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: algoritmo di Dijkstra Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Transcript della presentazione:

Algoritmi e Strutture Dati Capitolo 11: Strutture di dati e Progettazione Algoritmi 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. © Alberto Montresor

Non ci sono “ricette generali” per risolverlo in modo efficiente 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 © 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 © Alberto Montresor

Problemi di ottimizzazione: 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 © 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 © 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. © Alberto Montresor

Cammini minimi da sorgente unica Input: nodo radice r 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 © 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. u r s v u r s s v © Alberto Montresor

un grafo con un ciclo negativo un grafo senza cicli negativi 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 © 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 © Alberto Montresor

Come implementare la condizione ∃ ? Programma prototipo Note Se al termine dell’esecuzione qualche nodo mantiene una distanza infinita, esso non è raggiungibile da r Come implementare la condizione ∃ ? © Alberto Montresor

Programma prototipo - maggiori dettagli © Alberto Montresor

Programma prototipo - maggiori dettagli © Alberto Montresor

Algoritmo di Dijkstra (1959) Struttura dati Coda con priorità, realizzata tramite vettore / lista non ordinati © Alberto Montresor

Algoritmo di Dijkstra (1959) © Alberto Montresor

Ipotesi: tutti i pesi sono positivi 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) © Alberto Montresor

Algoritmo di Johnson (1977) Struttura dati Coda con priorità, realizzata tramite Heap binario © Alberto Montresor

Ipotesi: tutti i pesi sono positivi 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) © Alberto Montresor

Algoritmo di Fredman-Tarjan (1987) Struttura dati Coda con priorità, realizzata tramite Heap di Fibonacci © 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) © Alberto Montresor

Algoritmo di Bellman - Ford - Moore (1958) Struttura dati Coda www.xkcd.com © 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) © Alberto Montresor

Algoritmo di Pape - D’Esopo (1974) Struttura dati DeQueue © 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 © Alberto Montresor