Shortest Path with Single Source Node and Multiple Target Nodes
3 次查看(过去 30 天)
显示 更早的评论
Hi,
There is node from A to H and used shortestpath fn to find the short path
a=["A" "A" "A" "B" "B" "C" "C" "D" "D" "E" "F" "F" "G"];
b=["B" "C" "D" "D" "F" "D" "E" "E" "G" "G" "G" "H" "H"];
distance=[3 2 5 2 13 2 5 4 3 6 2 3 6];
c=digraph(a,b,distance)
plot(c,'EdgeLabel',c.Edges.Weight)
[p,d]=shortestpath(c,"A","H")
got this
c =
Edges: [13×2 table]
Nodes: [8×1 table]
p = 1×5 string
"A" "C" "D" "G" "H" *
d = 13
But i need to have results from A to B , A to C ,.... till A to H. I have used shortestpathtree but gives only edges and nodes with distance. I need result like above one 'p' with multiple target nodes (with single source node). is that for loop helpful? else any other way.
Thanks in advance.
0 个评论
回答(1 个)
ag
2024-9-15
Hi Kasturi,
To get a similar result from "shortestpathtree", as obtained by using the "shortestpath" function, please set the "OutputForm" input argument to "Cell". The following code snippet illustrates the appropriate syntax:
a=["A" "A" "A" "B" "B" "C" "C" "D" "D" "E" "F" "F" "G"];
b=["B" "C" "D" "D" "F" "D" "E" "E" "G" "G" "G" "H" "H"];
distance=[3 2 5 2 13 2 5 4 3 6 2 3 6];
c=digraph(a,b,distance);
plot(c,'EdgeLabel',c.Edges.Weight)
[p, d] = shortestpathtree(c, "A",'OutputForm','cell')
For more details, please refer to the following MathWorks documentation page: https://www.mathworks.com/help/matlab/ref/graph.shortestpathtree.html#:~:text=OutputForm%20%E2%80%94%20Format%20of%20output
Hope this helps!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graph and Network Algorithms 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!