The Skip Quadtree: a Simple Dynamic Data Structure for Multidimensional Data
Total Page:16
File Type:pdf, Size:1020Kb
Load more
Recommended publications
-
Finding Neighbors in a Forest: a B-Tree for Smoothed Particle Hydrodynamics Simulations
Finding Neighbors in a Forest: A b-tree for Smoothed Particle Hydrodynamics Simulations Aurélien Cavelan University of Basel, Switzerland [email protected] Rubén M. Cabezón University of Basel, Switzerland [email protected] Jonas H. M. Korndorfer University of Basel, Switzerland [email protected] Florina M. Ciorba University of Basel, Switzerland fl[email protected] May 19, 2020 Abstract Finding the exact close neighbors of each fluid element in mesh-free computational hydrodynamical methods, such as the Smoothed Particle Hydrodynamics (SPH), often becomes a main bottleneck for scaling their performance beyond a few million fluid elements per computing node. Tree structures are particularly suitable for SPH simulation codes, which rely on finding the exact close neighbors of each fluid element (or SPH particle). In this work we present a novel tree structure, named b-tree, which features an adaptive branching factor to reduce the depth of the neighbor search. Depending on the particle spatial distribution, finding neighbors using b-tree has an asymptotic best case complexity of O(n), as opposed to O(n log n) for other classical tree structures such as octrees and quadtrees. We also present the proposed tree structure as well as the algorithms to build it and to find the exact close neighbors of all particles. arXiv:1910.02639v2 [cs.DC] 18 May 2020 We assess the scalability of the proposed tree-based algorithms through an extensive set of performance experiments in a shared-memory system. Results show that b-tree is up to 12× faster for building the tree and up to 1:6× faster for finding the exact neighbors of all particles when compared to its octree form. -
L11: Quadtrees CSE373, Winter 2020
L11: Quadtrees CSE373, Winter 2020 Quadtrees CSE 373 Winter 2020 Instructor: Hannah C. Tang Teaching Assistants: Aaron Johnston Ethan Knutson Nathan Lipiarski Amanda Park Farrell Fileas Sam Long Anish Velagapudi Howard Xiao Yifan Bai Brian Chan Jade Watkins Yuma Tou Elena Spasova Lea Quan L11: Quadtrees CSE373, Winter 2020 Announcements ❖ Homework 4: Heap is released and due Wednesday ▪ Hint: you will need an additional data structure to improve the runtime for changePriority(). It does not affect the correctness of your PQ at all. Please use a built-in Java collection instead of implementing your own. ▪ Hint: If you implemented a unittest that tested the exact thing the autograder described, you could run the autograder’s test in the debugger (and also not have to use your tokens). ❖ Please look at posted QuickCheck; we had a few corrections! 2 L11: Quadtrees CSE373, Winter 2020 Lecture Outline ❖ Heaps, cont.: Floyd’s buildHeap ❖ Review: Set/Map data structures and logarithmic runtimes ❖ Multi-dimensional Data ❖ Uniform and Recursive Partitioning ❖ Quadtrees 3 L11: Quadtrees CSE373, Winter 2020 Other Priority Queue Operations ❖ The two “primary” PQ operations are: ▪ removeMax() ▪ add() ❖ However, because PQs are used in so many algorithms there are three common-but-nonstandard operations: ▪ merge(): merge two PQs into a single PQ ▪ buildHeap(): reorder the elements of an array so that its contents can be interpreted as a valid binary heap ▪ changePriority(): change the priority of an item already in the heap 4 L11: Quadtrees CSE373, -
Search Trees
Lecture III Page 1 “Trees are the earth’s endless effort to speak to the listening heaven.” – Rabindranath Tagore, Fireflies, 1928 Alice was walking beside the White Knight in Looking Glass Land. ”You are sad.” the Knight said in an anxious tone: ”let me sing you a song to comfort you.” ”Is it very long?” Alice asked, for she had heard a good deal of poetry that day. ”It’s long.” said the Knight, ”but it’s very, very beautiful. Everybody that hears me sing it - either it brings tears to their eyes, or else -” ”Or else what?” said Alice, for the Knight had made a sudden pause. ”Or else it doesn’t, you know. The name of the song is called ’Haddocks’ Eyes.’” ”Oh, that’s the name of the song, is it?” Alice said, trying to feel interested. ”No, you don’t understand,” the Knight said, looking a little vexed. ”That’s what the name is called. The name really is ’The Aged, Aged Man.’” ”Then I ought to have said ’That’s what the song is called’?” Alice corrected herself. ”No you oughtn’t: that’s another thing. The song is called ’Ways and Means’ but that’s only what it’s called, you know!” ”Well, what is the song then?” said Alice, who was by this time completely bewildered. ”I was coming to that,” the Knight said. ”The song really is ’A-sitting On a Gate’: and the tune’s my own invention.” So saying, he stopped his horse and let the reins fall on its neck: then slowly beating time with one hand, and with a faint smile lighting up his gentle, foolish face, he began.. -
Efficient Evaluation of Radial Queries Using the Target Tree
Efficient Evaluation of Radial Queries using the Target Tree Michael D. Morse Jignesh M. Patel William I. Grosky Department of Electrical Engineering and Computer Science Dept. of Computer Science University of Michigan, University of Michigan-Dearborn {mmorse, jignesh}@eecs.umich.edu [email protected] Abstract from a number of chosen points on the surface of the brain and end in the tumor. In this paper, we propose a novel indexing structure, We use this problem to motivate the efficient called the target tree, which is designed to efficiently evaluation of a new type of spatial query, which we call a answer a new type of spatial query, called a radial query. radial query, which will allow for the efficient evaluation A radial query seeks to find all objects in the spatial data of surgical trajectories in brain surgeries. The radial set that intersect with line segments emanating from a query is represented by a line in multi-dimensional space. single, designated target point. Many existing and The results of the query are all objects in the data set that emerging biomedical applications use radial queries, intersect the line. An example of such a query is shown in including surgical planning in neurosurgery. Traditional Figure 1. The data set contains four spatial objects, A, B, spatial indexing structures such as the R*-tree and C, and D. The radial query is the line emanating from the quadtree perform poorly on such radial queries. A target origin (the target point), and the result of this query is the tree uses a regular hierarchical decomposition of space set that contains the objects A and B. -
Skip-Webs: Efficient Distributed Data Structures for Multi-Dimensional Data Sets
Skip-Webs: Efficient Distributed Data Structures for Multi-Dimensional Data Sets Lars Arge David Eppstein Michael T. Goodrich Dept. of Computer Science Dept. of Computer Science Dept. of Computer Science University of Aarhus University of California University of California IT-Parken, Aabogade 34 Computer Science Bldg., 444 Computer Science Bldg., 444 DK-8200 Aarhus N, Denmark Irvine, CA 92697-3425, USA Irvine, CA 92697-3425, USA large(at)daimi.au.dk eppstein(at)ics.uci.edu goodrich(at)acm.org ABSTRACT name), a prefix match for a key string, a nearest-neighbor We present a framework for designing efficient distributed match for a numerical attribute, a range query over various data structures for multi-dimensional data. Our structures, numerical attributes, or a point-location query in a geomet- which we call skip-webs, extend and improve previous ran- ric map of attributes. That is, we would like the peer-to-peer domized distributed data structures, including skipnets and network to support a rich set of possible data types that al- skip graphs. Our framework applies to a general class of data low for multiple kinds of queries, including set membership, querying scenarios, which include linear (one-dimensional) 1-dim. nearest neighbor queries, range queries, string prefix data, such as sorted sets, as well as multi-dimensional data, queries, and point-location queries. such as d-dimensional octrees and digital tries of character The motivation for such queries include DNA databases, strings defined over a fixed alphabet. We show how to per- location-based services, and approximate searches for file form a query over such a set of n items spread among n names or data titles. -
Octree Generating Networks: Efficient Convolutional Architectures for High-Resolution 3D Outputs
Octree Generating Networks: Efficient Convolutional Architectures for High-resolution 3D Outputs Maxim Tatarchenko1 Alexey Dosovitskiy1,2 Thomas Brox1 [email protected] [email protected] [email protected] 1University of Freiburg 2Intel Labs Abstract Octree Octree Octree dense level 1 level 2 level 3 We present a deep convolutional decoder architecture that can generate volumetric 3D outputs in a compute- and memory-efficient manner by using an octree representation. The network learns to predict both the structure of the oc- tree, and the occupancy values of individual cells. This makes it a particularly valuable technique for generating 323 643 1283 3D shapes. In contrast to standard decoders acting on reg- ular voxel grids, the architecture does not have cubic com- Figure 1. The proposed OGN represents its volumetric output as an octree. Initially estimated rough low-resolution structure is gradu- plexity. This allows representing much higher resolution ally refined to a desired high resolution. At each level only a sparse outputs with a limited memory budget. We demonstrate this set of spatial locations is predicted. This representation is signifi- in several application domains, including 3D convolutional cantly more efficient than a dense voxel grid and allows generating autoencoders, generation of objects and whole scenes from volumes as large as 5123 voxels on a modern GPU in a single for- high-level representations, and shape from a single image. ward pass. large cell of an octree, resulting in savings in computation 1. Introduction and memory compared to a fine regular grid. At the same 1 time, fine details are not lost and can still be represented by Up-convolutional decoder architectures have become small cells of the octree. -
Evaluation of Spatial Trees for Simulation of Biological Tissue
Evaluation of spatial trees for simulation of biological tissue Ilya Dmitrenok∗, Viktor Drobnyy∗, Leonard Johard and Manuel Mazzara Innopolis University Innopolis, Russia ∗ These authors contributed equally to this work. Abstract—Spatial organization is a core challenge for all large computation time. The amount of cells practically simulated on agent-based models with local interactions. In biological tissue a single computer generally stretches between a few thousands models, spatial search and reinsertion are frequently reported to a million, depending on detail level, hardware and simulated as the most expensive steps of the simulation. One of the main methods utilized in order to maintain both favourable algorithmic time range. complexity and accuracy is spatial hierarchies. In this paper, we In center-based models, movement and neighborhood de- seek to clarify to which extent the choice of spatial tree affects tection remains one of the main performance bottlenecks [2]. performance, and also to identify which spatial tree families are Performances in these bottlenecks are deeply intertwined with optimal for such scenarios. We make use of a prototype of the the spatial structure chosen for the simulation. new BioDynaMo tissue simulator for evaluating performances as well as for the implementation of the characteristics of several B. BioDynaMo different trees. The BioDynaMo project [3] is developing a new general I. INTRODUCTION platform for computer simulations of biological tissue dynam- The high pace of neuroscientific research has led to a ics, with a brain development as a primary target. The platform difficult problem in synthesizing the experimental results into should be executable on hybrid cloud computing systems, effective new hypotheses. -
The Peano Software—Parallel, Automaton-Based, Dynamically Adaptive Grid Traversals
The Peano software|parallel, automaton-based, dynamically adaptive grid traversals Tobias Weinzierl ∗ December 4, 2018 Abstract We discuss the design decisions, design alternatives and rationale behind the third generation of Peano, a framework for dynamically adaptive Cartesian meshes derived from spacetrees. Peano ties the mesh traversal to the mesh storage and supports only one element-wise traversal order resulting from space-filling curves. The user is not free to choose a traversal order herself. The traversal can exploit regular grid subregions and shared memory as well as distributed memory systems with almost no modifications to a serial application code. We formalize the software design by means of two interacting automata|one automaton for the multiscale grid traversal and one for the application- specific algorithmic steps. This yields a callback-based programming paradigm. We further sketch the supported application types and the two data storage schemes real- ized, before we detail high-performance computing aspects and lessons learned. Special emphasis is put on observations regarding the used programming idioms and algorith- mic concepts. This transforms our report from a \one way to implement things" code description into a generic discussion and summary of some alternatives, rationale and design decisions to be made for any tree-based adaptive mesh refinement software. 1 Introduction Dynamically adaptive grids are mortar and catalyst of mesh-based scientific computing and thus important to a large range of scientific and engineering applications. They enable sci- entists and engineers to solve problems with high accuracy as they invest grid entities and computational effort where they pay off most. -
Principles of Computer Game Design and Implementation
Principles of Computer Game Design and Implementation Lecture 14 We already knew • Collision detection – high-level view – Uniform grid 2 Outline for today • Collision detection – high level view – Other data structures 3 Non-Uniform Grids • Locating objects becomes harder • Cannot use coordinates to identify cells Idea: choose the cell size • Use trees and navigate depending on what is put them to locate the cell. there • Ideal for static objects 4 Quad- and Octrees Quadtree: 2D space partitioning • Divide the 2D plane into 4 (equal size) quadrants – Recursively subdivide the quadrants – Until a termination condition is met 5 Quad- and Octrees Octree: 3D space partitioning • Divide the 3D volume into 8 (equal size) parts – Recursively subdivide the parts – Until a termination condition is met 6 Termination Conditions • Max level reached • Cell size is small enough • Number of objects in any sell is small 7 k-d Trees k-dimensional trees • 2-dimentional k-d tree – Divide the 2D volume into 2 2 parts vertically • Divide each half into 2 parts 3 horizontally – Divide each half into 2 parts 1 vertically » Divide each half into 2 parts 1 horizontally • Divide each half …. 2 3 8 k-d Trees vs (Quad-) Octrees • For collision detection k-d trees can be used where (quad-) octrees are used • k-d Trees give more flexibility • k-d Trees support other functions – Location of points – Closest neighbour • k-d Trees require more computational resources 9 Grid vs Trees • Grid is faster • Trees are more accurate • Combinations can be used Cell to tree Grid to tree 10 Binary Space Partitioning • BSP tree: recursively partition tree w.r.t. -
Computation of Potentially Visible Set for Occluded Three-Dimensional Environments
Computation of Potentially Visible Set for Occluded Three-Dimensional Environments Derek Carr Advisor: Prof. William Ames Boston College Computer Science Department May 2004 Page 1 Abstract This thesis deals with the problem of visibility culling in interactive three- dimensional environments. Included in this thesis is a discussion surrounding the issues involved in both constructing and rendering three-dimensional environments. A renderer must sort the objects in a three-dimensional scene in order to draw the scene correctly. The Binary Space Partitioning (BSP) algorithm can sort objects in three- dimensional space using a tree based data structure. This thesis introduces the BSP algorithm in its original context before discussing its other uses in three-dimensional rendering algorithms. Constructive Solid Geometry (CSG) is an efficient interactive modeling technique that enables an artist to create complex three-dimensional environments by performing Boolean set operations on convex volumes. After providing a general overview of CSG, this thesis describes an efficient algorithm for computing CSG exp ression trees via the use of a BSP tree. When rendering a three-dimensional environment, only a subset of objects in the environment is visible to the user. We refer to this subset of objects as the Potentially Visible Set (PVS). This thesis presents an algorithm that divides an environment into a network of convex cellular volumes connected by invisible portal regions. A renderer can then utilize this network of cells and portals to compute a PVS via a depth first traversal of the scene graph in real-time. Finally, this thesis discusses how a simulation engine might exploit this data structure to provide dynamic collision detection against the scene graph. -
Introduction to Computer Graphics Farhana Bandukwala, Phd Lecture 17: Hidden Surface Removal – Object Space Algorithms Outline
Introduction to Computer Graphics Farhana Bandukwala, PhD Lecture 17: Hidden surface removal – Object Space Algorithms Outline • BSP Trees • Octrees BSP Trees · Binary space partitioning trees · Steps: 1. Group scene objects into clusters (clusters of polygons) 2. Find plane, if possible that wholly separates clusters 3. Clusters on same side of plane as viewpoint can obscure clusters on other side 4. Each cluster can be recursively subdivided P1 P1 back A front D P2 P2 3 1 front back front back P2 B D C A B C 3,1,2 3,2,1 1,2,3 2,1,3 2 BSP Trees,contd · Suppose the tree was built with polygons: 1. Pick 1 polygon (arbitrary) as root 2. Its plane is used to partition space into front/back 3. All intersecting polygons are split into two 4. Recursively pick polygons from sub-spaces to partition space further 5. Algorithm terminates when each node has 1 polygon only P1 P1 back P6 front P3 P2 back front back P5 P2 P4 P3 P4 P6 P5 BSP Trees,contd · Traverse tree in order: 1. Start from root node 2. If view point in front: a) Draw polygons in back branch b) Then root polygon c) Then polygons in front branch 3. If view point in back: a) Draw polygons in front branch b) Then root polygon c) Then polygons in back branch 4. Recursively perform front/back test and traverse child nodes P1 P1 back P6 front P3 P2 back front back P5 P2 P4 P3 P4 P6 P5 Octrees · Consider splitting volume into 8 octants · Build tree containing polygons in each octant · If an octant has more than minimum number of polygons, split again 4 5 4 5 4 5 1 0 5 0 0 1 5 5 0 1 1 1 7 0 1 0 2 3 5 7 7 3 3 2 3 2 3 Octrees, contd · Best suited for orthographic projection · Display polygons in octant farthest from viewer first · Then those nodes that share a border with this octant · Recursively display neighboring octant · Last display closest octant Octree, example y 2 4 Viewpoint 8 11 6 12 114 12 14 9 6 10 13 1 5 3 5 x z Octants labeled in the order drawn given the viewpoint shown here. -
CS 240 – Data Structures and Data Management Module 8
CS 240 – Data Structures and Data Management Module 8: Range-Searching in Dictionaries for Points Mark Petrick Based on lecture notes by many previous cs240 instructors David R. Cheriton School of Computer Science, University of Waterloo Fall 2020 References: Goodrich & Tamassia 21.1, 21.3 version 2020-10-27 11:48 Petrick (SCS, UW) CS240 – Module 8 Fall 2020 1 / 38 Outline 1 Range-Searching in Dictionaries for Points Range Searches Multi-Dimensional Data Quadtrees kd-Trees Range Trees Conclusion Petrick (SCS, UW) CS240 – Module 8 Fall 2020 Outline 1 Range-Searching in Dictionaries for Points Range Searches Multi-Dimensional Data Quadtrees kd-Trees Range Trees Conclusion Petrick (SCS, UW) CS240 – Module 8 Fall 2020 Range searches So far: search(k) looks for one specific item. New operation RangeSearch: look for all items that fall within a given range. 0 I Input: A range, i.e., an interval I = (x, x ) It may be open or closed at the ends. I Want: Report all KVPs in the dictionary whose key k satisfies k ∈ I Example: 5 10 11 17 19 33 45 51 55 59 RangeSerach( (18,45] ) should return {19, 33, 45} Let s be the output-size, i.e., the number of items in the range. We need Ω(s) time simply to report the items. Note that sometimes s = 0 and sometimes s = n; we therefore keep it as a separate parameter when analyzing the run-time. Petrick (SCS, UW) CS240 – Module 8 Fall 2020 2 / 38 Range searches in existing dictionary realizations Unsorted list/array/hash table: Range search requires Ω(n) time: We have to check for each item explicitly whether it is in the range.