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é , 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 )
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:
- Définir
- Soit un sommet de degré maximum dans le graphique
- Ajouter àS
- Supprimer toutes les arêtes adjacentes à
- Si retourne à 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).
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 ) v
Est-ce un algorithme bien connu? Y a-t-il un contre-exemple simple pour cela?
Réponses:
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 + 6 n2/ 4 fraction.O ( 1Journalc)
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 ) .n Kn Kn S S S | S¯| =k k ( n - k )
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 kKXjen Xje kje S je S kje S k=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=k−1 ki S
Soit le nombre de graphes complets. Soit 0 < x i ≤ 1 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 (c 0<xi≤1 0≤i≤c−1 i x0=1 c′ k S . Le nombre total d'arêtes est | E | = ∑ c - 1 i = 0 x i n ( x i n - 1 )∑c′−1i=0k(xin−k)=kn∑c′−1i=0(xi)−c′k2 .|E|=∑c−1i=0xin(xin−1)2≈n22∑c−1i=0x2i
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 = nkn∑c′−1i=0xi−c′k2 k c=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=nn24 x1 x1=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=n2 k=3/8n−ε′ x2=3/8n−ε′′ ε,ε′,ε′′ ε x1=1/2 , mais cela n'affectera pas les résultats finaux sinest suffisamment grand.x1n=n2−1 n
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 = nkn∑c′−1i=0(xi)−c′k2 k n∑c′−1i=0(xi)−2c′k 0 , ce qui donne une coupe de taillen2k=n2c′∑c′−1i=0xi .n24c′(∑c′−1i=0xi)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.ki k c′=i xin<ki i′ i′>i ki c ki
En remplissant , nous obtenons la récurrence x i = 1xin<ki (plus quelques petitsε) avecx0=1. La résolution de ceci donnexi= ( 2 ixi=12c′∑c′−1i=0xi ε x0=1 :voir ma question sur math.stackexchange.compour la dérivation par @Daniel Fisher. Brancher ceci dansn2xi=(2ii)4i et l'utilisation de notre connaissance de la récurrence nous donne des coupes de taillen2n24c′(∑c′−1i=0xi)2 . En utilisant lespropriétés de ce coefficient binomial central, nous avonslimc′→∞c′( ( 2 c ′n24c′(2c′(2c′c′)4c′)2=n2c′((2c′c′)4c′)2 (voir aussima question sur math.stackexchange.com).limc′→∞c′((2c′c′)4c′)2=1π
Le nombre d'arêtes est d'environ . Par propriétés connues,nous avons1n22∑c−1i=0x2i=n22∑c−1i=0((2ii)4i)2 . Le dépôt en donne au moinsn214i√≤(2ii)4i qui est asymptotiquementn2n22∑c−1i=0(14i√)2=n28∑c−1i=01i commecva à l'infini.n28logc c
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πlogc c |E|
la source
After a while of thinking and asking around, here's a counter-example, courtesy of Ami Paz:
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 thann2+2 .
la source