Sommario della lezione

Documenti analoghi
Sommario della lezione

Sistemi Web per il turismo - lezione 3 -

Fondamenti di Internet e Reti

Sommario della lezione

Problemi di Instradamento di Veicoli

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Barriere assorbenti nelle catene di Markov e una loro applicazione al web

Esercitazione n o 3 per il corso di Ricerca Operativa

TEORIA RELAZIONALE: INTRODUZIONE

ESERCIZI DEL CORSO DI INFORMATICA

Per formalizzare il concetto sono necessarie alcune nozioni relative ai poliedri e alla loro descrizione.

Matematica con il foglio di calcolo

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di Network design

Lezione 3: Il problema del consumatore: Il

Algoritmi per la Visualizzazione. Disegno 2D ortogonale. Disegno ortogonale 2D (1) Disegno ortogonale 2D (2)

Un esempio di applicazione della programmazione lineare intera all ingegneria del software: stima del worst-case execution time di un programma

Esercitazioni di statistica

INDICAZIONI PER LA RICERCA DEGLI ASINTOTI VERTICALI

b i 1,1,1 1,1,1 0,1,2 0,3,4

Riconoscere e formalizzare le dipendenze funzionali

Prof.ssa Laura Pagnozzi Prof. Ivano Coccorullo. Calcolo Combinatorio

Il campionamento statistico. prof. C.Guida

Il Principio dei lavori virtuali

Le aree dell informatica

7 Esercizi e complementi di Elettrotecnica per allievi non elettrici. Circuiti elementari

Analisi del ciclo di vita per processi industriali

Analisi. Calcolo Combinatorio. Ing. Ivano Coccorullo

Università degli studi di Foggia SSIS D.M Laboratorio di didattica della matematica finanziaria Classe 17/A

Prof. Pagani Corrado HTML

Approcci esatti per il job shop

I costi d impresa (R. Frank, Capitolo 10)

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

Esame di Ricerca Operativa del 20/12/13. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Il calcolatore. Architettura di un calcolatore (Hardware)

Definizione Dati due insiemi A e B, contenuti nel campo reale R, si definisce funzione reale di variabile reale una legge f : A

METODI DI CONVERSIONE FRA MISURE

Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare Problemi di flusso

Informatica Teorica. Macchine a registri

STRUTTURE NON LINEARI

Prof. Ing. Michele Marra Appunti delle lezioni di Ricerca Operativa Teoria dei grafi

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1

Lezioni di Economia Aziendale classe prima Prof. Monica Masoch ESERCIZI SUL CALCOLO %

Introduzione alla programmazione lineare. Mauro Pagliacci

MINISTERO DELL'ISTRUZIONE, DELL'UNIVERSITÀ, DELLA RICERCA SCUOLE ITALIANE ALL ESTERO

Generazione di Numeri Casuali- Parte 2

Elementi di matematica finanziaria

Esame di Ricerca Operativa del 19/01/2016

Minimo Albero Ricoprente

4.2. Disegno 3D. Figura punto di vista. punto di vista. punto di vista. (b ) (a ) (c )

FSM: Macchine a Stati Finiti

Esame di Ricerca Operativa del 19/01/2016

Esercitazioni di contabilità

OpenDataLazio Formia 9 aprile 2015 Laboratorio. Roberto Angeletti

Banchi ortogonali Casi importanti

Lezione 12 Argomenti

Offerta in concorrenza perfetta: Cap.6

2 Formulazione dello shortest path come problema di flusso

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Modelli di Programmazione Lineare. PRTLC - Modelli

Stop e Reverse passa alla cassa

Esame di Ricerca Operativa del 18/12/12. Esercizio 1. Completare la seguente tabella considerando il problema di programmazione lineare:

Segue a questa lista una descrizione delle funzioni per ogni punto.

Efficienza secondo i criteri di first best

TUTORIAL CALCOLO PONTE TERMICO CON THERM

Marketing Elettronico e Diretto

PROVA FINALE V. AULETTA G. PERSIANO ALGORITMI II - -MAGIS INFO

Grafi. Il collegamento fra due nodi in un grafo rappresenta una relazione di adiacenza o di vicinanza tra essi

Regola del partitore di tensione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Introduzione alla tecnica di Programmazione Dinamica

PROBLEMI DI SCELTA dipendenti da due variabili d azione

Sistemi Web! per il turismo! - lezione 3 -

