有權重的正向網絡,可以用迪傑斯特拉算法
題目:下圖爲單行線交通網,每弧旁的數字表示通過這條線所需的費用。現在某人要從V1出發,通過這個交通網到V8去,求使總費用最小的旅行路線。
在線作圖軟件:在線做圖
最短路徑代碼:
clear;clc;
s=[1 1 1 2 3 3 4 5 5 5 5 6 6 7 9 9]; %邊的頂點編號1
t=[2 3 4 5 2 4 6 4 6 7 8 5 7 8 5 3]; %邊的另一個頂點編號2
w=[6 3 1 1 2 2 10 6 4 3 6 10 2 4 2 8]; %邊對應的權值
%G = graph(s,t,w); 畫無向圖
G=digraph(s,t,w);
plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2)
set( gca, 'XTick', [], 'YTick', [] );
[P,d] = shortestpath(G, 1, 8) %最短路徑算法調用
% 在圖中高亮我們的最短路徑
myplot = plot(G, 'EdgeLabel', G.Edges.Weight, 'linewidth', 2); %首先將圖賦給一個變量
highlight(myplot, P, 'EdgeColor', 'r') %對這個變量即我們剛剛繪製的圖形進行高亮處理(給邊加上r紅色)
% 求出任意兩點的最短路徑矩陣
D = distances(G)
D(1,8) % 1 -> 2的最短路徑
結果:節點1到8的最短路徑爲1-3-2-5-8