Ốp một hình đa giác trực giao với hình vuông


12

Cho một đa giác trực giao (một đa giác có các cạnh song song với các trục), tôi muốn tìm tập hợp nhỏ nhất của các hình vuông tách rời bên trong, có liên kết bằng với đa giác.

Tôi tìm thấy một số tài liệu tham khảo cho các vấn đề hơi khác nhau, chẳng hạn như:

  • Bao phủ một đa giác trực giao với các hình vuông - tương tự như vấn đề của tôi, nhưng các hình vuông che phủ được phép chồng lên nhau. Vấn đề này có một giải pháp đa thức ( Aupperle, Conn, Keil và O'Rourke, 1988 ; Bar-Yehuda và Ben-Hanoch, 1996 ).
  • Ốp lát / phân tách / phân vùng một đa giác trực giao thành hình chữ nhật . Vấn đề này có một giải pháp đa thức ( Keil, 2000 ; Eppstein, 2009 ).
  • Bao phủ một đa giác trực giao với hình chữ nhật - vấn đề này được gọi là hoàn thành NP ( Culberson và Reckhow, 1988 ).

Tôi đang tìm kiếm một thuật toán cho ốp lát tối thiểu với hình vuông .


Mmm tôi có thể tưởng tượng đây là NP-hard. Tôi sẽ cố gắng xây dựng một cái gì đó.
Realz Slaw

1
Phiên bản thu nhỏ với các lỗ được phép là NP-Hard, nhưng đối với các đa giác trực giao được kết nối đơn giản (nghĩa là không có lỗ), nó có một thuật toán đa thức. Tuy nhiên, nếu trong vấn đề của bạn, kích thước là số nguyên và bạn thực sự có nghĩa là một bìa tối thiểu và không phải là một bìa tối thiểu, thì trong trường hợp này, một thuật toán đa thức là có thể.
Parham

Mmm, tôi cần một bằng chứng rằng một hình vuông tối thiểu sẽ được định vị hợp lý và có kích thước hợp lý; hoặc thậm chí nhiều hơn, nếu đầu vào có kích thước nguyên và định vị nguyên, thì các ô vuông tối thiểu cũng sẽ như vậy (để giảm nó xuống SAT). Theo trực giác, tôi phỏng đoán rằng điều này là đúng, bạn có ý tưởng nào để chứng minh điều đó không?
Realz Slaw

@MahmoudAlimohamadi: bạn có thể cung cấp các tiêu đề / tác giả của (các) bài báo về vấn đề ốp đa giác trực tràng (có hoặc không có lỗ) với hình vuông được nghiên cứu (và giải quyết).
Vor

2
btw, tôi giả sử bạn có nghĩa là tối thiểu um thay vì tối thiểu al .
Realz Slaw

Câu trả lời:


15

Tôi sẽ cố gắng để hiển thị vấn đề này là NP-khó, bởi giảm từ .Mặt phẳng-3-ĐÃ NGỒI


Giảm từ Mặt phẳng-3-ĐÃ NGỒI

Một số tiện ích cơ bản

Gadgets là cấu hình bên trong của hình học mà sẽ cho phép chúng tôi xây dựng cổng để sử dụng trong một mạch, mà chúng tôi sẽ giảm .Mặt phẳng-3-ĐÃ NGỒI

Tiện ích 4X3

Tiện ích này có hai trạng thái phân vùng bình phương tối thiểu hợp lệ :

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

Còn lại Một tiện ích 4X3 . Giữa và phải: Hai trạng thái phân vùng vuông tối thiểu có thể .

Tiện ích 5X4

Tiện ích này, giống hệt như tiện ích 4X3 , chỉ với kích thước lớn hơn.

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

Còn lại Một tiện ích 5X4 . Giữa và phải: Hai trạng thái phân vùng vuông tối thiểu có thể .

thiết bị đầu cuối

Một thiết bị đầu cuối-tiện ích một 5x4-tiện ích . Nó thường được sử dụng như một điểm cuối / pin của một cổng . Một trong hai trạng thái của điểm cuối có thể được định giá là đúng và trạng thái kia là sai. Một điểm cuối dấu hai đầu, một là và khác như F . Điểm cuối được bao phủ bởi hình vuông lớn là giá trị của điểm cuối.TF

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

Trái: Khung dây của thiết bị đầu cuối . Trung tâm: Điểm cuối có giá trị thực. Phải: Điểm cuối có giá trị sai.

tiện ích i-dây

Một tiện ích i-dây là viết tắt của dây ngụ ý .

Quy tắc:

  • Một tiện ích i-dây bao gồm một hình chữ nhật có chiều dài lẻ có chiều dài hơn và chiều rộng là 2 .22
  • Một tiện ích i-dây có thể có trạng thái phân vùng vuông tối thiểu , được đẩy từ một bên, bên kia hoặc không; một dây i ở trạng thái thứ ba này sẽ được gọi là không giới hạn cục bộ .3

Thí dụ:

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

Hình 7: Một tiện ích i-dây có chiều dài và chiều rộng 2 .72

Đây là cách nó được sử dụng:

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

Hình 8,9 , bên trái: khung dây i-dây qua hai điểm cuối . Phải: Liên minh.

Bây giờ, nếu một điểm cuối ở trạng thái phù hợp, nó sẽ buộc điểm cuối kia vào vị trí đẩy. Thí dụ:

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

Bên trái: Sơ đồ phân vùng vuông; công tắc bên trái bị tắt, "đẩy" tất cả các ô vuông xuống dây i và cuối cùng, đẩy công tắc khác ( điểm cuối ). Phải: Sơ đồ phân vùng vuông; điểm cuối bên trái đã đầy, "đẩy" tất cả các hình vuông xuống dây i và buộc điểm cuối bên trái phải "lên".

Một¬BMộtB

Tuy nhiên, điều này để lại trường hợp không bị ràng buộc:

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

Nếu chúng ta kết hợp hai dây i , chúng ta có thể có hàm ý hai chiều, về cơ bản là một đẳng thức boolean (in):

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

Vì vậy, hai dây i có thể mang một mối quan hệ bình đẳng đầy đủ, giống như một mạch điện - thực tế, nó một mạch điện. Chúng tôi sẽ sử dụng các cặp này để xây dựng một dây có thể sử dụng .

tôi-12+2

i-dây có thể được định hướng khi cần thiết.

dây điện

Một dây bao gồm một cặp dây i được kết nối với cùng một cổng tại mỗi điểm cuối.

  • Các dây i có màu đỏ và xanh lá cây.
  • 3
  • Mỗi pin cổng sẽ có một liên hệ màu xanh lá cây và đỏ; một dây phải kết nối chính xác.
  • Quy tắc bất biến: một dây i được đẩy theo hướng ngược lại với dây i khác, mỗi cổng sẽ thừa nhận điều này và chắc chắn về điều này (trừ khi có ghi chú khác).
  • Vì mỗi dây chứa hàm ý hai chiều, nó mang các giá trị từ cổng này sang cổng khác giống như một dây trong mạch.
  • Mỗi dây phải được kết nối với một cổng ở cả hai đầu. . Không thực hiện được điều này có thể phá hỏng các giả định của một số cổng mà tôi mô tả và quy tắc bất biến ở trên; tuy nhiên, các cổng có điểm cuối trên các dây dẫn đều an toàn - bạn có thể kết nối dây đi lạc với các điểm cuối này mà không lo nó phá hỏng cổng.
  • dây phải có độ dài lẻ, bao gồm cả dây dẫn đến bất kỳ mạch nào mà nó kết nối; tuy nhiên tôi sẽ mô tả một cổng bỏ qua lẻ bên dưới cho phép một dây có chiều dài chẵn trở thành chiều dài lẻ.

Hình ảnh :

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

Trên: Một dây .

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

Trái và phải: Hai trạng thái phân vùng vuông tối thiểu có thể có của một dây . Lưu ý rằng nếu dây chỉ có chiều dài này, nó sẽ không thể dịch chuyển sang phải hoặc trái và sẽ phải phá vỡ một hình vuông thành các mảnh nhỏ hơn.

dây có thể được định hướng khi cần thiết.

uốn cong cổng : Uốn dây

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

Trái: Chế độ xem khung dây. Phải: Liên minh xem.

Lưu ý việc sử dụng tiện ích 4X3 . Nó được sử dụng để sửa chì đỏ thành chiều dài lẻ.

Sau đây là hai trạng thái phân vùng vuông tối thiểu có thể có của uốn cong:

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

Trái và phải: Hai trạng thái phân vùng vuông-vuông-vuông tối thiểu có thể có của một dây uốn.

Cổng có thể được định hướng khi cần thiết. Rõ ràng, cổng này có thể được nhân đôi để làm việc cho hướng khác.

Xiên dây

Nó rất dễ dàng để thay đổi một dây trên. Hình minh họa khung dây:

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

tên-giá trị cổng

Một tên-giá trị khẩu thực chất là một thiết bị đầu cuối như một cánh cửa với một dây liên hệ:

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

lẻ-bỏ qua cổng : lẻ lẻ một dây

Đôi khi thật bất tiện khi chỉ có dây có chiều dài lẻ. Ví dụ:

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

Như bạn có thể thấy, một chút mở rộng là một chút khó chịu. Đây là một giải pháp tương ứng, sử dụng cổng 4X3 :

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

Vì vậy, biến cái này thành một cái cổng, chúng ta có được cái cổng bỏ qua lẻ (trong khung dây):

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

Cổng có thể được định hướng khi cần thiết.

cổng xoắn: xoắn dây

Đôi khi bạn nhận được các dây i màu đỏ và đen ở phía sai để sử dụng với một cổng . Trong trường hợp này, một cổng xoắn được cung cấp, để xoắn dây i màu đỏ và đen sang hai bên đối diện.

Hình minh họa khung dây:

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

Tự thuyết phục bản thân nó hoạt động:

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

Một , đi theo mũi tên đẩy, mọi thứ khác nên bắt buộc và nhất quán.

Cổng có thể được định hướng khi cần thiết.

cổng chia: tách một dây

Tách một dây, khung dây:

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

Hãy thuyết phục bản thân rằng nó hoạt động:

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

Một

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

Một

Lưu ý: Tất cả các dây vào và ra của bộ chia hoàn toàn phải kết nối với điểm cuối ở đâu đó, để duy trì bất biến. Ngoài ra, bạn có thể thêm điểm cuối vào từng cặp đạo trình của bộ chia.

Cổng có thể được định hướng khi cần thiết.

cổng không

Cổng không lấy một dây và xuất ra một dây có ý nghĩa ngược lại. Về cơ bản, nó là một cổng xoắn , ngoại trừ việc nó làm mất màu của dây. Cổng không giống như thế này:

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

Và một cái nhìn của hai trạng thái có thể:

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

Cổng có thể được định hướng khi cần thiết.

cổng mệnh đề

Đối với cổng mệnh đề , trước tiên chúng tôi giới thiệu tiện ích mệnh đề :

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

3 .

Đây là những gì cổng trông giống như:

3

Giải trình:

  1. Bắt đầu tại mệnh đề-tiện ích và làm theo các mũi tên.
  2. Các đường không mũi tên có nghĩa là nó là một phần của mạch, nhưng nó không bị buộc vào trạng thái bằng cổng.
  3. Trạng thái của mệnh đề-tiện ích buộc một trong các điểm cuối phải được định giá đúng .

3-CNF

Cổng có thể được định hướng khi cần thiết.

Giảm

Φ(x)Mặt phẳng-3-ĐÃ NGỒI

Φ(x)= =TôinCTôi,C= ={(xjxkxtôi)}

Một trợ giúp trực quan (nguồn gốc: Terrain Guarding là NP-Hard (PDF) , được sao chép bằng tikz):

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

Sau đó:

  1. xTôixxTôi¬xTôi .
  2. Kết nối các cổng với nhau bằng một cổng không để chúng phủ nhận một cách hợp lý các giá trị của nhau.
  3. Đặt các đa giác 'cổng' của các biến tại vị trí của chúng trong nhúng phẳng.
  4. Đối với mỗi mệnh đề, đặt một cổng mệnh đề tại vị trí của mệnh đề trong phần nhúng phẳng.
  5. Sử dụng các cổng được mô tả ở trên, kết nối tất cả các biến với mệnh đề của chúng.
  6. Chạy thuật toán phân chia bình phương tối thiểu trên kết hợp kết quả của tất cả các đa giác của cổng (toàn bộ mạch).
  7. Nếu thuật toán trả về tổng của tất cả các kích thước trạng thái phân vùng vuông tối thiểu của cổng (trừ cho các góc được chia sẻ) thì điều đó là thỏa đáng. Nếu không thỏa đáng, nó sẽ buộc một tiện ích bị ràng buộc chia thành các ô vuông nhỏ hơn, do đó làm tăng số lượng hình vuông cần thiết để phân vùng mạch.

Tại sao nó hoạt động

  • Mỗi tiện ích có kích thước trạng thái phân vùng vuông tối thiểu ; nghĩa là, một phân vùng vuông tối thiểu của tiện ích đó có kích thước nhất định.
  • Một số tiện ích có một số tiểu bang với kích thước này; mỗi trạng thái này là các phân vùng vuông tối thiểu hợp lệ .
  • Khi tiện ích được kết hợp duy nhất ở các góc, tổng các tối thiểu vuông partition bang của tiện ích là * vẫn là tối thiểu vuông partition-state của sự kết hợp của họ; bạn có thể thấy điều này bằng trực giác: tham gia ở góc không cung cấp không gian rộng rãi cho hình vuông để mở rộng / kết nối với hình vuông từ một tiện ích khác.
  • Mặc dù việc kết hợp các tiện ích ở góc không làm giảm tổng kích thước phân vùng bình phương tối thiểu , nhưng nó lại liên quan và ràng buộc các tiện ích với nhau.
  • Với các cổng được hiển thị ở trên, bạn có thể giới hạn các trạng thái đủ để nếu công thức logic không thỏa mãn, thì một hoặc nhiều tiện ích sẽ phải chia thành các ô vuông nhỏ hơn và tăng kích thước phân vùng vuông tối thiểu .

nguồn đồ thị

Bạn cũng có thể xem hình ảnh lớn hơn bằng cách xóa "s", "m", "l", hậu tố của các url imgur. Ví dụ: Bạn có thể thấy một hình ảnh lớn hơn về điều này: http://i.stack.imgur.com/6CKlGs.jpg bằng cách truy cập http://i.stack.imgur.com/6CKlG.jpg . Lưu ý "s" bị thiếu trước .jpg.


3
Wow, thật ấn tượng. Thật không may, tôi không đủ thông minh để kiểm tra mức giảm, nhưng tôi tin lời bạn :) Cảm ơn!
Erel Segal-Halevi

