FAGPORTALEN

Dijkstras korteste vej-algoritme

It A · STX · A-niveau · Datastrukturer og algoritmer

💻 Dijkstras korteste vej-algoritme

Dijkstras algoritme (Edsger Dijkstra 1956, publiceret 1959) — finder korteste vej fra én knude til alle andre i en VÆGTET graf med IKKE-NEGATIVE kanter. Én af algoritmernes mest fundamentale.

Anvendelser

GPS-navigation (Google Maps), netværk-routing (OSPF protocol), spil (path-finding for AI), telefonopkald-routing.

Grundidé: greedy algorithm. Start fra start-knude. Find altid den UBESØGTE knude med MINDST kendt afstand. Opdater naboers afstande hvis vej via denne knude er kortere.

Algoritme-trin:

1. Markér start-knude med distance 0, alle andre med ∞.

2. Vælg den ubesøgte knude med mindst distance.

3. For hver nabo, beregn alternativ distance gennem nuværende knude. Hvis kortere end kendt, opdater.

4. Marker nuværende knude som besøgt.

5. Gentag indtil alle besøgt.

Tidskompleksitet: med priority queue (min-heap): O((V+E) log V). Med simple array: O(V²).

Begrænsning: virker IKKE med negative kant-vægte. Brug Bellman-Ford (O(V·E)) hvis negative vægte.

Eksempel: byer A, B, C, D. Veje: A-B (4), A-C (2), B-C (1), B-D (5), C-D (8). Find korteste fra A til D.

1. A=0, alle andre ∞.

2. Vælg A. Opdater: B=4, C=2.

3. Vælg C (mindst). Opdater: B = min(4, 2+1) = 3. D = 2+8 = 10.

4. Vælg B. D = min(10, 3+5) = 8.

5. Vælg D. Færdig. Korteste vej A→D = 8 (via A-C-B-D? eller A-C-D? Faktisk A-C-D = 10, A-B-D = 9, A-C-B-D = 8. ✓). *A\-algoritme**: udvidelse af Dijkstra med heuristik. Bruges i spil og navigation. f(n) = g(n) + h(n), hvor g = afstand f

Læringsmål

Sådan kan du arbejde med emnet

Arbejd iterativt med prototyper og dokumentation. Test, evaluér og dokumentér.

Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.

Prøv Fagportalen gratis

🤖 Denne side er skrevet med kunstig intelligens og fagligt gennemgået af Fagportalen, som har det redaktionelle ansvar. Finder du en fejl, så skriv til support@fagportalen.dk.