• Non ci sono risultati.

Lezione n°18

N/A
N/A
Protected

Academic year: 2021

Condividi "Lezione n°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

Università degli Studi di Salerno

(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 = {v1,v2,v3,v4,v5}

E = {e1,e2,e3,e4,e5,e6,e7}

e1 =(v1,v5) e2 =(v1,v2) …

v1

v5

v3 v2

v4 e1

e2

e3 e4

e5

e6

e7

(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

...

Teoria dei Grafi: Concetti Fondamentali

(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

...

Applicazioni

(7)

Grafi e Sottografi

G’=(V’,E’) è detto sottografo di G=(V,E)

V’ V

E’ E e (v i,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

G=(V,E)

è un sottografo di G G’

v1

v5

v3 v2

v4 e1

e2

e3 e4

e5

e6 e7

v1

v5

v3 v2

e1

e2

(9)

Esempio

G=(V,E)

è un sottografo indotto di G G’

v1

v5

v3 v2

v4 e1

e2

e3 e4

e5

e6 e7

v1

v5

v3 v2

e1

e2

e3 e6

(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

grafo bipartito grafo non bipartito

(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 è:

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.

Grafo Connesso

(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

Componenti Connesse

(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

Coda Testa

L’arco ei si dice uscente da vh ed entrante in vk

Grafi Orientati

vh ei vk

(15)

Esempio

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 i grafi non orientati

v1

v4 v3

v2 e1 e2

e3

e 6 e4

e5

(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.

Componenti Fortemente Connesse

(17)

Esempio

Componenti fortementi connesse

Ci sono in G componenti fortemente connesse?

G v1

v4 v3

v2 v1

v4 v3

v2

(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) : aij = 1 se vi Î ej, aij = 0 altrimenti

(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 ?

Rappresentazioni di un Grafo: Vantaggi e Svantaggi

(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

v4

v1

v2

v3 e1 e2

e3 e4

e5

matrice di incidenza di un grafo non orientato

Matrice di Incidenza dei Grafi

(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:

��=

{

1 �� � è ���� ��� (���� ������� �� �)

¿ −1�� � è����� ��� (���� �����������)

¿0 ����������

(23)

Esempio

v3 v1

v2

v4

e1 e2

e3 e4

e5

matrice di incidenza di un grafo orientato

Matrice di Incidenza dei Grafi Orientati

(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

Problema del Flusso a Costo Minimo

(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):

: nodo di offerta : nodo di domanda : nodo di passaggio

��≥ 0 ∀ (� , � )∈ �

Intere?

(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:

: nodo di offerta : nodo di domanda : 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

Problema del Flusso a Costo Minimo: Esempio

(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

(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 6 -4

1

2

4 3 Flusso 5 1

Flusso 5

Flusso 5-4=1 Flusso

5-4=1

Flusso 2 Flusso

2 4

3

5

5

2

-3 6 -4

1

2

4 3

1 Flusso 4

Flusso 4

Flusso 1+2=3 Flusso 1+2=3 4

3 Flusso 5

Flusso 5 Flusso 5 Flusso 5

3

1 2

3 4

Problema del Flusso a Costo Minimo: Esempio

(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

(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 in Q o entrambe in Q .

(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

4 0 0 0 0 -1 1 1 1

Q1 Q2=

(33)

Inoltre

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

Poiché è TU e non singolar, .

(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 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

[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

Per certe matrici pero’ questo calcolo risulta particolarmente semplice, e in certi casi ci si puo’ ricondurre a

In realta’ tutti i problemi finora trattati facendo uso dell’algoritmo di Gauss -dal decidere se un sistema lineare e’ o meno consistente, e in caso affermativo risolverlo,

Si noti che, poich´e ogni componente di A ´e una matrice quadrata 1 × 1, allora ogni matrice totalmente unimodulare ha componenti con valore 0, +1 o −1.. Ricordiamo il seguente fatto

il che corrisponde a risolvere il sistema lineare che ha per matrice dei coefficienti la matrice A 0 considerata in precedenza e per colonna dei termini noti il vettore colonna (3,

4.Se si moltiplicano gli elementi di una riga (o colonna )per uno scalare anche il determinante risulta moltiplicato per lo

Si dimostri che se la funzione f ha un flesso nella radice ¯ x, allora il metodo di Newton converge (localmente) con ordine almeno