In den meisten (allen?) Implementierungen der Fast Multipole Method (FMM) werden Octrees verwendet, um die relevante Domäne zu zerlegen. Theoretisch liefern Octrees eine einfache Volumengrenze, die zum Nachweis der O (n) -Laufzeit eines FMM nützlich ist. Gibt es über diese theoretischen Überlegungen hinaus Vorteile bei der Verwendung eines Octree gegenüber anderen Baum- oder Versuchsdatenstrukturen?
Das Ermitteln der Interaktionsliste ist mit einem Octree möglicherweise einfacher, da eine Zelle ihre unmittelbaren Nachbarn kennt. Die Interaktionsliste ist jedoch nicht erforderlich, wenn ein dynamischerer Tree Traversal wie Dual Tree Traversal verwendet wird .
Eine Alternative wäre ein kd-Baum. Ein möglicher theoretischer Nachteil ist, dass die Konstruktion teure Mittelwertsuchoperationen erfordert. Es gibt jedoch Versionen von kd-trees, für die während der Erstellung kein Medianwert ermittelt werden muss - allerdings mit einer weniger effizienten Raumaufteilung. In Bezug auf die Implementierung ist ein kd-Baum sehr einfach.
Eine noch radikalere Alternative könnte ein R-Baum sein .
Meine Frage ist also: Was ist mit Octrees, die sie zur besten Wahl für ein FMM machen?