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 ′
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
Jak duże jest ?
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 )
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 ) 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
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 ) ) √
źródło
Odpowiedzi:
Rozważ następujący łańcuch liniowy z węzłami, krawędziami i błędnie wybranymi wagami:nn+1 n
[ ź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≈n4 n∈Θ(|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+2 uk−1 bk−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 ≈∑ni=1i2∈Θ(n3)=Θ(|V|3)
źródło