1. 程式人生 > >最短路徑演算法--Dijkstra演算法,Bellmanford演算法,Floyd演算法,Johnson演算法

最短路徑演算法--Dijkstra演算法,Bellmanford演算法,Floyd演算法,Johnson演算法

    程式執行結果如下:
    
    0    41    ∞    ∞    ∞    29    
    ∞    0    51    ∞    32    ∞    
    ∞    ∞    0    50    ∞    ∞    
    45    ∞    ∞    0    ∞    -38    
    ∞    ∞    32    36    0    ∞    
    ∞    -29    ∞    ∞    21    0    
    
    ------------------------
    == 0 ==
    0    41    ∞    ∞    ∞    29    
    ∞    0    51    ∞    32    ∞    
    ∞    ∞    0    50    ∞    ∞    
    45    86    ∞    0    ∞    -38    
    ∞    ∞    32    36    0    ∞    
    ∞    -29    ∞    ∞    21    0    
    
    ------------------------
    == 1 ==
    0    41    92    ∞    73    29    
    ∞    0    51    ∞    32    ∞    
    ∞    ∞    0    50    ∞    ∞    
    45    86    137    0    118    -38    
    ∞    ∞    32    36    0    ∞    
    ∞    -29    22    ∞    3    0    
    
    ------------------------
    == 2 ==
    0    41    92    142    73    29    
    ∞    0    51    101    32    ∞    
    ∞    ∞    0    50    ∞    ∞    
    45    86    137    0    118    -38    
    ∞    ∞    32    36    0    ∞    
    ∞    -29    22    72    3    0    
    
    ------------------------
    == 3 ==
    0    41    92    142    73    29    
    146    0    51    101    32    63    
    95    136    0    50    168    12    
    45    86    137    0    118    -38    
    81    122    32    36    0    -2    
    117    -29    22    72    3    0    
    
    ------------------------
    == 4 ==
    0    41    92    109    73    29    
    113    0    51    68    32    30    
    95    136    0    50    168    12    
    45    86    137    0    118    -38    
    81    122    32    36    0    -2    
    84    -29    22    39    3    0    
    
    ------------------------
    == 5 ==
    0    0    51    68    32    29    
    113    0    51    68    32    30    
    95    -17    0    50    15    12    
    45    -67    -16    0    -35    -38    
    81    -31    20    36    0    -2    
    84    -29    22    39    3    0    
    
    ------------------------
    
    各頂點最短路徑
    -----    0-->5    0-->5    0-->5    0-->5    0-->5    
    1-->4    -----    1-->2    1-->4    1-->4    1-->4    
    2-->3    2-->3    -----    2-->3    2-->3    2-->3    
    3-->0    3-->5    3-->5    -----    3-->5    3-->5    
    4-->3    4-->3    4-->3    4-->3    -----    4-->3    
    5-->1    5-->1    5-->1    5-->1    5-->1    -----   

相關推薦

迪傑斯特拉演算法處理無向圖中路徑的(dijkstra)Java實現(指定兩點短距離及路徑)

