• 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

Definizione 17.1 Dato un elemento λ di K, chiamiamo blocco di Jordan di ordine r con autovalore λ la matrice di ordine r avente tutti gli elementi appartenenti alla diagonale

Dato un grafo orientato con r vertici definiamo matrice di adiacenza del grafo la matrice quadrata rxr in cui i vertici corrispondono ordinatamente a righe e

Determinare tutti i quadrati magici d’ordine 2 (sono solo quelli banali, con tutte le entrate uguali) e 3 (mostrare in particolare che il termine centrale della matrice `

Si dimostri che tutte le matrici quadrate del terzo ordine aventi la prime due colonne uguali hanno

Il determinante di una matrice quadrata del terzo ordine puo’ essere definito come il risultato comune di sei espressioni, una per ciascuna colonna e una per ciascuna riga

Ricordiamo il seguente fatto di algebra lineare. In particolar modo, se A `e una matrice totalmente unimodulare, allora, per ogni sottomatrice quadrata invertibile B di A, la matrice

Scrivere la funzione Matlab compute_inverse che prenda in input una matrice quadrata A di ordine N; dopo aver verificato che la matrice è invertibile,

Tali vettori sono linearmente indipen- denti se e soltanto se la matrice A V ha rango 4, e quindi (essendo una matrice quadrata, di ordine 4) se e soltanto se tale matrice