differiticerti.notebook November 25, 2010 nov nov nov Problemi con effetti differiti

Esistono alcune sostanze che manifestano la capacità di attirare la limatura di ferro, in particolare, la magnetite

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Algoritmi e strutture di dati. Dispense. Corso di Laurea in Informatica. a.a Giorgio Gambosi UNIVERSITÀ DI ROMA ``TOR VERGATA''

FUNZIONI CONTINUE - ESERCIZI SVOLTI

Cosa decidete di fare?

Principi e Metodologie della Progettazione Meccanica

Online Gradient Descent

Sommario della lezione

NUMERI COMPLESSI. Test di autovalutazione

La in verifica forma teoria normale della normalizzazione fornisce comunque uno strumento di già

2.3.4 Pianificazione di progetti

CAPITOLO V. DATABASE: Il modello relazionale

Strumenti freeware/open source per l'insegnamento delle discipline scientifiche

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

MODELLO PER LA RAPPRESENTAZIONE DI SISTEMI DI PRODUZIONE A FLUSSO IN FUNZIONE DELLA QUALITÀ

7 giorni 30 giorni 365 giorni

Manuale Utente per la Gestione dei Revisori degli Enti Locali

ISCRIZIONI ONLINE 2014 II FASE Scuole Verifica domande

Elementi di Informatica e Programmazione

Ai fini della comprensione e risoluzione corretta de problema risulta molto utile rappresentarne la trasformazione su un diagramma SY.

0.1 Esercizi calcolo combinatorio

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

2.2 Scheduling in Linux

Le Reti Informatiche

Ottimizzazione Multi Obiettivo

