我想运行 Barnes Hut N 体模拟(维基百科文章)。我知道八叉树的单个节点将占用多少内存,但我无法弄清楚对于给定数量的粒子,最坏的内存使用情况是什么。简而言之,我想知道对于给定数量的粒子,八叉树中可能存在多少个节点。我需要知道这一点才能知道为八叉树分配多少内存。
编辑:
哦,如果有人想给我代码而不是仅仅和解释,我正在用 C 语言编写。
我有这个,这比最坏的情况还要糟糕。但它保证至少分配足够的内存。我希望有人能给我一些内存效率更高的东西。
int KBH_worstcase(int particles)
{ // returns number of nodes required to store a number of particles in a worst case scenario
int worst;
unsigned int n;
worst=1;
n=1;
while(n<particles)
{
n=n<<3;
worst+=n;
}
return worst;
}