如何解决Dijkstra算法在MATLAB ?

3视图(30天)
Sivakumaran Chandrasekaran
Sivakumaran Chandrasekaran 2012年8月24日
回答: 默罕默德awan2013年11月14日
我使用命令“graphshortestpath”来解决“Dijkstra算法”。我没有得到正确的答案作为输出是专注于减少单独的节点。我需要遵循的路径减少(仅2节点)之间的距离。
我的编码是24节点。
clc;
清晰的所有;
关闭所有;
2 W = [2.10 1.65 2.20 1.50 1.55 1.50 1.05 1.75 1.75 1.75 1 1 0.4 1.25 0.75 1.50 1.75 - 2 2 1.75 0.65 1.05 1.75 0.45 2.75 1.75 1.75 0.5 1.05 0.75 1 1.50 - 1.25 0.75 - 0.75 0.5 - 0.5 0.75 - 0.5);
DG =稀疏([1 1 1 1 1 2 2 2 3 3 4 5 4 4 4 5 6 6 7 7 8 8 8 9 9 10 10 11 12 16 16 17 17 18 19 19 20 21日23日24日25日],[2 3 4 16 19 5 6 17 6 7 7 8 12 24 9 18 9 10 10 11 7 22 23 10 25 13 14 13 21 2 17 5 18 15 4 20 12 22 11 3 14],W);
g = DG;
名称= W;
h =视图(生物运动描记器(DG, [],“ShowWeights”,“上”))
s = 1;
d =输入(的输入目的地节点:);
(距离、路径,pred) = graphshortestpath (DG,年代,d,“导演”,真的,“方法”,Dijkstra算法的);
集(h.Nodes(路径),“颜色”0.4 - 0.4 [1]);
边缘= getedgesbynodeid (h,得到(h.Nodes(路径),“ID”));
集(边缘,“LineColor”(1 0 0))
集(边缘,“线宽”,1.5)
路径节点1 - node10、手动输出是1-16-2-6-10,但我得到了输出为1-3-6-10。
请帮助我。

答案(2)

卢西奥Cetto
卢西奥Cetto 2012年9月24日
我得到的距离1-16-2-6-10是5.8,1-3-6-10是5.15。HTH

默罕默德awan
默罕默德awan 2013年11月14日
我得到同样的如上先前的评论,可能会有一些错误在手动解决方案,你尝试。因为即使是通过查找网络上的明显,SP是1-3-6-10。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!