久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    比較各種Dijkstra最短路算法的matlab代碼 | 戈城的新城區

     fanssk 2014-04-09


    http://www./2009/09/compare-dijkstra-shortest-path-algorithm-matlab-code/

    整整一天,我都在網絡上尋找Dijkstra算法的matlab代碼。我找到了許多,然而,它們全部都不能滿足我的需要。

    后來我只好參考wiki給出的正確的dijkstra算法,自己寫了個代碼。wiki給出的算法在此:

    http://en./wiki/Dijkstra%27s_algorithm

    摘錄如下。

    1 function Dijkstra(Graph, source):
    2 for each vertex v in Graph: // Initializations
    3 dist[v] := infinity // Unknown distance function from source to v
    4 previous[v] := undefined // Previous node in optimal path from source
    5 dist[source] := 0 // Distance from source to source
    6 Q := the set of all nodes in Graph
    // All nodes in the graph are unoptimized – thus are in Q
    7 while Q is not empty: // The main loop
    8 u := vertex in Q with smallest dist[]
    9 if dist[u] = infinity:
    10 break // all remaining vertices are inaccessible
    11 remove u from Q
    12 for each neighbor v of u: // where v has not yet been removed from Q.
    13 alt := dist[u] + dist_between(u, v)
    14 if alt < dist[v]: // Relax (u,v,a)
    15 dist[v] := alt
    16 previous[v] := u
    17 return previous[]

    作為教訓,我總結一下網絡上能找到的大多數dijkstra算法的matlab代碼的優劣。

    1.“Dijkstra最短路算法通用Matlab程序”

    這套代碼可以說是國內傳播最廣的dijkstra算法的matla實現,可以在許多網站找到,例如這里:

    http://www./bbs/t3095/

    它的輸入是賦權鄰接矩陣和起始點,輸出是起始點到各點的距離和最短路樹。代碼在這里。

    然而!它是錯的!

    用這套代碼可以得出起始點到各點的距離,然而算法得出的最短路樹完全是錯的,甚至用示例數據得到的最短路樹都根本不可理解。算法根本就沒按正確的dijksta算法的思路走。

    2.Dijkstra 算法 matlab程序

    這套算法也流傳甚廣,鏈接在這里:

    http://www./Article/jsjjjs/biafh/200504/735.html

    這套算法很簡短,功能也很簡單。它的輸入是賦權鄰接矩陣,輸出是起始點到各點的距離和最短路樹。使用示例數據可以得到正確的結果。缺點是它僅能算出從點1到其他各點的距離。

    代碼在這里。

    后來我又發現了第二個缺點:這算法也是錯的。從根本上就是錯的,只是恰好能把示例數據算對而已。

    3~4.來自mathworks的各種dijkstra代碼

    它們應該都是對的,然而太復雜,不適合我的應用;它們各自具有其應用范圍,我沒有依次嘗試,就放在這里而已。

    代碼A只能提供從某點到某點的距離,然而不提供從某點到其它任意點的最短路樹。

    代碼B能夠提供從某點到其它任意點的最短路樹,但是它是基于地圖的,需要提供每個點的坐標。

    5.正確的,可以給出從某點到其它任意點的最短路樹的dijkstra算法代碼

    我寫的,應該沒問題了。

    輸入是賦權鄰接矩陣和起始點,輸出起始點到其他各點的距離和最短路樹。

    代碼在此。

     

    function [d,pre]=dijkstra(D,s)

    [m,n]=size(D);
    d=inf.*ones(1,m);
    d(1,s)=0;
    ok=zeros(1,m);
    pre=zeros(1,m);
    while length(find(d==1)) for k=1:m
    if ok(k)==0&&minD>d(k)
    minD=d(k);y=k;
    end
    end
    if minD==inf
    break;
    end
    ok(y)=1;
    for i=1:m
    if D(y,i)~=inf
    alt=d(y)+D(y,i);
    if alt d(i)=alt;
    pre(i)=y;
    end
    end
    end
    end

      分享到:








    5,521 閱讀


    分享到飯否   

    本日志發表于星期三, 九月 2nd, 2009 at 11:45,屬于分類學問技術。
    你可以通過RSS 2.0對這篇日志進行回復。
    你可以回復日志, 或者從自己的頁面引用

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 无码熟妇人妻AV在线影片最多| 精品日韩人妻中文字幕| 少妇被无套内谢免费看| 国产成人啪精品视频免费APP| 亚洲国产精品福利片在线观看| 色一情一乱一伦麻豆| 特级欧美AAAAAAA免费观看| 精品无码国产自产在线观看水浒传 | 国产一区二区三区日韩精品| 无翼乌工口肉肉无遮挡无码18| 国产日韩入口一区二区| 另类国产精品一区二区| 国产高清一区二区不卡| 人妻少妇精品无码专区动漫 | 2019亚洲午夜无码天堂 | 92精品国产自产在线观看481页| 日本A级视频在线播放| 日韩中文字幕有码av| 亚洲色欲色欲WWW在线丝| 免费国产一区二区不卡| 大香区一二三四区2021| 秋霞电影院午夜无码免费视频 | 无码熟妇人妻AV在线电影| 国产亚洲精品AA片在线爽| 好深好爽办公室做视频| 国产不卡精品视频男人的天堂| 日韩日韩日韩日韩日韩| 四虎国产精品免费久久久| 中文有无人妻VS无码人妻激烈| 一級特黃色毛片免費看| 亚洲精品免费一二三区| 亚洲AV伊人久久综合密臀性色| 亚洲欧美日韩愉拍自拍美利坚| JIZZJIZZ亚洲日本少妇| 欧美伦费免费全部午夜最新| 好深好湿好硬顶到了好爽| 日日噜噜夜夜爽爽| 宅男噜噜噜66网站高清| 99热精品毛片全部国产无缓冲 | 亚洲欧美牲交| 久久久亚洲AV成人网站|