支配集(DS):=给定无向图G =(V; E),一组 顶点S V是一个支配集,如果对于V中的每个顶点,都有一个顶点 与v相邻的S。整个顶点集V是一个平凡的支配集 任何图表。
找到树的最小尺寸支配集。
答案 0 :(得分:2)
1-始终从叶子开始
2-将他们的父母添加到DS并剪切孩子
3-将选定父级的父级标记为已占优势
4-完成流程后,检查那些标记的节点是否有子节点 支配并将它们添加到DS
祝你好运答案 1 :(得分:0)
我将尝试以更正式的方式证明这一点。
概述
要证明您的贪婪算法是正确的,您需要证明两件事:
贪婪选择:在树T =(V,E)中,在树上找到叶数最多的顶点 v 。将其添加到您的主导集中。
最佳子结构
T'=(V',E')使得:
换句话说
寻找具有最多叶数的顶点,移除其度数小于或等于2的任何相邻顶点,然后移除v本身,并将其添加到主导集中。重复此操作,直到没有顶点为止。
证明
贪婪选择证明
对于任何叶子 l ,必须是其自身或其父级位于主导集中。在我们的例子中,我们会选择的顶点 v 处于这种情况。
让 A = { v 1 ,v 2 ,...,v k }是T的最小主导集。如果A已经具有 v 作为成员,我们就完成了。如果不是,则必须具有 l ,否则它不是主导集。因此,我们可以简单地形成 A' = { A - {l} + { v }},主导地位。由于| A' | = | A |, A'仍然是最佳的。因此,我们始终可以通过我们的贪婪选择来形成最佳解决方案。
最佳子结构证明
假设 A 是 T =( V,E )的最小主导集,但是 A' = A \ { v }不是上述定义的 T'的最小主导集。
使T'的最小主导集称为B。如上所述,| B | <| A' |。可以证明 B' = B ∪{ v }是 T 的主要集合。然后,由于| A' | = | A | -1 | | B' | = | B | + 1,我们得到| B' | <| A |。这是矛盾的,因为我们假设 A 是最小的独立集。因此必须 A'也是 T'的最小独立集合。
证明 B' = B ∪{ v }是 T 的主要集合: