Mein früherer Anspruch vom haben berücksichtigt nicht den Schnitt der Größen2/4bereits in dem Graphen. Die folgende Konstruktion scheint zu einemO(1) zu führen (ich habe eine Frage unter math.stackexchange.com für einen strengen Beweis erstellt)2c+6n2/4Fraktion.O(1logc)
Der Algorithmus funktioniert bei Vereinigungen mehrerer getrennter vollständiger Graphen unterschiedlicher Größe schlecht. Wir bezeichnen den vollständigen Graphen auf Eckpunkten als K n . Betrachten Sie das Verhalten des Algorithmus auf K n : Er fügt wiederholt einen beliebigen Scheitelpunkt hinzu, der noch nicht in S zu S enthalten ist - alle diese Scheitelpunkte sind identisch, und daher spielt die Reihenfolge keine Rolle. Einstellen der Anzahl der Eckpunkte, die vom Algorithmus noch nicht zu S hinzugefügt wurden | ˉ S | = k ist die Größe des Schnitts in diesem Moment k ( n - k ) .nKnKnSSS|S¯|=kk(n−k)
Überlegen Sie, was passiert, wenn der Algorithmus in mehreren getrennten Diagrammen mit x i -Konstanten zwischen 0 und 1 ausgeführt wird. Wenn k i die Anzahl der Elemente ist, die im i- ten vollständigen Diagramm noch nicht in S enthalten sind , wird der Algorithmus wiederholt addiert ein Scheitelpunkt zu S aus dem vollständigen Graphen mit dem höchsten k i , wobei die Bindungen willkürlich unterbrochen werden. Dies führt zu rundenbasierten Additionen von Eckpunkten zu S : Der Algorithmus addiert einen Eckpunkt aus allen vollständigen Graphen mit dem höchsten k = k i und dann aus allen vollständigen Graphen mit kKxinxikiSiSkiSk=ki (wobei k i nach der vorherigen Runde aktualisiert wurde) und so weiter. Sobald ein kompletter Graph einen Vertex zu S in einer Rundehinzugefügt hat, wird dies von da an für jede Runde getan.ki=k−1kiS
Sei die Anzahl der vollständigen Graphen. Sei 0 < x i ≤ 1 mit 0 ≤ i ≤ c - 1 der Größenmodifikator für den i- ten vollständigen Graphen. Wir ordnen diese Größenmodifikatoren von groß nach klein und setzen x 0 = 1 . Wir haben jetzt , dass , wenn es c ' Graphen mit genau k Elementen noch nicht hinzugefügt S , dann ist die Größe des Schnittes zu diesem Zeitpunkt ist Σ c ' - 1 i = 0 k (c0<xi≤10≤i≤c−1ix0=1c′kS . Die Gesamtzahl der Kanten beträgt | 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
Es ist zu beachten, dass eine quadratische Funktion in k ist und daher ein Maximum hat. Wir werden daher mehrere lokal maximale Schnitte haben. Wenn zum Beispiel c = 1 ist, liegt unser maximaler Schnitt bei k = nkn∑c′−1i=0xi−c′k2kc=1 der Größen2k=n2 . Wir gehen holenx1so dassx1=1/2-ε, der das zweite vollständige Graphen bedeutetwird nicht die Größe von lokal maximal Schnitt an verändernk=nn24x1x1=1/2−ε . Wir erhalten dann einen neuen lokal maximal Schnitt beik=3/8n-ε'und so holen wirx2=3/8n-ε"(mitε,ε',ε"kleinen Konstanten). Wir werden das ignorierenεs für den Moment und einfach davon ausgehenkönnen wir wählenx1=1/2- wir sollten sicherstellenx1n=nk=n2k=3/8n−ε′x2=3/8n−ε′′ε,ε′,ε′′εx1=1/2, dies hat jedoch keine Auswirkung auf das Endergebnis, wennngroß genug ist.x1n=n2−1n
Wir möchten die lokalen Maxima unserer Schnitte finden. Wir differenzieren zu k , was n ∑ c ' - 1 i = 0 ( x i ) - 2 c ' k ergibt . Gleich 0 ergibt k = nkn∑c′−1i=0(xi)−c′k2kn∑c′−1i=0(xi)−2c′k0, was einen Schnitt der Größen2ergibtk=n2c′∑c′−1i=0xi.n24c′(∑c′−1i=0xi)2
Sei das im vorhergehenden Absatz bestimmte k , wenn c ' = i ist . Wir werden sicherstellen, dass die Formel gilt, indem wir verlangen, dass x i n < k i - alle vollständigen Graphen i ' mit i ' > i kleiner sind als k i dieses lokal maximalen Schnitts und daher die Größe des Schnitts nicht erhöhen. Dies bedeutet, dass wir an diesen k i c Schnitte haben , die größer sind als alle anderen Schnitte, die vom Algorithmus gefunden werden.kikc′=ixin<kii′i′>ikicki
Wenn wir , erhalten wir die Wiederholung x i = 1xin<ki(plus einige kleineε) mitx0=1. Wenn man dies löst, erhält manxi= ( 2 ixi=12c′∑c′−1i=0xiεx0=1 :Siehe meine Frage auf math.stackexchange.comfür die Ableitung von @Daniel Fisher. Einstecken inn2xi=(2ii)4iund unter Verwendung unserer Einsicht in die Wiederholung erhalten wir Schnitte der Größen2n24c′(∑c′−1i=0xi)2n24c′(2c′(2c′c′)4c′)2=n2c′((2c′c′)4c′)2. Using properties of this central binomial coefficient, we have limc′→∞c′((2c′c′)4c′)2=1π (also see my question on math.stackexchange.com).
The number of edges is approximately n22∑c−1i=0x2i=n22∑c−1i=0((2ii)4i)2. By known properties we have 14i√≤(2ii)4i. Filing in gives at least n22∑c−1i=0(14i√)2=n28∑c−1i=01i which is asymptotically n28logc as c goes to infinity.
We therefore have δ(S,S¯)|E| is asymptotically equal to 8πlogc as c goes to infinity, showing that the algorithm can return cuts that are arbitrarily low fractions of |E|.