Knowledge

Bellman–Ford algorithm

Source 📝

27: 365: 1532: 1128: 304: 1738:. This variation can be implemented by keeping a collection of vertices whose outgoing edges need to be relaxed, removing a vertex from this collection when its edges are relaxed, and adding to the collection any vertex whose distance value is changed by a relaxation step. In China, this algorithm was popularized by Fanding Duan, who rediscovered it in 1994, as the "shortest path faster algorithm". 388:, in which approximations to the correct distance are replaced by better ones until they eventually reach the solution. In both algorithms, the approximate distance to each vertex is always an overestimate of the true distance, and is replaced by the minimum of its old value and the length of a newly found path. 1509:
When the algorithm is used to find shortest paths, the existence of negative cycles is a problem, preventing the algorithm from finding a correct answer. However, since it terminates upon finding a negative cycle, the Bellman–Ford algorithm can be used for applications in which this is the target to
472:
In each of these repetitions, the number of vertices with correctly calculated distances grows, from which it follows that eventually all vertices will have their correct distances. This method allows the Bellman–Ford algorithm to be applied to a wider class of inputs than Dijkstra's algorithm. The
1648:
The Bellman–Ford algorithm may be improved in practice (although not in the worst case) by the observation that, if an iteration of the main loop of the algorithm terminates without making any changes, the algorithm can be immediately terminated, as subsequent iterations will not make any more
993:
A common improvement when implementing the algorithm is to return early when an iteration of step 2 fails to relax any edges, which implies all shortest paths have been found, and therefore there are no negative cycles. In that case, the complexity of the algorithm is reduced from
981:
The edge (u, v) that is found in step 3 must be reachable from a negative cycle, but it isn't necessarily part of the cycle itself, which is why it's necessary to follow the path of predecessors backwards until a cycle is detected. The above pseudo-code uses a Boolean array
783:
Simply put, the algorithm initializes the distance to the source to 0 and all other nodes to infinity. Then for all edges, if the distance to the destination can be shortened by taking the edge, the distance is updated to the new lower value.
1468:
If there are no negative-weight cycles, then every shortest path visits each vertex at most once, so at step 3 no further improvements can be made. Conversely, suppose no improvement can be made. Then for any cycle with vertices
1733:
a second time. In this way, as the number of vertices with correct distance values grows, the number whose outgoing edges that need to be relaxed in each iteration shrinks, leading to a constant-factor savings in time for
1744:
described another improvement to the Bellman–Ford algorithm. His improvement first assigns some arbitrary linear order on all vertices and then partitions the set of all edges into two subsets. The first subset,
1635:
if link or node failures render a node unreachable from some set of other nodes, those nodes may spend forever gradually increasing their estimates of the distance to it, and in the meantime there may be routing
243:
for the same problem, but more versatile, as it is capable of handling graphs in which some of the edge weights are negative numbers. The algorithm was first proposed by Alfonso Shimbel (
1875:. Each iteration of the main loop of the algorithm, after the first one, adds at least two edges to the set of edges whose relaxed distances match the correct shortest path distances: one from 399:
select the closest vertex that has not yet been processed, and performs this relaxation process on all of its outgoing edges; by contrast, the Bellman–Ford algorithm simply relaxes
376:
or 4 iterations for the distance estimates to converge. Conversely, if the edges are processed in the best order, from left to right, the algorithm converges in a single iteration.
1712: 1047: 529: 112: 1092: 212: 162: 827: 2002: 1935: 946: 910: 437: 976: 592: 562: 467: 948:
times to ensure the shortest path has been found for all nodes. A final scan of all the edges is performed and if any distance is updated, then a path of length
1112: 847: 1614:
When a node receives distance tables from its neighbors, it calculates the shortest routes to all other nodes and updates its own table to reflect any changes.
2482: 2154:. Proceedings of the Symposium on Information Networks. New York, New York: Polytechnic Press of the Polytechnic Institute of Brooklyn. pp. 199–203. 278:
Negative edge weights are found in various applications of graphs. This is why this algorithm is useful. If a graph contains a "negative cycle" (i.e. a
1632: 1948:. This change makes the worst case for Yen's improvement (in which the edges of a shortest path strictly alternate between the two subsets 368:
In this example graph, assuming that A is the source and edges are processed in the worst order, from right to left, it requires the full
1553: 1149: 325: 2475: 2583: 2430: 2426: 2400: 2380: 2331: 2218:. Proc. Internat. Sympos. Switching Theory 1957, Part II. Cambridge, Massachusetts: Harvard Univ. Press. pp. 285–292. 1608:
Each node calculates the distances between itself and all other nodes within the AS and stores this information as a table.
2468: 37: 2561: 1721:, reduces the number of relaxation steps that need to be performed within each iteration of the algorithm. If a vertex 1659:
iterations, even though the worst case of the algorithm remains unchanged. The following improvements all maintain the
2721: 2440: 1579: 1175: 351: 1561: 1157: 333: 1593: 1290:
For the inductive case, we first prove the first part. Consider a moment when a vertex's distance is updated by
290:
around the negative cycle. In such a case, the Bellman–Ford algorithm can detect and report the negative cycle.
2648: 1557: 1153: 329: 2566: 2726: 2638: 2233:"An algorithm for finding shortest routes from all source nodes to a given destination in general networks" 2041: 1601: 1597: 168: 118: 55: 2368: 1889:. This modification reduces the worst-case number of iterations of the main loop of the algorithm from 385: 2716: 1662: 1511: 997: 479: 65: 2697: 2671: 1649:
changes. With this early termination condition, the main loop may in some cases use many fewer than
2686: 1542: 1138: 1052: 314: 473:
intermediate answers depend on the order of edges relaxed, but the final answer remains the same.
178: 128: 2731: 2633: 2605: 1546: 1142: 790: 381: 318: 240: 2676: 2643: 2524: 2512: 2320:
Bang-Jensen, Jørgen; Gutin, Gregory (2000). "Section 2.3.4: The Bellman-Ford-Moore algorithm".
1189: 48: 1600:(RIP). The algorithm is distributed because it involves a number of nodes (routers) within an 978:
edges has been found which can only occur if at least one negative cycle exists in the graph.
2663: 2620: 1604:, a collection of IP networks typically owned by an ISP. It consists of the following steps: 232: 2090: 1944:, replaces the arbitrary linear order of the vertices used in Yen's second improvement by a 2556: 2551: 2529: 2387:
Heineman, George T.; Pollice, Gary; Selkow, Stanley (2008). "Chapter 6: Graph Algorithms".
2361: 2258: 2223: 2189: 1969: 1902: 915: 879: 406: 279: 8: 2681: 2517: 951: 787:
The core of the algorithm is a loop that scans across all edges at every loop. For every
666:// The distance from the source to itself is, of course, zero distance := 0 567: 537: 442: 287: 282:
whose edges sum to a negative value) that is reachable from the source, then there is no
26: 2383:. Section 22.1: The Bellman–Ford algorithm, pp. 612–616. Problem 22–1, p. 640. 2653: 2578: 2275: 1945: 1097: 832: 772:
ncycle := concatenate(, ncycle) v := predecessor
2460: 286:
path: any path that has a point on the negative cycle can be made cheaper by one more
2600: 2541: 2436: 2396: 2392: 2376: 2327: 1618:
The main disadvantages of the Bellman–Ford algorithm in this setting are as follows:
2446: 2274:. Analytic Algorithmics and Combinatorics (ANALCO12), Kyoto, Japan. pp. 41–47. 2357: 2285: 2244: 2175: 1626: 396: 236: 171: 364: 2504: 2491: 2308: 2254: 2219: 2211: 2185: 2159: 987: 264: 248: 121: 58: 2342: 1377:
edges, since if it were not, then there must be some strictly shorter path from
658:// Initialize the distance to all vertices to infinity distance := 2495: 2304: 2267: 2197: 1963: 1725:
has a distance value that has not changed since the last time the edges out of
531: 392: 252: 2289: 2710: 2595: 2410: 228: 2414: 2201: 1515: 2546: 2249: 2232: 2180: 2163: 1962:) very unlikely to happen. With a randomly permuted vertex ordering, the 1735: 2321: 1237:
edges, then Distance(u) is at most the length of the shortest path from
700:
distance := distance + w predecessor := u
2365: 2124: 224: 1531: 1127: 303: 2280: 1264:
loop is executed for the first time. Then, for the source vertex,
1629:
are not reflected quickly since updates are spread node-by-node.
1592:
A distributed variant of the Bellman–Ford algorithm is used in
1214:) is not infinity, it is equal to the length of some path from 1729:
were relaxed, then there is no need to relax the edges out of
764:ncycle := v := predecessor 662:// And having a null predecessor predecessor := 2610: 2534: 762:// u is a vertex in a negative cycle, find the cycle itself 2343:"On the history of combinatorial optimization (till 1960)" 2206:. Paper P-923. Santa Monica, California: RAND Corporation. 2070: 865:
is a lower bound to the length of any path from source to
623:// and fills two arrays (distance and predecessor) holding 620:// lists of vertices (represented as integers ) and edges, 1966:
number of iterations needed in the main loop is at most
2590: 2573: 2490: 1717:
A variation of the Bellman–Ford algorithm described by
1114:
is the maximum length of a shortest path in the graph.
876:
Since the longest possible path without a cycle can be
728:// A negative cycle exists; find a vertex on the cycle 617:// This implementation takes in a graph, represented as 1409:−1 iterations is at most the length of this path from 1279:, which is also correct because there is no path from 857:
yields a path that has a total weight that is at most
271:, and for this reason it is also sometimes called the 2386: 2131:, 4th ed., exercises 5 and 12 (retrieved 2013-01-30). 1972: 1905: 1665: 1100: 1055: 1000: 990:
algorithm can be used to find a vertex on the cycle.
954: 918: 882: 835: 793: 776:"Graph contains a negative-weight cycle", ncycle 570: 540: 482: 445: 409: 181: 131: 68: 2091:"关于最短路径的SPFA快速算法 [About the SPFA algorithm]" 2058: 1611:
Each node sends its table to all neighboring nodes.
626:// the shortest path from the source to each vertex 594:are the number of vertices and edges respectively. 2037: 2035: 1996: 1929: 1868:, relaxing each outgoing edge from that vertex in 1830:, relaxing each outgoing edge from that vertex in 1706: 1106: 1086: 1041: 970: 940: 904: 841: 821: 586: 556: 523: 461: 431: 206: 156: 106: 16:Algorithm for finding the shortest paths in graphs 2356: 2265: 1941: 1188:The correctness of the algorithm can be shown by 2708: 2319: 2272:Randomized speedup of the Bellman–Ford algorithm 2027: 2429:(2002). "Section 21.7: Negative Edge Weights". 2409: 2315:. Princeton University Press. pp. 130–134. 2076: 2032: 267:also published a variation of the algorithm in 1357:on this path. Then, the part of the path from 1333:For the second part, consider a shortest path 853:, following the predecessor trail recorded in 2476: 2323:Digraphs: Theory, Algorithms and Applications 2303: 2111:Cormen et al., 4th ed., Problem 22-1, p. 640. 1453:, i.e., the length of the shortest path from 1837:. Each vertex is then visited in the order 1560:. Unsourced material may be challenged and 1401:—a contradiction. By inductive assumption, 1393:to this path to obtain a path with at most 1256:. For the base case of induction, consider 1156:. Unsourced material may be challenged and 702:// Step 3: check for negative-weight cycles 332:. Unsourced material may be challenged and 2483: 2469: 1521: 1504: 1501:I.e., every cycle has nonnegative weight. 25: 2425: 2340: 2279: 2248: 2179: 2064: 2053: 1580:Learn how and when to remove this message 1389:edges, and we could then append the edge 1292:v.distance := u.distance + uv.weight 1176:Learn how and when to remove this message 986:) to find a vertex on the cycle, but any 352:Learn how and when to remove this message 2119: 2117: 2095:Journal of Southwest Jiaotong University 2047: 469:is the number of vertices in the graph. 363: 2158: 2149: 1481:v.distance <= v.distance + vv.weight 1268:, which is correct. For other vertices 1117: 256: 244: 2709: 2311:(1962). "A shortest chain algorithm". 2023: 2021: 2019: 2017: 1803:. Each vertex is visited in the order 2464: 2210: 2114: 1718: 391:However, Dijkstra's algorithm uses a 268: 2297: 2196: 2088: 1558:adding citations to reliable sources 1525: 1497:0 <= sum from 1 to k of vv.weight 1397:edges that is strictly shorter than 1154:adding citations to reliable sources 1121: 330:adding citations to reliable sources 297: 260: 2421:. New York: Pearson Education, Inc. 2375:, Fourth Edition. MIT Press, 2022. 2230: 2143: 2014: 1741: 38:Single-source shortest path problem 13: 1337:(there may be more than one) from 760:u := predecessor 726:predecessor := u 235:to all of the other vertices in a 182: 132: 69: 14: 2743: 2350:Handbook of Discrete Optimization 1594:distance-vector routing protocols 912:edges, the edges must be scanned 668:// Step 2: relax edges repeatedly 2237:Quarterly of Applied Mathematics 2216:The shortest path through a maze 2168:Quarterly of Applied Mathematics 1530: 1493:.distance terms cancel, leaving 1298:is the length of some path from 1126: 302: 2698:List of graph search algorithms 2152:Structure in communication nets 1942:Bannister & Eppstein (2012) 1707:{\displaystyle O(|V|\cdot |E|)} 1643: 1310:is the length of the path from 1042:{\displaystyle O(|V|\cdot |E|)} 849:-th iteration, from any vertex 524:{\displaystyle O(|V|\cdot |E|)} 107:{\displaystyle \Theta (|V||E|)} 2105: 2082: 2028:Bang-Jensen & Gutin (2000) 1982: 1974: 1915: 1907: 1701: 1697: 1689: 1681: 1673: 1669: 1485:Summing around the cycle, the 1081: 1077: 1069: 1059: 1036: 1032: 1024: 1016: 1008: 1004: 964: 956: 928: 920: 892: 884: 809: 801: 580: 572: 550: 542: 518: 514: 506: 498: 490: 486: 455: 447: 419: 411: 247:), but is instead named after 201: 197: 189: 185: 151: 147: 139: 135: 101: 97: 89: 84: 76: 72: 40:(for weighted directed graphs) 1: 2341:Schrijver, Alexander (2005). 2138: 2077:Kleinberg & Tardos (2006) 1441:is smaller. Therefore, after 1087:{\displaystyle O(l\cdot |E|)} 2373:. MIT Press and McGraw-Hill. 2326:(First ed.). Springer. 1714:worst-case time complexity. 1598:Routing Information Protocol 1437:, and is set equal to it if 1318:that follows the path from 293: 273:Bellman–Ford–Moore algorithm 207:{\displaystyle \Theta (|V|)} 157:{\displaystyle \Theta (|E|)} 7: 1510:be sought – for example in 1294:. By inductive assumption, 822:{\displaystyle i\leq |V|-1} 722:distance + w < distance 696:distance + w < distance 645:// Step 1: initialize graph 384:, Bellman–Ford proceeds by 10: 2748: 2370:Introduction to Algorithms 1353:be the last vertex before 2695: 2662: 2619: 2503: 2290:10.1137/1.9781611973020.6 1449:is at most the length of 1421:is at most the length of 403:the edges, and does this 167: 117: 54: 44: 33: 24: 2722:Polynomial-time problems 2389:Algorithms in a Nutshell 2007: 1940:Another improvement, by 1365:is a shortest path from 1225:if there is a path from 2606:Monte Carlo tree search 1622:It does not scale well. 1522:Applications in routing 1505:Finding negative cycles 2164:"On a routing problem" 2089:Duan, Fanding (1994). 1998: 1931: 1752:, contains all edges ( 1708: 1602:Autonomous system (AS) 1439:uv.weight + u.distance 1435:uv.weight + u.distance 1419:uv.weight + u.distance 1308:u.distance + uv.weight 1260:and the moment before 1108: 1088: 1043: 972: 942: 906: 843: 823: 780:distance, predecessor 588: 558: 525: 463: 433: 377: 255:, who published it in 221:Bellman–Ford algorithm 208: 158: 108: 20:Bellman–Ford algorithm 2664:Minimum spanning tree 2362:Leiserson, Charles E. 1999: 1997:{\displaystyle |V|/3} 1932: 1930:{\displaystyle |V|/2} 1709: 1109: 1089: 1044: 973: 943: 941:{\displaystyle |V|-1} 907: 905:{\displaystyle |V|-1} 844: 824: 589: 559: 526: 476:Bellman–Ford runs in 464: 434: 432:{\displaystyle |V|-1} 367: 231:from a single source 209: 159: 109: 2649:Shortest path faster 2557:Breadth-first search 2552:Bidirectional search 2498:traversal algorithms 2395:. pp. 160–164. 2231:Yen, Jin Y. (1970). 2150:Shimbel, A. (1955). 1970: 1903: 1897:| − 1 1663: 1657:| − 1 1554:improve this section 1150:improve this section 1118:Proof of correctness 1098: 1053: 998: 952: 916: 880: 833: 829:, at the end of the 791: 636:predecessor := 568: 538: 480: 443: 407: 382:Dijkstra's algorithm 326:improve this section 241:Dijkstra's algorithm 239:. It is slower than 179: 129: 66: 2727:Dynamic programming 2584:Iterative deepening 2203:Network Flow Theory 2200:(August 14, 1956). 2198:Ford, Lester R. Jr. 1433:gets compared with 1266:source.distance = 0 971:{\displaystyle |V|} 869:that uses at most 587:{\displaystyle |E|} 557:{\displaystyle |V|} 462:{\displaystyle |V|} 21: 2579:Depth-first search 2432:Algorithms in Java 2266:Bannister, M. J.; 2250:10.1090/qam/253822 2181:10.1090/qam/102435 1994: 1946:random permutation 1927: 1781:, contains edges ( 1704: 1596:, for example the 1461:that uses at most 1104: 1084: 1039: 968: 938: 902: 839: 819: 584: 554: 521: 459: 429: 378: 204: 154: 104: 19: 2704: 2703: 2601:Jump point search 2542:Best-first search 2427:Sedgewick, Robert 2402:978-0-596-51624-6 2381:978-0-262-04630-5 2366:Rivest, Ronald L. 2358:Cormen, Thomas H. 2352:. Elsevier: 1–68. 2333:978-1-84800-997-4 2313:Flows in Networks 2298:Secondary sources 1633:Count to infinity 1590: 1589: 1582: 1326:and then goes to 1186: 1185: 1178: 1107:{\displaystyle l} 842:{\displaystyle i} 738:initialized with 628:distance := 362: 361: 354: 217: 216: 2739: 2717:Graph algorithms 2485: 2478: 2471: 2462: 2461: 2457: 2455: 2454: 2445:. Archived from 2435:(3rd ed.). 2422: 2419:Algorithm Design 2406: 2374: 2353: 2347: 2337: 2316: 2309:Fulkerson, D. R. 2293: 2283: 2262: 2252: 2227: 2212:Moore, Edward F. 2207: 2193: 2183: 2160:Bellman, Richard 2155: 2144:Original sources 2132: 2123:See Sedgewick's 2121: 2112: 2109: 2103: 2102: 2086: 2080: 2074: 2068: 2065:Sedgewick (2002) 2062: 2056: 2054:Schrijver (2005) 2051: 2045: 2039: 2030: 2025: 2003: 2001: 2000: 1995: 1990: 1985: 1977: 1936: 1934: 1933: 1928: 1923: 1918: 1910: 1898: 1896: 1867: 1829: 1713: 1711: 1710: 1705: 1700: 1692: 1684: 1676: 1658: 1656: 1627:network topology 1585: 1578: 1574: 1571: 1565: 1534: 1526: 1512:cycle-cancelling 1498: 1482: 1448: 1440: 1436: 1432: 1420: 1404: 1309: 1297: 1293: 1278: 1267: 1259: 1181: 1174: 1170: 1167: 1161: 1130: 1122: 1113: 1111: 1110: 1105: 1093: 1091: 1090: 1085: 1080: 1072: 1048: 1046: 1045: 1040: 1035: 1027: 1019: 1011: 985: 977: 975: 974: 969: 967: 959: 947: 945: 944: 939: 931: 923: 911: 909: 908: 903: 895: 887: 872: 868: 864: 860: 856: 852: 848: 846: 845: 840: 828: 826: 825: 820: 812: 804: 756:visited := 742:visited := 730:visited := 593: 591: 590: 585: 583: 575: 563: 561: 560: 555: 553: 545: 530: 528: 527: 522: 517: 509: 501: 493: 468: 466: 465: 460: 458: 450: 438: 436: 435: 430: 422: 414: 375: 357: 350: 346: 343: 337: 306: 298: 263:, respectively. 237:weighted digraph 213: 211: 210: 205: 200: 192: 172:space complexity 163: 161: 160: 155: 150: 142: 113: 111: 110: 105: 100: 92: 87: 79: 29: 22: 18: 2747: 2746: 2742: 2741: 2740: 2738: 2737: 2736: 2707: 2706: 2705: 2700: 2691: 2658: 2615: 2499: 2489: 2452: 2450: 2443: 2403: 2345: 2334: 2305:Ford, L. R. Jr. 2300: 2146: 2141: 2136: 2135: 2122: 2115: 2110: 2106: 2087: 2083: 2075: 2071: 2063: 2059: 2052: 2048: 2040: 2033: 2026: 2015: 2010: 1986: 1981: 1973: 1971: 1968: 1967: 1960: 1953: 1919: 1914: 1906: 1904: 1901: 1900: 1892: 1890: 1887: 1880: 1873: 1866: 1859: 1848: 1838: 1835: 1828: 1816: 1809: 1804: 1793: 1786: 1779: 1764: 1757: 1750: 1696: 1688: 1680: 1672: 1664: 1661: 1660: 1652: 1650: 1646: 1640: 1586: 1575: 1569: 1566: 1551: 1535: 1524: 1507: 1496: 1480: 1446: 1438: 1434: 1430: 1418: 1402: 1307: 1295: 1291: 1273: 1265: 1257: 1202:repetitions of 1182: 1171: 1165: 1162: 1147: 1131: 1120: 1099: 1096: 1095: 1076: 1068: 1054: 1051: 1050: 1031: 1023: 1015: 1007: 999: 996: 995: 983: 963: 955: 953: 950: 949: 927: 919: 917: 914: 913: 891: 883: 881: 878: 877: 870: 866: 862: 861:, and further, 858: 854: 850: 834: 831: 830: 808: 800: 792: 789: 788: 781: 579: 571: 569: 566: 565: 549: 541: 539: 536: 535: 513: 505: 497: 489: 481: 478: 477: 454: 446: 444: 441: 440: 418: 410: 408: 405: 404: 369: 358: 347: 341: 338: 323: 307: 296: 265:Edward F. Moore 253:Lester Ford Jr. 249:Richard Bellman 196: 188: 180: 177: 176: 146: 138: 130: 127: 126: 96: 88: 83: 75: 67: 64: 63: 17: 12: 11: 5: 2745: 2735: 2734: 2732:Graph distance 2729: 2724: 2719: 2702: 2701: 2696: 2693: 2692: 2690: 2689: 2687:Reverse-delete 2684: 2679: 2674: 2668: 2666: 2660: 2659: 2657: 2656: 2651: 2646: 2641: 2639:Floyd–Warshall 2636: 2631: 2625: 2623: 2617: 2616: 2614: 2613: 2608: 2603: 2598: 2593: 2588: 2587: 2586: 2576: 2571: 2570: 2569: 2564: 2554: 2549: 2544: 2539: 2538: 2537: 2532: 2527: 2515: 2509: 2507: 2501: 2500: 2488: 2487: 2480: 2473: 2465: 2459: 2458: 2441: 2423: 2411:Kleinberg, Jon 2407: 2401: 2393:O'Reilly Media 2384: 2354: 2338: 2332: 2317: 2299: 2296: 2295: 2294: 2263: 2243:(4): 526–530. 2228: 2208: 2194: 2156: 2145: 2142: 2140: 2137: 2134: 2133: 2113: 2104: 2081: 2069: 2057: 2046: 2031: 2012: 2011: 2009: 2006: 1993: 1989: 1984: 1980: 1976: 1958: 1951: 1926: 1922: 1917: 1913: 1909: 1885: 1878: 1871: 1864: 1853: 1842: 1833: 1822: 1814: 1807: 1791: 1784: 1777: 1774:; the second, 1762: 1755: 1748: 1703: 1699: 1695: 1691: 1687: 1683: 1679: 1675: 1671: 1668: 1645: 1642: 1638: 1637: 1630: 1623: 1616: 1615: 1612: 1609: 1588: 1587: 1538: 1536: 1529: 1523: 1520: 1514:techniques in 1506: 1503: 1489:.distance and 1287:with 0 edges. 1251: 1250: 1223: 1184: 1183: 1134: 1132: 1125: 1119: 1116: 1103: 1083: 1079: 1075: 1071: 1067: 1064: 1061: 1058: 1038: 1034: 1030: 1026: 1022: 1018: 1014: 1010: 1006: 1003: 966: 962: 958: 937: 934: 930: 926: 922: 901: 898: 894: 890: 886: 838: 818: 815: 811: 807: 803: 799: 796: 596: 582: 578: 574: 552: 548: 544: 520: 516: 512: 508: 504: 500: 496: 492: 488: 485: 457: 453: 449: 428: 425: 421: 417: 413: 393:priority queue 360: 359: 310: 308: 301: 295: 292: 229:shortest paths 227:that computes 215: 214: 203: 199: 195: 191: 187: 184: 174: 165: 164: 153: 149: 145: 141: 137: 134: 124: 115: 114: 103: 99: 95: 91: 86: 82: 78: 74: 71: 61: 52: 51: 46: 45:Data structure 42: 41: 35: 31: 30: 15: 9: 6: 4: 3: 2: 2744: 2733: 2730: 2728: 2725: 2723: 2720: 2718: 2715: 2714: 2712: 2699: 2694: 2688: 2685: 2683: 2680: 2678: 2675: 2673: 2670: 2669: 2667: 2665: 2661: 2655: 2652: 2650: 2647: 2645: 2642: 2640: 2637: 2635: 2632: 2630: 2627: 2626: 2624: 2622: 2621:Shortest path 2618: 2612: 2609: 2607: 2604: 2602: 2599: 2597: 2596:Fringe search 2594: 2592: 2589: 2585: 2582: 2581: 2580: 2577: 2575: 2572: 2568: 2565: 2563: 2562:Lexicographic 2560: 2559: 2558: 2555: 2553: 2550: 2548: 2545: 2543: 2540: 2536: 2533: 2531: 2528: 2526: 2523: 2522: 2521: 2520: 2516: 2514: 2511: 2510: 2508: 2506: 2502: 2497: 2493: 2486: 2481: 2479: 2474: 2472: 2467: 2466: 2463: 2449:on 2008-05-31 2448: 2444: 2442:0-201-36121-3 2438: 2434: 2433: 2428: 2424: 2420: 2416: 2412: 2408: 2404: 2398: 2394: 2390: 2385: 2382: 2378: 2372: 2371: 2367: 2363: 2359: 2355: 2351: 2344: 2339: 2335: 2329: 2325: 2324: 2318: 2314: 2310: 2306: 2302: 2301: 2291: 2287: 2282: 2277: 2273: 2269: 2264: 2260: 2256: 2251: 2246: 2242: 2238: 2234: 2229: 2225: 2221: 2217: 2213: 2209: 2205: 2204: 2199: 2195: 2191: 2187: 2182: 2177: 2173: 2169: 2165: 2161: 2157: 2153: 2148: 2147: 2130: 2126: 2125:web exercises 2120: 2118: 2108: 2101:(2): 207–212. 2100: 2096: 2092: 2085: 2078: 2073: 2066: 2061: 2055: 2050: 2043: 2038: 2036: 2029: 2024: 2022: 2020: 2018: 2013: 2005: 1991: 1987: 1978: 1965: 1961: 1954: 1947: 1943: 1938: 1924: 1920: 1911: 1895: 1888: 1882:and one from 1881: 1874: 1863: 1857: 1852: 1846: 1841: 1836: 1826: 1821: 1817: 1810: 1802: 1798: 1794: 1787: 1780: 1773: 1769: 1765: 1758: 1751: 1743: 1739: 1737: 1732: 1728: 1724: 1720: 1715: 1693: 1685: 1677: 1666: 1655: 1641: 1634: 1631: 1628: 1624: 1621: 1620: 1619: 1613: 1610: 1607: 1606: 1605: 1603: 1599: 1595: 1584: 1581: 1573: 1563: 1559: 1555: 1549: 1548: 1544: 1539:This section 1537: 1533: 1528: 1527: 1519: 1517: 1513: 1502: 1499: 1494: 1492: 1488: 1483: 1478: 1476: 1472: 1466: 1464: 1460: 1456: 1452: 1444: 1428: 1424: 1417:. Therefore, 1416: 1412: 1408: 1400: 1396: 1392: 1388: 1385:with at most 1384: 1380: 1376: 1373:with at most 1372: 1368: 1364: 1360: 1356: 1352: 1348: 1345:with at most 1344: 1340: 1336: 1331: 1329: 1325: 1321: 1317: 1313: 1305: 1301: 1288: 1286: 1282: 1277: 1274:u.distance = 1271: 1263: 1255: 1248: 1245:with at most 1244: 1240: 1236: 1233:with at most 1232: 1228: 1224: 1221: 1217: 1213: 1209: 1208: 1207: 1205: 1201: 1197: 1193: 1191: 1180: 1177: 1169: 1159: 1155: 1151: 1145: 1144: 1140: 1135:This section 1133: 1129: 1124: 1123: 1115: 1101: 1073: 1065: 1062: 1056: 1028: 1020: 1012: 1001: 991: 989: 988:cycle finding 979: 960: 935: 932: 924: 899: 896: 888: 874: 836: 816: 813: 805: 797: 794: 785: 779: 775: 771: 767: 763: 759: 755: 751: 748: 745: 741: 737: 733: 729: 725: 721: 718: 714: 710: 706: 703: 699: 695: 692: 688: 684: 680: 676: 672: 669: 665: 661: 657: 653: 649: 646: 643: 639: 635: 631: 627: 624: 621: 618: 615: 611: 607: 603: 599: 595: 576: 546: 533: 510: 502: 494: 483: 474: 470: 451: 439:times, where 426: 423: 415: 402: 398: 394: 389: 387: 383: 373: 366: 356: 353: 345: 342:December 2021 335: 331: 327: 321: 320: 316: 311:This section 309: 305: 300: 299: 291: 289: 285: 281: 276: 274: 270: 266: 262: 258: 254: 250: 246: 242: 238: 234: 230: 226: 222: 193: 175: 173: 170: 166: 143: 125: 123: 120: 116: 93: 80: 62: 60: 57: 53: 50: 47: 43: 39: 36: 32: 28: 23: 2629:Bellman–Ford 2628: 2518: 2451:. Retrieved 2447:the original 2431: 2418: 2388: 2369: 2349: 2322: 2312: 2271: 2268:Eppstein, D. 2240: 2236: 2215: 2202: 2171: 2167: 2151: 2128: 2107: 2098: 2094: 2084: 2072: 2060: 2049: 2044:stanford.edu 1956: 1949: 1939: 1893: 1883: 1876: 1869: 1861: 1855: 1850: 1844: 1839: 1831: 1824: 1819: 1812: 1805: 1800: 1796: 1795:) such that 1789: 1782: 1775: 1771: 1767: 1766:) such that 1760: 1753: 1746: 1740: 1736:dense graphs 1730: 1726: 1722: 1719:Moore (1959) 1716: 1653: 1647: 1644:Improvements 1639: 1617: 1591: 1576: 1567: 1552:Please help 1540: 1516:network flow 1508: 1500: 1495: 1490: 1486: 1484: 1479: 1474: 1470: 1467: 1462: 1458: 1454: 1450: 1445:iterations, 1442: 1426: 1422: 1414: 1410: 1406: 1398: 1394: 1390: 1386: 1382: 1378: 1374: 1370: 1366: 1362: 1358: 1354: 1350: 1346: 1342: 1338: 1334: 1332: 1327: 1323: 1319: 1315: 1311: 1303: 1299: 1289: 1284: 1280: 1275: 1269: 1261: 1253: 1252: 1246: 1242: 1238: 1234: 1230: 1226: 1219: 1215: 1211: 1210:if Distance( 1203: 1199: 1195: 1194: 1187: 1172: 1163: 1148:Please help 1136: 992: 980: 875: 786: 782: 777: 773: 769: 768:v != u 765: 761: 757: 753: 749: 746: 743: 739: 735: 731: 727: 723: 719: 716: 712: 708: 707:edge (u, v) 704: 701: 697: 693: 690: 686: 682: 681:edge (u, v) 678: 674: 670: 667: 663: 659: 655: 651: 647: 644: 641: 637: 633: 629: 625: 622: 619: 616: 613: 609: 605: 601: 600:BellmanFord( 597: 475: 471: 400: 390: 379: 371: 348: 339: 324:Please help 312: 283: 277: 272: 220: 218: 2547:Beam search 2513:α–β pruning 2415:Tardos, Éva 1625:Changes in 1429:iteration, 1349:edges. Let 855:predecessor 122:performance 59:performance 2711:Categories 2634:Dijkstra's 2453:2007-05-28 2139:References 2129:Algorithms 2042:Lecture 14 1742:Yen (1970) 1570:April 2024 1518:analysis. 1447:v.distance 1431:v.distance 1403:u.distance 1296:u.distance 1166:March 2019 677:: 604:vertices, 386:relaxation 169:Worst-case 56:Worst-case 2677:Kruskal's 2672:Borůvka's 2644:Johnson's 2281:1111.5414 2174:: 87–90. 1686:⋅ 1541:does not 1425:. In the 1190:induction 1137:does not 1066:⋅ 1021:⋅ 933:− 897:− 814:− 798:≤ 711:weight w 685:weight w 654:vertices 650:vertex v 503:⋅ 424:− 313:does not 294:Algorithm 225:algorithm 183:Θ 133:Θ 119:Best-case 70:Θ 2567:Parallel 2417:(2006). 2270:(2012). 2214:(1959). 2162:(1958). 1964:expected 1276:infinity 1198:. After 863:distance 859:distance 752:visited 734:of size 705:for each 679:for each 648:for each 640:of size 632:of size 612:source) 598:function 534:, where 397:greedily 374:|−1 284:cheapest 2259:0253822 2224:0114710 2190:0102435 1860:, ..., 1818:, ..., 1562:removed 1547:sources 1473:, ..., 1465:edges. 1306:. Then 1158:removed 1143:sources 984:visited 873:edges. 608:edges, 334:removed 319:sources 2682:Prim's 2505:Search 2439:  2399:  2379:  2330:  2257:  2222:  2188:  1891:| 1651:| 1636:loops. 1455:source 1411:source 1405:after 1379:source 1367:source 1359:source 1339:source 1320:source 1312:source 1300:source 1281:source 1249:edges. 1206:loop, 1094:where 778:return 715:edges 689:edges 673:|V|−1 671:repeat 610:vertex 370:| 233:vertex 223:is an 2654:Yen's 2492:Graph 2346:(PDF) 2276:arXiv 2008:Notes 1799:> 1770:< 1254:Proof 1222:; and 1196:Lemma 774:error 766:while 747:while 740:false 675:times 380:Like 280:cycle 49:Graph 34:Class 2611:SSS* 2535:SMA* 2530:LPA* 2525:IDA* 2496:tree 2494:and 2437:ISBN 2397:ISBN 2377:ISBN 2328:ISBN 2127:for 1955:and 1545:any 1543:cite 1141:any 1139:cite 758:true 744:true 732:list 724:then 709:with 698:then 683:with 664:null 638:list 630:list 606:list 602:list 564:and 532:time 317:any 315:cite 288:walk 269:1959 261:1956 259:and 257:1958 251:and 245:1955 219:The 2286:doi 2245:doi 2176:doi 1899:to 1858:|−1 1556:by 1457:to 1413:to 1387:i-1 1381:to 1375:i-1 1369:to 1361:to 1341:to 1322:to 1314:to 1302:to 1283:to 1262:for 1258:i=0 1241:to 1229:to 1218:to 1204:for 1152:by 1049:to 750:not 660:inf 401:all 395:to 328:by 2713:: 2591:D* 2574:B* 2519:A* 2413:; 2391:. 2364:; 2360:; 2348:. 2307:; 2284:. 2255:MR 2253:. 2241:27 2239:. 2235:. 2220:MR 2186:MR 2184:. 2172:16 2170:. 2166:. 2116:^ 2099:29 2097:. 2093:. 2034:^ 2016:^ 2004:. 1937:. 1849:, 1811:, 1788:, 1759:, 1477:, 1391:uv 1330:. 1272:, 1192:: 770:do 754:do 720:if 717:do 713:in 694:if 691:do 687:in 656:do 652:in 614:is 275:. 2484:e 2477:t 2470:v 2456:. 2405:. 2336:. 2292:. 2288:: 2278:: 2261:. 2247:: 2226:. 2192:. 2178:: 2079:. 2067:. 1992:3 1988:/ 1983:| 1979:V 1975:| 1959:b 1957:E 1952:f 1950:E 1925:2 1921:/ 1916:| 1912:V 1908:| 1894:V 1886:b 1884:E 1879:f 1877:E 1872:b 1870:E 1865:1 1862:v 1856:V 1854:| 1851:v 1847:| 1845:V 1843:| 1840:v 1834:f 1832:E 1827:| 1825:V 1823:| 1820:v 1815:2 1813:v 1808:1 1806:v 1801:j 1797:i 1792:j 1790:v 1785:i 1783:v 1778:b 1776:E 1772:j 1768:i 1763:j 1761:v 1756:i 1754:v 1749:f 1747:E 1731:v 1727:v 1723:v 1702:) 1698:| 1694:E 1690:| 1682:| 1678:V 1674:| 1670:( 1667:O 1654:V 1583:) 1577:( 1572:) 1568:( 1564:. 1550:. 1491:v 1487:v 1475:v 1471:v 1463:i 1459:v 1451:P 1443:i 1427:i 1423:P 1415:u 1407:i 1399:P 1395:i 1383:u 1371:u 1363:u 1355:v 1351:u 1347:i 1343:v 1335:P 1328:v 1324:u 1316:v 1304:u 1285:u 1270:u 1247:i 1243:u 1239:s 1235:i 1231:u 1227:s 1220:u 1216:s 1212:u 1200:i 1179:) 1173:( 1168:) 1164:( 1160:. 1146:. 1102:l 1082:) 1078:| 1074:E 1070:| 1063:l 1060:( 1057:O 1037:) 1033:| 1029:E 1025:| 1017:| 1013:V 1009:| 1005:( 1002:O 982:( 965:| 961:V 957:| 936:1 929:| 925:V 921:| 900:1 893:| 889:V 885:| 871:i 867:v 851:v 837:i 817:1 810:| 806:V 802:| 795:i 736:n 642:n 634:n 581:| 577:E 573:| 551:| 547:V 543:| 519:) 515:| 511:E 507:| 499:| 495:V 491:| 487:( 484:O 456:| 452:V 448:| 427:1 420:| 416:V 412:| 372:V 355:) 349:( 344:) 340:( 336:. 322:. 202:) 198:| 194:V 190:| 186:( 152:) 148:| 144:E 140:| 136:( 102:) 98:| 94:E 90:| 85:| 81:V 77:| 73:(

Index


Single-source shortest path problem
Graph
Worst-case
performance
Best-case
performance
Worst-case
space complexity
algorithm
shortest paths
vertex
weighted digraph
Dijkstra's algorithm
1955
Richard Bellman
Lester Ford Jr.
1958
1956
Edward F. Moore
1959
cycle
walk

cite
sources
improve this section
adding citations to reliable sources
removed
Learn how and when to remove this message

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.