Kiểm tra xem một tập hợp n điểm trong mặt phẳng có tạo thành đa giác n lồi trong thời gian o (nlogn) không


13

Giả sử rằng bạn được cung cấp một tập hợp n điểm trong mặt phẳng và bạn muốn kiểm tra xem chúng có tạo thành một đa giác lồi hay không, tức là, nếu tất cả chúng đều nằm trên thân tàu lồi. Tôi đã tự hỏi nếu có ai biết làm điều này trong thời gian o (nlogn), tức là, mà không tính toán CH.


Bạn có thể tính toán vỏ lồi trong thời gian O (n log n). Bạn có nghĩa là nếu nó có thể làm điều đó trong thời gian ít hơn thế?
Per Vognsen

vâng, tôi tin rằng nên có một số thuật toán thời gian tuyến tính cho vấn đề này. nhưng tôi không biết làm thế nào
Babis Tsourakakis

4
Anh ấy đã viết o (nlogn) chứ không phải O (nlogn), vì vậy câu hỏi của anh ấy là chính xác.
Shiva Kintali

1
Tôi sử dụng ký hiệu o nhỏ để câu hỏi vẫn được giữ nguyên
Babis Tsourakakis

4
Nó khiến tôi cau mày một chút khi thấy việc sắp xếp các số (hoặc các phần lồi tương đương của các điểm Cartesian) được nêu là mất thời gian Θ (n log n) mà không có tuyên bố rõ ràng về mô hình tính toán nào bạn đang sử dụng. Sắp xếp so sánh mất (n log n) nhưng mô hình so sánh thậm chí không cho phép vỏ tàu được tính toán. Cả hai vẫn còn Θ (n log n) thời gian cho các cây quyết định đại số (như câu trả lời được chấp nhận cho thấy), nhưng nhanh hơn trong các mô hình tính toán gần giống với máy tính thực tế hơn.
David Eppstein

Câu trả lời:


17

Đó dường như là không thể, ít nhất là trong các mô hình cây so sánh / đại số. Định nghĩa đầu tiên:

Một điểm thiết lập ở vị trí lồi nếu không có điểm của P có thể được viết như một sự kết hợp lồi của các điểm còn lại của P .PPP

Bây giờ, quyết định nếu một bộ số đều riêng biệt mất Ω ( n log n ) thời gian (điều này được gọi là ĐỘC NHẤT VÔ NHỊ). Cho một tập hợp gồm n số X , ánh xạ chúng tới tập hợp các điểm P = { ( x , x 2 ) | x X } . Nếu không có số lặp lại, thì các điểm nằm ở vị trí lồi.nΩ(nđăng nhậpn)nX

P= ={(x,x2)|xX}.

Nếu có một số lặp lại, thì số lặp lại này tương ứng với một điểm có thể được viết dưới dạng kết hợp lồi của các điểm còn lại. Cụ thể, các điểm không ở vị trí lồi.

Cụ thể, việc quyết định nếu một tập hợp điểm ở vị trí lồi cũng khó như UNIQUENESS.


12
Có một biến thể của việc giảm này không tạo ra các điểm trùng lặp. Đặt X [1..n] là một tập hợp các số nguyên; kiểm tra xem tất cả các phần tử của X có khác biệt hay không vẫn cần thời gian Ω (n log n) trong mô hình cây quyết định đại số. Bây giờ thay thế mỗi số nguyên bằng điểm ( X [ i ] , X [ i ] 2 + i / n 2 ) . Nếu mảng X ban đầu có bất kỳ sự trùng lặp nào, các điểm kết quả sẽ có ít nhất một điểm trong phần bên trong thân tàu lồi; mặt khác, các điểm nằm ở vị trí lồi. X[Tôi](X[Tôi],X[Tôi]2+Tôi/n2)
Jeffε

1
@Babis: Giảm của Jeff hoạt động khi các điểm trùng lặp không được phép. Các điểm được tạo bởi sự giảm là duy nhất cho dù mảng ban đầu là gì.
Vinayak Pathak

Do đó, chúng ta nhận được rằng số góc của thân lồi bằng n khi và chỉ khi không có hai điểm nào có cùng tọa độ x. Cảm ơn rất nhiều, ban đầu tôi nghĩ rằng nó sẽ dễ hơn là sắp xếp.
Babis Tsourakakis

Cảm ơn Vinayak, tôi đã không thấy sự giảm bớt của Jeff kể từ khi nó được đăng cùng lúc khi tôi đang viết bình luận trước đó mà tôi đã thay thế bằng những điều trên
Babis Tsourakakis

2
Suresh, tôi không đồng ý với cụm từ "mô hình chuẩn". Đó chính xác là RAM Word là gì :) Đây là mô hình phù hợp nhất với máy tính thật và chúng tôi sử dụng để phân tích thuật toán trong hầu hết các TCS. Hình học đã đưa ra một ngoại lệ để sử dụng RAM thực để chúng ta không cần phải giải quyết các vấn đề chính xác. Nhưng đó không phải là "mô hình chuẩn."
Mihai

-1

Ôi(ntôiogn)

Khi bạn đã biết thứ tự của các điểm, góc từ mỗi điểm đến điểm tiếp theo trong chuỗi sẽ là đơn điệu. Điều này tạo thành một điều kiện cần thiết và, tôi nghĩ, một điều kiện đủ.

Lấy điểm bên trong là một bài tập cho người đọc.


Ôi(ntôiogn)


Bạn có thể đọc sai o (n log n) của anh ấy thành O (n log n) nhiều như tôi đã làm. Dù sao, thuật toán bạn vạch ra là gói quà ở dạng phôi thai. Bạn thực sự không cần phải sử dụng một điểm bên trong; bạn có thể sử dụng một điểm trên đường biên, ví dụ một điểm có tọa độ x tối thiểu.
Per Vognsen

Ôi(ntôiogn)o()

Vấn đề là có rất nhiều thuật toán vỏ lồi chạy trong O (n log n). Thuật toán của bạn về cơ bản là gói quà cũ đơn giản. Ông đang yêu cầu một cái gì đó nhanh hơn, ví dụ như thời gian tuyến tính. Xem các phản ứng khác.
Per Vognsen

1
Về chỉnh sửa của bạn, nếu bạn có thể xem câu trả lời được chấp nhận ở trên, bạn sẽ thấy rằng vấn đề tương đương với tính duy nhất của phần tử, có giới hạn thấp hơn O (n log n).
Per Vognsen

2
@BCS: Tôi sợ rằng bạn có một số hiểu lầm về câu trả lời của Sariel Har-Peled. Việc giảm là từ duy nhất để kiểm tra vị trí lồi, không phải là hướng khác. Đó là, Sariel (và JeffE) tuyên bố rằng nếu bạn được cung cấp một bộ số và muốn kiểm tra tính duy nhất, bạn có thể chuyển đổi nó thành một tập hợp các điểm và sử dụng bất kỳ thuật toán nào để kiểm tra vị trí lồi.
Tsuyoshi Ito
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.