Skip to content
Snippets Groups Projects
Commit 526953b5 authored by Vasileios Karakasis's avatar Vasileios Karakasis
Browse files

Low-level algorithms for manipulating cell trees.

At this low level a cell tree is just a sequence of parent indices,
where each parent index is the parent of the current index in the
sequence. There four basic algorithms:

1. child_count(parent_index):
   Computes the number of children for each node in parent_index
   	Time: O(N), Space: O(1)
2. branches(parent_index):
   Returns a set of the branching nodes in parent_index, last branch
   index equals the parent_index's size.
	 Time: O(N), Space: O(N)
3. expand_branches(branch_index):
   Takes a branch_index (result from branches()) and expands it at the
   size of the original tree with all the nodes inside a branch having
   the same number.
         Time: O(parent_index), Space: O(1)
4. make_parent_index(parent_index, branch_index):
   Return a compacted tree (single node per branch) from parent_index
   and its corresponding branch_index.
	Time: O(N), Space: O(N)

There is another utility function as well:

find_branch(branch_index, nid):
    Returns the id of the branch where nid belongs to.
	Time: O(N), Space: O(1)
parent cc2be4cd
No related branches found
No related tags found
No related merge requests found
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment