Spaces:
Runtime error
Runtime error
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 |