Che một đa giác lõm với số lượng hình chữ nhật tối thiểu


11

Tôi đang cố gắng che một đa giác lõm đơn giản với một hình chữ nhật tối thiểu. Hình chữ nhật của tôi có thể có chiều dài bất kỳ, nhưng chúng có chiều rộng tối đa và đa giác sẽ không bao giờ có góc nhọn.

Tôi nghĩ về việc cố gắng phân rã đa giác lõm của mình thành các hình tam giác tạo ra một tập hợp các hình chữ nhật chồng chéo tối thiểu giới hạn tối thiểu mỗi hình tam giác và sau đó hợp nhất các hình chữ nhật đó thành các hình chữ nhật lớn hơn. Tuy nhiên, tôi không nghĩ rằng nó sẽ hoạt động cho các rãnh nhỏ ở các cạnh của đa giác. Các hình tam giác được tạo bởi các đỉnh phản xạ trên các rãnh đó sẽ tạo ra các hình chữ nhật sai. Tôi đang tìm kiếm các hình chữ nhật sẽ trải dài / bỏ qua các rãnh.

Tôi thực sự không biết gì về hình học tính toán, vì vậy tôi không thực sự chắc chắn về cách bắt đầu đặt câu hỏi.

Tôi tìm thấy các bài viết khác tương tự, nhưng không phải những gì tôi cần:

Một số ví dụ: Đen là đầu vào. Màu đỏ là đầu ra chấp nhận được.

nhập mô tả hình ảnh ở đây

Một ví dụ khác: Đầu ra thứ hai được ưa thích. Tuy nhiên, việc tạo cả hai đầu ra và sử dụng một yếu tố khác để xác định ưu tiên có lẽ là cần thiết và không phải là trách nhiệm của thuật toán này.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Đa giác bắt chước các đường cong là cực kỳ hiếm. Trong kịch bản này, phần lớn diện tích của hình chữ nhật bị lãng phí. Tuy nhiên, điều này được chấp nhận vì mỗi hình chữ nhật tuân theo ràng buộc chiều rộng tối đa.

nhập mô tả hình ảnh ở đây

Ngoài ra, tôi thấy bài viết này gần với những gì tôi cần:

Có lẽ một câu hỏi tốt hơn là "Làm thế nào tôi có thể xác định các phần giống hình chữ nhật của một đa giác lõm?" nhập mô tả hình ảnh ở đây

Đây là một hình ảnh cho thấy việc thực hiện mong muốn: nhập mô tả hình ảnh ở đây

Màu xanh là sử dụng vật liệu thực tế. Các hình chữ nhật màu đỏ là bố trí. Màu xanh là MBR của toàn bộ đa giác. Tôi nghĩ rằng tôi nên cố gắng lấy ít MBR và điền chúng vào. 2-3 hình chữ nhật màu xanh lá cây ở góc trên bên trái kết thúc vào giữa đa giác rất tốn kém. Đó là những gì tôi muốn giảm thiểu. Các hình chữ nhật màu xanh lá cây có chiều rộng và chiều cao tối thiểu và tối đa, nhưng tôi có thể sử dụng bao nhiêu hàng và cột cần thiết để bao phủ một vùng. Một lần nữa, tôi phải giảm thiểu số lượng hình chữ nhật không trải dài trên đầu vào. Tôi cũng có thể sửa đổi hình dạng của hình chữ nhật màu xanh lá cây để phù hợp với những nơi nhỏ cũng rất tốn kém. Nói cách khác, có được càng nhiều hình chữ nhật càng tốt để kéo dài càng nhiều càng tốt là lý tưởng.


3
Tiêu đề của bạn nói đa giác lồi, nhưng câu hỏi nói về đa giác lõm. Có lẽ bạn cần phải thực hiện một số sửa chữa?
Ankur

1
@JukkaSuomela, trong hai bức ảnh đầu tiên, đa giác có kích thước gần giống nhau, và trong bức ảnh đầu tiên, tôi có thể chạy ba hình chữ nhật theo chiều dọc như tôi đã làm trong bức thứ hai. Tuy nhiên, điều này là ít mong muốn. Tôi nghĩ rằng mẹo phải làm với chu vi của hình chữ nhật. Có lẽ những gì tôi đang cố gắng làm là giảm thiểu số lượng giới hạn của hình chữ nhật bên trong đa giác, và tối đa hóa số lượng liên kết được nối với các cạnh của đa giác. Tuy nhiên, đôi khi các hình chữ nhật phải tràn ra khỏi đa giác để che nó hoàn toàn.
Josh C.

