Tôi quan tâm đến sự phức tạp của việc quyết định xem một đa giác không đơn giản nhất định có gần như đơn giản hay không, theo một trong hai giác quan chính thức khác nhau: đơn giản yếu hoặc không tự giao . Vì các thuật ngữ này không được biết đến rộng rãi, hãy để tôi bắt đầu với một số định nghĩa.
Một đa giác là chu kỳ khép kín của đoạn thẳng nối một số dãy hữu hạn điểm trên mặt phẳng. Các điểm được gọi là các đỉnh của đa giác và các đoạn được gọi là các cạnh của nó . Chúng ta có thể chỉ định bất kỳ đa giác bằng cách chỉ liệt kê các đỉnh của nó theo thứ tự.
Một đa giác là đơn giản nếu tất cả đỉnh là khác biệt và các cạnh chỉ giao nhau tại các điểm cuối của chúng. Tương tự, một đa giác là đơn giản nếu nó đồng nhất với một vòng tròn và mọi cạnh đều có chiều dài dương. Tuy nhiên, nói chung, các đỉnh và cạnh của đa giác có thể giao nhau tùy ý hoặc thậm chí trùng khớp. 1
Xét hai đường đa giác và có giao điểm là một đường con chung của cả hai (có thể là một điểm duy nhất). Chúng ta nói rằng và chéo nếu điểm cuối của họ thay thế trên ranh giới của một khu phố của subpath chung . Một đa giác là tự vượt qua nếu nó có hai đường dẫn con chéo và không tự vượt qua khác. 2
Một đa giác rất đơn giản nếu đó là giới hạn của một chuỗi các đa giác đơn giản, hoặc tương đương, nếu có một sự nhiễu loạn nhỏ tùy ý của các đỉnh làm cho đa giác đơn giản. Mỗi đa giác đơn giản yếu là không tự vượt qua; tuy nhiên, một số đa giác không tự vượt qua không đơn giản.
Ví dụ, hãy xem xét sáu điểm được hiển thị bên dưới.
Đa giác rất đơn giản; xem hình bên trái
Đa giác rất đơn giản; hình ở giữa cho thấy một đa giác đơn giản gần đó. Tuy nhiên, đa giác này không đơn giản, vì nó truy cập p ba lần.
Đa giác là tự chéo, bởi vì các đường dẫn con b p q z và y q p a cross. Xem hình bên phải cho một số trực giác.
Cuối cùng, đa giác (mà gió hai lần quanh đa giác giữa) là không tự qua, nhưng nó không đơn giản. Theo trực giác, số lần quay của đa giác này là ± 2 , trong khi số lần quay của bất kỳ đa giác đơn giản nào cũng phải là ± 1 . (Một bằng chứng chính thức đòi hỏi một số trường hợp phân tích, một phần vì số lượng biến không thực sự rõ ràng cho đa giác với 0 ∘ góc!)
Cập nhật (ngày 13 tháng 9): Trong hình bên dưới, đa giác không tự vượt qua và có số 1 , nhưng nó không đơn giản. Đa giác được cho là có một số lối đi con không đơn giản , nhưng nó không có đường dẫn phụ đơn giản . (Tôi nói "có thể tranh cãi" vì không rõ cách xác định khi hai lối đi không đơn giản đi qua!)
Vì vậy, cuối cùng, đây là câu hỏi thực tế của tôi:
Làm thế nào nhanh chóng chúng ta có thể xác định xem một đa giác nhất định là không tự vượt qua?
Làm thế nào nhanh chóng chúng ta có thể xác định xem một đa giác nhất định là đơn giản yếu?
Vấn đề đầu tiên có thể được giải quyết trong thời gian như sau. Vì có n đỉnh, nên có các đường con từ đỉnh đến đỉnh O ( n 2 ) ; chúng ta có thể kiểm tra xem bất kỳ đường dẫn cụ thể nào là đơn giản trong thời gian O ( n 2 ) (bằng vũ lực). Đối với mỗi cặp đường dẫn con từ đỉnh đến đỉnh đơn giản, chúng ta có thể kiểm tra xem chúng có giao nhau trong thời gian O ( n ) không . Nhưng đây không thể là thuật toán tốt nhất có thể.
Tôi không biết liệu vấn đề thứ hai có thể được giải quyết trong thời gian đa thức hay không. Tôi nghĩ rằng tôi có thể nhanh chóng tính toán một số quay được xác định rõ ràng cho bất kỳ đa giác không đơn giản nào (trừ khi liên kết các cạnh đa giác chỉ là một đường dẫn, trong trường hợp đó đa giác phải đơn giản yếu); xem câu trả lời của tôi dưới đây Tuy nhiên, ví dụ đa giác mới trên ngụ ý rằng không tự đi qua và quay số 1 nhưng điều đó không có nghĩa một cách yếu ớt đơn giản.
Chúng ta có thể xác định xem một đa giác đã cho có đơn giản trong thời gian bằng cách kiểm tra mọi cặp cạnh cho giao nhau hoặc trong thời gian O ( n log n ) bằng thuật toán quét tiêu chuẩn hoặc thậm chí trong thời gian O ( n ) bằng cách sử dụng Chazelle thuật toán tam giác. (Nếu đa giác đầu vào không đơn giản, bất kỳ thuật toán tam giác nào cũng sẽ đưa ra một ngoại lệ, vòng lặp vô hạn hoặc tạo ra đầu ra không phải là một tam giác hợp lệ.) Nhưng không có thuật toán nào trong số các thuật toán này giải quyết được các vấn đề tôi hỏi.
1 Branko Grünbaum. Đa giác: Meister đã đúng và Poinsot đã sai nhưng đã thắng thế . Beiträge zur Đại số und Geometrie 53 (1): 57 Tắt71, 2012.
2 Xem, ví dụ: Erik D. Demaine và Joseph O'Rourke. Thuật toán gấp hình học: Liên kết, Origami, Polyhedra . Nhà xuất bản Đại học Cambridge, 2007.