Ile najkrótszych odległości zmienia się podczas dodawania krawędzi do wykresu?


22

Niech będzie jakimś kompletnym, ważonym, niekierowanym wykresem. Budujemy drugi wykres , dodając krawędzie jeden po drugim od do . Łącznie dodajemy krawędzie do .G ′ = ( V , E ′ ) E E ′ Θ ( | V | ) G ′G=(V,E)G′=(V,E′)EE′Θ(|V|)G′

Za każdym razem, gdy dodajemy jedną krawędź do , bierzemy pod uwagę najkrótsze odległości między wszystkimi parami w i . Liczymy, ile z tych najkrótszych odległości zmieniło się w wyniku dodania . Niech będzie liczbą najkrótszych odległości, które zmieniają się, gdy dodamy krawędź, a niech będzie liczbą wszystkich dodanych przez nas krawędzi.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

Jak duże jest ?C=∑iCin

Ponieważ , również. Czy można to poprawić? Zauważ, że definiuję jako średnią dla wszystkich dodanych krawędzi, więc pojedyncza runda, w której zmienia się wiele odległości, nie jest tak interesująca, chociaż dowodzi, że .C = O ( n 2 ) C C = Ω ( n )Ci=O(|V|2)=O(n2)C=O(n2)CC=Ω(n)

Mam algorytm obliczający chciwość geometrycznego klucza T, który działa w czasie , więc jeśli to , mój algorytm jest szybszy niż oryginalny algorytm zachłanny, a jeśli jest naprawdę mały, potencjalnie szybszy niż najbardziej znany algorytm (choć w to wątpię).C o ( n 2 ) CO(Cnlog⁡n)Co(n2)C

Niektóre właściwości specyficzne dla problemu, które mogą pomóc w dobrym związaniu: dodana krawędź zawsze ma większą wagę niż jakakolwiek krawędź już na wykresie (niekoniecznie ściśle większa). Ponadto jego waga jest krótsza niż najkrótsza ścieżka między i .u v(u,v)uv

Można założyć, że wierzchołki odpowiadają punktom na płaszczyźnie 2d, a odległości między wierzchołkami są odległościami euklidesowymi między tymi punktami. Oznacza to, że każdy wierzchołek odpowiada pewnemu punktowi na płaszczyźnie, a dla krawędzi jego waga jest równa( 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
Weź dwie kliki połączone ścieżką o dwóch krawędziach. Dodanie jednej krawędzi bezpośrednio między klikami skraca najkrótszych ścieżek. Ω(n2)
— Louis,

1
@Louis: tak, są przykłady, w których pojedyncza krawędź powoduje zmianę wielu odległości, ale czy istnieją wykresy, w których dzieje się to dla każdej dodanej krawędzi, a przynajmniej dla wielu z nich? Właśnie dlatego zdefiniowałem jako średnią dla wszystkich krawędzi :)C
— Alex ten Brink

1
Większość krawędzi na tym wykresie, które można dodać, jest typu opisanego
— Louis,

@Louis True. Kliki zawierają jednak krawędzie , co jest więcej niż kiedykolwiek dodam do mojego wykresu. O(n2)
— Alex ten Brink

Miałem wcześniej ten sam problem, ale Mój wykres był rodzajem rzadkich wykresów z i powinienem udowodnić, że średnie zmiany to O (1), ale nie mogłem tego zrobić :-). Ale w twoim przypadku myślę, że jeśli znajdziesz związek między tym a rozwiązaniem APSP, możesz uzyskać pewne wyniki. |E|=O(|V|)

Odpowiedzi:


19

Rozważ następujący łańcuch liniowy z węzłami, krawędziami i błędnie wybranymi wagami:nn+1n

przykład
[ źródło ]

Oczywiste jest, że krawędzie mogły zostać dodane w kolejności ich ciężarów i jest ich . Dodanie przerywanej krawędzi (co jest zgodne z prawem) tworzy krótsze ścieżki dla wszystkich par z . Ponieważ i przy założeniu, że , zarówno pierwszy, jak i ostatni wiersz zawierają wiele węzłów każdy, a dodanie powoduje wiele najkrótszych zmian ścieżki.( u i , b j ) i , j = 1 , … , k k ≈ nn∈O(|V|)(ui,bj)i,j=1,…,k n∈Θ(|V|)Θ(|V|)Θ(|V|2)k≈n4n∈Θ(|V|)Θ(|V|)Θ(|V|2)

Możemy teraz przejść „na zewnątrz”, tj. Dodać następną krawędź o wadze między a i tak dalej; jeśli kontynuujemy to do , powodujemy w sumie najkrótsze zmiany ścieżki.u k - 1 b k - 1 ( u 1 , b 1 ) Θ ( | V | 3 )n+2uk−1bk−1(u1,b1)Θ(|V|3)

Jeśli to Cię nie przekonuje, zauważ, że możesz faktycznie rozpocząć ten „proces” za pomocą i stamtąd pracować na zewnątrz; w ten sposób dodajesz krawędzi, które powodują w sumie wiele najkrótszych ścieżek zmiany --- po prostu nie można narysować, aby zmieściło się na jednym ekranie.≈ n ≈ ∑ n i = 1 i 2 ∈ Θ ( n 3 ) = Θ ( | V | 3 )(c1,c2)≈n≈∑i=1ni2∈Θ(n3)=Θ(|V|3)


1
To rzeczywiście działa, a ponadto twój przykład można nieco zmienić, aby stać się euklidesowym. Dzięki :)
— Alex ten Brink
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.