• Non ci sono risultati.

Lezionidi RicercaOperativa Lezionen 18 °

N/A
N/A
Protected

Academic year: 2021

Condividi "Lezionidi RicercaOperativa Lezionen 18 °"

Copied!
30
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

Teoria dei Grafi: Concetti Fondamentali

(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 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 aij è associata all’arco (i,j), ed

in particolare abbiamo che:

a

ij

= e

i

− e

j

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

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

Problema del Flusso a Costo Minimo:

Formulazione

min 𝑐

#

𝑥

A𝑥 = 𝑏

Riferimenti

Documenti correlati

The fear that the banana ‘splits’ might damage the WTO as well as poison trans-Atlantic trade relations more generally has also motivated another development

The work purpose was the evaluation of the potential application of the Frontal Polymerization (FP) technique as a new method for the preparation of controlled release dosage

1) Per la produzione di una merce un’impresa sostiene un costo per ogni unità prodotta di 180 euro, una spesa per la manutenzione degli impianti pari al 3% del quadrato del

1) Per la produzione di una merce un’impresa sostiene un costo per ogni unità prodotta di 180 euro, una spesa per la manutenzione degli impianti pari al 3% del quadrato del

● L'algoritmo di Bellman e Ford determina i cammini di costo minimo anche in presenza di archi con peso negativo. – Però non devono esistere cicli di

Si lavora tramite reti residue: dato un flusso f per G, si ottiene una nuova rete residua G f “sottraendo” il flusso alla rete originale G, e si cerca un nuovo flusso g nella

Figura 1: Esecuzione dell’algoritmo di cycle canceling: la colonna a sinistra rappresenta il grafo originale con il flusso ad ogni iterazione, quella a destra rappresenta il

Se la domanda b v su un nodo v `e positiva, allora il flusso entrante deve essere maggiore del flusso uscente, se b v `e negativa allora il flusso entrante deve essere minore del