Dijkstra's algorithm

Dijkstra's algorithm

Dijkstra's algorithm (/ˈdaɪkstrəz/ DYKE-strəz) is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later. The algorithm exists in many variants. Dijkstra's original algorithm found the shortest path between two given nodes, but a more common variant fixes a single node as the "source" node and finds shortest paths from the source to all other nodes in the graph, producing a shortest-path tree.

Caption
enDijkstra's algorithm to find the shortest path between a and b. It picks the unvisited vertex with the lowest distance, calculates the distance through it to each unvisited neighbor, and updates the neighbor's distance if smaller. Mark visited when done with neighbors.
Class
Dynamic programming
Greedy algorithm
Search algorithm
Comment
enDijkstra's algorithm (/ˈdaɪkstrəz/ DYKE-strəz) is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later. The algorithm exists in many variants. Dijkstra's original algorithm found the shortest path between two given nodes, but a more common variant fixes a single node as the "source" node and finds shortest paths from the source to all other nodes in the graph, producing a shortest-path tree.
Data
enUsually used with Priority queue/Heap for optimization
Graph (data structure)
Depiction
Dijkstra Animation.gif
DijkstraDemo.gif
Dijkstras progress animation.gif
DifferentFrom
Dykstra's projection algorithm
Has abstract
enDijkstra's algorithm (/ˈdaɪkstrəz/ DYKE-strəz) is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later. The algorithm exists in many variants. Dijkstra's original algorithm found the shortest path between two given nodes, but a more common variant fixes a single node as the "source" node and finds shortest paths from the source to all other nodes in the graph, producing a shortest-path tree. For a given source node in the graph, the algorithm finds the shortest path between that node and every other. It can also be used for finding the shortest paths from a single node to a single destination node by stopping the algorithm once the shortest path to the destination node has been determined. For example, if the nodes of the graph represent cities and edge path costs represent driving distances between pairs of cities connected by a direct road (for simplicity, ignore red lights, stop signs, toll roads and other obstructions), Dijkstra's algorithm can be used to find the shortest route between one city and all other cities. A widely used application of shortest path algorithms is network routing protocols, most notably IS-IS (Intermediate System to Intermediate System) and OSPF (Open Shortest Path First). It is also employed as a subroutine in other algorithms such as Johnson's. The Dijkstra algorithm uses labels that are positive integers or real numbers, which are totally ordered. It can be generalized to use any labels that are partially ordered, provided the subsequent labels (a subsequent label is produced when traversing an edge) are monotonically non-decreasing. This generalization is called the generic Dijkstra shortest-path algorithm. Dijkstra's algorithm uses a data structure for storing and querying partial solutions sorted by distance from the start. While the original algorithm uses a min-priority queue and runs in time (where is the number of nodes and is the number of edges), it can also be implemented in using an array. The idea of this algorithm is also given in . propose using a Fibonacci heap min-priority queue to optimize the running time complexity to . This is asymptotically the fastest known single-source shortest-path algorithm for arbitrary directed graphs with unbounded non-negative weights. However, specialized cases (such as bounded/integer weights, directed acyclic graphs etc.) can indeed be improved further as detailed in Specialized variants. Additionally, if preprocessing is allowed algorithms such as contraction hierarchies can be up to seven orders of magnitude faster. In some fields, artificial intelligence in particular, Dijkstra's algorithm or a variant of it is known as uniform cost search and formulated as an instance of the more general idea of best-first search.
Is primary topic of
Dijkstra's algorithm
Label
enDijkstra's algorithm
Link from a Wikipage to an external page
purl.umn.edu/107247
dl.acm.org/doi/10.1145/363269.363610
dspace.mit.edu/bitstream/1721.1/47994/1/fasteralgorithms00sloa.pdf%7Chdl=1721.1/47994%7Chdl-access=free
blog.cleancoder.com/uncle-bob/2016/10/26/DijkstrasAlg.html
www.diku.dk/~mthorup/PAPERS/sssp.ps.gz
Link from a Wikipage to another Wikipage
A* algorithm
A* search algorithm
Adjacency list
Adjacency matrix
Admissible heuristic
Algorithm
Amsterdam
Artificial intelligence
A-star algorithm
Asymptotic computational complexity
Bellman equation
Bellman–Ford algorithm
Best, worst and average case
Best-first search
Bidirectional search
Big-O notation
Binary heap
Breadth-first search
Brodal queue
Bucket queue
Category:1959 in computing
Category:Articles with example pseudocode
Category:Combinatorial optimization
Category:Dutch inventions
Category:Edsger W. Dijkstra
Category:Graph algorithms
Category:Graph distance
Category:Routing algorithms
Category:Search algorithms
Centrum Wiskunde & Informatica
Charles Babbage Institute
Communications of the ACM
Computer scientist
Consistent heuristic
Contraction hierarchy
Depth-first search
Dijkstra's algorithm
Directed graph
Dual linear program
Dynamic programming
Edsger W. Dijkstra
Euclidean shortest path
Fast marching method
Fibonacci heap
File:DijkstraDemo.gif
File:Dijkstras progress animation.gif
Floyd–Warshall algorithm
Graph (abstract data type)
Graph (data structure)
Graph labeling
Graph theory
Greedy algorithm
Groningen
Heap (data structure)
IEEE
Information Processing Letters
Intersection (road)
IS-IS
Johnson's algorithm
Least-cost path
Linear programming
Link-state routing protocol
Longest path problem
McGraw–Hill
Minimum spanning tree
Min-priority queue
MIT Press
Monotonic function
Negative cycle
Neighbourhood (graph theory)
Open Shortest Path First
OSPF
Pairing heap
Parallel all-pairs shortest path algorithm
Partially ordered set
Prim's algorithm
Priority queue
Probability distribution
Pseudocode
Radix heap
Reduced cost
Richard Bellman
Road network
Robert C. Prim
Robert Cecil Martin
Rotterdam
Routing protocol
Search algorithm
Self-balancing binary search tree
Set (abstract data type)
Shortest path problem
Shortest-path tree
Sparse graph
Subroutine
Theoretical computer science
Time complexity
Total order
Transit Node Routing
Transportation Science
Triviality (mathematics)
Van Emde Boas tree
Vertex (graph theory)
Vojtěch Jarník
SameAs
4zzsS
Algorisme de Dijkstra
Algorithm Dijkstra
Algorithme de Dijkstra
Algoritma Dijkstra
Algoritm de Dijkstra
Algoritmo de Dijkstra
Algoritmo de Dijkstra
Algoritmo di Dijkstra
Algoritmul lui Dijkstra
Algorytm Dijkstry
Deikstras algoritms
Dijkstra's algorithm
Dijkstra's algorithm
Dijkstra's algorithm
Dijkstra-Algorithmus
Dijkstra algoritm
Dijkstra-algoritmus
Dijkstran algoritmi
Dijkstraren algoritmo
Dijkstras algoritm
Dijkstras algoritme
Dijkstras algoritme
Dijkstrin algoritam
Dijkstrin algoritam
Dijkstrin algoritam
Dijkstros algoritmas
Dijkstrov algoritem
Dijkstrov algoritmus
Dijkstrův algoritmus
Kortstepad-algoritme
m.0cf7t
Q8548
Thuật toán Dijkstra
Αλγόριθμος του Ντάικστρα
Алгоритм Дейкстри
Алгоритм Дейкстры
Алгоритъм на Дейкстра
Дајкстрин алгоритам
Дајкстрин алогиртам
Дижикстрагийн алгоритм
Դեքստրայի ալգորիթմ
אלגוריתם דייקסטרה
الگوریتم دایکسترا
خوارزمية ديكسترا
डिजक्स्ट्रा का अल्गोरिद्म
ขั้นตอนวิธีของไดก์สตรา
ダイクストラ法
戴克斯特拉算法
데이크스트라 알고리즘
Subject
Category:1959 in computing
Category:Articles with example pseudocode
Category:Combinatorial optimization
Category:Dutch inventions
Category:Edsger W. Dijkstra
Category:Graph algorithms
Category:Graph distance
Category:Routing algorithms
Category:Search algorithms
Thumbnail
Dijkstra Animation.gif?width=300
WasDerivedFrom
Dijkstra's algorithm?oldid=1119394247&ns=0
WikiPageLength
48956
Wikipage page ID
45809
Wikipage revision ID
1119394247
WikiPageUsesTemplate
Template:=
Template:Cite book
Template:Cite conference
Template:Cite journal
Template:Commons category
Template:Distinguish
Template:Edsger Dijkstra
Template:Frac
Template:Graph search algorithm
Template:Harv
Template:Harvnb
Template:Hatnote
Template:Infobox algorithm
Template:IPAc-en
Template:Math
Template:Mono
Template:Mvar
Template:Optimization algorithms
Template:Quote
Template:R
Template:Reflist
Template:Respell
Template:Rp
Template:Short description
Template:Slink
Template:Use dmy dates