1
@ John John, tôi hiểu. Đây là một vấn đề mà con người có thể xác định giải pháp một cách dễ dàng nhưng việc nêu chính xác vấn đề là khá khó khăn. Vấn đề tương tự như việc đặt thảm hoặc giấy dán tường và vấn đề thực tế là vấn đề cấu trúc / kiến ​​trúc. Tôi đang cố gắng xác định các khu vực bố trí hình chữ nhật mà sau này sẽ được lấp đầy bằng một hình thức vận chuyển khác. Tìm những hình chữ nhật đó và xử lý các vùng không phải hình chữ nhật là vấn đề. Hãy cho tôi biết nếu tôi có thể giải thích thêm.
Josh C.

2
Tôi nghĩ rằng chúng ta nên tiếp cận vấn đề này trước tiên như một câu hỏi mô hình hóa: mục tiêu không phải là đưa ra một thuật toán giải quyết vấn đề tối ưu hóa được xác định rõ, mà mục tiêu là xác định vấn đề tối ưu hóa.
Jukka Suomela

3
@JoshC.: Có lẽ nó cũng hữu ích nếu bạn cố gắng cho chúng tôi biết thêm về ứng dụng trong thế giới thực. Tôi thu thập từ mô tả của bạn rằng, ví dụ, cắt khá đắt tiền - lý tưởng nhất là các mảnh hình chữ nhật sẽ yêu cầu cắt càng ít càng tốt. Điều này có đúng không?
Jukka Suomela

Câu trả lời:


3

Đây là một biến thể của bìa thiết lập hình học. Tùy thuộc vào các cài đặt chính xác, bạn có thể thực hiện một số phép tính gần đúng. Vấn đề tất nhiên là NP-Hard. Các nhà săn bắn tự nhiên là sử dụng thuật toán tham lam (luôn chọn hình chữ nhật / dải bao phủ hầu hết diện tích chưa được che chắn. Kỹ thuật thay thế là sử dụng tính năng đo lại. Có một số kết quả lý thuyết thú vị, nhưng thật ra, không có gì quá hữu ích trong thực tế Một điều thú vị mà bạn có thể muốn thử, trước tiên là phân tách đa giác của bạn thành số lượng hình lồi tối thiểu (sử dụng thuật toán lập trình động Keil), sau đó che riêng từng đa giác lồi ...


Tôi không quen thuộc với thuật toán lập trình động Keil. Tuy nhiên, tôi đã tìm thấy một phương pháp để làm việc bằng cách sử dụng kết hợp các thuật toán Hình chữ nhật có kích thước lớn nhất và Hình chữ nhật giới hạn tối thiểu với một số biến thể dựa trên phương pháp phỏng đoán.
Josh C.

2

Tôi nghĩ rằng bài viết này có thể là một số trợ giúp. Rõ ràng đó không phải là cùng một vấn đề - thực tế đó là vấn đề ngược lại, bao phủ một hình chữ nhật bằng đa giác - nhưng một số ý tưởng có thể là điểm khởi đầu. Cụ thể, vấn đề ngược này là NP-hard và tôi nghi ngờ bạn cũng có thể như vậy (mặc dù không có sự gia hạn rõ ràng nào về mức giảm theo như tôi có thể nói).

E. Arkin, A. Efrat, G. Hart, I. Kostitsyna, A. Kroller, J. Mitchell và V. Ba Lan. Thins Scandinavian trên đỉnh của bánh: Trên hộp nhỏ nhất một kích cỡ phù hợp với tất cả. Vui với các thuật toán . tr.16-27. 2012


1
Cảm ơn bạn đã gợi ý. Tôi đã làm việc với các bộ phận kỹ thuật và sản xuất tại công ty của tôi để mang lại sự rõ ràng hơn cho vấn đề này. Tôi vẫn đang chờ xác nhận, nhưng bây giờ tôi đang nghĩ một thuật toán sẽ trả về các tập hợp hình chữ nhật lớn nhất sẽ hoạt động. Mặc dù nó không hoàn toàn bao phủ hình dạng, nhưng nó sẽ ưu tiên cho các khu vực nhận thức trong khi để các khu vực không trực giao cho một số phương pháp phỏng đoán. Bí quyết duy nhất là tối đa hóa các vùng trực giao đó. Xem hình ảnh cuối cùng của tôi với 9 con số giống như lamda.
Josh C.
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.