(非バイナリ)ツリーにn個のノードのセットがあります。任意の2つのノード間の距離の最大値を見つけたい。(2つのノード間の距離を、それらのノードとそれらの最も低い共通の祖先の間の距離の合計として定義します)。
各ノード間の距離を計算して最大値を取得するだけで、O(n ^ 2)でこの問題を簡単に解決できますが、これは私のアプリケーションシナリオには遅すぎる*ので、もっと良いものを期待しています。
(追加情報:私のアプリケーションシナリオでは、これらのノードは実際にはファイルであり、ツリーはディレクトリ構造です。したがって、ツリーは非常に浅い(深さ<〜10)が、300,000以上のノードがある可能性があります。ファイルのセットは次のようになります。サイズは3〜200の間です。事実上、各セットのファイルがどこまで広がっているかを把握しようとしています。)*
編集:おそらく私はより多くの答えを促すために同等の質問をすることができます:私のセットのノードとそれらを接続するために必要なノードのみを含む元のツリーのサブセットを考えてみてください。次に、質問は次のようになります。無向非周期グラフで最長の単純なパスを見つけるにはどうすればよいですか。
*編集2: didiercが指摘したように、私は実際にはファイルではなくフォルダーのセットを検討する必要があります。これは私のセットを小さくし、徹底的なアプローチは十分に速いかもしれません。それでも、より高速な解決策を見つけることは有益であり、私はそれがあるかどうかを知りたいと思っています。