機能しないはずのMax-Cutアルゴリズム、理由は不明
OK、これは宿題の質問のように思えるかもしれませんが、ある意味ではそうです。学部のアルゴリズムクラスの宿題として、私は次の古典を与えました。 無向グラフ所与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←∅S\leftarrow \emptyset してみましょうvvvグラフの最大の次数頂点こと vvvをSに追加SSS vに隣接するすべてのエッジを削除しますvvv もしδ(S,S¯)<|E|/2δ(S,S¯)<|E|/2\delta(S,\bar{S}) < |E|/2戻る 手順5のEEEは元のグラフを指していることに注意してください。また、ステップ4をスキップした場合、これは明らかに間違っていることに注意してください(たとえば、2つの孤立したエッジを持つ三角形の結合)。 さて、どんな単純な証明にも次の問題があります-新しい頂点vvvを追加するとき、実際に削除するのかもしれませんd (v )の新しいエッジ|S||S||S|を追加しながら、カットからのエッジ(d (v )はエッジが削除されたグラフを指します)。問題は、これが私たちの原因に有害である場合、この頂点vの「使用」度はこれまでよりも高いため、以前に「選択されるべきだった」ということです。d(v)d(v)d(v)d(v)d(v)d(v)vvv これはよく知られたアルゴリズムですか?簡単な反例はありますか?