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