最小顶点覆盖树的贪婪算法的正确性证明


14

有一种贪婪算法,用于查找使用DFS遍历的树的最小顶点覆盖。

  1. 对于树的每个叶子,选择其父级(即,其父级处于最小顶点覆盖范围内)。
  2. 对于每个内部节点:
    如果未选择其任何子节点,则选择此节点。

如何证明这种贪婪策略给出了最佳答案?是否没有比上述算法产生的顶点覆盖更小的尺寸?


我认为第二步的逻辑不正确。如果您考虑一个退化的树,其中有6个节点一直向下下降(将其标记为1至6对应其深度)。然后,算法的第一步将选择节点5。第二步可能将选择第一个节点(根),然后选择第二个节点(子节点)或第三个节点。但是,这是不正确的,因为您只想选择节点2和节点5以获得正确的解决方案。
miguel.martin

@ miguel.martin如果“顶点覆盖”仅包含编号为2和5的顶点,则不会覆盖节点3和4之间的边。
Laschet Jain's

Answers:


11

我们首先注意以下事项:有一个最佳的盖,没有叶子是Ç。这是真的,因为在任何优化覆盖X可以取代所有叶X与他们的父母,你会得到一个顶点覆盖,其不大于XCCXXX

CCC


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.