Wie viele kürzeste Abstände ändern sich, wenn einer Grafik eine Kante hinzugefügt wird?

22

Sei ein vollständiger, gewichteter, ungerichteter Graph. Wir konstruieren einen zweiten Graphen G ' = ( V , E ' ), indem wir die Kanten einzeln von E nach E ' addieren . Wir addieren Θ ( | V | ) Kanten zu G ' insgesamt.G=(V,E)G=(V,E)EEΘ(|V|)G

Jedes Mal , wenn wir einen Rand hinzuzufügen bis E ' , betrachten wir die kürzesten Abstände zwischen allen Paaren in ( V , E ' ) und ( V , E '{ ( u , v ) } ) . Wir zählen, wie viele dieser kürzesten Abstände sich infolge der Addition von ( u , v ) geändert haben . Sei C i die Anzahl der kürzesten Abstände, die sich ändern, wenn wir das i addieren(u,v)E(V,E)(V,E{(u,v)})(u,v)Ciith edge, und sei die Anzahl der Kanten, die wir insgesamt hinzufügen.n

Wie groß ist ?C=iCin

Da , ist auch C = O ( n 2 ) . Kann diese Grenze verbessert werden? Beachten Sie, dass ich C als Durchschnitt über alle Kanten definiere, die hinzugefügt wurden. Daher ist eine einzelne Runde, in der sich viele Abstände ändern, nicht so interessant, obwohl sich ergibt, dass C = Ω ( n ) .Ci=O(|V|2)=O(n2)C=O(n2)CC=Ω(n)

Ich habe einen Algorithmus zur Berechnung eines geometrischen t-Schlüssel Gierig , dass die Arbeiten in Zeit, so dass , wenn C ist o ( n 2 ) , mein Algorithmus schneller als das Original Greedy - Algorithmus ist, und wenn C ist wirklich klein , möglicherweise schneller als der bekannteste Algorithmus (obwohl ich das bezweifle).O(Cnlogn)Co(n2)C

Einige problemspezifische Eigenschaften, die bei einer guten Bindung hilfreich sein können: Die hinzugefügte Kante hat immer eine größere Gewichtung als jede bereits im Diagramm enthaltene Kante (nicht unbedingt eine streng größere). Außerdem ist sein Gewicht kürzer als der kürzeste Weg zwischen u und v .(u,v)uv

Sie können annehmen, dass die Eckpunkte Punkten in einer 2D-Ebene entsprechen und die Abstände zwischen den Eckpunkten die euklidischen Abstände zwischen diesen Punkten sind. Das heißt, jeder Scheitelpunkt entspricht einem Punkt ( x , y ) in der Ebene, und für eine Kante ( u , v ) = ( ( x 1 , y 1 ) , ( x 2 , y 2 ) ) ist sein Gewicht gleich zu v(x,y)(u,v)=((x1,y1),(x2,y2))(x2x1)2+(y2y1)2.

Alex ten Brink
quelle
2
Nehmen Sie zwei Cliquen, die durch einen Pfad mit zwei Kanten verbunden sind. Das Hinzufügen einer Kante direkt zwischen den Cliquen verkürzt der kürzesten Wege. Ω(n2)
Louis
1
@ Louis: Ja, es gibt Beispiele, bei denen sich durch eine einzelne Kante viele Abstände ändern. Gibt es jedoch Diagramme, bei denen dies für jede von Ihnen hinzugefügte Kante oder zumindest für viele von ihnen geschieht? Genau aus diesem Grund habe ich als Durchschnitt über alle Kanten definiert :)C
Alex ten Brink
1
Die meisten Kanten in diesem Diagramm, die hinzugefügt werden können, sind vom Typ, den ich beschrieben habe ...
Louis,
@ Louis True. Cliquen enthalten jedoch -Kanten, was mehr ist, als ich jemals meinem Diagramm hinzufügen werde. O(n2)
Alex ten Brink
Ich hatte vorher das gleiche Problem, aber mein Diagramm war eine Art spärlicher Diagramme mit und ich sollte nachweisen, dass die durchschnittlichen Änderungen O (1) sind, aber das konnte ich nicht :-). Aber für Ihren Fall denke ich, wenn Sie einen Zusammenhang zwischen diesem und der Lösung von APSP finden, können Sie einige Ergebnisse erzielen. |E|=O(|V|)

Antworten:

19

Betrachten Sie die folgende lineare Kette mit Knoten, n Kanten und bösartig gewählten Gewichten:n+1n

Beispiel
[ Quelle ]

nO(|V|)(ui,bj)i,j=1,,kkn4nΘ(|V|)Θ(|V|)Θ(|V|2)

n+2uk1bk1(u1,b1)Θ(|V|3)

(c1,c2)ni=1ni2Θ(n3)=Θ(|V|3)

Raphael
quelle
1
Dies funktioniert in der Tat, und außerdem kann Ihr Beispiel ein wenig geändert werden, um zu Euklidian zu werden. Vielen Dank :)
Alex ten Brink