在快速多极子方法(FMM)的大多数(全部)实现中,八叉树用于分解相关域。从理论上讲,八叉树提供了一个简单的体积边界,这对于证明FMM的O(n)运行时很有用。除了这个理论基础之外,使用Octree替代其他树或trie数据结构是否有好处?
使用八叉树确定交互列表可能会更容易,因为单元会知道其直接邻居。但是,使用像Dual Tree Traversal这样的更具动态性的树遍历,则不需要交互列表。
另一种可能是kd树。理论上的一个可能缺点是,施工需要昂贵的中值发现操作。但是,有些kd树的版本不需要在构建过程中求中值-尽管空间分区效率较低。在实现方面,kd树非常简单。
一个甚至更根本的选择可能是R树。
所以,我的问题是:什么使八进制成为FMM的最佳选择?
4
我认为这使得确定交互列表(哪些观察者在哪些源的遥远领域)特别容易。
—
rchilton1980
使用任何形式的层次空间分解,确定交互列表都应该非常容易。
—
本汤普森
我同意您的观点,八叉树在理论上很容易分析。其他快速求和算法(例如矩阵(FMM的代数概括))使用不同的树,例如几何二等分或基于聚类的拆分。
—
user2457602 2014年
我不是专家,但是也许八叉树具有更多“对称性”这一事实起作用?八叉树中的分区规则地排列并且具有相同的正方形形状,与例如kd树相比,可以帮助进行多极扩展。
—
Jannis Teunissen '16
八进制是域分解在三个维度上的自然结果。
—
gpavanb '16