木の頂点の最小カバーのための欲張りアルゴリズムの正当性証明


14

DFSトラバーサルを使用するツリーの最小頂点カバーを見つけるための貪欲なアルゴリズムがあります。

  1. ツリーの葉ごとに、その親を選択します(つまり、その親は最小の頂点カバー内にあります)。
  2. 各内部ノードに対して:
    その子のいずれかが選択されていない場合、このノードを選択します。

この貪欲な戦略が最適な答えを与えることをどのように証明しますか?上記のアルゴリズムが生成するものよりもサイズが小さい頂点カバーがないこと?


2番目のステップのロジックが正しいとは思わない。6つのノードが完全に下がっている縮退したツリーを検討する場合(深さに応じて1〜6のラベルを付けます)。次に、あなたのアルゴリズムの最初のステップは、その後するノード前記第2のステップを選ぶであろう可能性の最初のノード(ルート)と、第2のノード(子)OR第3のノードを選択します。ただし、正しいソリューションのためにノード2とノード5のみを選択するため、これは正しくありません。
miguel.martin

@ miguel.martin頂点カバーに2と5の番号の付いた頂点のみが含まれている場合、ノード3と4の間のエッジはカバーされません。
ラチェットジャイン

回答:


11

最初に次のことを確認します。最適なカバーがあり、はリーフがありません。任意の最適なカバーにおけるので、これは真実であるあなたはすべての葉置き換えることができます両親と、そしてあなたがより大きくない頂点被覆取得。CCバツバツバツ

次に、葉を含まない最適なカバーを使用します。葉が選択されていないため、葉のすべての親はいる必要があります。つまり、は葉とその両親の貪欲なカバーと一致します。次に、すでに覆われているすべてのエッジを取り出します。同じ引数を再び適用できます。残りのツリーでは、リーフを選択する必要はありませんが、その後、親を選択する必要があります。そして、これはまさに欲張りアルゴリズムが行うことです。(頂点は、そのすべての子が前のステップで選択されている場合にリーフになります。)この引数を繰り返して、完全な頂点カバーを決定しました。CCC


4

ヒント:カバー内の各頂点を選択されていない子と一致させることにより、頂点カバーと同じサイズのマッチングを作成します。証明する一致すると頂点カバー。頂点カバーが最小であり、マッチングが最大であると結論付けます。|M||C|MC

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.