Czy istnieje (skuteczny) algorytm do wybierania podzbioru punktów z zestawu punktów ( ) tak, aby „obejmowały” większość obszaru (we wszystkich możliwych podzbiorach rozmiaru )?
Zakładam, że punkty są w płaszczyźnie 2D.
Naiwny algorytm jest prosty, ale zbyt skomplikowany pod względem złożoności czasowej:
for each subset of N points
sum distance between each pair of points in the subset
remember subset with the maximum sum
Szukam bardziej wydajnej lub nawet przybliżonej metody.
Przykład, oto płaszczyzna z kilkoma losowymi punktami:
Dla oczekuję wybrania takich punktów:
Zwróć uwagę, że wybrane punkty (czerwone) są rozrzucone po całej płaszczyźnie.
Znalazłem artykuł „ EFEKTYWNIE WYBIERAJĄCY KLUCZOWE PUNKTY DYSTRYBUCJI PRZESTRZENNEJ ”, który jest związany z tym problemem. Zakłada się jednak, że punkty są ważone.
Odpowiedzi:
Oto przybliżone rozwiązanie. Ponieważ N jest tak duży, a M jest tak mały, co powiesz na:
Intuicja za tym stoi, ponieważ skoro N >> M i chcesz punktów jak najdalej od siebie, prawdopodobnie będą one blisko krawędzi danych, więc równie dobrze możesz zacząć od kadłuba, a następnie iteracyjnie stamtąd wejdź do środka.
Ponadto, zaczynając od kadłuba, zmniejszasz początkowe wyszukiwanie z N do N 1/2 .
AKTUALIZACJA
Jeśli kroki 3 i 4 powyżej trwają zbyt długo (ponieważ testujesz iteracyjnie wnętrze zestawu danych), przyszło mi do głowy jeszcze dwa pomysły, aby przyspieszyć twój problem.
źródło
Jeśli chcemy uniknąć przeważającego wyboru punktów na peryferiach, przydatny może okazać się inny cel. Takim kryterium jest maksymalizacja minimalnej odległości między punktami. Powiązane problemy zostały poruszone w StackOverflow , Computer Science SE , Math.SE i MathOverflow .
źródło
OK, więc chcesz wybrać M punktów z danego zestawu N punktów na płaszczyźnie euklidesowej, aby suma odległości par wybranych punktów była maksymalna, prawda?
Standardowy algorytm wyszukiwania lokalnego jest dość szybki i zapewnia całkiem dobre przybliżenie. Czas działania jest liniowy w N i kwadratowy w M. Jego współczynnik aproksymacji wynosi 1 - 4 / M. Oznacza to, że stosunek ten rośnie wraz ze wzrostem M. Na przykład dla M = 10 dostaje 60% wartości optymalnej, a dla M = 50 dostaje 92% wartości optymalnej.
Algorytm działa również dla przestrzeni euklidesowych o wymiarze ogólnym. W tym przypadku problem jest trudny NP. Ale w samolocie nie wiadomo, czy jest NP-twardy.
Źródłem jest ten artykuł . Mam nadzieję że to pomoże! Pozdrawiam, Alfonso
źródło
Jednym z rozwiązań jest:
Spraw, aby M sztucznie rozłożył nawet punkty wewnątrz tego ograniczającego prostokąta, niektóre M są trudniejsze niż inne. W twoim przypadku cztery w rogach prostokąta i jeden w środku
źródło