Algorithme Max-Cut qui ne devrait pas fonctionner, pourquoi


21

OK, cela peut sembler une question de devoirs et, dans un sens, ça l'est. En tant que devoir à la maison dans une classe d'algorithmes de premier cycle, j'ai donné le classique suivant:

Étant donné un graphe non orienté G=(V,E) , donner un algorithme qui trouve une coupe telle que , où est le nombre d'arêtes traversant la coupe. La complexité temporelle doit être .δ ( S , ˉ S ) | E | / 2 δ ( S , ˉ S ) O ( V + E )(S,S¯)δ(S,S¯)|E|/2δ(S,S¯)O(V+E)

Pour une raison quelconque, j'ai obtenu beaucoup de la solution suivante. Maintenant, cela utilise trop de temps, donc ce n'est pas une question de classement, mais je suis devenu curieux. Cela ne semble pas correct, mais toutes mes tentatives de contre-exemples ont échoué. C'est ici:

  1. DéfinirS
  2. Soit un sommet de degré maximum dans le graphiquev
  3. Ajouter àSvS
  4. Supprimer toutes les arêtes adjacentes àv
  5. Si retourne à 2δ(S,S¯)<|E|/2

Notez que à l'étape 5 fait référence au graphique d'origine. Notez également que si nous avions sauté l'étape 4, ce serait évidemment faux (par exemple, l'union d'un triangle avec deux bords isolés).E

Maintenant, toute preuve simple a le problème suivant - il se pourrait que lorsque nous ajoutons un nouveau sommet nous supprimions réellementbords de la coupe tout en ajoutant nouveaux bords (où fait référence au graphique avec les bords supprimés). Le fait est que si cela nuit à notre cause, cela signifie que ce sommet "avait" un degré toujours plus élevé, donc "aurait dû" être sélectionné plus tôt.| S | d ( v ) d ( v ) vv|S|d(v)d(v)v

Est-ce un algorithme bien connu? Y a-t-il un contre-exemple simple pour cela?


2
Elle ressemble à l'approximation 2 pour la couverture des sommets. Le bon algorithme gourmand, je pense, choisirait le sommet avec plus de voisins dans la partie, c'est que dans l'autre partie et le déplacerait jusqu'à ce qu'il n'y en ait plus et il n'est pas difficile de montrer qu'à ce point la réponse est au moins . Mais l'exactitude de cet algorithme dépend du fait que: nous examinons la différence entre le nombre de voisins pour le sommet des deux côtés de la coupe et pas seulement le degré max. En outre l'algorithme correct déplace les sommets dans les deux sens, non seulement de ˉ S à S . |E|/2S¯S
Kaveh

3
@Kaveh Je pense que OP connaît l'algorithme que vous décrivez (il l'a assigné comme devoir). Sa question est de savoir si l'algorithme qu'il décrit parvient à une approximation.
Sasho Nikolov

2
@ MohammadAl-Turkistany voir le commentaire de Nikolov.
vb le

1
Notez également que l'approximation 16/17 est NP-difficile, pas 1/2. GW donne une approximation de ~ 0,878 en utilisant SDP dans son article fondateur.
Yonatan

Réponses:


13

