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(Cnlogn)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))(x2x1)2+(y2y1)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 nnO(|V|)(ui,bj)i,j=1,,k nΘ(|V|)Θ(|V|)Θ(|V|2)kn4nΘ(|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+2uk1bk1(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)ni=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.