• Non ci sono risultati.

Lezione n°22

N/A
N/A
Protected

Academic year: 2021

Condividi "Lezione n°22"

Copied!
25
0
0

Testo completo

(1)

Lezione n

°

22

Problema dell’albero dei cammini minimi

Lezioni di Ricerca Operativa

Corso di Laurea in Informatica ed Informatica Applicata Università di Salerno

(2)

Il problema dei cammini minimi

1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 sorgente 11 28 9 40 10 21 destinazione

p

[Versione uno a uno]

Sia G = (N,A) un grafo orientato su cui sia definito un vettore c = [cij] dei costi associati agli archi del grafo; inoltre, siano s e t due nodi distinti, detti rispettivamente origine e destinazione. Il problema dei cammini minimi 1 a 1 consiste nel determinare il percorso di costo minimo (più corto) da s a t in G.

(3)

1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 sorgente 11 28 9 40 10 21

c

ij = costo dell’arco (i,j)

x

ij = variabili decisionali

x

ij

=

1

se x

ij

Î

p

0 se x

ij

Ï

p

destinazione

p

(4)

1 5 6 4 7 2 3 8 9 69 44 7 1 35 5 7 1 21 15 11 28 9 40 10 21

(5)

1 5 6 4 7 2 3 8 9 69 44 7 1 35 5 7 1 21 15 11 28 9 40 10 21

(6)

1 5 6 4 7 2 3 8 9 69 44 7 1 35 5 7 1 21 15 11 28 9 40 10 21

(7)

Il problema dei cammini minimi

(varianti)

Ø

Uno ad uno

Ø

Uno a tutti

Ø

Tutti a tutti

(8)

Il problema dei cammini minimi (uno a tutti)

1 5 6 4 7 2 3 8 9 69 44 7 1 35 5 7 1 21 15 sorgente 11 28 9 40 10 21

T

G=(N,A)

Qual’è il modello matematico per la versione uno a tutti?

[Versione uno a tutti]

Sia G = (N,A) un grafo orientato su cui sia definito un vettore c = [cij] dei costi associati agli archi del grafo; inoltre, siano s il nodo origine. Il problema dei cammini minimi 1 a tutti consiste nel determinare l’albero dei cammini minimi da s a tutti gli altri nodi di G.

(9)

1 5 6 4 7 2 3 8 9 69 44 7 1 35 5 7 1 21 15 11 28 9 40 10 21

T

}

0

