Algoritmi e Strutture Dati
|
|
|
- Dario Vanni
- 6 anni fa
- Visualizzazioni
Transcript
1 Algoritmi e Strutture Dati Capitolo 3 Cammini minimi: algoritmo di Dijkstra
2 Cammini minimi in grafi: cammini minimi a singola sorgente (senza pesi negativi)
3 Cammini minimi in grafi pesati Sia G=(V,E,w) un grafo orientato o non orientato con pesi w reali sugli archi. Il costo o lunghezza di un cammino p=<v 0,v,v,,v k > è: Un cammino minimo tra una coppia di vertici x e y è un cammino avente costo minore o uguale a quello di ogni altro cammino tra gli stessi vertici. NOTA: Il cammino minimo non è necessariamente unico.
4 Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: cammino minimo su un grafo pesato u v Copyright 00 - The McGraw - Hill Companies, srl
5 Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: cammino minimo su un grafo pesato u cammino di lunghezza 3 7 v 5 Copyright 00 - The McGraw - Hill Companies, srl
6 Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: cammino minimo su un grafo pesato u cammino di lunghezza 35 7 v 6 Copyright 00 - The McGraw - Hill Companies, srl
7 Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: cammino minimo su un grafo pesato u la distanza d G (u,v) da u a v in G è il costo di un qualsiasi cammino minimo da u a v. 7 v 7 Copyright 00 - The McGraw - Hill Companies, srl
8 Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio: cammino minimo su un grafo pesato u la distanza d G (u,v) da u a v in G è il costo di un qualsiasi cammino minimo da u a v. 7 v d G (u,v)=7 Problema: dati u e v, trovare un cammino minimo (e/o distanza) da u a v 8 Copyright 00 - The McGraw - Hill Companies, srl
9 Algoritmica concreta: il navigatore satellitare Siete a casa (punto A) e dovete andare ad un concerto al Palalottomatica (punto B). Non conosce la strada, ma disponete di un moderno navigatore satellitare, il quale lo aiuterà ad arrivare a destinazione:. percorrendo la strada più breve possibile (funzione obiettivo ), oppure. impiegando il minor tempo possibile (funzione obiettivo ). Come calcola la soluzione? Semplice: rappresenta l intera rete stradale italiana (centinaia di migliaia di strade!) come un grafo diretto G=(V,E), in cui i nodi sono le intersezioni fisiche tra le varie strade (milioni di nodi!), e gli archi sono le strade stesse, con i loro sensi di marcia. Il grafo viene quindi pesato rispetto alla mia funzione obiettivo, ovvero rispettivamente:. Lunghezza della strada funzione peso w ;. Tempo di percorrenza funzione peso w. Infine, calcola (rapidamente!) il cammino minimo in G=(V,E,w ) e in G=(V,E,w ) tra A ed B.
10
11 esiste sempre un cammino minimo fra due nodi?
12 no! se non esiste nessun cammino da u a v d(u,v)=+ se c è un cammino che contiene un ciclo il cui costo è negativo d(u,v)=- u Σw(e)<0 v Oss: se G non contiene cicli negativi, esistono cammini minimi che sono cammini semplici
13 sottostruttura ottima Ogni sottocammino di un cammino minimo è un cammino minimo. dim: tecnica cut&paste u x y v ipotetico cammino più corto da x a y allora il cammino da u a v non era minimo!
14 disuguaglianza triangolare per ogni u, v, x V, vale: d(u,v) d(u,x) + d(x,v) u v x il cammino da u a v che passa per x è un cammino nel grafo e quindi il suo costo è almeno il costo del cammino minimo da u a v
15 Cammini minimi a singola sorgente
16 Problema del calcolo dei cammini Due varianti: minimi a singola sorgente Dato G=(V,E,w), s V, calcola le distanze di tutti i nodi da s, ovvero, d G (s,v) per ogni v V Dato G=(V,E,w), s V, calcola l albero dei cammini minimi di G radicato in s
17 Albero dei cammini minimi (o Shortest Path Tree - SPT) T è un albero dei cammini minimi con sorgente s di un grafo G=(V,E,w) se: - T è un albero radicato in s - per ogni v V, vale: d T (s,v)=d G (s,v) s T
18 Albero dei cammini minimi (o Shortest Path Tree - SPT) s 0 B 3 F A D C E per grafi non pesati: SPT radicato in s = Albero BFS radicato in s G 3 A s 0 B C D E albero BFS 3 G F 3
19 Albero dei cammini minimi L unione di tutti i cammini minimi da un vertice s a tutti i vertici da esso raggiungibili nel grafo G genera un sottografo di G, detto sottografo dei cammini minimi con sorgente in s Se da tale sottografo rimuoviamo archi in modo tale da ridurre ad il grado entrante di tutti i nodi (escluso s che ha grado entrante pari a 0) otterremo un albero orientato con tutti gli archi orientati in direzione delle foglie, detto albero dei cammini minimi radicato in s
20 Esempio di albero dei cammini minimi a s 0 b c 5 d 5 6 oppure
21 Esercizio. Progettare un algoritmo che, dato un grafo diretto e pesato G=(V,E,w) e un suo albero dei cammini minimi radicato in un nodo s, calcola in tempo lineare le distanze di ogni nodo da s.. Progettare un algoritmo che, dato un grafo diretto e pesato G=(V,E,w) e le distanze di ogni nodo da un nodo s, calcola in tempo lineare un albero dei cammini minimi di G radicato in s. Osservazione: le due varianti del problema sono essenzialmente equivalenti
22 Algoritmo di Dijkstra Assunzione: tutti gli archi hanno peso non negativo, ovvero ogni arco (u,v) del grafo ha peso w(u,v) 0 cammini minimi esistono se esistono i cammini dalla sorgente d(s,v) -
23 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
24 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
25 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
26 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
27 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
28 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
29 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
30 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
31 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
32 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
33 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
34 Idea intuitiva dell algoritmo: pompare acqua nella sorgente B D s A archi come tubi C E peso degli archi come lunghezza acqua scorre a velocità costante
35 Idea intuitiva dell algoritmo: pompare acqua nella sorgente s 0 A B D archi come tubi peso degli archi come lunghezza acqua scorre a velocità costante C E 3 5
36 Verso l algoritmo: approccio greedy (goloso). mantiene per ogni nodo v una stima (per eccesso) D sv alla distanza d(s,v). mantiene un inseme X di nodi per cui le stime sono esatte; e anche un albero T dei cammini minimi verso nodi in X (albero nero). Inizialmente X={s}, T non ha archi. 3. ad ogni passo aggiunge a X il nodo u in V-X la cui stima è minima; aggiunge a T uno specifico arco (arancione) entrante in u. aggiorna le stime guardando i nodi adiacenti a u s X G 36 Copyright 00 - The McGraw - Hill Companies, srl
37 I nodi da aggiungere progressivamente a X (e quindi a T) sono mantenuti in una coda di priorità, associati ad un unico arco (arco arancione) che li connette a T. G la stima per un nodo y V-X è: D sy =min{d sx +w(x,y) : (x,y) E, x X }. L arco che fornisce il minimo è l arco arancione. s X y Se y è in coda con arco (x,y) associato, e se dopo aver aggiunto u a T troviamo un arco (u,y) tale che D su +w(u,y) < D sx +w(x,y), allora rimpiazziamo (x,y) con (u,y), ed aggiorniamo D sy nodi per i quali non è stato scoperto nessun cammino; stima=+ nodi scoperti ; hanno stima<+ sono mantenuti in una coda con priorità insieme al miglior arco entrante (arancione)
38 ; X X {u} ; X Pseudocodice Nota: T è un albero che contiene tutti i nodi in X più i nodi correntemente contenuti nella coda di priorità (nodi arancioni); è composto cioè dagli archi di T (albero dei cammini minimi ristretto ai nodi in X) più gli archi arancioni (potenziali archi da aggiungere a T)
39 applicare l algoritmo di Dijkstra al seguente grafo 0 B D s A C E 39 Copyright 00 - The McGraw - Hill Companies, srl
40 correttezza
41 Estendere l albero dei cammini minimi Lemma di Dijkstra (959) Sia G=(V,E,w) (diretto o non diretto) con pesi non negativi, e sia T un sottoalbero dell albero dei cammini minimi radicato in s che include s ma non include tutti i vertici raggiungibili da s. Sia (u,v) l arco che minimizza la quantità d(s,t) + w(t,z), per ogni t T e z T. Allora, (u,v) appartiene a un cammino minimo da s a v. Dim.: Supponiamo per assurdo che (u,v) non appartenga ad un cammino minimo da s a v, e quindi che d(s,v) < d(s,u) +w(u,v). Allora, d(s,v) è la lunghezza di un cammino minimo da s a v che non passa per (u,v). s u d(s,u) w(u,v) v
42 Estendere l albero dei cammini minimi Lemma di Dijkstra (959) Sia G=(V,E,w) (diretto o non diretto) con pesi non negativi, e sia T un sottoalbero dell albero dei cammini minimi radicato in s che include s ma non include tutti i vertici raggiungibili da s. Sia (u,v) l arco che minimizza la quantità d(s,t) + w(t,z), per ogni t T e z T. Allora, (u,v) appartiene a un cammino minimo da s a v. Dim.: Supponiamo per assurdo che (u,v) non appartenga ad un cammino minimo da s a v, e quindi che d(s,v) < d(s,u) +w(u,v). Allora, d(s,v) è la lunghezza di un cammino minimo da s a v che non passa per (u,v). s u d(s,u) w(u,v) v
43 Estendere l albero dei cammini minimi Lemma di Dijkstra (959) Sia G=(V,E,w) (diretto o non diretto) con pesi non negativi, e sia T un sottoalbero dell albero dei cammini minimi radicato in s che include s ma non include tutti i vertici raggiungibili da s. Sia (u,v) l arco che minimizza la quantità d(s,t) + w(t,z), per ogni t T e z T. Allora, (u,v) appartiene a un cammino minimo da s a v. Dim.: Supponiamo per assurdo che (u,v) non appartenga ad un cammino minimo da s a v, e quindi che d(s,v) < d(s,u) +w(u,v). Allora, d(s,v) è la lunghezza di un cammino minimo da s a v che non passa per (u,v). Tale cammino, per uscire da T, deve allora passare per un qualche arco (x,y) (u,v), con x T e y T. Sia quindi p sv = <s,,x,y,,v>. w(x,y) x y s d(s,x) u d(s,u) w(u,v) v
44 s x d(s,x) u d(s,u) p w(x,y) sy w(u,v) y v p yv Per la minimalità dei sottocammini di un cammino minimo: w(p sv ) = w(p sy ) + w(p yv ) = d(s,x) + w(x,y) + w(p yv ). Quindi: w(p sv ) < d(s,u) + w(u,v) d(s,x) + w(x,y) + w(p yv ) < d(s,u) + w(u,v) 0 d(s,x) + w(x,y) < d(s,u) + w(u,v) ma (u,v) minimizza d(s,t) + w(t,z) per ogni t T e z T, quindi: d(s,x) + w(x,y) d(s,u) + w(u,v) assurdo!
45 analisi della complessità
46 ; X X {u} ; X se si escludono le operazioni sulla coda con priorità: tempo O(m+n) quanto costano le operazioni sulla coda con priorità?
47 Tempo di esecuzione: implementazioni elementari Supponendo che il grafo G sia rappresentato tramite liste di adiacenza, e supponendo che tutti i nodi siano connessi ad s, avremo n insert, n deletemin e al più m decreasekey nella coda di priorità, al costo di: Insert DelMin DecKey Array non ord. O() O(n) O() Array ordinato O(n) O() O(n) Lista non ord. O() O (n) O() Lista ordinata O(n) O() O(n) n O() + n O(n) + O(m) O() = O(n ) con array non ordinati n O(n) + n O() + O(m) O(n) = O(m n) con array ordinati n O() + n O(n) + O(m) O() = O(n ) con liste non ordinate n O(n) + n O() + O(m) O(n) = O(m n) con liste ordinate
48 Tempo di esecuzione: implementazioni efficienti Supponendo che il grafo G sia rappresentato tramite liste di adiacenza, e supponendo che tutti i nodi siano connessi ad s, avremo n insert, n deletemin e al più m decreasekey nella coda di priorità, al costo di: Insert DelMin DecKey Heap binario O(log n) O(log n) O(log n) Heap Binom. O(log n) O(log n) O(log n) Heap Fibon. O() O(log n) * (ammortizzata) O() * (ammortizzata) n O(log n) + n O(log n) + O(m) O(log n) = O(m log n) utilizzando heap binari o binomiali n O() + n O(log n) * + O(m) O() * = O(m + n log n) utilizzando heap di Fibonacci soluzione migliore: mai peggiore, a volte meglio delle altre
49 Osservazione sulla decreasekey Ricordiamo che le complessità computazionali esposte per la decreasekey sono valide supponendo di avere un puntatore diretto all elemento su cui eseguire l operazione. Come possiamo garantire tale condizione? Semplicemente mantenendo un puntatore tra il nodo v nell array dei nodi della lista di adiacenza del grafo e l elemento nella coda di priorità associato al nodo v; tale puntatore viene inizializzato nella fase di inserimento di quest ultimo all interno della coda.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Dijkstra (*) (ACM in grafi diretti e non diretti senza archi di peso negativo) Punto della situazione Algoritmo basato sull ordinamento
Grafi (orientati): cammini minimi
Grafi (orientati): cammini minimi Una breve presentazione Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi. Il costo di un cammino π= è dato da: Un cammino minimo tra
Algoritmi e strutture dati
Algoritmi e Strutture Dati Cammini minimi Definizioni Sia G = (V,E) un grafo orientato pesato sugli archi. Il costo di un cammino π = è dato da: Un cammino minimo tra una coppia di
Algoritmi e Strutture Dati. Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford
Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio II: cammini minimi a singola sorgente (per grafi
Cammini minimi in grafi:
Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio III: la fine della trilogia Input: nelle puntate
Cammini minimi. Definizioni. Distanza fra vertici. Proprietà dei cammini minimi. Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi. Il costo di un cammino π= è dato da: Cammini minimi Un cammino minimo tra una coppia di
Algoritmi e Strutture Dati
Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e Strutture Dati Capitolo 2 Minimo albero ricoprente: Algoritmo di Prim Il problema del calcolo di un Minimum
Algoritmi e Strutture Dati. Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal
Algoritmi e Strutture Dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Progettare una rete stradale Supponiamo di dover progettare una rete stradale in cui il costo di costruzione di un
Grafi pesati Minimo albero ricoprente
Algoritmi e Strutture Dati Definizioni Grafi pesati Minimo albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene
Cammini Minimi. Algoritmo di Dijkstra
Cammini Minimi Algoritmo di Dijkstra Cammino in un grafo Dato un grafo G=(V,E), un Cammino (Percorso) in G è un insieme di vertici v 1, v 2,.., v k tali che (v i, v i+1 ) E v 1 v 2 v 3 v k In un grafo
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 12 Grafi e visite di grafi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione Un grafo G=(V,E) consiste in: - un insieme V di vertici (o nodi) - un insieme
Problema del cammino minimo
Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento
Esercizi Union-Find e su Grafi. Ugo Vaccaro
Progettazione di Algoritmi Anno Accademico 0 07 Esercizi Union-Find e su Grafi. Ugo Vaccaro. Esercizio: Scrivere pseudocodice per Make-Set, Union, e Find-Set usando la rappresentazione attraverso liste
Grafi (orientati): cammini minimi
.. Grafi (orientati): cammini minimi Una presentazione alternativa (con ulteriori dettagli) Un algoritmo greedy per calcolare i cammini minimi da un vertice sorgente in un grafo orientato e pesato, senza
Esercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST.
Esercitazione 3 Problema 6: Sia G = (V, E) un grafo con pesi distinti sugli archi ed e E un arco di G. Progettare un algoritmo lineare in grado di determinare se esiste un MST di G che contiene l arco
Esercizi svolti a lezione
Esercizi svolti a lezione Problema 1 In un corso di laurea sono previsti un certo numero di esami obbligatori. Esistono inoltre dei vincoli di propedeuticità: se un esame A è propedeutico ad un esame B
Introduzione ai grafi
TFA A048 Anno Accademico 2012-13 Outline Cenni storici sui grafi Nozioni introduttive: cammini, connessione, alberi, cicli Cammini di costo minimo Origini storiche La nascita della teoria dei grafi risale
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 8 Code con priorità: Heap binomiali Riepilogo Array non ord. Array ordinato Lista non ordinata Lista ordinata Find Min Insert Delete DelMin Incr. Key Decr. Key merge
Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica (IN0 Fondamenti) Grafi e alberi: introduzione Marco Liverani ([email protected])
Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla
Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di
Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi
Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore
Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)
Grafi: visite Una breve presentazione Visite di grafi Scopo e tipi di visita Una visita (o attraversamento) di un grafo G permette di esaminare i nodi e gli archi di G in modo sistematico Problema di base
Progettazione di Algoritmi
Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai
Programmazione Dinamica (PD)
Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli algoritmi greedy La programmazione dinamica risolve un problema di ottimizzazione componendo le soluzioni
Minimo albero di copertura
apitolo 0 Minimo albero di copertura efinizione 0.. ato un grafo G = (V, E) non orientato e connesso, un albero di copertura di G è un sottoinsieme T E tale che il sottografo (V, T ) è un albero libero.
Grafi: definizioni e visite
Grafi: definizioni e visite Grafi (non orientati) Grafo (non orientato): G = (V, E) V = nodi (o vertici) E = archi fra coppie di nodi distinti. Modella relazioni fra coppie di oggetti. Parametri della
Introduzione ai grafi. Introduzione ai grafi p. 1/2
Introduzione ai grafi Introduzione ai grafi p. 1/2 Grafi Un grafo G é costituito da una coppia di insiemi (V,A) dove V é detto insieme dei nodi e A é detto insieme di archi ed é un sottinsieme di tutte
2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1
. Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,
Gestione della produzione e della supply chain Logistica distributiva
Gestione della produzione e della supply chain Logistica distributiva Paolo Detti Dipartimento di Ingegneria dell Informazione e Scienze Matematiche Università di Siena Convergenza dell algoritmo Se non
Algoritmi e Strutture Dati
Introduzione ai grafi Grafi: Definizione e Algoritmi di visita Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2007/08 Introduzione ai
Visite in Grafi BFS e DFS
Visite in Grafi BFS e DFS Visita di un Grafo Obiettivo: Visitare una sola volta tutti i nodi del grafo. Es.: visitare un porzione del grafo del Web Difficoltà: Presenza di cicli: Marcare i nodi visitati
Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST)
Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST) È dato un grafo non orientato G=(V,E). Ad ogni arco e i E, i=1,,m, è associato un costo c i 0 7 14 4 10 9 11 8 12 6 13 5 17 3 2
Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);
Algoritmi e Strutture di Dati II 2 Grafi diretti Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove V è u n i n s i e m e d i nodi (o vertici); E µ V V è u n i n s i e m e d i archi. Denotiamo
Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio
Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi
Cammini minimi fra tutte le coppie
Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)
