Quante distanze più brevi cambiano quando si aggiunge un bordo a un grafico?


22

Sia un grafico completo, ponderato e non orientato. Costruiamo un secondo grafico aggiungendo i bordi uno per uno da a . Aggiungiamo i bordi a in totale.G = ( V , E ) E E Θ ( | V | ) G G=(V,E)G=(V,E)EEΘ(|V|)G

Ogni volta che aggiungiamo un bordo a , consideriamo le distanze più brevi tra tutte le coppie in e . Contiamo quante di queste distanze più brevi sono cambiate come conseguenza dell'aggiunta . Lascia che sia il numero di distanze più brevi che cambiano quando aggiungiamo l' bordo e lascia che sia il numero di bordi che aggiungiamo in totale.E ( V , E ) ( V , E { ( u , v ) } ) ( u , v ) C i i n(u,v)E(V,E)(V,E{(u,v)})(u,v)Ciin

Quanto è grande ?C=iCin

Come , . Questo limite può essere migliorato? Nota che definisco come media su tutti i bordi che sono stati aggiunti, quindi un singolo giro in cui cambiano molte distanze non è poi così interessante, anche se dimostra che .C = O ( n 2 ) C C = Ω ( n )Ci=O(|V|2)=O(n2)C=O(n2)CC=Ω(n)

Ho un algoritmo per calcolare avidamente una chiave a T geometrica che funziona in tempo , quindi se è , il mio algoritmo è più veloce dell'algoritmo originale avido, e se è veramente piccolo, potenzialmente più veloce dell'algoritmo più noto (anche se ne dubito).C o ( n 2 ) CO(Cnlogn)Co(n2)C

Alcune proprietà specifiche del problema che potrebbero aiutare con un buon limite: il bordo che viene aggiunto ha sempre un peso maggiore rispetto a qualsiasi bordo già presente nel grafico (non necessariamente strettamente più grande). Inoltre, il suo peso è più breve del percorso più breve tra e .u v(u,v)uv

Si può presumere che i vertici corrispondano ai punti in un piano 2d e che le distanze tra i vertici siano le distanze euclide tra questi punti. Cioè, ogni vertice corrisponde a un punto nel piano e per un bordo suo peso è uguale a( x , y ) ( u , v ) = ( ( x 1 , y 1 ) , ( x 2 , y 2 ) ) v(x,y)(u,v)=((x1,y1),(x2,y2))(x2x1)2+(y2y1)2.


2
Prendi due cricche collegate da un percorso con due bordi. L'aggiunta di un bordo direttamente tra le cricche accorcia dei percorsi più brevi. Ω(n2)
Louis,

1
@ Louis: sì, ci sono esempi in cui un singolo spigolo fa cambiare molte distanze, ma esistono dei grafici in cui ciò accade per ogni spigolo che aggiungi, o almeno per molti di essi? Questo è esattamente il motivo per cui ho definito come media su tutti i fronti :)C
Alex ten Brink

1
La maggior parte dei bordi di questo grafico che è possibile aggiungere sono del tipo che ho descritto ...
Louis

@Louis True. I cliques contengono , tuttavia, che è più di quanto io abbia mai aggiunto al mio grafico. O(n2)
Alex ten Brink,

Avevo avuto lo stesso problema in precedenza, ma il mio grafico era una specie di grafici sparsi con e dovrei dimostrare che le modifiche medie sono O (1) ma non sono riuscito a farlo :-). Ma per il tuo caso penso che se trovi una relazione tra questo e la soluzione di APSP puoi ottenere alcuni risultati. |E|=O(|V|)

Risposte:


19

Considera la seguente catena lineare con nodi, spigoli e pesi scelti con cattiveria:n+1n

esempio
[ fonte ]

Chiaramente, i bordi avrebbero potuto essere aggiunti in ordine di peso e ne sono presenti . L'aggiunta del bordo tratteggiato (che è legale) crea percorsi più brevi per tutte le coppie con . Come e supponendo che , sia la prima che l'ultima riga contengono molti nodi ciascuno e l'aggiunta causa molti cambiamenti di percorso più brevi.nO(|V|)(ui,bj)i,j=1,,kkn4nΘ(|V|)Θ(|V|)Θ(|V|2)

Ora possiamo spostarci "verso l'esterno", cioè aggiungere il bordo successivo con peso tra e e così via; se continuiamo a in totale modifiche del percorso più breve.u k - 1 b k - 1 ( u 1 , b 1 ) Θ ( | V | 3 )n+2uk1bk1(u1,b1)Θ(|V|3)

Se ciò non ti convince, nota che puoi effettivamente iniziare questo "processo" con e verso l'esterno; in questo modo aggiungi bordi che causano in totale molti percorsi più brevi modifiche --- questo è semplicemente impossibile disegnare per adattarsi su uno schermo.n n i = 1 i 2Θ ( n 3 ) = Θ ( | V | 3 )(c1,c2)ni=1ni2Θ(n3)=Θ(|V|3)


1
Funziona davvero, e inoltre, il tuo esempio può essere leggermente modificato per diventare euclideo. Grazie :)
Alex ten Brink,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.