Abstract
We revisit the classical problem of computing the contour tree of a scalar field $$f:\mathbb {M}\rightarrow \mathbb {R}$$f:MźR, where $$\mathbb {M}$$M is a triangulation of a ball in $$\mathbb {R}^d$$Rd. The contour tree is a fundamental topological structure that tracks the evolution of level sets of f and has numerous applications in data analysis and visualization. All existing algorithms begin with a global sort of at least all critical values of f, which can require (roughly) $$\Omega (n\log n)$$Ω(nlogn) time, where n is the number of vertices of the mesh. Existing lower bounds show that there are pathological instances where this sort is required. We present the first algorithm whose time complexity depends on the contour tree structure, and avoids the global sort for non-pathological inputs. (We assume that the Morse degree of the function f at any point is at most 3.) If C denotes the set of critical points in $$\mathbb {M}$$M, the running time is roughly $$O(N+\sum _{v \in C} \log \ell _v)$$O(N+źvźCloglv), where $$\ell _v$$lv is the depth of v in the contour tree and N is the total complexity of $$\mathbb {M}$$M. This matches all existing upper bounds, but is a significant asymptotic improvement when the contour tree is short and fat. Specifically, our approach ensures that any comparison made is between nodes that are either adjacent in $$\mathbb {M}$$M or in the same descending path in the contour tree, allowing us to argue strong optimality properties of our algorithm. Our algorithm requires several novel ideas: partitioning $$\mathbb {M}$$M in well-behaved portions, a local growing procedure to iteratively build contour trees, and the use of heavy path decompositions for the time complexity analysis.
Highlights
Geometric data is often represented as a function f : Rd → R
An edge of the contour tree connects two critical points if one event immediately “follows" the other as the sweep plane makes its pass. (We provide formal definitions later.) Figure 1 and Figure 2 show examples of simplicial complexes, with heights and their contour trees
The “run time per critical point" is the height/depth of the point in the contour tree. This bound immediately yields a run time of O(t log D + tα(t) + N ), where D is the diameter of the contour tree
Summary
Geometric data is often represented as a function f : Rd → R. An edge of the contour tree connects two critical points if one event immediately “follows" the other as the sweep plane makes its pass. Chiang et al build on this approach to get a faster algorithm that only sorts the critical vertices, yielding a running time of O(t log t + N ) [8]. Consider a simplicial complex f : M → R, described as above, and denote the contour tree by T with vertex set (the critical points) C(T ). The “run time per critical point" is the height/depth of the point in the contour tree. This bound immediately yields a run time of O(t log D + tα(t) + N ), where D is the diameter of the contour tree. Even if T contains a long path of length O(t/ log t), but is otherwise short, we get the improved bound of O(t log log t)
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.