Dijkstra算法

Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。注意该算法要求图中不存在负权边。

设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。

(1)初始时,S只包含起点D;U包含除D外的其他顶点,且U中顶点的距离为“起点D到该顶点的距离”(例如,U中顶点A的距离为[D,A]的长度,然后D和A不相邻,则A的距离为∞)
(2)从U中选出“距离最短的顶点K”,并将顶点K加入到S中;同时,从U中移除顶点K
(3)更新U中各个顶点到起点D的距离。之所以更新U中顶点的距离,是由于上一步中确定了K是求出最短路径的顶点,从而可以利用K来更新其他顶点到起点D的距离(例如,[D,A]的距离可能大于[D,K]+[K,A]的距离)
(4)重复步骤(2)和(3),直到遍历完所有顶点

https://blog.csdn.net/yalishadaa/article/details/55827681

  • 璺緞鎼滅储涓父鐢ㄧ殑dijkstra绠楁硶鏄湪鍥捐〃涓壘鍒颁粈涔堢殑鏂规硶?
    绛旓細Dijkstra绠楁硶鏄绠楁満绉戝涓潪甯歌憲鍚嶅拰閲嶈鐨勭畻娉曚箣涓锛屼富瑕佺敤浜庤В鍐冲浘璁轰腑鐨勫崟婧愭渶鐭矾寰勯棶棰銆傝繖閲岀殑“鍗曟簮”鎸囩殑鏄粠涓涓寚瀹氱殑璧峰鑺傜偣锛堟垨绉颁负“婧”鑺傜偣锛夊嚭鍙戯紝鎵惧埌鍒拌揪鍥句腑鎵鏈夊叾浠栬妭鐐圭殑鏈鐭矾寰勩傝繖涓畻娉曠殑宸ヤ綔鍘熺悊鍙互绠杩颁负锛氫粠婧愯妭鐐瑰紑濮嬶紝閫愭璁块棶鍥句腑鐨勯偦杩戣妭鐐癸紝骞...
  • Dijkstra绠楁硶
    绛旓細Dijkstra(杩澃鏂壒鎷)绠楁硶鏄吀鍨嬬殑鍗曟簮鏈鐭矾寰勭畻娉曪紝鐢ㄤ簬璁$畻涓涓妭鐐瑰埌鍏朵粬鎵鏈夎妭鐐圭殑鏈鐭矾寰銆備富瑕佺壒鐐规槸浠ヨ捣濮嬬偣涓轰腑蹇冨悜澶栧眰灞傛墿灞曪紝鐩村埌鎵╁睍鍒扮粓鐐逛负姝傛敞鎰忚绠楁硶瑕佹眰鍥句腑涓嶅瓨鍦ㄨ礋鏉冭竟銆傝G=(V,E)鏄竴涓甫鏉冩湁鍚戝浘锛屾妸鍥句腑椤剁偣闆嗗悎V鍒嗘垚涓ょ粍锛岀涓缁勪负宸叉眰鍑烘渶鐭矾寰勭殑椤剁偣闆嗗悎锛堢敤S琛ㄧず...
  • 鏈鐭矾寰绠楁硶
    绛旓細鏈鐭矾寰勭殑绠楁硶涓昏鏈変笁绉嶏細floyd绠楁硶銆Dijkstra绠楁硶銆丅ellman-Ford(璐濆皵鏇-绂忕壒)涓銆乫loyd绠楁硶 鍩烘湰鎬濇兂濡備笅锛氫粠浠绘剰鑺傜偣A鍒颁换鎰忚妭鐐笲鐨勬渶鐭矾寰勪笉澶栦箮2绉嶅彲鑳斤紝1鏄洿鎺ヤ粠A鍒癇锛2鏄粠A缁忚繃鑻ュ共涓妭鐐筙鍒癇銆傛墍浠ワ紝鎴戜滑鍋囪Dis(AB)涓鸿妭鐐笰鍒拌妭鐐笲鐨勬渶鐭矾寰勭殑璺濈锛屽浜庢瘡涓涓妭鐐筙锛屾垜浠鏌is(AX...
  • 绠杩dijkstra鏂规硶鐨勫熀鏈濇兂
    绛旓細Dijkstra鏄吀鍨嬫渶鐭矾寰勭畻娉曪紝鐢ㄤ簬璁$畻涓涓妭鐐瑰埌鍏朵粬鑺傜偣鐨勬渶鐭矾寰銆傝绠楁硶浣跨敤鐨勬槸璐績绛栫暐锛氭瘡娆¢兘鎵惧嚭鍓╀綑椤剁偣涓笌婧愮偣璺濈鏈杩戠殑涓涓《鐐广傜粰瀹氫竴甯︽潈鍥撅紝鍥句腑姣忔潯杈圭殑鏉冨兼槸闈炶礋鐨勶紝浠h〃鐫涓ら《鐐逛箣闂寸殑璺濈銆傛寚瀹氬浘涓殑涓椤剁偣涓烘簮鐐癸紝鎵惧嚭婧愮偣鍒板叾瀹冮《鐐圭殑鏈鐭矾寰勫拰鍏堕暱搴︾殑闂锛屽嵆鏄崟婧愭渶...
  • 鏈鐭矾寰dijkstra绠楁硶
    绛旓細Dijkstra绠楁硶涓鑸殑琛ㄨ堪閫氬父鏈変袱绉嶆柟寮忥紝涓绉嶇敤姘镐箙鍜屼复鏃舵爣鍙锋柟寮忥紝涓绉嶆槸鐢∣PEN,CLOSE琛ㄧ殑鏂瑰紡锛岃繖閲屽潎閲囩敤姘镐箙鍜屼复鏃舵爣鍙风殑鏂瑰紡銆傛敞鎰忚绠楁硶瑕佹眰鍥句腑涓嶅瓨鍦ㄨ礋鏉冭竟銆傚皢T涓《鐐规寜閫掑鐨勬搴忓姞鍏ュ埌S涓紝淇濊瘉锛氫粠婧愮偣V0鍒癝涓叾浠栧悇椤剁偣鐨勯暱搴﹂兘涓嶅ぇ浜庝粠V0鍒癟涓换浣曢《鐐圭殑鏈鐭矾寰勯暱搴︺傛瘡涓《鐐瑰搴斾竴...
  • dijkstra绠楁硶鏄粈涔?
    绛旓細Dijkstra绠楁硶鏄敱鑽峰叞璁$畻鏈虹瀛﹀鐙勫厠鏂壒鎷夛紙Dijkstra锛変簬1959骞存彁鍑虹殑锛屽洜姝ゅ張鍙媱鍏嬫柉鐗规媺绠楁硶銆傛槸浠庝竴涓《鐐瑰埌鍏朵綑鍚勯《鐐圭殑鏈鐭矾寰勭畻娉曪紝瑙e喅鐨勬槸鏈夊悜鍥句腑鏈鐭矾寰勯棶棰樸傚叾鍩烘湰鍘熺悊鏄細姣忔鏂版墿灞曚竴涓窛绂绘渶鐭殑鐐癸紝鏇存柊涓庡叾鐩搁偦鐨勭偣鐨勮窛绂汇傚綋鎵鏈夎竟鏉冮兘涓烘鏃讹紝鐢变簬涓嶄細瀛樺湪涓涓窛绂绘洿鐭殑娌℃墿灞...
  • 鏈鐭矾寰勫洓澶绠楁硶
    绛旓細Dijkstra绠楁硶Dijkstra's Algorithm锛欴ijkstra绠楁硶鐢ㄤ簬姹傝В鍗曟簮鏈鐭矾寰勯棶棰橈紝鍗充粠缁欏畾璧风偣鍒板叾瀹冩墍鏈夎妭鐐圭殑鏈鐭矾寰勩傚畠閫氳繃閫愭鎵╁睍璺緞闀垮害鏉ヤ笉鏂‘瀹氬綋鍓嶈窛绂昏捣鐐规渶杩戠殑鑺傜偣锛屽苟鏇存柊鍏跺畠鑺傜偣鐨勮窛绂诲硷紝鐩村埌鎵惧埌鎵鏈夎妭鐐圭殑鏈鐭矾寰勩傝礉灏旀浖绂忕壒绠楁硶Bellman-Ford Algorithm锛氳礉灏旀浖-绂忕壒绠楁硶鐢ㄤ簬姹傝В鍗曟簮鏈鐭矾寰...
  • dijkstra绠楁硶鏄粈涔?
    绛旓細1銆佸皢婧愮偣鍔犲叆鍫嗭紝骞惰皟鏁村爢銆2銆侀夊嚭鍫嗛《鍏冪礌u锛堝嵆浠d环鏈灏忕殑鍏冪礌锛夛紝浠庡爢涓垹闄わ紝骞跺鍫嗚繘琛岃皟鏁淬3銆佸鐞嗕笌u鐩搁偦鐨勶紝鏈璁块棶杩囩殑锛屾弧瓒充笁瑙掍笉绛夊紡鐨勯《鐐 1):鑻ヨ鐐瑰湪鍫嗛噷锛屾洿鏂拌窛绂伙紝骞惰皟鏁磋鍏冪礌鍦ㄥ爢涓殑浣嶇疆銆2):鑻ヨ鐐逛笉鍦ㄥ爢閲岋紝鍔犲叆鍫嗭紝鏇存柊鍫嗐4銆佽嫢鍙栧埌鐨剈涓虹粓鐐癸紝缁撴潫绠楁硶锛...
  • 鍥鹃亶鍘嗙畻娉曚箣鏈鐭矾寰Dijkstra绠楁硶
    绛旓細Dijkstra绠楁硶锛岀炕璇戜綔鎴村厠鏂壒鎷夌畻娉曟垨杩澃鏂壒鎷夌畻娉锛屼簬1956骞寸敱鑽峰叞璁$畻鏈虹瀛﹀鑹惧吂璧皵.鎴村厠鏂壒鎷夋彁鍑猴紝鐢ㄤ簬瑙e喅璧嬫潈鏈夊悜鍥剧殑 鍗曟簮鏈鐭矾寰勯棶棰 銆傛墍璋撳崟婧愭渶鐭矾寰勯棶棰樻槸鎸囩‘瀹氳捣鐐癸紝瀵绘壘璇ヨ妭鐐瑰埌鍥句腑浠绘剰鑺傜偣鐨勬渶鐭矾寰勶紝绠楁硶鍙敤浜庡鎵句袱涓煄甯備腑鐨勬渶鐭矾寰勬垨鏄В鍐宠憲鍚嶇殑鏃呰鍟嗛棶棰樸傞棶棰樻弿杩 锛...
  • 璺緞瑙勫垝甯哥敤寰楀嚑绉绠楁硶
    绛旓細Dijkstra绠楁硶: 璐績鐨勮垶鑰咃紝瀹冮氳繃閫愭閫夋嫨涓庡綋鍓嶈妭鐐硅窛绂绘渶杩戠殑瀛愯妭鐐癸紝鍍忕紪缁囦竴寮犳渶鐭矾寰勭殑缃戯紝姣忎竴娆¤凯浠i兘鏄矾寰勯暱搴︾殑浼樺寲銆侫*绠楁硶鍒欐洿涓哄阀濡欙紝瀹冪粨鍚堜簡瀹為檯璺濈(g(x))鍜屽鐩爣璺濈鐨勪及璁(h(x))锛屽紩瀵兼悳绱㈠悜鐩爣鐐规洿杩戜竴姝ワ紝鎻愰珮鎼滅储鏁堢巼銆侱*绠楁硶鍒欐槸鍙嶅悜涓庡閲忕殑宸у缁撳悎锛屽畠浠庣粓鐐瑰嚭鍙戯紝...
  • 扩展阅读:dijkstra最短路径画图 ... dijkstra发音 ... dijkstra算法叫什么 ... a*算法 ... 最短路径算法dijkstra ... 迪杰斯特拉算法 ... dijkstra经典例题及答案 ... dijkstra是贪心算法吗 ... dijkstra时间复杂度 ...

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