Cammini minimi
Tra le proprietà di un cammino è definita la lunghezza: l'insieme di cammini , che contiene tutti i cammini da a , e la distanza: che diventerebbe se ci fosse un ciclo negativo, perchè allora esisterebbe sempre un minore.
Per esempio, il cammino da a possiede un ciclo negativo e quindi :
Struttura
Gli algoritmi principali, come per quello di Prim, memorizzano due campi per ogni vertice :
- La stima della distanza minima
d[u]
, che alla fine dovrà essere uguale a - Il predecessore
𝜋[u]
, da cui è partito l'arco verso che porta al peso finaled[u]
Inoltre, gli algoritmi fanno uso delle funzioni ausiliarie:
-
Init Single Source
init_ss(G, s) for each u in G.V d[u] = +Infinity 𝜋[u] = NIL d[s] = 0 return d, 𝜋
con costo .
-
Relax
relax(u, v, w, d, 𝜋) if d[v] > d[u] + w(u, v) d[v] = d[u] + w(u, v) 𝜋[v] = u
che diventa per l'assegnamento a
d[v]
, sed
è usato in una coda di priorità.
Proprietà
Sia sui grafi orientati che non orientati valgono le proprietà:
-
Grafo dei predecessori
Il grafo è detto dei predecessori se dipende da , ovvero se è costruito tale che: ovvero un'istanza dello stato dell'algoritmo, che alla fine diventerà l'albero dei cammini minimi.
-
Albero dei cammini minimi
Il sottografo del grafo rappresenta i cammini minimi quando:
- , ovvero l'insieme dei nodi raggiungibili in da
- forma un albero con radice
- Il cammino tra e qualsiasi in è minimo in
-
Proprietà dei sottocammini minimi
Ogni sottocammino del cammino minimo è anch'esso minimo, perchè altrimenti non lo sarebbe.
-
Disuguaglianza triangolare
Dato ed un arco , allora:
Che è dimostrato perchè nel caso di
- allora
- allora è presente il ciclo negativo anche tra e , quindi
- allora, sia che sia il migliore o peggiore tra gli archi entranti di , è verificata
-
Proprietà del limite inferiore
Su qualsiasi algoritmo che usa
init_ss
e che modifica e solamente conrelax
vale che:Inoltre, se ad un certo punto , ulteriori chiamate a
relax
non cambieranno più .La dimostrazione si concentra sui principali momenti che coinvolgono :
-
Dopo
init_ss
, se:- , allora
- , allora anche in presenza di cicli negativi, i.e.
-
Dopo
relax
su , supponendo per assurdo che causi per la prima volta :Siccome la
relax
dev'essere entrata nell'if
perchè le ipotesi siano vere, per l'ipotesi e per la disuguaglianza triangolare, ovvero che che è assurdo perchè non sarebbe il primo ad aver infranto la proprietà, ma lo sarebbe .
-
-
Proprietà della convergenza
Dato minimo, se allora dopo la prima
relax
su :Questo è dimostrabile con il limite inferiore, e perchè dopo la
relax
si ha che :