Dijkstra: Difference between revisions

From Algowiki
Jump to navigation Jump to search
m (→‎Requirements: Matheumgebungen eingefügt)
Line 14: Line 14:
== Requirements ==  
== Requirements ==  


* directed Graph ''G'' = (''V,E'')
* directed Graph <math>G=(V,E)</math>
* weight function ''w'' : ''E'' &rarr; &real;
* weight function <math>w\colon E\to\mathbb R</math>
* &forall; (''u,v'') &isin; E : ''w''(''u,v'') &ge; 0
* <math>\forall(u,v)\in E\colon w(u,v)\geq 0</math>
* source ''s'' : ''s'' &isin; ''V''
* source <math>s\in V</math>
* Datastruct ''S''
* Datastruct <math>S</math>
* Datastruct ''Q''
* Datastruct <math>Q</math>


== Pseudocode ==  
== Pseudocode ==  

Revision as of 12:09, 13 October 2014


Dijstra's algorithm is a graph algortihm solving the single-source shortest-paths problem.

Requirements

  • directed Graph [math]\displaystyle{ G=(V,E) }[/math]
  • weight function [math]\displaystyle{ w\colon E\to\mathbb R }[/math]
  • [math]\displaystyle{ \forall(u,v)\in E\colon w(u,v)\geq 0 }[/math]
  • source [math]\displaystyle{ s\in V }[/math]
  • Datastruct [math]\displaystyle{ S }[/math]
  • Datastruct [math]\displaystyle{ Q }[/math]

Pseudocode

DIJKSTRA(G,w,s)

DIJKSTRA(G,w,s)
1 INITIALIZE-SINGLE-SOURCE(G,s) 
2      S = ∅
3      Q = G.V
4      while Q ≠ ∅
5            u = EXTRACT-MIN(Q)
6            S = S ∪ {u} 
7            for each vertex v ∈ G.Adj[u]
8                 RELAX(u,v,w)

RELAX(u,v,w)

RELAX(u,v,w)
1 if v.d > u.d + w(u,v)
2       v.d = u.d + w(u,v)
3       v.π = u

INITIALIZE-SINGLE-SOURCE(G,s)

INITIALIZE-SINGLE-SOURCE(G,s) 
1 for each vertex vG.V
2         v.d = ∞
3         v.π = NIL
4 s.d = 0