%% ****************求必须通过指定两个点的最短路****************** % 参数说明: // % W 表示图的权值矩阵, k1表示起点,k2表示终点,t1,t2表示两个指定的点 // % P 表示程序最终的到的路 // % d 表示路的长度 // %% function [P d] = cn2shorf(W,k1,k2,t1,t2) % 注:路中重复的点记作一个点 [p1 d1] = n2shorf(W,k1,t1); [p2 d2] = n2shorf(W,t1,t2); [p3 d3] = n2shorf(W,t2,k2); dt1 = d1 + d2 + d3; [p4 d4] = n2shorf(W,k1,t2); [p5 d5] = n2shorf(W,t2,t1); [p6 d6] = n2shorf(W,t1,k2); dt2 = d4 + d5+ d6; if dt1 <dt2 d = dt1; P = [p1 p2(2:length(p2)) p2(2:length(p3))]; else d = dt2; P = [p4 p5(2:length(p5)) p6(2:length(p6))]; end