アンバランス ツリーを (バランスのとれた) スパニング ツリーに変換する方法は? ツリーがあるとします(異なるノードで異なる(必ずしも異なる)数の子を持つ)。k-aryスパニングツリーになるようにツリーを操作したい。
ツリーでのさまざまな反復が許可されます。制限は、すべてのノードを 1 か所に集めて、それらからスパニング ツリーを作成することはできないということです (これは簡単な方法です)。むしろ、指定されたツリーからスパニング ツリーを作成する必要があります。つまり、子は親 (および必要に応じて祖父母) と情報 (子ノードの数や子ノードの ID など) を交換でき、親は子の間でノードを移動することを決定します (順番に木のバランスをとります)。
並列コンピューティング環境でこれを行おうとしていることは理解できたかもしれません。ここで、ノードが知っているのは、その親、その子のID、およびその子をルートとする各サブツリー内のノードの数だけです。
(ツリーのバランスをとろうとすると、親と子が変わります)。この問題にアプローチする方法についてのヒントはありますか?
なぜこの問題が重要なのか、検討する価値があるのかというコメントに返信してください。
理論的には、スパニング ツリーを構築するために (自明なアプローチで使用される) O(N) 未満のスペースを使用するアルゴリズムを開発することは困難です。
大規模な代替ソリューション アプローチについて考えるのは興味深いことです。
数値に関する限り、N=100,000 (これは今日のスーパーコンピューターでは一般的ですが、N は次の BG/Q では 1000,000 になります)。含まれる単純なアプローチの手順は、a) all-reduce、b) スパニング ツリーを構築するための O(N)、および c) 最後に 1 対多のブロードキャストです。
別の分散型アプローチではあまり改善されないかもしれませんが、好奇心から試してみる価値があるかもしれません。