• Non ci sono risultati.

Lezionidi RicercaOperativa Lezionen 18 °

N/A
N/A
Protected

Academic year: 2021

Condividi "Lezionidi RicercaOperativa Lezionen 18 °"

Copied!
34
0
0

Testo completo

(1)

Lezione n

°

18

- Teoria dei grafi: definizioni di base - Problema del flusso a costo minimo

R. Cerulli

F. Carrabs

Lezioni di Ricerca Operativa

(2)

Un grafo non orientato G=(V,E) è dato da una coppia di insiemi finiti:

! V={v1,...,vn} l’insieme degli n Nodi di G

! E={e1,..,em}ÍVxV l’insieme degli m Archi non orientati di G

Ogni arco non orientato ek=(vi,vj) di G corrisponde ad una

coppia non ordinata di nodi vi e vj di G. I nodi vi e vj sono gli

estremi dell’arco ek.

La presenza di un arco tra una coppia di nodi indica una

(3)

Un esempio: G=(V,E)

v

1

v

5

v

3

v

2

v

4

e

1

e

2

e

3

e

4

e

5

e

6

e

7

V = {v

1

,v

2

,v

3

,v

4

,v

5

}

E = {e

1

,e

2

,e

3

,e

4

,e

5

,e

6

,e

7

}

e

1

=(v

1

,v

5

) e

2

=(v

1

,v

2

) …

(4)

Definizioni di base

:

! un arco (v,v) è detto loop

! un arco e=(u,v)ÎE si dice incidente su u e su v ! due nodi u,vÎV sono detti adiacenti Û (u,v)ÎE

! due archi e1,e2ÎE sono detti adiacenti Û e1=(u,v) ed e2=(v,w)

(hanno un estremo in comune)

! l’insieme di nodi N(u)={vÎV: v adiacente a u} è detto intorno

di u in G

! l’insieme di archi d(u)={eÎE: e incide su u} è detto stella di u

in G

! |d(u)| è detto grado del nodo u

v1 v5 v3 v2 v4 e1 e2 e3 e4 e5 e6 e7

(5)

I grafi sono un mezzo per rappresentare relazioni binarie Ad esempio:

! due città connesse da una strada

! due calcolatori connessi in una rete telematica

! due persone legate da una relazione di parentela (come,

padre-figlio)

! due persone che condividono una stanza

! il collegamento tra due componenti elettronici

! un’operazione che deve essere eseguita da una certa

macchina

! ...

(6)

I grafi possono essere usati come strumento per modellare in maniera schematica un vastissimo numero di problemi decisionali.

Ad esempio:

! determinare il percorso più breve che connette due città

! determinare come connettere nella maniera più

economica (più efficiente) un insieme di calcolatori in una rete telematica

! assegnare un insieme di operazioni ad un insieme di

macchine

! determinare il percorso più conveniente da far percorrere

ad una flotta di veicoli commerciali per effettuare delle consegne e quindi rientrare al deposito

! ...

(7)

Grafi e Sottografi

! G’=(V’,E’) è detto sottografo di G=(V,E) ⟺ Ø V’ ⊆ V

Ø E’ ⊆ E e (vi,vj) ∈ E’ ⟹ vi,vj ∈ V’

! G’=(V’,E’) è detto sottografo indotto da V’ in G=(V,E) ⟺ Ø V’⊆V

Ø "u,v∈V’ se (u,v) ∈ E allora (u,v) ∈ E’

Grafo semplice:

Non esistono “loop” o archi paralleli (ossia tra due nodi ci può essere più di un arco).

(8)

Esempio

v

1

v

5

v

3

v

2

v

4

e

1

e

2

e

3

e

4

e

5

e

6

e

7

G=(V,E)

v

1

v

5

v

3

v

2

e

1

e

2 è un sottografo di G G’

(9)

Esempio

v

1

v

5

v

3

v

2

v

4

e

1

e

2

e

3

e

4

e

5

e

6

e

7

G=(V,E)

v

1

v

5

v

3

v

2

e

1

e

2

e

3

e

6 è un sottografo indotto di G G’

(10)

Grafo Bipartito

G è detto grafo bipartito se esiste una partizione di V in due sottoinsiemi V1 e V2 tali che:

! V1ÇV2 = Æ ! V1ÈV2 = V

! "e=(u,v)ÎE se uÎV1 allora vÎV2 oppure se uÎV2 allora

vÎV1

Esempio

(11)

! G è un grafo completo Û contiene tutti i possibili archi,

ovvero ú d(v)ú = n-1 "vÎV

! il numero di archi in un grafo completo è: 𝑛

