DFSトラバーサルを使用するツリーの最小頂点カバーを見つけるための貪欲なアルゴリズムがあります。
- ツリーの葉ごとに、その親を選択します(つまり、その親は最小の頂点カバー内にあります)。
- 各内部ノードに対して:
その子のいずれかが選択されていない場合、このノードを選択します。
この貪欲な戦略が最適な答えを与えることをどのように証明しますか?上記のアルゴリズムが生成するものよりもサイズが小さい頂点カバーがないこと?
2番目のステップのロジックが正しいとは思わない。6つのノードが完全に下がっている縮退したツリーを検討する場合(深さに応じて1〜6のラベルを付けます)。次に、あなたのアルゴリズムの最初のステップは、その後するノード前記第2のステップを選ぶであろう可能性の最初のノード(ルート)と、第2のノード(子)OR第3のノードを選択します。ただし、正しいソリューションのためにノード2とノード5のみを選択するため、これは正しくありません。
—
miguel.martin
@ miguel.martin頂点カバーに2と5の番号の付いた頂点のみが含まれている場合、ノード3と4の間のエッジはカバーされません。
—
ラチェットジャイン