Spaces:
Runtime error
Runtime error
File size: 578 Bytes
c2ea21f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
function order = find_room_order(M)
n = size(M,1);
G = digraph(M);
name = cell(n,1);
for i = 1:n
name{i} = num2str(i);
end
G.Nodes.Name = name;
order = zeros(n, 1);
i = 1;
while i <= n
D = indegree(G);
c = find(D==0);
if isempty(c)
idx = find(D==1);
c = setdiff(idx, order);
order(i) = str2double(G.Nodes.Name{c(1)});
G = rmnode(G, c(1));
i = i+1;
else
for j = 1:length(c)
order(i+j-1) = str2double(G.Nodes.Name{c(j)});
end
G = rmnode(G, c);
i = i + length(c);
end
end |