{

È

Î

Z

+

x

ij

(10)

Etichette dei nodi 1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 d1 d2 d9 d5 d6 d7 d8 d3 d4

(11)

Algoritmo prototipo

Passo 1:

Inizializzazione

.

d

s

=0, P

s

=NULL, d

k

=¥, P

k

=s "k

Î

N\{s},

Q={s};

Passo 2:

Estrai un vertice x da Q (Q= Q \{x}) ed

aggiorna quando possibile le etichette dei

vertici in FS(x):

"

y

Î

FS(x) se

d

x

+ c

xy

< d

y

allora

d

y

= d

x

+ c

xy

, P

y

= x e se y ÏQ inseriscilo in

Q

(Q= Q

È

{y}) (

Relaxing

)

(12)

Aggioramento delle etichette

5 9 4 7 2 34 15 42 67 18 21 "yÎFS(x) se dx + cxy < dy allora dy = dx + cxy e Py= x Ø x=4, y=5 d4 + c45 < d5 ? d5 = d4 + c45 e P5= 4 Ø x=4, y=2 d4 + c42 < d2 ? ……… Ø x=4, y=9 d4 + c49 < d9 ? d9 = d4 + c49 e P9= 4 36 55

(13)

Algoritmo prototipo

Passo 1:

Inizializzazione

.

d

s

=0, P

s

=NULL, d

k

=¥, P

k

=s "k

Î

N\{s},

Q={s};

Passo 2:

Estrai un vertice x da Q (Q= Q \{x}) ed

aggiorna quando possibile le etichette dei

vertici in FS(x):

"

y

Î

FS(x) se

d

x

+ c

xy

< d

y

allora

d

y

= d

x

+ c

xy

, P

y

= x e se y ÏQ inseriscilo

in Q

(Q= Q

È

{y}) (

Relaxing

)

(14)

Differenti implementazioni

Gli algoritmi per l’SPT si distinguono per:

- La politica di estrazione del nodo da

Q

(label setting e label correcting)

(15)

Label Correcting

Algoritmi label correcting [Bellman-Ford]:

- I nodi vengono estratti dalla coda Q in ordine FIFO (è una delle possibili implementazioni dell’algoritmo)

- Le etichette dei nodi sono temporanee per tutta la durata della computazione. Solo al termine dell’algoritmo tali

etichette rappresenteranno le distanze minime.

- L’algoritmo è in grado di risolvere il problema dei cammini minimi su un qualsiasi grafo che non presenta cicli di peso negativo.

(16)

Label Setting

Algoritmi label setting [Dijkstra]:

- Ad ogni iterazione viene estratto dalla coda Q il nodo x con etichetta minima.

- L’etichetta del nodo x estratto rappresenta la distanza minima dalla sorgente al nodo stesso. Tale etichetta viene fissata in modo permanente e non viene più aggiornata

(quindi una volta estratto un nodo non può essere reinserito in Q).

- Gli algoritmi label setting sono più efficienti dei label

correcting, ma possono essere applicati solo su grafi dove cij≥0.

(17)

Algoritmo di Dijkstra (label setting)

Dijkstra (G,s)

Inizializzazione;

( ds=0, Ps=NULL, dk=¥, Pk=s "kÎN\{s} , Q={s})

while ( Q ¹ Æ){

x = Extract_min(Q);

Relax(x,y); con yÎFS(x);

}

(18)

79

512

L’algoritmo di Dijkstra (label setting)

1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 0 ¥ ¥

Q

¥ ¥ ¥ ¥ ¥ ¥ 7 9 2 7 0 1 1 1

(19)

2 47 9 5 9 7

L’algoritmo di Dijkstra (label setting)

1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 0 ¥

Q

¥ ¥ ¥ ¥ ¥ 47 42 22 9 7 47 3 42 4 22 9 5 9 3 42 4 22 1 1 2 2 2 2 2 2 1

(20)

64 78 47 9 7 1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 0

Q

¥ ¥ ¥ 42 22 9 9 3 42 4 22 5 47 78 9 3 42 22 6 47 78

L’algoritmo di Dijkstra (label setting)

2 2 2 15 5 2 2 2

(21)

48 78 47 9 7 1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 0

Q

¥ ¥ 42 22 33 43 50 9 42 22 6 47 78 3 7 43 33 50 7 3 42 8 33 43

L’algoritmo di Dijkstra (label setting)

5 2 2 24 4 4 4 2 4

(22)

47 9 7 1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 0

Q

42 22 33 43 50 34 9 6 47 50 7 3 42 8 33 43 34

L’algoritmo di Dijkstra (label setting)

2 4 4 2 4 8

(23)

34 34 47 9 7 1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 0

Q

22 33 43 50 9 6 47 50 7 3 43 44 44

L’algoritmo di Dijkstra (label setting)

2

4 4 8

(24)

43 44 44 34 9 7 1 5 6 4 7 2 3 8 9 69 44 7 1 35

G=(N,A)

5 7 1 21 15 11 28 9 40 10 21 0

Q

22 33 50 9 6 50 7 43 48 48

L’algoritmo di Dijkstra (label setting)

4 4

3

(25)

Il problema dei cammini minimi

1 5 6 4 7 2 3 8 9 s

……….

Quali sono i valori delle variabili xij nella soluzione ottima?

}

0

{

È

Î

Z

+

x

ij

Riferimenti

Documenti correlati

I servizi offerti dai vari PSP aderenti al Nodo dei Pagamenti-SPC devono essere proposti all’utilizzatore finale attraverso la componente WISP assicurando a tutti

Request e response della primitiva nodoInviaRPT, tracciato xml della RPT (decodificato dal base64) che la piattaforma ha generato ed inviato al Nodo, relativa al pagamento avviato.

Request e response della primitiva nodoInviaRT, tracciato xml delle RT (decodificata dal base64) in cui il campo codiceEsitoPagamento corrisponde all’esito del flusso che si

All’interno del metadata possono essere riportati uno o più elementi di questo tipo ad indicare l’unico o i diversi punti di erogazione dei servizi all’interno del

❖ Percentuale di famiglie raggiunte dalla banda larga di rete fissa veloce (30 Mbps). ❖ Percentuale di famiglie raggiunte dalla banda larga di rete fissa ultra veloce

Il modello che ritengo preferibile – più coerente con le ragioni sostanziali della causa estintiva del reato – distingue i tempi di prescrizione per fasce di gravità,

Nell’ottica di una continuità di lavoro, la dimensione comunitaria del reparto attuata attraverso lo strumento del gruppo, rappresenta quindi quel collega- mento che rende

La possibile data, perché di ipotesi si tra@a, è emersa questa ma3na nel corso di una seduta della commissione capitolina Mobilità presieduta da Enrico Stefàno