1
Vì vậy, tình huống trong ốp lát ngược lại với tình huống trong việc bao phủ: trong việc che phủ, bao phủ hình vuông là đa thức và bao phủ hình chữ nhật là NP-hard, trong khi ốp lát, bao phủ hình vuông là NP-cứng và bao phủ hình chữ nhật là đa thức.
Erel Segal-Halevi


8

Một bài báo cũ mà tôi đồng tác giả đã xác định rằng vấn đề bao trùm là đa thức cho một đa giác không có lỗ và NP-hoàn chỉnh có lỗ. Chúng tôi đã chỉ ra rằng một biểu đồ cơ bản chính là hợp âm. Xin lưu ý: thuật toán là đa thức trong sốN của các ô vuông đơn vị trong đa giác, Ôi(N3/2).

"Bao phủ đa giác trực giao với hình vuông." LJ Aupperle và HE Conn và JM Keil và Joseph O'Rourke. Proc. Allerton lần thứ 26 Cộng đồng. Kiểm soát tính toán. , trang 97-106, 1988. ( liên kết để tải xuống bản quét PDF )

Tuy nhiên, kết quả bao phủ có thể bao gồm các hình vuông chồng lên nhau. Bạn đang tìm kiếm một ốp lát, trong đó các ô vuông không được phép trùng nhau, vì vậy vấn đề của bạn không hoàn toàn giống nhau.


lol Tôi đã đi được nửa chặng đường trong một công thức :(. Mặc dù vậy, rất thú vị! Chào mừng bạn đến với cs.SE
Realz Slaw

2
Nếu tôi hiểu chính xác, bài viết này cho phép các hình vuông chồng lên nhau (tức là nó là một vấn đề bao trùm). Tôi quan tâm đến trường hợp các ô vuông không được phép trùng nhau (nghĩa là đó là một vấn đề phân vùng / ốp lát).
Erel Segal-Halevi

@ErelSegalHalevi: Ồ, tôi xin lỗi, tôi đã không đọc kỹ câu hỏi của bạn.
Joseph O'Rourke

2
Ồ thì tôi sẽ tiếp tục: D
Realz Slaw
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.