19 lines
623 B
Matlab
19 lines
623 B
Matlab
% find a bottom to up ordering given the tree structure {pred} returned by matlab's graphminspantree
|
|
function [ordering] = bottom_up_ordering(pred)
|
|
|
|
%% compute the levels of the nodes
|
|
parents = [0];
|
|
node_levels = zeros(length(pred), 1);
|
|
current_level = 1;
|
|
while ~isempty(parents)
|
|
parents = find(ismember(pred, parents));
|
|
node_levels(parents) = current_level;
|
|
current_level = current_level + 1;
|
|
end
|
|
[~, node_order] = sort(node_levels, 'descend'); % the order of the nodes in leaves-to-root order
|
|
|
|
ordering = Ordering();
|
|
for i = 1:length(node_order)
|
|
ordering.push_back(sprintf('x%d', node_order(i)));
|
|
end
|
|
end |