Niech będzie nieważonym niekierowanym wykresem z wierzchołkami i krawędziami . Czy jest możliwe przetworzenie i utworzenie struktury danych o rozmiarze aby mógł odpowiadać na zapytania o formie „odległość między a ” w czasie O (n)?
Problem wydaje się zbyt podstawowy, aby go rozwiązać.
Odpowiedzi:
To bardzo interesujące pytanie. Na wysokim poziomie pytasz, czy można wstępnie przetworzyć wykres w taki sposób, aby zapytania o najkrótszą ścieżkę stały się niezależne od gęstości wykresu, bez zajmowania dużo dodatkowej przestrzeni - ciekawe, ale, jak mówisz, nierozwiązane.
Jeśli jesteś zadowolony z przybliżonych odległości, oto sposób na uzyskanie przybliżenia. Niech będzie ważonym niekierowanym wykresem z węzłami i krawędziami . W poniższym artykule pokazano, że w przypadku zapytań o przybliżoną odległość projektowanie struktur danych dla wykresów o krawędziach nie jest trudniejsze niż wykresy, w których każdy węzeł ma stopień ograniczony przez :G n m m m / n2 G n m m m/n
R. Agarwal, PB Godfrey, S. Har-Peled, Przybliżone zapytania odległości i kompaktowe wyznaczanie tras na rzadkich wykresach, INFOCOM 2011
Załóżmy zatem, że jest wykresem ograniczonym do . Próbki węzły losowo jednolite; nazywaj te punkty orientacyjne. Podczas fazy przetwarzania wstępnego zapisz na wykresie odległość od każdego punktu orientacyjnego do każdego innego węzła; wymaga to przestrzeni . Dla każdego węzła zapisz jego najbliższy punkt orientacyjny węzeł . Ponadto przechowuj wykres w strukturze danych, powiedzmy jako listę przylegania.m / n α = O ( m / n ) O ( m ) u ℓ ( u )G m/n α=O(m/n) O(m) u ℓ(u)
W przypadku zapytania o odległość między i , kulki rosną wokół obu węzłów - kulka węzła jest definiowana jako zbiór węzłów, które są bliżej niż do najbliższego punktu orientacyjnego, powiedzmy . Można wykazać, że rozmiar każdej kulki wynosi , zgodnie z oczekiwaniami. Niech , gdzie jest kulą węzła a jest zbiorem sąsiadów węzłów w . Można wykazać, że rozmiar wynosi , w oczekiwaniu.v w w ℓ ( w ) O ( n 2 / m ) Γ ( u ) = B ( u ) ∪ N ( B ( u ) ) B ( u ) u N ( B ( u ) ) B ( u ) Γ ( u ) O ( n )u v w w ℓ(w) O(n2/m) Γ(u)=B(u)∪N(B(u)) B(u) u N(B(u)) B(u) Γ(u) O(n)
Odpowiadając na zapytanie: jeśli , zwróć ; w przeciwnym razie, jeśli , zwróć ; w przeciwnym razie zwróć . Łatwo wykazać, że jest to przybliżenie .min x ∈ Γ ( u ) ∩ Γ ( v ) { d ( u , x ) + d ( v , x ) } d ( u , ℓ ( u ) ) ≤ d ( v , ℓ ( v ) )Γ(u)∩Γ(v)≠∅ minx∈Γ(u)∩Γ(v){d(u,x)+d(v,x)} d(u,ℓ(u))≤d(v,ℓ(v)) d ( v , ℓ ( v ) ) + d ( ℓ ( v ) , u ) 2d(u,ℓ(u))+d(ℓ(u),v) d(v,ℓ(v))+d(ℓ(v),u) 2
Jeśli chodzi o czas zapytania, zwróć uwagę, że rosnące kule wymagają czasu dla wykresu ograniczonego do ; konstruowanie i danych odpowiednich piłkach zajmuje czasu (ponieważ sąsiedzi są zapisani w strukturze danych); i sprawdzenie, czy jest pusta, czy też nie zajmuje czasu.m / n Γ ( u ) Γ ( v ) O ( n ) Γ ( u ) ∩ Γ ( v ) O ( n )O(n) m/n Γ(u) Γ(v) O(n) Γ(u)∩Γ(v) O(n)
Powyższe granice są oczekiwane; Myślę, że łatwo jest odandomizować konstrukcję. Niestety, ta technika nie pozwala uzyskać przybliżenia lepszego niż . To bardzo interesujące pytanie ...2
źródło
To, czego potrzebujesz, nazywa się „wyrocznią na odległość”. Niestety, nie znam się zbytnio na wyroczniach dystansowych, dlatego mogę skierować was tylko do przełomowej pracy z powodu Thorupa i Zwicka:
Mikkel Thorup i Uri Zwick. Wyrocznie w przybliżeniu na odległość. STOC '01, 2001.
Oto fragment streszczenia:
Niech będzie niekierowanym ważonym wykresem z oraz . Niech będzie liczbą całkowitą. Pokazujemy, że można wstępnie przetwarzać w oczekiwanym czasie w , konstruując strukturę danych o rozmiarze , tak aby dowolne kolejne na zapytanie o odległość można odpowiedzieć w przybliżeniu w czasie . Przybliżona zwrócona odległość wynosi co najwyżej , tzn. Iloraz uzyskany przez podzielenie szacunkowej odległości przez rzeczywistą odległość wynosi od 1 do . [...] Wymagane miejsce w naszym algorytmie jest [...] zasadniczo optymalne.| V | = n | E |G=(V,E) |V|=n k G = ( V , E ) O ( k m n 1 / k ) O (|E|=m k G=(V,E) O(kmn1/k) O ( k ) 2 k - 1 2 k - 1O(kn1+1/k) O(k) 2k−1 2k−1
Zgodnie z ich wynikami, to, o co prosisz, jest w zasadzie wykonalne nawet dla wykresów ważonych: wybranie daje odległość wyroczni o rozmiarze uzyskaną w oczekiwanym czasie , który może odpowiedzieć na twoje najkrótsze zapytania o ścieżkę za pomocą -stretch w czasie !O ( n 2 ) O ( m n ) 1 O ( 1 )k=1 O(n2) O(mn) 1 O(1)
Wyrocznie wyrocznie to bardzo dobrze zbadana dziedzina, więc wierzę, że będziesz mógł dalej kopać.
źródło