跪求解释 Matlab中graphshortestpath的具体用法 需要什么参数,矩阵,得到什么结果?是一个最短路径问题,据说是封装好的floyd,Dijkstra 算法 最短路径问题是有权还是没权问题呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/26 14:45:57
跪求解释 Matlab中graphshortestpath的具体用法 需要什么参数,矩阵,得到什么结果?是一个最短路径问题,据说是封装好的floyd,Dijkstra 算法  最短路径问题是有权还是没权问题呢?
xUOVW r]@ j*[5iKx,7k#%[ PZX񫰖P?k;ν!YDj/};;o'vӳpO2JҮJN5UݰiKu_Nc.v=Z IO82+lsR܍꓍rc{8O^=`ۭ!T:?JAe(9&t6s1>±ob ۷FZi(ׁܭCS҂6g>? !gs8[ʯ0̿HCc:wlosfg9h}U ÷jӧ>+uX su}1Wb܉1W~}3xyaNWڵMXsfM$n6K]pǠEAf_-}k 1)jM,MP3p !r&D?"xG1GN\x1׋A)ICЃWz $HԋS 1b1~Aj=b1CIMYxHU=?L2%"Y)ܥ3&p!7Q*"#KX0/Lp+4@ ˉӐIL`b[2*&%=xJ["zZn _G鎞 ewhtYo(`#NAKT2Ae+D,m a-e#}ORlXپƻD-1-;"=&dBZ70۾C\e W 7mzil(WHR+OiVuUkz]KyCByD HZɘum5_*,m:23Nx@?oj_5Eɨ8m(a;/Ne}~4TN.nrM>xQ>e3Ow>nV)h=XwT>X=6+lM

跪求解释 Matlab中graphshortestpath的具体用法 需要什么参数,矩阵,得到什么结果?是一个最短路径问题,据说是封装好的floyd,Dijkstra 算法 最短路径问题是有权还是没权问题呢?
跪求解释 Matlab中graphshortestpath的具体用法 需要什么参数,矩阵,得到什么结果?
是一个最短路径问题,据说是封装好的floyd,Dijkstra 算法
最短路径问题是有权还是没权问题呢?

跪求解释 Matlab中graphshortestpath的具体用法 需要什么参数,矩阵,得到什么结果?是一个最短路径问题,据说是封装好的floyd,Dijkstra 算法 最短路径问题是有权还是没权问题呢?
我看了一下这个函数的例子
默认是Dijkstra 算法
是有权的, 我想如果把权都赋1的话, 就相当于没权的了
参数是带权的稀疏矩阵及结点
看看这两个例子(一个有向一个无向), 或许你能找到你想知道的

% Create a directed graph with 6 nodes and 11 edges
W = [.41 .99 .51 .32 .15 .45 .38 .32 .36 .29 .21]; %这是权
DG = sparse([6 1 2 2 3 4 4 5 5 6 1],[2 6 3 5 4 1 6 3 4 3 5],W) %有权的有向图
h = view(biograph(DG,[],'ShowWeights','on')) %画图, 这个好玩
% Find shortest path from 1 to 6
[dist,path,pred] = graphshortestpath(DG,1,6) %找顶点1到6的最短路径
% Mark the nodes and edges of the shortest path
set(h.Nodes(path),'Color',[1 0.4 0.4]) %上色
edges = getedgesbynodeid(h,get(h.Nodes(path),'ID'));
set(edges,'LineColor',[1 0 0]) %上色

set(edges,'LineWidth',1.5) %上色


下面是无向图的例子
% % Solving the previous problem for an undirected graph
% UG = tril(DG + DG')
% h = view(biograph(UG,[],'ShowArrows','off','ShowWeights','on'))
% % Find the shortest path between node 1 and 6
% [dist,path,pred] = graphshortestpath(UG,1,6,'directed',false)
% % Mark the nodes and edges of the shortest path
% set(h.Nodes(path),'Color',[1 0.4 0.4])
% fowEdges = getedgesbynodeid(h,get(h.Nodes(path),'ID'));
% revEdges = getedgesbynodeid(h,get(h.Nodes(fliplr(path)),'ID'));
% edges = [fowEdges;revEdges];
% set(edges,'LineColor',[1 0 0])
% set(edges,'LineWidth',1.5)
%

对matlab我只知皮毛, 只是对你这个问题感兴趣而已(以前学过), 可别怪我没答到点子上哈