Transcript:

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 1/21 Sommario della lezione Ulteriori applicazioni del Massimo Flusso 1. Connettività di grafi 2. Selezione di progetti

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 2/21 Connettività di grafi Problema: Dato un grafo diretto G = (V,E) e due nodi s e t, trovare il minimo numero di archi che disconnette t da s. Def. Un insieme di archi F E disconnette s da t se tutti i cammini da s a t usano almeno un arco di F. 2 5 s 3 6 t 4 7 Il problema trova applicazione nell analisi della tolleranza ai guasti di reti di calcolatori (ed in tante altre situazioni...)

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 3/21 Il risultato Il minimo numero di archi che disconnette t da s = massimo numero di cammini arco-disgiunti da s a t. Proviamo innanzitutto il. Sia F E un insieme di cardinalità k minima di archi che disconnette t da s. Ogni cammino da s a t deve usare almeno un arco di F (altrimenti F non disconnetterebbe t da s) pertanto il massimo numero di cammini arco-disgiunti da s a t è al più k 2 5 2 5 s 3 6 t s 3 6 t 4 7 4 7 Nell esempio, abbiamo 2 cammini arco disgiunti da s a t e 2 archi bastano a disconnettere t da s.

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 4/21 Proviamo ora la diseguaglianza oppposta Sia k il massimo numero di cammini arco-disgiunti da s a t. Nella lezione scorsa vedemmo che tale numero corrispondeva anche al valore del massimo s-t flusso f nel grafo. Ricordiamo inoltre che la massimalità di f implicava che in G esiste un taglio (A,B) di capacità c(a,b) = v(f) = k. Gli archi che vanno da A a B (ovviamente in numero di k visto che ogni arco ha capacità pari a 1) costituiscono un insieme F che disconnette t da s, per cui la minima cardinalità di un F che disconnette t da s è k. 2 5 2 5 s 3 6 t s 3 6 t A 4 7 B 4 7

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 5/21 Ricordando il risultato provato nella lezione scorsa: Il massimo numero di cammini da s a t in G che sono arco-disgiunti = valore del massimo flusso in G da s a t e quello appena provato: Il minimo numero di archi che disconnette t da s = massimo numero di cammini arco-disgiunti da s a t. otteniamo Risultato: Il minimo numero di archi che disconnette t da s = valore del massimo flusso in G da s a t che ci fornisce anche un algoritmo di complessità O(mn)) per risolvere il problema, dove come al solito n = V,m = E.

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 6/21 E se volessimo studiare gli stessi problemi relativamente a vertici? ovvero considerare i seguenti problemi: Problema 1: Determinare il massimo numero di cammini tra due vertici di un grafo in modo tale che nessuna coppia di cammini abbiano vertici in comune? (ovvero i cammini siano vertici-disgiunti) Problema 2: Determinare il minimo numero di vertici che disconnette un vertice t da s? Bisogna rifare tutto da capo? No.

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 7/21 Basta considerare grafi con capacità anche sui vertici ovvero, generalizzare il concetto di rete di flusso mediante un grafo diretto G = (V, E) con le seguenti caratteristiche: associato ad ogni arco e E vi è un numero c(e) 0, capacità dell arco e associato ad ogni nodo u V vi è un numero d(u) 0 capacità del nodo u vi è un nodo s chiamato sorgente, senza archi entranti vi è un nodo t chiamato destinazione, senza archi uscenti In tale situazione un flusso f deve soddisfare le seguenti condizioni 1. (Vincoli sulle capacità) e E 0 f(e) c(e) e u V e entranti in uf(e) d(u) 2. (Vincoli sulla conservazione del flusso) v V,s v t, vale e entranti in v f(e) = e uscenti da v f(e)

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 8/21 Il bello di grafi siffatti è che non sono più difficili da trattare di quelli soliti, ovvero di grafi con capacità solo sugli archi. Infatti, dato un grafo con capacità c(e) sugli archi e capacità d(u) sui nodi avremmo una situazione siffatta, in cui la somma dei flussi entranti nel nodo deve essere d(u): c 2 c 5 c 2 c 5 c 3 d(u) c 6 c 3 u d(u) u c 6 c 1 c 4 c 1 c 4 Potremmo trasformarla in una situazione come quella di destra, in cui si introduce un nodo fittizio u, connesso a u con un arco con capacità d(u). Nel grafo risultante dopo la trasformazione sopra delineata (effettuata ovviamente per ogni nodo) vi sono solo capacità su archi (che sappiamo trattare). È altresì ovvio che esiste un flusso di valore k nel grafo di partenza (con capacità anche sui nodi) se e solo se ne esiste uno dello stesso valore nel grafo modificato (con capacità solo sugli archi).

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 9/21 Riassumendo... Le tecniche di flusso introdotte permettono quindi di risolvere anche questioni che coinvolgono condizioni su nodi, ad esempio determinare il massimo numero di cammini nodo-disgiunti tra una coppia di nodo del grafo, o determinare il minimo numero di nodi necessari a disconnettere una coppia di nodi nel grafo, etc. Basterà imporre le opportune limitazioni sia alla capacità sugli archi, che sui nodi. Ad es., per determinare il massimo numero di cammini nodo-disgiunti tra due vertici s e t di un grafo G, basterà calcolare il massimo flusso da s a t in G, dove avremo imposto che la capacità di ciascun nodo è pari a 1, trasformare il grafo come prima descritto e risolvere il problema del massimo flusso nel grafo trasformato per ottenere la risposta.

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 10/21 Esempio: Vie di Fuga Supponiamo di avere una griglia, e dei punti in essa. Il problema è di stabilire se esistono cammini vertice-disgiunti da ciascun punto alla frontiera della griglia non ha soluzione

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 11/21 Formulazione del problema in termini di flusso Input: Grafo griglia G = (V,E), consistente di n colonne ed n righe di vertici. Il vertice generico nella riga i e colonna j può essere rappresentato dalla coppia (i, j). Ogni vertice ha quattro vicini, tranne che per i vertici sulla frontiera (che ne hanno o due o tre). In input abbiamo anche m n 2 punti (x 1,y 1 ),...,(x m,y m ) per i quali vogliamo stabilire se ci sono o meno m cammini disgiunti da essi alla frontiera della griglia (non importa dove, purchè si possa raggiungere la frontiera) Definiamo un grafo di flusso G = (V,E ) nel seguente modo: V = V {s,t} E = E {archi da s ad ogni punto (x i,y i )} {archi da ogni punto della frontiera a t} Ogni arco di G ha capacità pari a 1, ogni nodo di G ha capacità pari a 1.

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 12/21 Esempio 1 s t

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 13/21 Vale il seguente risultato Il problema delle vie di fuga ha soluzione positiva (ovvero esistono i cammini nodi-disgiunti dagli m punti in input sulla griglia alla frontiera della griglia) se e solo se nel grafo G esiste un massimo flusso a valori interi pari a m. Prova: per esercizio.

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 14/21 Selezione di progetti Input: insieme di progetti P, a ciascun progetto v P è associato un ricavo p(v) che può essere sia positivo (guadagno) che negativo (costo). Ad es., alcuni progetti generano guadagno (creare pagine web interattive per e-commerce, ridisegnare siti web, etc.) altri progetti, che possono essere necessari per la realizzazione di quelli che generano guadagno, richiedono invece spese (acquisire licenze software, aggiornare server, etc.) Input: insieme di prerequisiti E: se (v,w) E, allora prima di eseguire il progetto v occorre necessariamente aver eseguito il progetto w un insieme di progetti A P è fattibile se i progetti prerequisiti di ogni progetto v A appartengono essi stessi ad A Output: un insieme di progetti A fattibile di profitto profitto(a) = v Ap(v) massimo.

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 15/21 Es. : Estrazione da cave all aperto Blocchi di materiale vengono estratti dalla superficie per estrarre sostanze Ciascun blocco v ha un valore netto p(v) =(valore della sostanza contenuta in v) (costo dell estrazione del blocco v) Non si può estrarre il blocco v prima di w o prima di x

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 16/21 Introduciamo il grafo G = (V, E) dei prerequisiti V =insieme dei progetti, (v,w) E se prima di eseguire il progetto v occorre necessariamente aver eseguito il progetto w Nel grafo di sotto, l insieme {v,w,x} è un insieme fattibile di progetti, l insieme {v, x} non è un insieme fattibile di progetti. w v x

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 17/21 Formuliamo il problema come un problema di minimo taglio assegniamo capacità a tutti gli archi dei prerequisiti aggiungiamo un arco (s,v) con capacità c(s,v) = p(v) se p(v) > 0 aggiungiamo un arco (v,t) con capacità c(v,t) = p(v) se p(v) < 0 Poniamo inoltre: p(s) = p(t) = 0. u w p(u) p(w) s p(y) y z p(z) t p(v) p(u) v x

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 18/21 Osservazione: Sia A P un sottoinsieme di progetti fattibile. Definiamo il taglio (A,B ) con A = A {s},b = (P A) {t}. Per definizione di fattibilità nessun arco (i,j) E attraversa il taglio (in quanto se i A dipende da j allora anche j A) Esempio: A = {w,v,x} u w s y z t v x

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 19/21 Per A P fattibile, e per A = A {s},b = (P A) {t} vale: c(a,b ) = v P:p(v)>0p(v) v A p(v) Ricordiamo che gli archi del grafo di flusso possono essere divisi in 3 categorie: 1.gli archi di E che descrivono le precedenze, 2. gli archi che fuoriescono da s e 3. gli archi che entrano in t. Inoltre, gli archi di E non attraversano il taglio (come prima notato) e quindi non contribuiscono alla sua capacità c(a,b ). Gli archi che entrano in t contribuiscono a c(a,b ) per la quantità ( p(v)) v A:p(v)<0 mentre quelli che fuoriescono da s contribuiscono a c(a,b ) per la quantità p(v) = p(v) p(v) v/ A:p(v)>0 v P:p(v)>0 v A:p(v)>0

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 20/21 Per A P fattibile, e per A = A {s},b = (P A) {t} Otteniamo quindi c(a,b ) = c(e)+ c(e) e:e fuoriesce da A e và in t = ( p(v))+ = v A:p(v)<0 v P:p(v)>0p(v) v A che è quallo che volevamo provare. e:e fuoriesce da A e parte da s p(v) v P:p(v)>0 v A:p(v)>0 p(v) p(v)

Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 21/21 Posto C = v P:p(v)>0 p(v) e notando che ogni arco (v,w) che definisce precedenze tra progetti ha capacità > C, otteniamo che ogni taglio (A,B ) di capacità c(a,b ) C definisce implicitamente un insieme fattibile A = A {s}, in quanto nessun arco di precedenze può attraversare tale taglio, avrebbe infatti da solo una capacità maggiore della capacità c(a,b ) dell intero taglio. Mettendo tutto insieme, otteniamo che la capacità di tali tagli (A,B ) è uguale a c(a,b ) = v P:p(v)>0p(v) v A p(v) = C profitto(a) e quindi per trovare un insieme di profitto massimo (che era il nostro obiettivo) basta trovare un taglio (A,B ) di capacità minima ed estrarne s, (e questo lo sappiamo fare, con l algoritmo di Ford e Fulkerson).