Esercitazione 5 Network Flow

Documenti analoghi
Esercitazione 6 Ancora sul Network Flow

min det det Allora è unimodulare se e solo se det 1, 1, 0 per ogni sottomatrice quadrata di di qualsiasi dimensione.

Esercitazione 2. Progettare un algoritmo che risolva tale problema in tempo O( E + V log V ).

Ottimizzazione su grafi: massimo flusso (parte 1) Ottimizzazione su grafi:massimo flusso (parte 1) p. 1/33

Grafi e reti di flusso

Sommario della lezione

Possibile applicazione

Esercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST.

Soluzione. 2.1 Pianificazione multiperiodo della produzione energetica

Applicazioni del Massimo flusso (II parte)

Introduzione ai grafi

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

AMPL Problemi su Reti

Il valore di flusso che si ottiene è

Complessità Computazionale

Teorema 1. Il problema AP è N P-complete.

3.3 Problemi di PLI facili

Sommario della lezione

Modelli di Programmazione Lineare. PRTLC - Modelli

Aniello Murano Classe dei problemi NP. Nella lezione precedente abbiamo visto alcuni problemi che ammettono soluzione polinomiale

Massimo flusso e matching

Claudio Arbib Università di L Aquila. Ricerca Operativa. Reti di flusso

Lista di esercizi 11 maggio 2016

Algoritmo basato su cancellazione di cicli

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

Stime dell ottimo - Rilassamenti. PRTLC - Rilassamenti

Certificati dei problemi in NP

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

G è 2-colorabile se ogni nodo può essere colorato di bianco o di nero in modo che nodi connessi da archi siano colorati con colori distinti.

A-2 a PI. Esercizio 2. Domanda 3

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 1

Progettazione di algoritmi. Reti di flusso (2)

Algoritmo per A. !(x) Istanza di B

Matroidi, algoritmi greedy e teorema di Rado

Applicazioni del Massimo flusso. Progettazione di Algoritmi a.a Matricole congrue a 1 Docente: Annalisa De Bonis

Processi di cost management - Programmazione multiperiodale

1) Data la seguente istanza di TSP (grafo completo con 5 nodi): c 12 = 52; c 13 = 51; c 14 = 40; c 15 = 53; c 23 = 44;

Analisi e implementazione dell algoritmo di Dijkstra (Parte 1)

ESERCIZIO 1: Punto 1

Complementi ed Esercizi di Informatica Teorica II

Esame di Ricerca Operativa del 1/02/2019

Ricerca Operativa. G. Liuzzi. Lunedí 20 Aprile 2015

Problema di flusso massimo

Problemi di Flusso: Il modello del Trasporto

a 11 a 12 a 1n a 21 a 22 a 2n a m1 a m2 a mn mentre le variabili decisionali sono rappresentate dal vettore colonna n-dimensionale x,

Esercitazione 4 Algoritmi greedy

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);

Ottimizzazione Combinatoria

Soluzioni della settima esercitazione di Algoritmi 1

Progettazione di Algoritmi

Problemi intrattabili

Automi e Linguaggi Formali

Il Branch & Bound. Definizione 1. Sia S R n. La famiglia S = {S 1, S 2,..., S k S} tale che S 1 S 2 S k = S viene detta suddivisione di S.

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

Reti Logiche 1. Prof. B. Buttarazzi A.A. 2009/2010. Reti Sequenziali

Programmazione Matematica / A.A Soluzioni di alcuni esercizi

Le equazioni lineari

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Problemi. sbj. x 0, x intero

Capitolo 9: Trattabilitá e intrattabilitá dei problemi

Progettazione di Algoritmi. Classe 3 (matricole congrue 2 modulo 3) Prof.ssa Anselmo. Appello del 22 Febbraio Attenzione:

Grafi Stessa distanza

Teoria della Complessità Computazionale

Ricerca Operativa A.A. 2007/ Esercitazione di laboratorio: Branch and Bound.

Esame di Ricerca Operativa del 19/02/2019. Esercizio 1. Risolvere il seguente problema di programmazione lineare applicando l algoritmo del simplesso:

Metodi e Modelli per l Ottimizzazione Combinatoria Problema dell assegnamento e matrici totalmente unimodulari

Esame di Ricerca Operativa del 11/1/19

UNIVERSITÀ DEGLI STUDI ROMA TRE Collegio Didattico in Ingegneria Informatica corso di Ricerca operativa 2. Esercizi sul problema dell assegnamento

