Problem zasięgu (nadajnik i odbiornik)

14

Próbuję rozwiązać następujący problem z zasięgiem.

Istnieje nadajników o zasięgu 1 km i odbiorników. Zdecyduj w że wszystkie odbiorniki są objęte dowolnym nadajnikiem. Wszystkie reveivers TRANSMITER i jest reprezentowany przez oraz współrzędnych.nnO(nlogn)xy

Najbardziej zaawansowane rozwiązanie, z którym mogę skorzystać, zajmuje . Dla każdego odbiornika posortuj wszystkie nadajniki według odległości do bieżącego odbiornika, a następnie weź nadajnik z najkrótszą odległością, a ta najkrótsza odległość powinna wynosić 0,5 km.O(n2logn)

Ale podejście naiwne wygląda znacznie lepiej w złożoności czasowej . Wystarczy obliczyć całą odległość między wszystkimi parami nadajnika i odbiornika.O(n2)

Nie jestem pewien, czy mogę zastosować algorytmy wyszukiwania zasięgu w tym problemie. Na przykład drzewa kd pozwalają nam znaleźć takie zakresy, jednak nigdy nie widziałem takiego przykładu i nie jestem pewien, czy istnieje rodzaj wyszukiwania zakresów dla kół.

Podana złożonośćO(nlogn) zakłada, że ​​rozwiązanie powinno być jakoś podobne do sortowania.

com
źródło
1
Jeżeli przewidywany czas jest w porządku, myślę, że można zbudować k d -tree nad nadajnikami (poświęcenie czasu O ( n log n ) ), a następnie wykonać najbliższego sąsiada zapytanie dla każdego odbiornika (przyjmując średnią czasu O ( log n ) dla każdego odbiornika). To powinno wystarczyć, ale zakładam, że potrzebujesz najgorszej złożoności przypadku. Wydaje się, że kilka sztuczek dla SpeedUp podczas wykonywania wielu najbliższego sąsiada kwerend w sposób k d -tree. O(nlogn)kreO(nlogn)O(logn)kre
utdiscant
1
Wydaje mi się, że algorytm linii wymiatania może załatwić sprawę: posortuj nadajniki i odbiorniki według współrzędnej X i przejrzyj listę. Niezbędne jest sprytne zarządzanie zestawem wykonalnych nadajników.
Raphael
@ Rafael, czy mógłbyś rozwinąć nieco więcej, wygląda na to, że w najgorszym przypadku będzie to bardzo powolne.
com
1
Myślę, że warto przyjrzeć się algorytmowi Fortune do obliczania diagramu Voronoi w płaszczyźnie. Działa w , a biorąc pod uwagę schemat Voronoi, twój problem staje się łatwy. O(nlogn)
Syzygy

Odpowiedzi:

4

Aby rozwiązać ten problem, możesz użyć diagramu Voronoi wraz ze strukturą danych Kirkpatrick .

O(nlogn)

1 km

O(logn)O(nlogn)O(nlogn)

Każda komórka na diagramie Voronoi jest wypukłym wielokątem, być może nieograniczonym.

...

Liczba wierzchołków [na diagramie Voronoi n miejsc] V ≤ 2n-5

- www.cs.arizona.edu

Θ(v)vnnO(n)O(n)O(n)O(n)O(n)

Realz Slaw
źródło