Testowanie, czy zbiór n punktów na płaszczyźnie tworzy wypukły n wielokąta w czasie o (nlogn)


13

Załóżmy, że otrzymujesz zestaw n punktów na płaszczyźnie i chcesz sprawdzić, czy tworzą one wypukły n wielokąt, tj. Czy wszystkie leżą na wypukłym kadłubie. Zastanawiałem się, czy ktoś wie, jak to zrobić w czasie o (nlogn), tj. Bez obliczania CH.


Możesz obliczyć wypukły kadłub w czasie O (n log n). Czy masz na myśli, czy można to zrobić w krótszym czasie?
— Per Vognsen,

tak, uważam, że dla tego problemu powinien istnieć algorytm liniowy. ale nie wiem jak
— Babis Tsourakakis

4
Napisał o (nlogn) nie O (nlogn), więc jego pytanie jest poprawne.
— Shiva Kintali,

1
Używam małej notacji o, więc pytanie wciąż pozostaje
— aktualne

4
Trochę zmarszczyłem brwi, widząc sortowanie liczb (lub równo wypukłe kadłuby punktów kartezjańskich) określone jako zabieranie Θ (n log n) czasu bez wyraźnego stwierdzenia, jakiego modelu obliczeń używasz. Sortowanie porównawcze zajmuje Θ (n log n), ale model porównawczy nawet nie pozwala na obliczenie kadłubów. Oba są nadal Θ (n log n) czasem na algebraiczne drzewa decyzyjne (jak pokazuje zaakceptowana odpowiedź), ale są szybsze w modelach obliczeniowych, które bardziej przypominają rzeczywiste komputery.
— David Eppstein

Odpowiedzi:


17

Wydaje się to mało prawdopodobne, przynajmniej w modelach drzewa porównawczego / algebraicznego. Najpierw definicja:

PPP

nΩ(nlog⁡n)nX

P={(x,x2)|x∈X}.

Jeśli istnieje liczba powtarzana, to ta liczba powtórzona odpowiada punktowi, który można zapisać jako wypukłą kombinację pozostałych punktów. Mianowicie punkty nie są w pozycji wypukłej.

Mianowicie, decyzja, czy zbiór punktów znajduje się w pozycji wypukłej, jest tak trudna, jak UNIKALNOŚĆ.


12
X[i](X[i],X[i]2+i/n2)

1
@Babis: Redukcja Jeffa działa, gdy duplikaty punktów nie są dozwolone. Punkty generowane przez redukcję są unikalne niezależnie od początkowej tablicy.
— Vinayak Pathak,

W ten sposób otrzymujemy, że liczba narożników wypukłego kadłuba jest równa n wtedy i tylko wtedy, gdy żadne dwa punkty nie mają tej samej współrzędnej x. Wielkie dzięki, początkowo myślałem, że powinno być łatwiejsze niż sortowanie.
— Babis Tsourakakis,

Dzięki Vinayak, nie widziałem redukcji Jeffa, ponieważ została opublikowana w tym samym czasie, gdy pisałem poprzedni komentarz, który zastąpiłem powyższym
— Babis Tsourakakis

2
Na pewno nie zgadzam się ze zwrotem „model standardowy”. Właśnie tym jest Word RAM :) Jest to model, który najbardziej pasuje do prawdziwego komputera i którego używamy do analizy algorytmu w większości TCS. Geometria zażądała wyjątku, aby używać prawdziwej pamięci RAM, abyśmy nie musieli zajmować się problemami z precyzją. Ale to nie jest „model standardowy”.
— Mihai

-1

O(nlogn)

Kiedy poznasz kolejność punktów, kąt od każdego punktu do następnego punktu w sekwencji powinien być monotoniczny. To warunek konieczny i, jak sądzę, wystarczający.

Zdobycie punktu wewnętrznego pozostawia się jako ćwiczenie dla czytelnika.


O(nlogn)


Prawdopodobnie źle odczytałeś jego o (n log n) jako O (n log n) tak samo jak ja. W każdym razie zarysowanym przez ciebie algorytmem jest pakowanie prezentów w formie embrionalnej. W rzeczywistości nie musisz używać punktu wewnętrznego; możesz użyć punktu na granicy, np. punktu o minimalnej współrzędnej x.
— Per Vognsen

O(nlogn)o()

Chodzi o to, że istnieje wiele algorytmów wypukłego kadłuba, które działają w O (n log n). Twój algorytm to po prostu stare opakowanie prezentów. Prosił o coś szybszego, np. Czas liniowy. Zobacz inne odpowiedzi.
— Per Vognsen

1
Jeśli chodzi o edycję, jeśli możesz spojrzeć na zaakceptowaną odpowiedź powyżej swojej, zobaczysz, że problem jest równoważny z wyjątkowością elementu, który ma dolną granicę O (n log n).
— Per Vognsen

2
@BCS: Obawiam się, że masz jakieś nieporozumienie na temat odpowiedzi Sariel Har-Peled. Redukcja polega na unikalności na wypukłym badaniu położenia, a nie w innym kierunku. Oznacza to, że Sariel (i JeffE) stwierdzili, że jeśli otrzymujesz zestaw liczb i chcesz przetestować unikalność, możesz przekonwertować go na zbiór punktów i użyć dowolnego algorytmu do wypukłego testowania pozycji.
— Tsuyoshi Ito
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.