Tìm một khối lập phương lớn nhất chứa trong sự kết hợp của các khối lập phương


18

Tôi có rất nhiều hình khối trong không gian 3D, mỗi hình có điểm bắt đầu tại (x, y, z) và có kích thước là (Lx, Ly, Lz). Tôi tự hỏi làm thế nào để tìm một khối lập phương lớn nhất trong không gian 3D này được chứa trong sự kết hợp của các khối. Có một thuật toán hiệu quả cho việc này?

Ví dụ: Nếu tôi có các hình khối sau:

  • một hình khối bắt đầu từ (0,0,0) với kích thước (10,10,10),
  • một hình khối ở (10,0,0) với kích thước (12,13,15),
  • một hình khối ở (0,10,0) với kích thước (10,10,10),
  • một hình khối ở (0,0,10) với kích thước (10,10,10) và
  • một hình khối ở (10,10,10) với kích thước (9,9,9).

Sau đó, khối lập phương lớn nhất chứa trong sự kết hợp của các khối này sẽ là một khối bắt đầu từ (0,0,0) với kích thước (19,19,19).

Một phiên bản chung hơn của câu hỏi này:

Cho một tập hợp hộp trong , tìm hypercube lớn nhất có trong liên kết của các hộp.nRd


8
Tôi nghĩ có một câu hỏi hay hơn ẩn giấu bên trong: cụ thể là, đưa ra một liên kết các hộp trong , tính toán hypercube lớn nhất có trong liên minh. Rd
Suresh Venkat

1
Những khối này có thể chồng lên nhau không?
Peter Boothe

@Suresh, cảm ơn bạn đã làm rõ và khái quát hóa câu hỏi :) @Peter, trong trường hợp của tôi ... Nó sẽ không trùng lặp :)
pantoffski

2
Cách bạn đã thực hiện điều này, có vẻ như các cạnh của hình khối được căn chỉnh với các trục x, y và z. Đây có phải là trường hợp, hoặc các hình khối có thể có định hướng tùy ý? Điều này rõ ràng tạo ra một sự khác biệt đáng kể cho hiệu quả của thuật toán.
Joe Fitzsimons

Trong trường hợp của tôi, mỗi khuôn mặt của hình khối chỉ trực giao với các trục.
pantoffski

Câu trả lời:


15

Chà, đây là một câu trả lời ngớ ngẩn đầu tiên ... Hãy đi máy bay qua từng mặt của các hộp hình chữ nhật. Điều này tạo thành một lưới có kích thước . Không khó để tính toán cho từng ô lưới như vậy cho dù bên trong liên kết hay bên ngoài. Bây giờ, từ mỗi đỉnh lưới, phát triển một khối lập phương (có đỉnh này là một đỉnh) cố gắng làm cho nó càng lớn càng tốt. Làm điều đó theo cách ngây thơ nhất, việc này mất thời gian O ( n 3 log n ) trên mỗi đỉnh, nhưng có lẽ sử dụng phép thuật tìm kiếm phạm vi trực giao, người ta có thể thực hiện điều đó trong log O ( 1 ) n trên mỗi đỉnh. Vậy O ( n 3O(n3)O(n3logn)logO(1)n nên có thể ...O(n3logO(1)n)

Lần thử thứ hai: Tính toán công đoàn. Trong trường hợp cụ thể này, điều này có thể được thực hiện trong thời gian (bằng cách quét các mặt phẳng). Bây giờ, quan sát rằng bạn chỉ cần tính toán sơ đồ L voronoi của ranh giới của liên minh. Sử dụng kết quả: http://vw.stanford.edu/~vladlen/publications/vor-polyhedral.pdf , điều này có thể được thực hiện trong O ( n 2 + ε ) thời gian, cho một hằng số nhỏ tùy ý ε > 0 .O(nlogn)LO(n2+ε)ε>0

Phá vỡ thời gian chạy bị ràng buộc ở đây sẽ rất thú vị, IMHO.O(n2)


Cảm ơn ngài, tôi cũng nghĩ rằng L∞ là một giải pháp tốt nhất cho vấn đề này cho đến nay. Vì tôi đã thực hiện L cho trường hợp 2D trước đây (được thực hiện bằng các phương pháp được cung cấp trong bài viết này inf.usi.ch/facemony/papadopoulou/publications/ijcga01.pdf ). Vỏ 3D chỉ có hộp không khó khăn lắm.
pantoffski

8

Câu trả lời cho câu hỏi chung về dường như là NP-hard. Bằng chứng khá đơn giản. Chúng tôi chỉ cần lấy một ví dụ 3SAT trên các biến d và liên kết mỗi biến với một thứ nguyên. Hãy nghĩ về không gian như một không gian của các biến số có thể có của các biến: chúng tôi chỉ xem xét các điểm nằm giữa -1 và +1 trong mỗi dimesnion và liên kết các vị trí < 0 với phép gán 0 cho biến đó và > 0 với phép gán là 1. Mỗi mệnh đề loại trừ một vùng được cho bởi 1 × 1 × 1 × n × n × n . . . × nRdd<0>01×1×1×n×n×n...×n siêu âm.

2×2×...×21×1×...×1


Tôi tưởng tượng bạn có thể chứng minh nó có trong FNP (ít nhất là trong trường hợp các khối lập phương thẳng hàng trục), bằng cách chạy ngược lại các tranh luận ở trên và cho thấy rằng bất kỳ hình khối nào cũng tạo thành một ràng buộc có thể được kiểm tra trong thời gian đa thức.
Joe Fitzsimons
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.