Grafic încărcat - digraph G = (V, X), pentru care funcția specificată atribuie fiecărui arc un grafic de număr real - lungimea (w) x l (x) a arcului. Puteți specifica folosind matricea de greutăți:
O cale închisă este o cale (rută) la care coincid primul și ultimul punct. O cale închisă care trece prin fiecare arc (margine) o singură dată se numește ciclu. Un ciclu care trece prin fiecare vârf 1 este numit simplu.
Un lanț este o cale neînchipuită (rută) care trece prin fiecare arc (margine) o singură dată. Un lanț care trece prin fiecare vârf 1 este numit simplu.
Lungimea căii (pentru un grafic descărcat) este numărul de arce care intră în această cale.
Lungimea căii (pentru un grafic încărcat) este suma greutăților arcurilor care intră în această cale. Calea minimă [între nodurile v1 și vk] este calea având lungimea minimă între toate celelalte căi [de la v1 la vk].
Algoritmul lui Dijkstra (căutarea căii min în graficul încărcat)
1. Am setat l * (s) = 0 și vom considera această etichetă ca constantă. Pentru toate v V V, v s s, am setat l * (v) = t și vom presupune că aceste etichete sunt temporare. Am setat p = s.
2. Pentru toate vOGp cu timestamps: dacă l * (v)> l * (p) + l (p, v), apoi l * (v) = l * (p) + l (p, v) și Q (v) = p. Altfel, l * (v) și Q (v) nu ar trebui să fie schimbate, adică l * (v) = min (l * (t), l * (p) + cpv). (Ideea este după cum urmează :. Fie p - partea de sus, pentru a primi o permanentă etichetă L * (p) în iterație anterioară pentru a vizualiza toate vOGp de top cu marca timestamp-l * (v) vOGp sus înlocuit cu L * (p) + l (. p, v), în cazul în care se dovedește că eticheta sa l * (v)> l * (p) + l (p, v). În acest caz, noi spunem că vârful v-a primit eticheta din partea de sus a p, asa ca am stabilit Q (v ) = p. cu ajutorul acestor etichete suplimentare vor recupera apoi calea în sine. Dacă l * (v) J l * (p) + cpv, eticheta va rămâne aceeași.
3. Fie V * setul de vârfuri cu timestamps. Gasim un vertex v * astfel încât l * (v *) = min l * (v), v 0 V *. Citiți eticheta l * (v *) ca constantă pentru punctul v *.
4. Setați p = v *. Dacă p = t, treceți la pasul 5 (l * (t) - lungimea căii minime). În caz contrar, treceți la pasul 2.
5. Vom găsi calea minimă de la s la t, folosind etichetele Q (v): Π = s ... Q (t) t.