为什么贪心算法没有找到最大的独立图集?

Sla*_*mac 7 algorithm graph-theory

给定图G,为什么跟随贪心算法不能保证找到最大的独立 G :

Greedy(G):
S = {}
While G is not empty:
    Let v be a node with minimum degree in G
    S = union(S, {v})
    remove v and its neighbors from G
return S
Run Code Online (Sandbox Code Playgroud)

我想知道有人能告诉我一个简单的图表示例,这个算法失败了吗?

gms*_*777 8

我不确定这是最简单的例子,但这是一个失败的:http://imgur.com/QK3DC

对于第一步,您可以选择B,C,D或F,因为它们都具有2阶段.假设我们删除B及其邻居.这使得F和D的度数为1,E为度数为2.在接下来的两个步骤中,我们删除F和D,最后设置为3,这是最大值.

相反,假设在第一步我们删除了C及其邻居.这给我们留下了F,A和E,每个都有一个度数为2.我们接下来其中一个,图表是空的,我们的解决方案只包含2个节点,正如我们所见,它不是最大的.

  • 实际上,这是一个不可能的条件(除了1节点的退化情况).它很容易证明.假设有n个节点,所有节点都有不同的程度.节点可以拥有的最大程度是n-1.这意味着节点_must_具有度{0,1 ... n-1}.但是,它不可能存在具有0度的节点,以及具有度数n-1的节点(未连接到任何节点的节点和连接到每个节点的节点).因此,在具有至少2个节点的任何图形中,至少2个节点必须具有相等数量的入射边缘. (3认同)