問題:ツリーT =(V、E)が与えられます。新しく作成されたグラフから1つのエッジが削除されても、任意の頂点から他の頂点へのパスが存在するように、最小数のエッジを追加します。
問題は、グラフの最小カットのサイズを現在の最小カットの1から2に増やすことで軽減できると思います。しかし、そうするための効率的なアルゴリズムは何でしょうか。
問題:ツリーT =(V、E)が与えられます。新しく作成されたグラフから1つのエッジが削除されても、任意の頂点から他の頂点へのパスが存在するように、最小数のエッジを追加します。
問題は、グラフの最小カットのサイズを現在の最小カットの1から2に増やすことで軽減できると思います。しかし、そうするための効率的なアルゴリズムは何でしょうか。
これがアルゴリズムであり、無向グラフのこの問題を解決します。いくつかの簡略化の後、ツリーに適用できます(ステップ1は必要ありません)。
ステップ4は、最適化の鍵となるステップ6の後に新しい不要なリーフを取得しないことを保証します。
Evgenyのソリューションは非常に優れていますが、Treesで機能し、その正確性を簡単に確認できる、より単純なソリューションを次に示します。
L
木の(元の)葉になりましょうT
。n
削除によって取得された各サブツリーが最大で元の葉を持つように、ツリー内の任意のノードとしn
ます|L|/2
。そのようなノードを見つけることは常に可能であることに注意してくださいn
。
1、2 、..、T
kを、。を削除して取得したサブツリーとします。すべての元の葉(in )は、iの1つに存在します。任意のペアの2つの元の葉が別個のサブツリーに属するという制約の下で、元の葉から最大の互いに素なペアを構築します。(これは、部分がサブツリーに存在する元の葉である完全なk-partiteグラフで最大マッチングを構築することと概念的に同じです)。T
T
n
L
T
偶数の場合|L|
、すべての元の葉がいくつかのペアに存在し、これらのペアのそれぞれに対応するエッジを追加すると、結果のグラフが2接続されます。|L|/2
したがって、この場合はエッジを追加する必要があります。
奇数の場合|L|
、1つの元のリーフはペアにならないため、このリーフを別のサブツリーに存在する任意の元のリーフに接続できます。この場合、(|L|+1)/2
エッジを追加する必要があります。