數學建模-圖論最短路徑(Matlab實現)

有權重的正向網絡,可以用迪傑斯特拉算法

題目:下圖爲單行線交通網,每弧旁的數字表示通過這條線所需的費用。現在某人要從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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章