最短路径算法(Dijkstra)

Dijkstra( 迪科斯特拉 )算法是用来解决单源最短路径的算法,要求路径权值非负数。该算法利用了深度优先搜索和贪心的算法。

下面是一个有权图,求从A到各个节点的最短路径。

第1步:从A点出发,判断每个点到A点的路径(如果该点不能直连A点则距离值为无穷大,如果该点能和A直连则是当前的权值),计算完之后把A点上色,结果如下图:

第2步:从除A点之外的点查找到距离A点最近的点C,从C点出发查找其邻近的节点(除去已上色的点),并重新计算C点的邻近点距离A点的值,如图中B点,若新值(C点到A点的值+C点到该点的路径)小于原值,则将值更新为5,同理更新D、E点。同时将C标记为已经处理过,如图所示涂色。

第3步:从上色的节点中查找距离A最近的B点,重复第3步操作。

第4步: 重复第3步,2步,直到所有的节点都上色。

最后就算出了从A点到所有点的最短距离。

leetcode 743题

  • 鏈鐭矾寰刣ijkstra绠楁硶
    绛旓細鏈鐭矾寰dijkstra绠楁硶濡備笅锛欴ijkstra杩澃鏂壒鎷夋槸涓绉嶅鐞嗗崟婧愮偣鐨鏈鐭矾寰勭畻娉,灏辨槸璇存眰浠庢煇涓涓妭鐐瑰埌鍏朵粬鎵鏈夎妭鐐圭殑鏈鐭矾寰勫氨鏄疍ijkstra銆傝祫鏂欐嫇灞曪細杩澃鏂壒鎷绠楁硶(Dijkstra)鏄敱鑽峰叞鏁拌厰璁$畻鏈虹瀛﹀鐙勫厠鏂壒鎷変簬1959骞存彁鍑虹殑锛屽洜姝ゅ張鍙媱鍏嬫柉鐗规媺绠楁硶銆傛槸浠庝竴涓《鐐瑰埌鍏惰柉绾宠~浣欏悇椤剁偣鐨勬渶鐭矾寰勭畻娉...
  • dijkstra绠楁硶鏄粈涔?
    绛旓細Dijkstra绠楁硶鏄敱鑽峰叞璁$畻鏈虹瀛﹀鐙勫厠鏂壒鎷锛圖ijkstra锛変簬1959骞存彁鍑虹殑锛屽洜姝ゅ張鍙媱鍏嬫柉鐗规媺绠楁硶銆傛槸浠庝竴涓《鐐瑰埌鍏朵綑鍚勯《鐐圭殑鏈鐭矾寰勭畻娉锛岃В鍐崇殑鏄湁鍚戝浘涓渶鐭矾寰勯棶棰樸傚叾鍩烘湰鍘熺悊鏄細姣忔鏂版墿灞曚竴涓窛绂绘渶鐭殑鐐癸紝鏇存柊涓庡叾鐩搁偦鐨勭偣鐨勮窛绂汇傚綋鎵鏈夎竟鏉冮兘涓烘鏃讹紝鐢变簬涓嶄細瀛樺湪涓涓窛绂绘洿鐭殑娌℃墿灞...
  • 鏈鐭矾寰勭畻娉浠嬬粛
    绛旓細1銆佷粠鏌愰《鐐瑰嚭鍙戯紝娌垮浘鐨勮竟鍒拌揪鍙︿竴椤剁偣鎵缁忚繃鐨勮矾寰勪腑锛屽悇杈逛笂鏉冨间箣鍜屾渶灏忕殑涓鏉¤矾寰勫彨鍋鏈鐭矾寰銆傝В鍐虫渶鐭矾鐨勯棶棰樻湁浠ヤ笅绠楁硶锛Dijkstra绠楁硶锛孊ellman-Ford绠楁硶锛孎loyd绠楁硶鍜孲PFA绠楁硶绛夈2銆佸畾涔夛細鏈鐭矾寰勯棶棰樻槸鍥捐鐮旂┒涓殑涓涓粡鍏哥畻娉曢棶棰橈紝鏃ㄥ湪瀵绘壘鍥撅紙鐢辩粨鐐瑰拰璺緞缁勬垚鐨勶級涓袱缁撶偣涔嬮棿鐨勬渶鐭...
  • Dijkstra绠楁硶
    绛旓細Dijkstra(杩澃鏂壒鎷)绠楁硶鏄吀鍨嬬殑鍗曟簮鏈鐭矾寰勭畻娉锛岀敤浜庤绠椾竴涓妭鐐瑰埌鍏朵粬鎵鏈夎妭鐐圭殑鏈鐭矾寰勩備富瑕佺壒鐐规槸浠ヨ捣濮嬬偣涓轰腑蹇冨悜澶栧眰灞傛墿灞曪紝鐩村埌鎵╁睍鍒扮粓鐐逛负姝傛敞鎰忚绠楁硶瑕佹眰鍥句腑涓嶅瓨鍦ㄨ礋鏉冭竟銆傝G=(V,E)鏄竴涓甫鏉冩湁鍚戝浘锛屾妸鍥句腑椤剁偣闆嗗悎V鍒嗘垚涓ょ粍锛岀涓缁勪负宸叉眰鍑烘渶鐭矾寰勭殑椤剁偣闆嗗悎锛堢敤S琛ㄧず...
  • 鍥鹃亶鍘嗙畻娉曚箣鏈鐭矾寰凞ijkstra绠楁硶
    绛旓細Dijkstra绠楁硶锛岀炕璇戜綔鎴村厠鏂壒鎷夌畻娉曟垨杩澃鏂壒鎷夌畻娉曪紝浜1956骞寸敱鑽峰叞璁$畻鏈虹瀛﹀鑹惧吂璧皵.鎴村厠鏂壒鎷夋彁鍑猴紝鐢ㄤ簬瑙e喅璧嬫潈鏈夊悜鍥剧殑 鍗曟簮鏈鐭矾寰闂 銆傛墍璋撳崟婧愭渶鐭矾寰勯棶棰樻槸鎸囩‘瀹氳捣鐐癸紝瀵绘壘璇ヨ妭鐐瑰埌鍥句腑浠绘剰鑺傜偣鐨勬渶鐭矾寰勶紝绠楁硶鍙敤浜庡鎵句袱涓煄甯備腑鐨勬渶鐭矾寰勬垨鏄В鍐宠憲鍚嶇殑鏃呰鍟嗛棶棰樸傞棶棰樻弿杩 锛...
  • 绠杩dijkstra鏂规硶鐨勫熀鏈濇兂
    绛旓細涓銆Dijkstra Dijkstra鏄吀鍨鏈鐭矾寰勭畻娉锛岀敤浜庤绠椾竴涓妭鐐瑰埌鍏朵粬鑺傜偣鐨勬渶鐭矾寰勩傝绠楁硶浣跨敤鐨勬槸璐績绛栫暐锛氭瘡娆¢兘鎵惧嚭鍓╀綑椤剁偣涓笌婧愮偣璺濈鏈杩戠殑涓涓《鐐广傜粰瀹氫竴甯︽潈鍥撅紝鍥句腑姣忔潯杈圭殑鏉冨兼槸闈炶礋鐨勶紝浠h〃鐫涓ら《鐐逛箣闂寸殑璺濈銆傛寚瀹氬浘涓殑涓椤剁偣涓烘簮鐐癸紝鎵惧嚭婧愮偣鍒板叾瀹冮《鐐圭殑鏈鐭矾寰勫拰鍏堕暱搴︾殑闂锛...
  • 鏈鐭矾寰勭畻娉(Dijkstra)
    绛旓細Dijkstra锛 杩鏂壒鎷 锛绠楁硶鏄敤鏉ヨВ鍐冲崟婧鏈鐭矾寰鐨勭畻娉曪紝瑕佹眰璺緞鏉冨奸潪璐熸暟銆傝绠楁硶鍒╃敤浜嗘繁搴︿紭鍏堟悳绱㈠拰璐績鐨勭畻娉曘備笅闈㈡槸涓涓湁鏉冨浘锛屾眰浠嶢鍒板悇涓妭鐐圭殑鏈鐭矾寰勩傜1姝ワ細浠嶢鐐瑰嚭鍙戯紝鍒ゆ柇姣忎釜鐐瑰埌A鐐圭殑璺緞锛堝鏋滆鐐逛笉鑳界洿杩濧鐐瑰垯璺濈鍊间负鏃犵┓澶э紝濡傛灉璇ョ偣鑳藉拰A鐩磋繛鍒欐槸褰撳墠鐨勬潈鍊硷級锛...
  • dijkstra绠楁硶鏄粈涔?
    绛旓細杩澃鏂壒鎷绠楁硶鐢ㄦ潵瑙e喅浠庨《鐐箆0鍑哄彂鍒板叾浣欓《鐐圭殑鏈鐭矾寰锛岃绠楁硶鎸夌収鏈鐭矾寰勯暱搴﹂掑鐨勯『搴忎骇鐢熸墍浠ユ渶鐭矾寰勩傚浜庡浘G=锛圴锛孍锛夛紝灏嗗浘涓殑椤剁偣鍒嗘垚涓ょ粍锛氱涓缁凷锛氬凡姹傚嚭鐨勬渶鐭矾寰勭殑缁堢偣闆嗗悎锛堝紑濮嬩负锝泇0}锛夈傜浜岀粍V-S锛氬皻鏈眰鍑烘渶鐭矾寰勭殑缁堢偣闆嗗悎锛堝紑濮嬩负V-{v0}鐨勫叏閮ㄧ粨鐐癸級銆傚爢浼樺寲 ...
  • 鏈鐭矾寰勭畻娉
    绛旓細鏈鐭矾寰鐨勭畻娉曚富瑕佹湁涓夌锛歠loyd绠楁硶銆Dijkstra绠楁硶銆丅ellman-Ford(璐濆皵鏇-绂忕壒)涓銆乫loyd绠楁硶 鍩烘湰鎬濇兂濡備笅锛氫粠浠绘剰鑺傜偣A鍒颁换鎰忚妭鐐笲鐨勬渶鐭矾寰勪笉澶栦箮2绉嶅彲鑳斤紝1鏄洿鎺ヤ粠A鍒癇锛2鏄粠A缁忚繃鑻ュ共涓妭鐐筙鍒癇銆傛墍浠ワ紝鎴戜滑鍋囪Dis(AB)涓鸿妭鐐笰鍒拌妭鐐笲鐨勬渶鐭矾寰勭殑璺濈锛屽浜庢瘡涓涓妭鐐筙锛屾垜浠鏌is(AX...
  • 鍥捐В杩澃鏂壒鎷绠楁硶(Dijkstra)
    绛旓細杩涗竴姝ュ湴锛宒ist[I]2鍜宒ist[H]1鍚屾鏇存柊涓14锛屾爣蹇楃潃鍏抽敭鑺傜偣鐨勮矾寰勫彉鍖栵細CL鎵╁睍鑷矨(0)銆丅(2)銆丆(4)銆丒(5)銆丗(6)銆丏(7)銆丟(8)銆丠(9)鍜孖(9)锛孌L鎸囧悜缁堢偣銆傜粨璁猴細Dijkstra绠楁硶濡傛稛婕墿鏁o紝鎻ず浜咹鍜孖鐨鏈鐭矾寰锛屾渶鍚庯紝鏁翠釜鍥剧殑鏈鐭矾寰勭綉缁滃湪缁堢偣澶勫畬鎴愪氦铻嶃傛兂璞′竴涓嬶紝灏卞儚涓棰楃煶瀛...
  • 扩展阅读:dijkstra算法详细步骤 ... dijkstra最短路径表解法 ... dijkstra最短路径画图 ... dijkstra最短路径运筹学 ... 大二dijkstra算法例题 ... 初二最短路径五种画法 ... 求最短路径的简单方法 ... dijkstra算法确定最短路 ... dijkstra最短路径经典例题及答案 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网