Programmazione Matematica / A.A Soluzioni di alcuni esercizi

Prima prova Intermedia di Ricerca Operativa 2 COMPITO A Esercizio 1 (7 punti): LIFO

Metodi e Modelli per l Ottimizzazione Combinatoria Cover inequalities

Esercizio 2. Domanda 3

Sommario della lezione

Algoritmi esatti. La teoria ci dice che per problemi difficili (come il

Complessità Strutturale e NP-Completezza

Complessità computazionale

x 1 x x 1 2 x 2 6 x 2 5 Indici di base Vettore Ammissibile Degenere (si/no) (si/no)

PSPACE completezza. Un linguaggio A è PSPACE completo se. 1. A è in PSPACE, cioè esiste una TM T che accetta A con complessità di spazio polinomiale.

Introduzione alla teoria della NP-completezza

Alberi e alberi binari I Un albero è un caso particolare di grafo

Esame di Ricerca Operativa - 17 luglio 2008 Facoltà di Ingegneria - Udine - CORREZIONE -

i completi l'esecuzione dell'algoritmo di programmazione dinamica per questo problema restituendo il valore ottimo e una soluzione ottima del problema

Alberi e alberi binari I Un albero è un caso particolare di grafo

Algoritmi e Strutture Dati II: Parte B Anno Accademico Lezione 8

DISPIEGAMENTO CENTRALIZZATO L ACCOPPIAMENTO PERFETTO DI PESO MINIMO IL PROBLEMA DEL SENSORI MOBILI IL PROBLEMA (1)

Cammini minimi fra tutte le coppie

Note sulle classi di complessità P, NP e NPC per ASD (DRAFT)

Appunti lezione Capitolo 15 Ricerca locale

Lezione 5: Applicazioni Lineari. 1 Definizione di applicazione lineare

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

a cura di Luca Cabibbo e Walter Didimo

Trasformare array paralleli in array di record

Ad ogni arco (i,j) del grafo e' associato un valore intero c(i,j) detto capacita' dell'arco

RICERCA OPERATIVA (a.a. 2011/12) Nome: Cognome: Matricola:

Ottimizzazione Combinatoria 2 Presentazione

Parte IV: Rafforzamento di formulazioni e algoritmo dei piani di taglio

Esame di Ricerca Operativa del 07/06/2019

Transcript:

Esercitazione 5 Network Flow Diamo innanzitutto una definizione informale del concetto di riduzione polinomiale tra problemi: Si dice che un problema A è riducibile polinomialmente ad un problema B, se è possibile trasformare tramite una funzione f, che opera in tempo polinomiale, un istanza x del problema A in un istanza y = f(x) del problema B, in modo che esiste una soluzione per A(x) se e solo se esiste una soluzione per B(y). Useremo tale concetto per risolvere una serie di problemi riducendoli a un problema di flusso. Faremo vedere come una soluzione sul problema di partenza ci definisce un max-flow su una rete ottenuta da tale istanza e viceversa. Problema 11 Supponiamo che n studenti decidano, per un periodo di m giorni, di utilizzare a turno le proprie automobili per andare a lezione. Supponiamo anche che ogni auto sia sufficientemente capiente da poter trasportare tutti gli studenti. Non tutti gli studenti devono andare a lezione negli stessi giorni: in altri termini, esiste una funzione booleana che associa ad una coppia studente-giorno il valore true se lo studente deve andare a lezione quel giorno e false altrimenti. Un esempio molto ridotto di tale problema, con n = 4 e m = 5 è riportato nella tabella sottostante, in cui per ogni giorno da Lunedì a Venerdì viene riportato se lo studente i-esimo deve andare a lezione. Lu Ma Me Gi Ve 1 X X X 2 X X X 3 X X 4 X X X Vogliamo trovare una assegnazione equa dell utilizzo delle automobili, nel senso intuitivo che chi deve andare più spesso a lezione dovrà anche mettere più spesso a disposizione la proprio automobile. Possiamo assegnare ad ogni studente un valore che misura la sua quota di utilizzo del car sharing nel modo seguente: 1. per ogni giorno, se k sono i viaggiatori, ognuno di essi riceve un valore pari a 1 k 2. il valore T i assegnato ad uno studente è pari alla somma dei valori ricevuti ogni giorno La tabella seguente mostra i valori nell esempio considerato, l ultima colonna specifica la quota di utilizzo per ogni studente. Lu Ma Me Gi Ve T 1 1/3 1/2 1/2 4/3 2 1/2 1/2 1/2 3/2 3 1/3 1/2 5/6 4 1/3 1/2 1/2 4/3 L assegnazione che cerchiamo dovrà far sì che il viaggiatore i non usi la propria automobile per più di T i giorni, sugli m complessivi. Soluzione Al fine di trovare un assegnazione di automobili che rispetti i vincoli imposti dal problema, effettueremo una riduzione al problema max-flow su una rete costruita a partire dall istanza del problema di partenza. 1

Nella nostra rete ci sarà un nodo v i per ogni studente i ed un nodo d j per ogni giorno j, sono inoltre presenti un nodo sorgente s e un nodo target t. Per quanto riguarda gli archi ci sarà un arco diretto dal nodo s verso ogni nodo v i con capacità pari al valore T i. Ogni nodo studente è collegato con un arco diretto di capacità 1 ai nodi che rappresentano i giorni in cui deve andare a lezione. Infine tutti i nodi giorno sono collegati al nodo t con un arco diretto di capacità 1. Riassumendo definiamo la nostra rete G = (V, E) nel seguente modo: per i nodi abbiamo: V = {s, t} {v 1,, v n } {d 1, d m }; per gli archi si ha che E include: per i = 1,, n, si hanno gli archi (s, v i ) con capacità T i ; per i = 1,, n e j = 1,, m si ha l arco (v i, d j ) con capacità 1 se e solo se lo studente i deve andare a lezione il giorno j; per j = 1,, m si hanno gli archi (d j, t) con capacità 1. Nella figura seguente è rappresentata la rete ottenuta a partire dall istanza data in esempio, dove gli archi senza valore associato hanno capacità 1: Ora che abbiamo definito come opera la funzione di riduzione facciamo vedere come possiamo trovare una soluzione al problema dato trovando un max flow su G che satura il taglio composto da tutti i nodi tranne t. Claim. un assegnazione di automobili ammissibile un flusso massimo f su G tale che v(f ) = m Dimostriamo ora l affermazione precedente: = In questo caso facciamo vedere come a partire da un assegnazione ammissibile di automobili è possibile definire un flusso massimo ammissibile su G di valore m e quindi che satura il taglio composto da tutti i nodi eccetto t. Per gli archi del tipo (v i, d j ) poniamo f(v i, d j ) = 1 se nell assegnazione in nostro possesso lo studente i deve portare la macchina il giorno j, 0 altrimenti. Per ogni v i sia x i il numero di archi uscenti con flusso 1 abbiamo che x i T i (in quanto l assegnazione è ammissibile), per rispettare il vincolo di conservazione sul flusso dobbiamo fornire in ingresso ad ogni nodo v i, x i unità di flusso, l unico arco entrante nei nodi v i è del tipo (s, v i ) quindi poniamo f(s, v i ) = x i, per tali archi il vincolo sulle capacità viene rispettato in quanto la loro capacità era stata posta a T i. Ora mostriamo che su ogni arco del tipo (d j, t) si ha il vincolo sulle capacità rispettato e flusso pari ad 1: ancora una volta essendo l assegnazione ammissibile abbiamo che per ogni giorno uno ed un solo studente deve portare la macchina, quindi per ogni nodo d j si avrà flusso entrante pari ad 1, per rispettare il vincolo di conservazione facciamo defluire tale unità di flusso sull arco (d j, t), dato che le capacità di tali archi erano state poste ad 1 avremo che tutte le capacità sono state rispettate ed inoltre saranno tutti saturi. Da ciò deriva che abbiamo trovato un flusso massimo ammissibile di valore m. 2

= Mostriamo ora come da un flusso ammissibile di valore m è possibile ricavare un assegnazione di automobili ammissibile. Dopo aver fatto girare un algoritmo di max f low sulla nostra rete avremo che alcuni archi del tipo (v i, d j ) avranno flusso 1 mentre altri 0. Costruiamo l assegnazione richiesta assegnando la macchina allo studente i il giorno j se e solo se si ha che f(v i, d j ) = 1. Mostriamo che l assegnazione così ottenuta è ammissibile: Innanzitutto ogni studente i non porta la macchina più di T i giorni in quanto essendo c(s, v i ) = T i da ogni nodo v i non possono uscire più di T i archi con flusso 1. Banalmente gli studenti porteranno la macchina solo i giorni in cui devono effettivamente andare a lezione, in quanto i relativi nodi erano stati collegati solo a tali giorni. Manca ancora da mostrare che ogni giorno uno ed un solo studente porterà la macchina, osservando che il flusso ha valore m si ha che ogni arco del tipo (d j, t) ha flusso pari ad uno quindi per il vincolo di conservazione del flusso si ha anche che per ogni nodo d j si ha uno ed un solo arco entrante con flusso 1 (proveniente dal nodo associato all unico studente che porterà la macchina quel giorno). Quindi ricapitolando, avendo mostrato che il problema è riducibile ad un problema di max-flow, al fine di trovare una soluzione, possiamo trasformare l istanza data in un istanza di max-flow, trovare un flusso massimo sulla rete ottenuta, e da tale flusso ricavare la soluzione per il problema di partenza come descritto nel secondo punto della dimostrazione precedente. Sapete analizzare la complessità temporale dell algoritmo? Problema 12 Si consideri il seguente problema. Un gruppo di famiglie {F 1, F n } si incontra per una cena in un ristorante. Ogni famiglia F i è composta da p i persone. Il ristorante mette a disposizione un insieme di tavoli {T 1, T m }, con il tavolo T j adatto per t j commensali. Si vogliono assegnare i posti a tavola in modo tale da far socializzare le famiglie, evitando quindi che due membri della stessa famiglia siedano allo stesso tavolo: ci chiediamo se esiste una possibile assegnazione che soddisfi questo vincolo. Soluzione Come nell esercizio precedente andremo a ridurre il problema ad un problema di max-flow. Data un istanza del problema definiamo la rete G = (V, E) nel seguente modo: c è un nodo F i per ogni famiglia i, ed un nodo T j per ogni tavolo j, sono inoltre presenti un nodo sorgente s ed un nodo target t. Aggiungiamo un arco dal nodo s verso ogni nodo famiglia mettendo capacità pari al numero di componenti della famiglia associata, colleghiamo ogni nodo famiglia con tutti i nodi tavolo ponendo capacità 1, infine colleghiamo ogni nodo tavolo al nodo t con capacità pari alla capienza del tavolo. Riassumendo definiamo la nostra rete G = (V, E) nel seguente modo: per i nodi abbiamo: V = {s, t} {F 1,, F n } {T 1, T m }; per gli archi si ha che E include: per i = 1,, n, si hanno gli archi (s, F i ) con capacità p i ; per i = 1,, n e j = 1,, m si ha l arco (F i, T j ) con capacità 1; per j = 1,, m si hanno gli archi (T j, t) con capacità t j ; Nella figura seguente è rappresentata la rete ottenuta a partire da un esempio cosi definito: abbiamo tre famiglie con p 1 = 3, p 2 = 2, p 3 = 4 e quattro tavoli con t 1 = 3, t 2 = 2, t 3 = 2, t 4 = 4. Gli archi senza valore associato hanno capacità 1. 3

Ora che abbiamo definito come opera la funzione di riduzione facciamo vedere come possiamo trovare una soluzione al problema dato trovando un max flow su G che satura il taglio composto dal solo nodo s e quindi di valore pari al numero di persone totali da mettere a tavola. Claim. un assegnazione di persone ai tavoli un flusso massimo f su G tale che v(f ) = n Dimostriamo ora l affermazione precedente: = p i In questo caso facciamo vedere come a partire da una assegnazione ammissibile di persone ai tavoli è possibile definire un flusso massimo ammissibile su G di valore n p i e quindi che satura il taglio composto dal solo nodo s. Per gli archi del tipo (F i, T j ) poniamo f(f i, T j ) = 1 se nell assegnazione in nostro possesso una persona della famiglia i siede al tavolo j, 0 altrimenti. Per ogni nodo del tipo T j non ci sono più di t j archi entranti con flusso 1 (visto che siamo partiti da un assegnazione ammissibile), quindi è possibile far defluire il flusso entrante verso il nodo t in quanto la capacità dell arco uscente dal generico nodo T j è stata posta proprio a t j. Per quanto riguarda i nodi F i, ognuno avrà p i archi uscenti con flusso 1, per rispettare il vincolo di conservazione del flusso quindi poniamo a p i il flusso sull arco (s, F i ) quindi avremo che tutte le capacità sugli archi uscenti da s sono rispettati e tutti tali archi saranno saturi dandoci un flusso di valore n p i. = Mostriamo ora come da un flusso ammissibile di valore n p i è possibile ricavare un assegnazione di persone ai tavoli ammissibile. Dopo aver fatto girare un algoritmo di max f low sulla nostra rete avremo che alcuni archi del tipo (F i, T j ) avranno flusso 1 mentre altri 0. Costruiamo l assegnazione richiesta assegnando una persona della famiglia i al tavolo j se e solo se si ha che f(f i, T j ) = 1. Mostriamo che l assegnazione così ottenuta è ammissibile: Dato che per ogni nodo F i c è un solo arco verso ogni nodo T j avremo che due persone della stessa famiglia non sono state assegnate allo stesso tavolo. Mostriamo ora che le capacità dei tavoli sono rispettate: dato che il flusso è ammissibile sugli archi del tipo (T j, t) non passa flusso superiore a t j e quindi per il vincolo di conservazione sul flusso in ogni nodo del tipo T j non entrano più di t j archi con flusso 1. Mostriamo infine come tutte le persone vengono correttamente assegnate a un tavolo: dato che il flusso satura il taglio composto dal solo nodo s avremo che per ogni nodo F i ci saranno p i unità di flusso entranti, per il vincolo di conservazione questo flusso in uscita è stato ripartito in p i archi con flusso 1, facendo così in modo che tutte le persone sono state correttamente assegnate a un qualche tavolo. Quindi ricapitolando, avendo mostrato che il problema è riducibile ad un problema di max-flow, al fine di trovare una soluzione, possiamo trasformare l istanza data in un istanza di max-flow, trovare un flusso massimo sulla rete ottenuta, e da tale flusso ricavare la soluzione per il problema di partenza come descritto nel secondo punto della dimostrazione precedente. 4

Problema 13 Si consideri il seguente problema. Data una pianta di un appartamento con la posizione di n punti luce ed n interruttori, si vuole determinare se essa è ergonomica, nel senso che è possibile collegare ciascun interruttore a un unico punto luce in modo tale che ogni punto luce sia visibile dall interruttore che lo comanda e che ogni punto luce sia comandato da un solo interruttore. In figura, a sinistra è mostrata una pianta per la quale ciò è possibile, mentre non lo è in quella a destra (i punti neri rappresentano i punti luce mentre i punti bianchi rappresentano gli interruttori). Assumendo di avere un sottoprogramma che, dati due segmenti nel piano, determina in tempo O(1) se si intersecano, descrivere un algoritmo che, data una pianta, determina se è ergonomica in tempo polinomiale in m, n ed il numero delle pareti. Soluzione Il problema ci sta chiedendo se è possibile trovare una funzione biunivoca tra l insieme degli interruttori e quello dei punti luce con il vincolo che un interruttore può essere associato solo ad un sottoinsieme dei punti luce (quelli da lui visibili). Pensandoci bene il problema coincide con il problema del matching perfetto su un grafo bipartito, dove l insieme dei nodi è costituito dall unione tra l insieme degli interruttori e l insieme dei punti luce. Ognuno dei possibili n 2 archi è aggiunto al grafo se e soltanto se non c è alcuna parete che interseca il segmento interruttore puntoluce. Tale test richiede tempo lineare nel numero delle pareti. Quindi data una pianta riusciamo a costruire il relativo grafo in tempo O(n 2 numerop areti) quindi polinomiale nella dimensione dell istanza. Come visto a lezione dato un grafo bipartito G = (V = (V 1, V 2 ), E) per trovare un matching perfetto su di esso possiamo ricondurci ad un problema di max-flow. La rete è derivata aggiungendo un nodo s collegato a tutti i nodi di V 1 tramite un arco diretto; si orientano tutti gli archi tra i due sottoinsiemi verso i nodi in V 2. Si aggiunge un nodo target t e si collegano tutti i nodi in V 2 a quest ultimo nodo tramite un arco diretto. La capacità di ogni arco viene impostata ad uno. Facendo girare un algoritmo per il calcolo del max-flow, se otteniamo un flusso di valore n (dove n = V 1 = V 2 ), sul grafo originale è possibile costruire un matching perfetto, in particolare tale matching è costituito dagli archi tra nodi di V 1 e V 2 che avranno flusso pari ad uno. Nelle figure sottostanti infine è riportato un esempio che mostra come una piantina viene modellata in un grafo bipartito e come quest ultimo viene ridotto a un istanza di max-flow che risolve il problema del matching perfetto. 5

6