【数据结构】最短路径之迪杰斯特拉(Dijkstra)算法与弗洛伊德(Floyd)算法
迪杰斯特拉(Dijkstra)算法核心: 按照路径长度递增的次序产生最短路径。
迪杰斯特拉(Dijkstra)算法步骤:(求图中v0到v8的最短路径)并非一下子求出v0到v8的最短路径,而是 一步一步求出它们之间顶点的最短路径 ,过过程中都是 基于已经求出的最短路径的基础上,求得更远顶点的最短路径,最终得出源点与终点的最短路径 。
弗洛伊德(Floyd)算法是一个经典的 动态规划算法 。
绛旓細杩澃鏂壒鎷(Dijkstra)绠楁硶鏍稿績锛 鎸夌収璺緞闀垮害閫掑鐨勬搴忎骇鐢鏈鐭矾寰銆傝开鏉版柉鐗规媺(Dijkstra)绠楁硶姝ラ锛氾紙姹傚浘涓璿0鍒皏8鐨勬渶鐭矾寰勶級骞堕潪涓涓嬪瓙姹傚嚭v0鍒皏8鐨勬渶鐭矾寰勶紝鑰屾槸 涓姝ヤ竴姝ユ眰鍑哄畠浠箣闂撮《鐐圭殑鏈鐭矾寰 锛岃繃杩囩▼涓兘鏄 鍩轰簬宸茬粡姹傚嚭鐨勬渶鐭矾寰勭殑鍩虹涓婏紝姹傚緱鏇磋繙椤剁偣鐨勬渶鐭矾寰勶紝鏈缁堝緱鍑...
绛旓細dijkstra绠楁硶鏈韩姹傜殑鏄竴鐐瑰埌鍏朵粬鎵鏈夌偣鐨鏈鐭璺濈锛岃屼笉鏄叿浣撶殑璺緞锛屽洜姝よ繕闇瑕佷竴涓澶栫殑鏁扮粍鏉ヨ褰曟帹瀵兼渶鐭窛绂荤殑杩囩▼涓粡杩囩殑姣忎竴涓粨鐐癸紝杩欐牱鎵嶈兘姹傚嚭杩欎釜鏈鐭窛绂荤殑鍏蜂綋璺緞銆
绛旓細1. dijkstra 涓嶈兘鏈夎礋鏉冭竟锛屽惁鍒欑粨鏋滄槸閿欑殑锛屼綘鎯虫兂锛屽亣濡傛棤鍚戝浘鏈1,2,3涓偣锛寃(1,2)=1,w(1,3)=2,w(2,3)=-2. 鎸塪ij绠楁硶姹傛眰鐪嬨2.杩欏彞璇濊繕娌℃壘鍒板弽渚...涓嶈繃鏁檉loyd鏃惰鏄敤鍦ㄩ潪璐熸潈杈逛笂鐨勶紝闄や簡璐熺殑鍥炶矾涔嬪搴旇杩樻湁婕忔礊鍚.....
绛旓細婧愮偣锛圫ource锛 璺緞鐨勫紑濮嬮《鐐 缁堢偣锛圖estination锛 璺緞鐨勬渶鍚庝竴涓《鐐 鍗曟簮鏈鐭矾寰闂锛圫ingle Source Shortest Paths Problem锛 缁欏畾涓涓甫鏉冨浘G=(V E)鍜屽浘涓殑涓涓簮鐐箆 鍒嗗埆姹傚嚭浠巚鍒板浘G涓叾浠栨瘡涓《鐐圭殑鏈鐭矾寰勯暱搴 鍗宠矾寰勪笂鏉冨肩殑鎬诲拰 鍗曠洰鏍囨渶鐭矾寰勯棶棰橈紙Single Destination Shortest P...