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(Cnlog⁡n)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))(x2−x1)2+(y2−y1)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.n∈O(|V|)(ui,bj)i,j=1,…,kk≈n4n∈Θ(|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+2uk−1bk−1(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)≈n≈∑i=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.