問題
時間の経過とともに変化する無向グラフ(マルチエッジ)があり、ノードとエッジが挿入および削除される場合があります。グラフを変更するたびに、このグラフの接続コンポーネントを更新する必要があります。
プロパティ
追加のプロパティは、2つのコンポーネントが再接続されないことです。明らかに、グラフは任意の量のサイクルを持つことができます(そうでなければ、解は簡単になります)。エッジノードが含まれていない場合、そのノードは採用されません。ただし、、それが可能に変える。
アプローチ
私はこれまでに2つの可能なアプローチを持っていますが、あなたが見るようにそれらは恐ろしいです:
遅い状態なし
毎回、変更された要素からグラフを検索(dfs / bfs)できます。これはスペースを節約しますが、変更ごとにO(n + m)があるため低速です。
ステートフルfast(-er)(?)アプローチ
各ノードのすべての可能なパスをすべての可能なノードに保存できますが、正しく表示された場合、O(n ^ 4)のメモリが必要になります。しかし、ランタイムの改善がどのようになっているのかわかりません(1つでもあれば、同じコンポーネント内のすべてのノードの情報を最新に保つ必要があるため)。
質問
その問題について、またはおそらく構築できるいくつかのアルゴリズムについて、どのように指針を持っていますか?
注意
ランタイム/メモリの大幅な改善があれば、2つのコンポーネントが1つであると時々言う非最適なソリューションで生きることができますが、もちろん最適なソリューションを好むでしょう。