Max-Cut算法不起作用,不清楚原因
好的,从某种意义上讲,这似乎是一个作业问题。作为本科算法课的一项家庭作业,我讲了以下经典著作: 给定一个无向图,给出一种算法,该算法可以找到一个切口使得,其中是穿过切口的边数。时间复杂度必须为。G=(V,E)G=(V,E)G=(V,E)(S,S¯)(S,S¯)(S,\bar{S})δ(S,S¯)≥|E|/2δ(S,S¯)≥|E|/2\delta(S,\bar{S})\geq |E|/2δ(S,S¯)δ(S,S¯)\delta(S,\bar{S})O(V+E)O(V+E)O(V+E) 由于某种原因,我得到了很多以下解决方案。现在,它确实花费了太多时间,所以这不是分级的问题,但是我感到很好奇。它“似乎”不正确,但是我所有的反例尝试都失败了。这里是: 设置S←∅S←∅S\leftarrow \emptyset 设为图中的最大度顶点vvv 将加到vvvSSS 删除与相邻的所有边vvv 如果返回2δ(S,S¯)<|E|/2δ(S,S¯)<|E|/2\delta(S,\bar{S}) < |E|/2 请注意,步骤5 中的是指原始图形。还要注意,如果我们跳过了步骤4,这显然是错误的(例如,一个三角形的两个独立边的并集)。EEE 现在,任何简单的证明都有以下问题-可能是,当我们添加新的顶点,实际上删除了在添加新边(其中指删除边的图形同时,从切割中切入边。问题是,如果这不利于我们的原因,则意味着“用于” 该顶点程度更高,因此“应该”被更早地选择。vvv|S||S||S|d(v)d(v)d(v)d(v)d(v)d(v)vvv 这是众所周知的算法吗?是否有一些简单的反例?