11.4 Chiusura transitiva
|
|
|
- Benedetto Franchi
- 9 anni fa
- Visualizzazioni
Transcript
1 Chiusura transitiva Il problema che consideriamo in questa sezione riguarda il calcolo della chiusura transitiva di un grafo. Dato un grafo orientato G = hv,ei, si vuole determinare il grafo orientato) G = hv,e i tale che,
2 CAPITOLO 11. PROGRAMMAZIONE DINAMICA 162 per ogni coppia di nodi u, v 2 V, esiste il lato u, v) in G se e solo se esiste in G un cammino da u a v di lunghezza maggiore di 0. In questa sezione consideriamo solo cammini di lunghezza maggiore di 0; la trattazione può essere facilmente estesa in modo da comprendere anche i cammini di lunghezza 0 ovvero quelli della forma v), dove v 2 V ). Un algoritmo classico per risolvere il problema è basato sul calcolo di una famiglia di coefficienti booleani che assumono valore 1 o 0 a seconda se esiste o meno un cammino tra due nodi passante per un certo insieme di vertici. Siano v 1,v 2,...,v n i nodi del grafo G. L idea è quella di verificare, per ogni coppia di nodi v i,v j, se esiste un lato da v i a v j oppure un cammino da v i a v j passante per il nodo v 1 ; poi, se esiste un cammino da v i a v j passante al più per nodi di indice 1 o 2; quindi se esiste un cammino da v i a v j passante per nodi di indice minore o uguale a 3, e così via. Si tratta quindi di eseguire n cicli: al k-esimo ciclo si verifica, per ogni coppia di nodi v i,v j, se esiste un cammino da v i a v j passante per nodi di indice minore o uguale a k escludendo i due valori i e j). Tale verifica può essere eseguita tenendo conto dei risultati forniti dal ciclo precedente. Infatti, esiste un cammino da v i a v j passante per nodi di indice minore o uguale a k se e solo se si verifica uno dei fatti seguenti: 1. esiste un cammino da v i a v j passante per nodi di indice minore o uguale a k 1, oppure 2. esiste un cammino da v i a v k e uno da v k a v j entrambi passanti per vertici di indice minore o uguale a k 1. Per ogni coppia di indici i, j 2{1, 2,...,n} definiamo la famiglia di coefficienti C k ij, dove k 2 {0, 1, 2,...,n}, nel modo seguente: C 0 ij = 1 se vi,v j ) 2 E, 0 altrimenti, mentre, per ogni k 2{1, 2,...,n}, 8 >< 1 se v i,v j ) 2 E oppure esiste in G un cammino da Cij k = v i a v j che passa per nodi di indice t tale che t apple k, >: 0 altrimenti. Nota che [Cij 0 ] coincide di fatto con la matrice di adiacenza del grafo di ingresso. Per il ragionamento precedente i coefficienti Cij k, al variare di i e j in {1, 2,...,n}, sono legati ai valori Cij k 1 dalla seguente equazione: C k ij = C k 1 ij _ C k 1 ik ^ C k 1 kj ) 11.1) Chiaramente Cij n = 1 se e solo se in G esiste un cammino da v i a v j. Possiamo allora facilmente descrivere un algorimo che calcola inizialmente i coefficienti Cij 0 e quindi, usando l equazione 11.1), tutti i successivi: per ogni k =1, 2,...,ntutti i coefficienti Cij k, con i, j =1, 2,...,n, possono essere ottenuti dai Cij k 1. Questo calcolo può essere ovviamente eseguito mantenendo due matrici di dimensione n n, una per conservare i valori Cij k 1, l altra per i corrispondenti Cij k. Tuttavia, osserviamo che per ogni i, j, k valgono le seguenti identità: Cik k 1 = Cik, k Ckj k 1 = Ckj. k
3 CAPITOLO 11. PROGRAMMAZIONE DINAMICA 163 Questo significa che possiamo usare una sola matrice per mantenere entrambe le famiglie di coefficienti. L algoritmo complessivo è quindi descritto dalla seguente procedura che calcola la matrice di coefficienti booleani [C ij ] i,j=1,2,...,n. Tale matrice coincide inizialmente con la matrice di adiacenza del grafo G mentre, al termine della computazione, rappresenta la matrice di adiacenza della sua chiusura transitiva G. begin if v i,v j ) 2 E then C ij := 1 else C ij := 0 for k =1, 2,...,ndo if C ij =0then C ij := C ik ^ C kj end È facile verificare che, assumendo il criterio di costo uniforme, l algoritmo richiede un tempo di calcolo n 3 ) e uno spazio di memoria n 2 ) su ogni grafo di ingresso di n nodi. Esercizio Esegui l algoritmo sopra descritto sul grafo G ={1, 2, 3}, {1, 2), 2, 3), 3, 1)}). Determina in particolare le matrici di coefficienti [C k ij] i,j=1,2,3 per k =0, 1, 2, Cammini minimi Un altro problema classico che si può risolvere mediante programmazione dinamica riguarda il calcolo dei cammini di peso minimo che connettono i nodi in un grafo pesato. Consideriamo un grafo diretto G = hv,ei e una funzione costo w : E! Q tale che we) 0 per ogni e 2 E. Per ogni cammino ` in G, ` =v 1,v 2,...,v m ), chiamiamo peso o costo) di ` la somma dei costi dei suoi lati: c`) = m 1 X i=1 wv i,v i+1 ) Per ogni coppia di nodi u, v 2 V si vuole determinare un cammino ` di peso minimo tra tutti i cammini da u a v, insieme al suo costo c`). Siano v 1,v 2,...,v n i nodi di G. Il problema può essere risolto calcolando le matrici D =[d ij ] i,j=1,2,...,n e P =[p ij ] i,j=1,2,...,n le cui componenti sono definite nel modo seguente: per ogni coppia di indici distinti i, j, se esiste un cammino da v i a v j in G, d ij rappresenta il costo del cammino di peso minimo che congiunge v i e v j e p ij è il predecessore di v j in tale cammino; se invece non esiste un cammino da v i a v j allora d ij assume un valore convenzionale 1, superiore al peso di ogni cammino in G, ep ij assume il valore indefinito?. Conoscendo la matrice P è possibile determinare un cammino di peso minimo da v i a v j semplicemente scorrendo in modo opportuno la i- esima riga della matrice: se k 1 = p ij allora v k1 è il penultimo nodo del cammino, se k 2 = p ik1 allora v k2 è il terzultimo, e così via fino a determinare il primo nodo, ovvero v i.
4 CAPITOLO 11. PROGRAMMAZIONE DINAMICA 164 Abbiamo così definito il problema per grafi con pesi non negativi. L algoritmo che presentiamo tuttavia risolve il problema nel caso più generale di grafi con pesi di segno qualsiasi, purché questi non formino cicli di costo negativo. Osserviamo che se esiste un ciclo di peso negativo lo stesso problema non è ben definito. Il metodo utilizzato per determinare la soluzione è simile a quello descritto nella sezione precedente per calcolare la chiusura transitiva di un grafo. Per ogni tripla di indici i, j, k 2{1, 2,...,n} definiamo il coefficiente c k ij come il costo del cammino di peso minimo da v i a v j passante per nodi di indice al più uguale a k esclusi i e j). Chiaramente d ij = c n ij. Inoltre definiamo i coefficienti c0 ij nel modo seguente: 8 >< wv i,v j ) se i 6= j e v i,v j ) 2 E c 0 ij = 0 se i = j >: 1 altrimenti Anche per questa famiglia di coefficienti possiamo definire un equazione, analoga alla 11.1), che permette di calcolare i valori c k 1 ij, per i, j =1, 2,...,n, conoscendo i ckij : c k ij = min{c k 1 ij,c k 1 ik + c k 1 kj }. 11.2) Basta osservare infatti che se ` è un cammino di peso minimo da v i a v j passante per nodi di indice minore o uguale a k allora si verifica uno dei due fatti seguenti: 1. ` passa solo per nodi di indice minore o uguale a k 1, oppure 2. ` è composto da due cammini che vanno rispettivamente da v i a v k e da v k a v j, entrambi di peso minimo tra tutti i cammini congiungenti i rispettivi estremi) passanti per nodi di indice minore o uguale a k 1. Nel primo caso il costo di ` è c k ij 1 mentre nel secondo è c k ik 1 + c k kj 1 ; inoltre in quest ultimo il predecessore di v j in ` equivale al predecessore di v j nel cammino di costo minimo da v k a v j passante per nodi di indice minore o uguale a k 1. Applicando l equazione 11.2) possiamo allora descrivere un algoritmo del tutto simile a quello presentato nella sezione precedente. Anche in questo caso possiamo limitarci a mantenere una sola matrice di valori c k ij poichè valgono le identità c k ik 1 = c k ik e c k kj 1 = c k kj per ogni tripla di indici i, j, k. Così l algoritmo calcola la matrice C =[c ij ] dei costi e quella B =[b ij ] dei predecessori dei cammini minimi che, al termine della computazione, coincideranno con le matrici D e P rispettivamente.
5 CAPITOLO 11. PROGRAMMAZIONE DINAMICA 165 begin cii := 0 if i = j then b ii := i end else if v i,v j ) 2 E for k =1, 2,...,ndo if c ik + c kj <c ij then cij := wv then i,v j ) b ij := i cij := 1 else b ij :=? cij := c ik + c kj b ij := b kj Concludiamo osservando che, assumendo il criterio di costo uniforme, il tempo di calcolo richiesto dall algoritmo su ogni grafo di input di n nodi è n 3 ), mentre lo spazio di memoria è n 2 ).
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
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)
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 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
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
Problemi, istanze, soluzioni
lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un
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
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
UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013
A UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa Seconda prova intermedia 7 giugno 0 Nome: Cognome: Matricola: Orale /06/0 ore aula N Orale 0/07/0 ore aula N
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,
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
Matrici delle differenze finite
Capitolo 8 Matrici delle differenze finite Si riportano in questo capitolo alcuni risultati e proprietà delle matrici delle differenze finite ovvero delle matrici che intervengono nel metodo delle differenze
Matroidi, algoritmi greedy e teorema di Rado
Matroidi, algoritmi greedy e teorema di Rado per il corso di Laboratorio di Algoritmi e Ricerca Operativa Dott. Alberto Leporati / Prof.ssa Enza Messina Dipartimento di Informatica, Sistemistica e Comunicazione
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
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
ESERCIZI SULLA TECNICA Greedy
ESERCIZI SULLA TECNICA Greedy 1. [FILE] Si supponga di avere n files di lunghezze l 1,..., l n (interi positivi) che bisogna memorizzare su un disco di capacità data D. Si assuma che la somma delle lunghezze
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
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
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
ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I
ALGORITMI DI OTTIMIZZAZIONE M Esercizi Parte I Esercizio 1 Dati n oggetti ed un contenitore, ad ogni oggetto j (j = 1,, n) sono associati un peso p j ed un costo c j (con p j e c j interi positivi). Si
Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia
sercizi per il corso di Logistica I a.a. - aniela avaretto ipartimento di Matematica pplicata Università a oscari di Venezia sercizio Individuare un albero di supporto di lunghezza minima (SST) sul seguente
Lista di esercizi 11 maggio 2016
Lista di esercizi 11 maggio 2016 1. Determinare il numero di sequenze binarie di lunghezza n che contengano almeno una coppia di 0 consecutivi. Soluzione. Potrebbe essere utile un programma di calcolo
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
12.1 IL PROBLEMA DEL CAMMINO MINIMO: L ALGORITMO DI DIJKSTRA
Problemi strutturati. IL PROBLEMA DEL CAMMINO MINIMO: L ALGORITMO DI DIJKSTRA Esercizio.. Dato il grafo di Figura.., trovare il peso dei cammini minimi dal nodo a tutti gli altri nodi del grafo (il peso
3.6 Metodi basati sui piani di taglio
3.6 Metodi basati sui piani di taglio Problema generale di Programmazione Lineare Intera (PLI) con A matrice m n e b vettore n 1 razionali min{ c t x : x X = {x Z n + : Ax b} } Sappiamo che esiste una
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
Algoritmo basato su cancellazione di cicli
Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile
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
Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015
1 Lunedí 20 Aprile 2015 1 Istituto di Analisi dei Sistemi ed Informatica IASI - CNR Rilassamento di un problema Rilassare un problema di Programmazione Matematica vuol dire trascurare alcuni (tutti i)
CONICHE. Esercizi Esercizio 1. Nel piano con riferimento cartesiano ortogonale Oxy sia data la conica C di equazione
CONICHE Esercizi Esercizio 1. Nel piano con riferimento cartesiano ortogonale Oy sia data la conica C di equazione 7 2 + 2 3y + 5y 2 + 32 3 = 0. Calcolare le equazioni di una rototraslazione che riduce
AMPL Problemi su Reti
Dipartimento di Matematica Università di Padova Corso di Laurea Informatica Outline Problemi su Reti Cammino Minimo Molti problemi di ottimizzazione combinatoria possono essere modellati ricorrendo ai
Grafi Tutte le strade portano a Roma
Grafi Tutte le strade portano a Roma Un vertice v in un grafo orientato G si dice di tipo Roma se ogni altro vertice w in G può raggiungere v con un cammino orientato che parte da w e arriva a v. 1 Descrivere
VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
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
5.1 Metodo Branch and Bound
5. Metodo Branch and Bound Si consideri il problema min{ c(x) : x X } Idea: Ricondurre la risoluzione di un problema difficile a quella di sottoproblemi più semplici effettuando una partizione (ricorsiva)
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
Teoria dei Grafi Elementi di base della Teoria dei Grafi
L. Pallottino, Sistemi Robotici Distribuiti - Versione del 4 Marzo 2015 42 Teoria dei Grafi Elementi di base della Teoria dei Grafi Definizione 1. Un grafo G = (V, E) è composto da un insieme finito di
SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n
SPAZI E SOTTOSPAZI 1 SOTTOSPAZI E OPERAZIONI IN SPAZI DIVERSI DA R n Spazi di matrici. Spazi di polinomi. Generatori, dipendenza e indipendenza lineare, basi e dimensione. Intersezione e somma di sottospazi,
Esercizio 1. Esercizio 2
A-2 a PI Ricerca Operativa 1 Seconda prova intermedia La Pharmatix è un azienda di Anagni che produce due principi attivi, A e B, che consentono un profitto per grammo venduto di 20 e 30 euro rispettivamente.
L insieme dei numeri Relativi (Z)
L insieme dei numeri Relativi (Z) L esigenza dei numeri relativi Due precise situazioni ci spingono ad ampliare l'insieme de numeri naturali (N): una di carattere pratico, un'altra di carattere più teorico.
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.
Parte IV: Matrici totalmente unimodulari
Parte IV: Matrici totalmente unimodulari Formulazioni Consideriamo il seguente problema di Knapsack 0-1 max (5x 1 + 2x 2 ) st 3x 1 + 4x 2 < 6 x {0,1} 2 Insiemi ammissibili F = {(0, 0), (0, 1), (1, 0)}
Parte V: Rilassamento Lagrangiano
Parte V: Rilassamento Lagrangiano Tecnica Lagrangiana Consideriamo il seguente problema di Programmazione Lineare Intera: P 1 min c T x L I Ax > b Cx > d x > 0, intera in cui A = matrice m x n C = matrice
2.2 Alberi di supporto di costo ottimo
. Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione
Appunti di Elettronica I Lezione 3 Risoluzione dei circuiti elettrici; serie e parallelo di bipoli
Appunti di Elettronica I Lezione 3 Risoluzione dei circuiti elettrici; serie e parallelo di bipoli Valentino Liberali Dipartimento di Tecnologie dell Informazione Università di Milano, 2603 Crema email:
4 0 = 4 2 = 4 4 = 4 6 = 0.
Elementi di Algebra e Logica 2008. Esercizi 4. Gruppi, anelli e campi. 1. Determinare la tabella additiva e la tabella moltiplicativa di Z 6. (a) Verificare dalla tabella moltiplicativa di Z 6 che esistono
Esercizi per il corso di Algoritmi, anno accademico 2011/12
Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli
C I R C O N F E R E N Z A...
C I R C O N F E R E N Z A... ESERCITAZIONI SVOLTE 3 Equazione della circonferenza di noto centro C e raggio r... 3 Equazione della circonferenza di centro C passante per un punto A... 3 Equazione della
ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND
ESERCIZI SULLA TECNICA BACKTRACKING e BRANCH & BOUND 1. [ STRINGHE] Scrivere in pseudo-codice una procedura che, preso in input un intero n, stampi tutte le stringhe di lunghezza minore o uguale ad n sull
UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 20 giugno 2014
A Ricerca Operativa 1 Seconda prova intermedia Un tifoso di calcio in partenza da Roma vuole raggiungere Rio De Janeiro per la finale del mondiale spendendo il meno possibile. Sono date le seguenti disponibilità
