How can I find the total distance of the path from the dfsearch on this code?

1 view (last 30 days)
Good evening,
Similar to finding the total distance of the shortest path between two nodes, I want to find the total distance covered in following the path prescribed by the dfsearch on this code. That is, the total distance covered visiting each node at least once.
Can someone help? Here is my code:
% The next three lines of code are used to plot the edges. s = starting
% node; t = terminating node; weights = distance between nodes (weight of
% edge); names = labels for the nodes; g = graph.
s = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 1 16 32 17 33 48 64 49 65 80 97 97 97 97 97 97];
t = [2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 17 32 48 33 49 64 80 65 81 96 1 17 33 49 65 81];
weights = [2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 8.75 6.36 4.74 4.74 6.36 8.75];
names = {'T1' 'T2' 'T3' 'T4' 'T5' 'T6' 'T7' 'T8' 'T9' 'T10' 'T11' 'T12' 'T13' 'T14' 'T15' 'T16' 'T17' 'T18' 'T19' 'T20' 'T21' 'T22' 'T23' 'T24' 'T25' 'T26' 'T27' 'T28' 'T29' 'T30' 'T31' 'T32' 'T33' 'T34' 'T35' 'T36' 'T37' 'T38' 'T39' 'T40' 'T41' 'T42' 'T43' 'T44' 'T45' 'T46' 'T47' 'T48' 'T49' 'T50' 'T51' 'T52' 'T53' 'T54' 'T55' 'T56' 'T57' 'T58' 'T59' 'T60' 'T61' 'T62' 'T63' 'T64' 'T65' 'T66' 'T67' 'T68' 'T69' 'T70' 'T71' 'T72' 'T73' 'T74' 'T75' 'T76' 'T77' 'T78' 'T79' 'T80' 'T81' 'T82' 'T83' 'T84' 'T85' 'T86' 'T87' 'T88' 'T89' 'T90' 'T91' 'T92' 'T93' 'T94' 'T95' 'T96' 'DROPSTATION'};
G = graph(s,t,weights,names);
% The next lines of code specifies the cordinates of each node on the x,y plane
% [P,d] plots the shortest path between two nodes, and highlights it in red
% v dfsearch performs the DFS to simulate movement of workers
x = [-7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -7.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -4.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 -1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 4.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 0];
y = [4.5 6.5 8.5 10.5 12.5 14.5 16.5 18.5 20.5 22.5 24.5 26.5 28.5 30.5 32.5 34.5 4.5 6.5 8.5 10.5 12.5 14.5 16.5 18.5 20.5 22.5 24.5 26.5 28.5 30.5 32.5 34.5 4.5 6.5 8.5 10.5 12.5 14.5 16.5 18.5 20.5 22.5 24.5 26.5 28.5 30.5 32.5 34.5 4.5 6.5 8.5 10.5 12.5 14.5 16.5 18.5 20.5 22.5 24.5 26.5 28.5 30.5 32.5 34.5 4.5 6.5 8.5 10.5 12.5 14.5 16.5 18.5 20.5 22.5 24.5 26.5 28.5 30.5 32.5 34.5 4.5 6.5 8.5 10.5 12.5 14.5 16.5 18.5 20.5 22.5 24.5 26.5 28.5 30.5 32.5 34.5 0];
p = plot(G,'XData',x,'YData',y,'EdgeLabel',G.Edges.Weight);
[P,d] = shortestpath(G,22,31)
highlight(p,P,'EdgeColor','r')
v = dfsearch(G,97)

Accepted Answer

William Rose
William Rose on 6 Mar 2023
Try
dTot=0;
for i=2:length(v)
dTot=dTot+sqrt((x(v(i))-x(v(i-1)))^2+(y(v(i))-y(v(i-1)))^2);
end
That seems too obvious, so maybe I'm msissing something.
Good luck.

More Answers (0)

Categories

Find more on Graph and Network Algorithms in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!