Sei sulla pagina 1di 12

Algoritmo per Minimo/Massimo Percorso

su grafi aciclici
* Assistant Professor in Operations Research, Department of Electrical Engineering and Information Technology,
OPSLab, claudio.sterle@unina.it
Claudio Sterle
*
Problema di Minimo Percorso
2
4
1
5
5
9
3
2 3
3
2
3
archi c
ij
p
1
p
2
p
3
p
4
1-2
5
0 1 1 1
1-3
2
1 0 0 0
2-3
3
0 1 0 0
2-4
3
0 0 1 0
2-5
9
0 0 0 1
3-4
3
1 1 0 0
4-5
2
1 1 1 0
Costo del percorso 7 13 10 14
Problema di Minimo Percorso: modello PLI
Il problema pu essere formulato come un modello in programmazione intera binaria.
o e d: vertici origine e destinazione del percorso minimo da individuare,
c
ij
: costo associato allarco generico ij (ijA)
x
ij
: variabile binaria pari a 1 se larco ij appartiene al perc. minimo, 0 altrimenti
Min z =
ijA
c
ij
x
ij
s.t.
x = 1
k
x
ok
= 1

i
x
id
= 1

k
x
jk
-
i
x
ij
= 1 (j o,d)
x
ij
= 0/1
La matrice A una matrice di incidenza vertice-arco. Ogni colonna ha soltanto due
elementi non nulli, +1 e 1. Si pu dimostrare che la matrice A dei tassi di assorbimento
totalmente unimodulare. Una matrice totalmente unimodulare se il determinante di
ogni minore da essa estratto ha valore 1, 0 o +1. Si pu dimostrare che la soluzione
ottima del modello intera anche se non si impone il vincolo di interezza x
ij
= 0/1, a
condizione che i termini noti siano interi.
Problema di Minimo Percorso in 2 variabili
1
(1-2)'
(1-2)''
2
Analisi grafica del problema
CC
z = 10
1
x
(1-2)''
z = 0
D D
O O
1
z = 5
x
(1-2)'
z = 0
Problema di Minimo Percorso: algoritmi
Classi di problemi di minimo percorso:
da un vertice ad un altro vertice della rete;
da un vertice a tutti gli altri vertici della rete (o a un sottoinsieme);
da tutti i vertici a tutti gli altri vertici (o da un sottoinsieme di vertici ad un altro
sottoinsieme di vertici), cio per tutte le coppie di vertici individuabili sulla rete.
Classificazione algoritmi per il problema di minimo percorso.
1. Algoritmi per Grafi aciclici Vs ciclici
2. Algoritmi arborescenti algoritmi matriciali
Problema di Minimo Percorso
su grafi aciclici
Una classe di grafi orientati di particolare interesse in campo applicativo la classe di
grafi aciclici. I problemi di minimo e di massimo sono, in questo caso particolare, risolti
da due algoritmi identici
Per poter procedere con la descrizione dellalgoritmo, necessario studiare prima una
particolare tecnica di numerazione dei nodi di un grafo aciclico.
Una caratteristica peculiare dei grafi aciclici (sia G = (V,E) il grafo, con|V | = n e |E| =
m) consiste nella possibilit di numerare i nodi del grafo con i numeri 1,2,3,....,n-1,n in
modo tale che:
se esiste un arco dal nodo i al nodo j allora j > i
Teorema: Un grafo aciclico se e solo se esiste una numerazione topologica dei suoi
nodi
Numerazione topologica di un grafo
Algoritmo:
- Siccome il grafo aciclico, deve esistere almeno un nodo con solo archi uscenti;
- Individuiamo uno di questi nodi e attribuiamogli il numero 1;
- Cancelliamo il nodo numerato e tutti gli archi adiacenti, nel nuovo grafo ridotto
individuiamo un nodo con soli archi uscenti e attribuiamogli il numero 2, e cos
via fino ad aver numerato tutti i nodi
Algoritmo per cammino minimo su grafo
aciclico
Nella ricerca di un cammino tra una qualsiasi coppia di nodi i e j del grafo, a causa
della numerazione attribuita ai nodi, si pu affermare che:
se j < i allora non esistono cammini da i a j;
se j > i allora gli unici nodi che necessario considerare nella ricerca del cammino
da i a j sono i nodi con indice k tale che i < k < j.
Sulla base di queste considerazioni, possibile impostare un algoritmo per il calcolo Sulla base di queste considerazioni, possibile impostare un algoritmo per il calcolo
dellalbero dei cammini minimi tra un nodo del grafo (per esempio il nodo 1) e tutti i
nodi con indice superiore.
Infatti, se il cammino passasse per un nodo h > j, allora non potrebbe tornare su j, a
causa della mancanza di archi che collegano nodi con indice maggiore a nodi con
indice minore; se passasse per un nodo h < i, allora dovrebbe esistere un cammino da
h a i, il che comporterebbe lesistenza di archi che collegano nodi con indice
maggiore a nodi con indice minore.
Tale algoritmo utilizzabile anche per il calcolo dei cammini maxximi tra un
nodo del grafo e tutti i nodi con indice superiore.
Algoritmo per cammino minimo su grafo
aciclico
Indichiamo con:
- p(i, j) il peso dellarco (i, j) che parte dal nodo i e arriva al nodo j;
- f(i) il valore del cammino minimo dal nodo 1 al nodo i;
-J(i) il nodo che precede i su tale cammino (nel caso il cammino minimo non sia
unico, allora se ne sceglie uno qualsiasi fra quelli minimi) predecessore
Algoritmo per il calcolo dei percorsi minimi. Algoritmo per il calcolo dei percorsi minimi.
- f(1) := 0; J(1) := 1;
- per j = 2, 3, 4, . . . , n 1, n ripeti la seguente serie di operazioni
f(j) := min(i,j)
(j)
{f(i) + p(i, j)};
J(j) := valore di i per cui si verificato il minimo;
Algoritmo per cammino minimo su grafo
aciclico: esempio
Algoritmo per cammino minimo su grafo aciclico:
esercizio