R-Trees
- Each node of the tree has at most entries.
- Each entry represents a rectangle.
- The entries for the leafs have a net ID and that net’s bounding box as its rectangle
- Each leaf is given a
omp_lock_t
Parallel Algorithm:
- For each net :
- Find the leaf that net belongs to
- Set the leafs lock
- Solve the net
- Unset the leafs lock
\newpage
R-Tree Construction Methods
I investigated four different R-tree construction methods.
Quadratic
- Original method by Guttman (1984)
- Online method - entries inserted one at a time
Algorithm:
- Find the leaf in which the smallest change in rectangle size for new entry and insert the entry.
- If there is no room left in the leaf, split the leaf:
- Find two entries which would have the largest MBR if in the same node. Use them to create two leafs and .
- While there are remaining entries
- Pick the entry that causes the largest difference in MBR size between and (maximize ). Insert into / based on whatever the smallest change in size is.
Hilbert/Z-Order
- Bulk method by Kamel and Faloutsos (1993)
- Makes use of a space-filling curve
- Leaves may overlap
Algorithm:
- Construct new nodes
- Sort the rectangles via a space-filling curve
- Pack the rectangles into the nodes in order
- Node 1 gets first rectangles, node 2 gets second rectangles, etc.
- Repeat the process until you obtain a root node
Sort-Tile-Recursive (STR)
- Bulk method by Leuteneggaer et al. (1997)
- Goal is to have the leaf nodes tile the space
- Tiling is only guaranteed for point data
Algorithm:
- Construct new nodes.
- Sort the rectangles by centers -coordinate and partition into slices consisting of at most consecutive rectangles
- Sort each slice by rectangles -coordinate
- Pack the rectangles into the nodes in order
- Repeat the process until you obtain a root node
\newpage