Mam zestaw punktów, które są zdefiniowane w przestrzeni metrycznej - więc mogę zmierzyć „odległość” między punktami, ale nic więcej. Chcę znaleźć najbardziej centralny punkt w tym zestawie, który definiuję jako punkt o minimalnej sumie odległości do wszystkich innych punktów. Obliczenia metryczne są powolne, więc w miarę możliwości należy go unikać.
Oczywisty sposób znalezienia tego punktu polega na obliczeniu metrycznej odległości , ponieważ po prostu (a) oblicza dla każdego punktu sumę odległości do wszystkich innych punktów, a następnie (b) przyjmuje punkt minimalny.
Czy istnieje sposób, aby to zrobić w porównaniach odległości mniejszych niż ? (Prawdopodobnie w jakiś sposób wykorzystuje nierówność trójkąta, co powinno trzymać się mojej metryki.)
Dobre przybliżenie może wystarczyć, jeśli nie istnieje dokładna metoda.
źródło
Odpowiedzi:
Nie. W najgorszym przypadku nie można zrobić lepiej niż .Θ(n2)
Rozważ rozmieszczenie punktów, w których każda para punktów znajduje się w odległości od siebie. (Jest to możliwa konfiguracja.) W takim razie nie możesz zrobić nic lepszego niż zbadanie każdej krawędzi. W szczególności, jeśli istnieje jakaś krawędź, której nie zbadałeś, przeciwnik może wybrać długość tej krawędzi jako , lub ; wszystkie te wybory są zgodne ze wszystkimi innymi dokonanymi przez ciebie obserwacjami i wymogami metryki (np. z nierównością trójkąta), więc wszystkie trzy są możliwe; ale wymagają różnych wyników. Tak więc, jeśli twój algorytm nie sprawdza tej krawędzi, a następnie coś wypisuje, przeciwnik może zawsze wybrać długość niewybadanego zbocza, co spowoduje nieprawidłowe wyjście twojego algorytmu.1 0.9 1.0 1.1
Jeśli jednak wiesz, że wszystkie punkty żyją w (nawet jeśli nie podano ich współrzędnych), problem można rozwiązać, mierząc odległości , zakładając, że nie zwyrodnienia (brak podzbioru punktów jest współpłaszczyznowy).Rd O((d+1)n) d+1
W szczególności losowo wybierz punktów. Będą to punkty kontrolne. Biorąc pod uwagę odległości par, można obliczyć dla nich współrzędne, które są zgodne z ich odległościami par. Teraz dla każdego innego punktu oblicz odległość od do każdego z punktów kontrolnych. Korzystanie triangulacji i te odległości można obliczyć położenie w stosunku do punktów kontrolnych, a zatem współrzędne . Zrób to dla każdego nie-Anchor Point . Teraz masz współrzędne dla każdego punktu i możesz użyć tych współrzędnych, aby znaleźć punkt centralny, nie prosząc wyroczni o podanie dalszych odległości parami. Nie wiem, czy ten ostatni krok można zrobić szybciej niżd+1 P P P P P O(n2) czasu , ale może być zrobione bez żadnych więcej parami pomiaru odległości.
źródło
Zobacz pracę Piotra Indyka nad szybkimi algorytmami dla przestrzeni metrycznych. ( Sublinear Algorytmy dla problemów przestrzeni metrycznej , w Proceedings of STOC '99 , str. 428–434. ACM, 1999; PS ) Sekcja 3 podaje algorytm w przybliżeniu 1-środkowy algorytm w czasie liniowym.
źródło