バーンズハットのN体シミュレーションを実行したい(ウィキペディアの記事)。octreeの単一ノードが占めるメモリの量はわかっていますが、特定の数のパーティクルに対して最悪の場合のメモリ使用シナリオがどうなるかはわかりません。要するに、与えられた数の粒子に対して、八分木にいくつのノードが存在する可能性があるのだろうかと思います。八分木に割り当てるメモリの量を知るには、これを知る必要があります。
編集:
ああ、そして誰かが私にただの説明の代わりにコードを与えたいのなら、私は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;
}