2 = !(!#$) &

Esempio

grafo completo

Grafo Completo

(12)

! Dato G=(V,E), un nodo vÎV si dice connesso ad un nodo uÎV

se esiste un cammino tra u e v in G

! vÎV è connesso a v (riflessività)

! vÎV è connesso a uÎV Þ uÎV è connesso a vÎV (simmetria)

! se vÎV è connesso a uÎV e uÎV è connesso a wÎV Þ vÎV è

connesso a wÎV (transitività)

! Un grafo G=(V,E) è connesso Û tutti i suoi nodi sono connessi

tra loro.

(13)

! L’insieme V può essere partizionato in sottoinsiemi

Ci={vÎV : v è connesso a u, "uÎCi }

! Il sottografo indotto da Ci in G è detto componente connessa

di G

! G è connesso Û possiede una sola componente connessa (v è

connesso a u , "v,uÎV)

Esempio

componenti

connesse

grafo connesso

(14)

! G=(V,E) è detto orientato se, dato V={v1,...,vn}, l’insieme degli

archi E={e1,..,em} è formato da coppie ordinate di nodi.

Per un grafo orientato si ha che ei=(vk,vh) ¹ ej = (vh,vk) , ei,ejÎE

v

h

e

v

k

i

Coda

Testa

L’arco e

i

si dice

uscente

da v

h

ed

entrante

in v

k

(15)

Esempio

v

1

v

4

v

3

v

2

e

1 e2

e

3

e

6

e

4

e

5

grafo orientato

! Fs(v) = {uÎV: (v,u) ÎE} è detto stella uscente di v ! Bs(v) = {uÎV: (u,v) ÎE} è detto stella entrante di v ! S(v) = Fs(v) È Bs(v) è detto stella di v

! le definizioni di sottografo, sottografo indotto e componente

connessa di un grafo orientato sono analoghe a quelle date per

(16)

! Dato G=(V,E), un nodo vÎV si dice fortemente connesso ad

un nodo uÎV se esiste una path (cammino orientato) tra v e u in G.

! vÎV è connesso a v (riflessività)

! se vÎV è fortemente connesso a uÎV e uÎV è fortemente

connesso a wÎV Þ vÎV è fortemente connesso a wÎV (transitività)

! Un grafo G=(V,E) è fortemente connesso Û tutti i suoi nodi

sono fortemente connessi tra loro.

(17)

Esempio

v

4

v

3

v

2

Componenti fortementi connesse

Ci sono in G componenti fortemente connesse?

v

1

v

4

v

3

v

2

G

v

1

(18)

Rappresentazioni di un Grafo

! Liste di adiacenza:

ad ogni vertice è associata la lista dei vertici adiacenti (può essere una tabella o una lista concatenata).

! Matrice di adiacenza (n x n) :

aij = 1 se (vi, vj) Î E, aij = 0 altrimenti

! Matrice di incidenza (n x m) :

(19)

Lista di adiacenza: memoria O(m)

Vantaggi: permette di scorrere i nodi adiacenti a v in O(grado(v))

Svantaggi: inserimenti e cancellazioni su liste concatenate in O(grado(v))

Matrice di adiacenza: memoria O(n2)

Vantaggi: Inserimenti e cancellazioni in O(1)

Svantaggi: permette di scorrere i nodi adiacenti a v in O(n)

D.: matrice di incidenza ?

(20)

Matrice di Incidenza dei Grafi

! Sia G=(V,E) un grafo non orientato con |V|=n ed |E|=m.

Denotiamo con A=[aij], con i=1,...,n e j=1,...,m, la matrice di

incidenza di G, dove:

𝑎

!"

= #

1 𝑠𝑒 𝑣

!

è 𝑢𝑛 𝑒𝑠𝑡𝑟𝑒𝑚𝑜 𝑑𝑖 𝑒

"

0 𝑎𝑙𝑡𝑟𝑖𝑚𝑒𝑛𝑡𝑖

(21)

Esempio

v

4

v

1

v

2

v

3

e

1

e

2

e

3

e

4

e

5

matrice di incidenza di un grafo non orientato

(22)

Matrice di Incidenza dei Grafi Orientati

! Sia G=(V,E) un grafo orientato con |V|=n ed |E|=m.

Denotiamo con A=[aij], con i=1,...,n e j=1,...,m, la matrice di

incidenza di G, dove:

𝑎

!"

= 3

1

𝑠𝑒 𝑣

!

è 𝑐𝑜𝑑𝑎 𝑑𝑖 𝑒

"

(𝑎𝑟𝑐𝑜 𝑢𝑠𝑐𝑒𝑛𝑡𝑒 𝑑𝑎 𝑣

!

)

−1 𝑠𝑒 𝑣

!

è 𝑡𝑒𝑠𝑡𝑎 𝑑𝑖 𝑒

"

(𝑎𝑟𝑐𝑜 𝑒𝑛𝑡𝑟𝑎𝑛𝑡𝑒 𝑖𝑛 𝑣

!

)

0

𝑎𝑙𝑡𝑟𝑖𝑚𝑒𝑛𝑡𝑖

(23)

Esempio

v

3

v

1

v

2

v

4

e

1

e

2

e

3

e

4

e

5

matrice di incidenza di un grafo orientato

(24)

Sia G=(V,E) un grafo connesso e orientato in cui:

Ø Ad ogni arco (i,j) è associato un costo cij che rappresenta il costo da

pagare per ogni unità di flusso che transita sull’arco (i,j).

Ø Ad ogni vertice v∈V è associato un valore intero bv dove:

- bv > 0 indica che il nodo v è un nodo di offerta

- bv < 0 indica che il nodo v è un nodo di domanda

- bv = 0 indica che il nodo v è un nodo di passaggio

Ø La somma di tutti i bv deve essere uguale a zero (condizione di

bilanciamento). Ciò che viene prodotto dalle sorgenti viene consumato dalle destinazioni.

Nel problema del flusso a costo minimo bisogna far giungere la merce prodotta dai nodi di offerta ai nodi di domanda minimizzando i costi di trasporto.

(25)

Problema del Flusso a Costo Minimo: Formulazione

min + (',))∈+ 𝑐')𝑥') + )∈,-(') 𝑥') − + .∈/- ' 𝑥.' = 𝑏' 𝑖 = 1, … , 𝑛

𝑥!" = quantità di flusso che transita sull’arco (i,j)

𝑐!" = costo di trasporto di una unità di flusso sull’arco (i,j)

𝑏! = valore intero associato al nodo i (ne definisce il ruolo nel problema): 𝑏! > 0: nodo di offerta

𝑏! < 0: nodo di domanda 𝑏 = 0: nodo di passaggio

(26)

Consideriamo un grafo orientato G=(V,E) rappresentante una rete di trasporto. L’obiettivo è quello di trasportare, al minimo costo, determinate quantità di merce (unità di flusso) dai nodi di offerta a quelli di domanda (eventualmente transitando per dei nodi di passaggio).

Abbiamo:

! 𝑏! > 0: nodo di offerta

𝑏! < 0: nodo di domanda 𝑏! = 0: nodo di passaggio

! Un costo cij ≥ 0 per ogni arco

(costo per il trasporto di una unità di flusso) 1 2 3 4 5 5 2 -3 -4 0 6 1 3 4 1 4 3 2

(27)

Consideriamo una variabile xij ≥ 0, ∀(i,j) ∈ E, rappresentante la quantità di flusso che attraverserà tale arco nella soluzione.

1 2 3 4 5 5 2 -3 -4

0

6 1 3 4 1 4 3 2

Problema del Flusso a Costo Minimo: Esempio

min & (",$)∈' 𝑐"$𝑥"$ & $∈()(") 𝑥"$ − & *∈+) " 𝑥*" = 𝑏" 𝑖 = 1, … , 𝑛 𝑥"$ ≥ 0 ∀(𝑖, 𝑗) ∈ 𝐴

(28)

La matrice A dei vincoli del modello matematico corrisponde alla matrice di incidenza nodo-arco del grafo G.

1 2 3 4 5 5 2 -3 -4

0

6 1 3 4 1 4 3 2

Problema del Flusso a Costo Minimo: Esempio

A (1,2) (1,3) (2,5) (3,2) (3,4) (4,1) (4,2) (4,5) 1 1 1 0 0 0 -1 0 0 2 -1 0 1 -1 0 0 -1 0 3 0 -1 0 1 1 0 0 0 4 0 0 0 0 -1 1 1 1 5 0 0 -1 0 0 0 0 -1

(29)

Soluzione 1 Costo: (6*5)+(4*1)+(3*2)=40 Soluzione 2 Costo: (1*5)+(2*5)+(1*4)+(3*3)=28 1 2 4 5 5 2 -3 -4 6 1 2 4 3 1 Flusso 5 Flusso 5-4=1 Flusso 2 4 3 5 5 -3 -4 6 1 2 4 3 1 Flusso 4 Flusso 1+2=3 4 3 Flusso 5 Flusso 5 3 1 2 4 3

(30)

In forma matriciale:

Osservazioni:

1. La matrice A è la matrice di incidenza nodo-arco con dimensione nxm. Ogni colonna 𝑎') è associata all’arco (i,j), ed in

particolare abbiamo che: 𝑎') = 𝑒' − 𝑒)

2. Il rango di questa matrice è: r(A) = n - 1

(ei vettore colonna con tutti 0 eccetto un 1 nella posizione i-ma)

Problema del Flusso a Costo Minimo:

Formulazione

min 𝑐

#

𝑥

A𝑥 = 𝑏

(31)

Definizione (totale unimodularità): Una matrice si dice totalmente

unimodulare (TU) se tutte le sue sottomatrici quadrate (di ogni ordine) hanno

determinante uguale a 0, 1 o -1.

Matrici Totalmente Unimodulari

Osservazione 1: Tutte le componenti di una matrice totalmente unimodulare sono uguali a 0, 1 o -1 dato che ogni suo elemento è una particolare matrice quadrata di ordine 1x1.

Osservazione 2: Sia A una matrice i cui elementi sono tutti uguali a 0, +1 o -1 e lungo ogni colonna non vi sono più di due elementi diversi da 0. Allora A è TU se e solo se l’insieme delle righe di A può essere suddiviso in due sottoinsiemi Q1 e Q2 tali che, se una colonna contiene due elementi diversi da 0, allora:

! se i due elementi hanno lo stesso segno allora una delle due righe in cui si

trovano è in Q1 e l’altra in Q2 ;

! se hanno segno opposto le righe corrispondenti sono entrambe contenute

(32)

Teorema 1: Sia A una matrice i cui elementi sono tutti uguali a 0, +1 o -1 e lungo ogni colonna non vi sono più di due elementi diversi da 0. Se nelle colonne con due elementi diversi da 0 la somma di tali elementi è uguale a 0 (ovvero un elemento è uguale a +1 e l’altro a -1), allora A è TU.

Matrici Totalmente Unimodulari

Corollario 1: Le matrici di incidenza nodo-arco di un grafo orientato sono totalmente unimodulari.

Dimostrazione: Dall’osservazione 2, è sufficiente porre Q1= {tutte le righe di A } e Q2 = ∅. Il corollario ci dice ad esempio che tutte le matrici di incidenza nodo-arco di un grafo orientato sono matrici TU. ∎

A (1,2) (1,3) (2,5) (3,2) (3,4) (4,1) (4,2) (4,5)

1 1 1 0 0 0 -1 0 0

2 -1 0 1 -1 0 0 -1 0

3 0 -1 0 1 1 0 0 0

(33)

Inoltre 𝑐𝑜𝑓 𝐴#!" = (−1)!$"2 𝑚𝑖𝑛𝑜𝑟(𝐴#!")

Matrici Totalmente Unimodulari

Corollario 2: Sia A la matrice di incidenza nodo-arco di un grafo orientato G, e sia 𝐴# una sottomatrice quadrata di A non singolare. Si ha che 𝐴%&# ha tutte le componenti intere.

Dimostrazione: Dal Corollario 1 sappiamo che la matrice A è totalmente

unimodulare e quindi tutte le sue componenti hanno valore -1,0,1. Poichè 𝐴# è una sottomatrice di A, tutte le sue componenti sono uguali a -1,0,1. Per calcolare la matrice inversa utilizziamo la formula:

Quindi '() *!" è sempre un intero.

= -1,0,+1 (𝑝𝑒𝑟𝑐ℎè 𝐴#!" è 𝑇𝑈)

(34)

Teorema 2: I vertici del poliedro, definito dal modello matematico del problema del flusso a costo minimo, hanno coordinate intere.

Matrici Totalmente Unimodulari

Dimostrazione: Sia AB una sottomatrice di A dimensioni (n-1)x(n-1) non singolare. La soluzioni di base ammissibili associate ad AB ha la struttura 𝑥 =

𝑥#

𝑥0 = 𝐴# %&𝑏

0 e corrisponde ad un vertice del poliedro. Dobbiamo quindi dimostrare che il vettore 𝐴#%&𝑏 ha tutte le componenti intere.

Dal Corollario 2 sappiamo che 𝐴#%& ha tutte le componenti intere. Inoltre, per ipotesi, 𝑏 ha tutte le componenti intere, quindi 𝐴%&# 𝑏 ha tutte le componenti intere.

Riferimenti

Documenti correlati

(d) Si discuta (motivando la risposta) se ` e possibile trovare una base di R 4 formata da autovettori di

CHURCHILL GA, 1997, SALES FORCE

ESERCIZIO 1. A) Generare una matrice Q, simmetrica e definita positiva, di dimensione 2 o possibilmente anche più alta (eventualmente seguire il suggerimento posto al fondo degli

Il minore del secondo ordine che si ottiene con le prime due righe e le prime due colonne `e diverso da zero: questo dice che il rango `e almeno 2 (quindi o `e 2 o `e 3).. Se non

Osservazione 1: Tutte le componenti di una matrice totalmente unimodulare sono uguali a 0, 1 o -1 dato che ogni suo elemento è una particolare matrice quadrata di ordine 1 x

Corso di Principi di Elettrotecnica e di Automatica - modulo di Automatica Risoluzione completa dell’ultimo esercizio della lezione del

[r]

Grazie a queste proprieta’, possiamo calcolare il determinante di una matrice numerica A trasformandola, mediante l’algoritmo di Gauss, in una matrice trian- golare T, e poi