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 finale d[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], se d è 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 con relax 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 :