1 research outputs found

    Multi-way Space Partitioning Trees

    No full text
    Abstract. In this paper, we introduce a new data structure, the multiway space partitioning (MSP) tree similar in nature to the standard binary space partitioning (BSP) tree. Unlike the super-linear space requirement for BSP trees, we show that for any set of disjoint line segments in the plane there exists a linear-size MSP tree completely partitioning the set. Since our structure is a deviation from the standard BSP tree construction, we also describe an application of our algorithm. We prove that the well-known Painter's algorithm can be adapted quite easily to use our structure to run in O(n) time. More importantly, the constant factor behind our tree size is extremely small, having size less than 4n. 1 Introduction Problems in geometry often involve processing sets of objects in the plane or in a higher dimensional space. Generally, these objects are processed by recursively partitioning the space into subspaces. A common approach to partitioning the set involves constructing a binary space partitioning (BSP) tree on the objects. The operation is quite straightforward. We take the initial input and determine in some manner a hyperplane that divides the region. We then partition the space into two subspaces, corresponding to the two half-spaces defined by the hyperplane. The set of objects is also partitioned by the hyperplane, sometimes fragmenting individual objects. The process is then repeated for each subspace and the set of (fragmented) objects until each subspace (cell) contains only one fragment of an object. This requires the assumption that the objects are disjoint; otherwise, we cannot guarantee that every cell subspace contains only one fragment of an object. The final tree represents a decomposition of the space into cells. Each node of the tree stores the hyperplane splitting that subspace and each leaf represents a cell in the decomposition containing at most one fragmented object. For more detailed information see, for example, [9]
    corecore