資源簡介
Dijkstra算法的Matlab程序,用于求各點之間的最短路距離。該程序解決了一個有九個點的無向圖中求任意兩點之間最短路距離的例子。程序中的每一步都有詳細說明。
代碼片段和文件信息
%Dijkstra最短路算法Matlab程序用于求從各點之間的最短路距離
%D為鄰接矩陣需要輸入
%d為s到其它各點最短距離
%pre記載了最短路徑生成路線
clear?all
clc
D=[0?6?inf?inf?5?6?inf?5?inf
????6?0?9?inf?inf?9?inf?3?inf
????inf?9?0?7?inf?inf?4?inf?inf
????inf?inf?7?0?6?4?6?inf?3
????5?inf?inf?6?0?5?inf?inf?4
????6?9?inf?4?5?0?5?inf?inf
????inf?inf?4?6?inf?5?0?inf?inf
????5?3?inf?inf?inf?inf?inf?0?inf
????inf?inf?inf?3?4?inf?inf?inf?0];%這是鄰接矩陣
[mn]=size(D);%m行n列,這里m=n=9
E=zeros(mn);%E為任意兩點間最短距離矩陣
for?s=1:m
????%當s=1時,就是求1這個點到其他各個點的最短距離,同理,當s=2時,……=9時。
????d=inf.*ones(1m);%初始化
????d(1s)=0;%s點到s點的最短距離為0
????ok=zeros(1m);%初始化,用來記錄已經求得最短路徑的點
????pre=zeros(1m);%初始化
????while?length(find(ok==1)) ????????minD=inf;
????????for?k=1:m
???????????if?ok(k)==0&&minD>d(k)
???????????????minD=d(k);
???????????????y=k;
???????????end
????????end
????????if?minD==i
- 上一篇:ARIMA_MATLAB代碼
- 下一篇:SAR成像英文書
評論
共有 條評論