其實不是原創哈,我寫不出來。       如何求圖中V0到V5的最短路徑呢?         java實現的方式如下:         第一步,根據圖來建立權值矩陣:        int[][] W = {      {  0,   1,   4,  -1,  -

單源路徑Dijkstra)——貪心演算法

  Dijkstra演算法是解單源最短路徑問題的貪心演算法。其基本思想是,設定頂點集合點集合S並不斷地做貪心選擇來擴充這個集合。一個頂點屬於集合S當且僅當從源到該頂點的最短路徑長度已知。初始時,S中僅含有源。設u是G的其一頂點。把從源到u且中間只經過S中頂點的路稱為從源到u的特殊

單元路徑問題---Dijkstra演算法

最短路徑—Dijkstra演算法和Floyd演算法(理解):https://blog.csdn.net/m0_37345402/article/details/76695930 理解最短路徑——迪傑斯特拉(dijkstra)演算法:https://www.cnblogs.com/iambupu/

路徑問題---Dijkstra演算法詳解

前言  Nobody can go back and start a new beginning,but anyone can start today and make a new ending.  Name:Willam  Time:2017/3/8 1、最短路徑問題介紹

A.pro讀演算法の11:路徑Dijkstra演算法

此文是獻給OIer看的。講的東西比較基礎(其實我理解Dijkstra花了很長時間)。NOIP2018結束約有1個月了,但是我們仍要繼續前進,為NOIP2019做準備。本節學習Dijkstra的演算法思想和實現,以及優先佇列和堆優化。線段樹也可以做到優化,甚至可能還更快,但是我太弱了不會。。

路徑問題-Dijkstra演算法

前言: 最短路徑演算法用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。 最短路徑問題是圖論研究中的一個經典演算法問題,是尋找圖(由結點和路徑組成的)中兩結點之間的最短路徑。 文章為了通俗易懂,避免使用一些複雜詞

Java資料結構:單源路徑問題---Dijkstra演算法

嚶擊長空 如圖: 思路:先任意找一個根節點,然後開始迴圈找連線該點所有邊,然後找到權值最小的一項,標記被訪問,然後再次迴圈找除了根節點和被訪問過的結點的邊,找到權值最小的。具體開註釋,非常詳細喲。 上程式碼: public void shortesPath(int i) { in

圖解-迪傑斯特拉演算法(找路徑Dijkstra's Algorithm (finding shortestpaths)

轉自:http://www.mathcs.emory.edu/~cheung/Courses/171/Syllabus/11-Graph/dijkstra2.html   一. 圖解迪傑斯特拉   Before showing you the&nb

路徑Dijkstra演算法

Dijkstra(迪傑斯特拉)演算法是典型的最短路徑路由演算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止(BFS、prime演算法都有類似思想)。Dijkstra演算法能得出最短路徑的最優解,但由於它遍歷計算

路徑Dijkstra演算法 C語言實現

Dijkstra演算法(單源點路徑演算法,要求:圖中不存在負權值邊): 步驟: a.  初始時,S只包含源點,即S={v},v的距離為0。U包含除v外的其他頂點,即: U={其餘頂點},若v與U中頂點u有邊,則u的距離設定為相應的權值,若u v之間不存在邊,則    

圖結構練習——路徑Dijkstra演算法

think: 1注意重複邊的覆蓋 2注意map陣列的初始化 3注意dist陣列的初始化 圖結構練習——最短路徑 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 給定一個

獲取多條路徑Dijkstra演算法

Dijkstra演算法是單源最短路徑經典演算法,一般用於所有邊的權為非負數的情況下,有向圖和無向圖均可。 效率方面:儲存圖模型的資料結構有很多種,使用鄰接矩陣的話其空間複雜度都為O(E^2)。而如果是稀疏圖,使用鄰接連結串列更划算,空間複雜度為O(V+E)。在

演算法導論】單源路徑Dijkstra演算法

        Dijkstra演算法解決了有向圖上帶正權值的單源最短路徑問題,其執行時間要比Bellman-Ford演算法低,但適用範圍比Bellman-Ford演算法窄。 迪傑斯特拉提出的按路徑長度遞增次序來產生源點到各頂點的最短路徑的演算法思想是:對有n個頂點的有向連

資料結構之---C語言實現路徑Dijkstra(迪傑斯特拉)演算法

此處共有兩段程式碼: 一、 這段程式碼比較全面,其中參考了github上的相關原始碼。可以說功能強大。 //Dijkstra(迪傑斯特拉演算法) #include <stdio.h> #include <stdlib.h> #include <

【ACM】帶權有向圖單源路徑Dijkstra演算法

最短路徑的第一類問題 求從單個源點到其餘各頂點的最短路徑。這是一種貪心策略,不可以存在負權邊。 演算法簡介 給定帶權有向圖G和源點v0,求從源點v0到G中其餘各頂點的最短路徑。迪傑斯特拉演算法是對

Java資料結構----圖--路徑解法Dijkstra演算法Floyd演算法

最短路徑—Dijkstra演算法和Floyd演算法 1、Dijkstra演算法 1.1、定義概覽 Dijkstra(迪傑斯特拉)演算法是典型的單源最短路徑演算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。Di

路徑dijkstra演算法 pascal

 dijkstra演算法適用於無負邊的圖 var   f:array[1..100] of boolean;   cost:array[1..100,1..100] of longint;   f

路徑Dijkstra(迪傑斯特拉)演算法(無向圖)

簡介 Dijkstra(迪傑斯特拉)演算法是典型的單源最短路徑演算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。由for迴圈可知,其

路徑Dijkstra演算法及例項分析

Dijkstra演算法迪科斯徹演算法 Dijkstra演算法描述為:假設用帶權鄰接矩陣來表示帶權有向圖。首先引進一個輔助向量D,它的每個分量D[i]表示當前所找到的從始點v到每個終點Vi的最短路徑。它的初始狀態為:若兩頂點之間有弧,則D[i]為弧上的權值;否則置D[i]為無

路徑Dijkstra演算法(鄰接表)

描述     以鄰接表作為儲存結構實現,求解從給定源點到給定結束點的最短路徑。 輸入 從1開始表示第一個節點。 第一行輸入:頂點數n(2<=n<=100),邊數m(2<=m<=100) 第二行輸入有向邊:起始點s1,結束點 s2,邊權值 w 第三