Ma revendication précédente de n'a pas tenu comptela coupe de taillen2/4déjà présent dans le graphique. La construction suivante semble résulter (emperiquement - j'ai créé une question sur math.stackexchange.com pour une preuve rigoureuse) enO(12c+6n2/4fraction.O(1logc)

L'algorithme fonctionne mal sur les unions de plusieurs graphiques complets déconnectés et de tailles différentes. Nous désignons le graphe complet sur sommets par K n . Considérez le comportement de l'algorithme sur K n : il ajoute à plusieurs reprises un sommet arbitraire qui n'est pas encore dans S à S - tous ces sommets sont identiques et donc l'ordre n'a pas d'importance. Définition du nombre de sommets non encore ajoutés à S par l'algorithme | ˉ S | = k , la taille de la coupe à ce moment est k ( n - k ) .nKnKnSSS|S¯|=kk(nk)

Considérez ce qui se passe si nous exécutons l'algorithme sur plusieurs graphiques déconnectés avec x i constantes entre 0 et 1. Si k i est le nombre d'éléments qui ne sont pas encore dans S dans le i ème graphique complet, alors l'algorithme ajoutera à plusieurs reprises un sommet à S du graphe complet avec le plus haut k i , rompant arbitrairement les liens. Cela induira des ajouts de sommets "ronds" à S : l'algorithme ajoute un sommet de tous les graphiques complets avec le plus haut k = k i , puis de tous les graphiques complets avec kKxinxikiSjeSkjeSk=ki (avec k i mis à jour après le tour précédent), etc. Une fois qu'un graphe complet a un sommet ajouté à S dans un tour, il le fera pour chaque tour à partir de ce moment.ki=k1kiS

Soit le nombre de graphes complets. Soit 0 < x i1 avec 0 i c - 1 le modificateur de taille pour le i -ième graphe complet. Nous ordonnons ces modificateurs de taille de grand à petit et définissons x 0 = 1 . Nous avons maintenant que s'il y a c graphes avec exactement k éléments non encore ajoutés à S , alors la taille de la coupe à ce moment est c - 1 i = 0 k (c0<xi10ic1ix0=1ckS . Le nombre total d'arêtes est | E | = c - 1 i = 0 x i n ( x i n - 1 )i=0c1k(xink)=kni=0c1(xi)ck2 .|E|=i=0c1xin(xin1)2n22i=0c1xi2

Notons que est une fonction quadratique en k et a donc un maximum. Nous aurons donc plusieurs coupes localement maximales. Par exemple, si c = 1, notre coupe maximale est à k = nkni=0c1xick2kc=1 de taillen2k=n2 . Nous allons choisirx1pour quex1=1/2-ε,qui signifiele second graphe complet ne changera pas la taille de cette coupe localement maximale àk=nn24x1x1=1/2ε . On obtient alors une nouvelle coupe localement maximale àk=3/8n-ε'et donc nous choisissonsx2=3/8n-ε"(avecε,ε',ε"petites constantes). Nous allons ignorer leεs pour le moment et supposons que nous pouvons choisirx1=1/2- nous devons nous assurerx1n=nk=n2k=3/8nεx2=3/8nεε,ε,εεx1=1/2, mais cela n'affectera pas les résultats finaux sinest suffisamment grand.x1n=n21n

Nous souhaitons trouver les maxima locaux de nos coupes. On différencie en k , donnant n c - 1 i = 0 ( x i ) - 2 c k . Égal à 0 donne k = nkni=0c1(xi)ck2kni=0c1(xi)2ck0, ce qui donne une coupe de taillen2k=n2ci=0c1xi.n24c(i=0c1xi)2

Soit le k déterminé au paragraphe précédent si c = i . Nous veillerons à ce que la formule soit vraie en exigeant que x i n < k i - tous les graphiques complets i ' avec i ' > i soient alors plus petits que le k i de cette coupe localement maximale et n'augmentent donc pas la taille de la coupe. Cela signifie que nous avons c coupes à ces k i qui sont plus grandes que toutes les autres coupes trouvées par l'algorithme.kikc=ixin<kiii>ikicki

En remplissant , nous obtenons la récurrence x i = 1xin<ki(plus quelques petitsε) avecx0=1. La résolution de ceci donnexi= ( 2 ixi=12ci=0c1xiεx0=1 :voir ma question sur math.stackexchange.compour la dérivation par @Daniel Fisher. Brancher ceci dansn2xi=(2ii)4iet l'utilisation de notre connaissance de la récurrence nous donne des coupes de taillen2n24c(i=0c1xi)2. En utilisant lespropriétés de ce coefficient binomial central, nous avonslimcc( ( 2 c n24c(2c(2cc)4c)2=n2c((2cc)4c)2 (voir aussima question sur math.stackexchange.com).limcc((2cc)4c)2=1π

Le nombre d'arêtes est d'environ . Par propriétés connues,nous avons1n22i=0c1xi2=n22i=0c1((2ii)4i)2 . Le dépôt en donne au moinsn214i(2ii)4i qui est asymptotiquementn2n22i=0c1(14i)2=n28i=0c11icommecva à l'infini.n28logcc

On a donc est asymptotiquement égal à8δ(S,S¯)|E| lorsquecva à l'infini, montrant que l'algorithme peut renvoyer des coupes qui sont des fractions arbitrairement basses de| E| .8πlogcc|E|


3
Avec une légère modification, votre construction donne . Fixez ε et choisissez un N suffisamment grand . Soit V = { 1 , , N } . Reliez tous les deux sommets de { 1 , , ε N } avec une arête; puis connectez en plus tous les deux sommets dans V wp ε 2 . Le nombre total d'arêtes est d' environ ( ε n ) 2 / 2 + ε 21/4εNV={1,,N}{1,,εN}Vε2(εn)2/2+ε2(n2/2)=ε2n2. The algorithm finds a cut that cuts approximately ε2n2/4 edges (up to lower order terms in ε).
Yury

I think I'll rewrite my answer to just include the final results (with more detail) soon, as it's a bit of a mess right now.
Alex ten Brink

1
Regarding the sum n22i=0c1((2ii)4i)2, since each term is Θ(1/(i+1)), the sum is a harmonic series which sums to Θ(logc), and in total we get Θ(n2logc).
Yuval Filmus

12

After a while of thinking and asking around, here's a counter-example, courtesy of Ami Paz:

nGKnn+2n/2+1

kk(nk). This is maximal for k=n/2, which gives a cut of size n24, while the number of edges in the graph is n22+1.

The algorithm as prescribed will continue adding vertices from the clique, reducing the number of edges crossing the cut, until what remains from the clique is just a single edge. At this point it cannot obtain anything better than n2+2.


1
Nice counterexample.
Kaveh

this still gets very close to |E|/2 though. it would be nice to see an example where the algorithm does worse
Sasho Nikolov
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.