Là vấn đề tối ưu hóa tổ hợp này tương tự như bất kỳ vấn đề được biết đến?


10

Vấn đề như sau:

Chúng tôi có một mảng hai chiều / lưới số, mỗi số đại diện cho một số "lợi ích" hoặc "lợi nhuận". Chúng tôi cũng có hai số nguyên cố định và (cho "chiều rộng" và "chiều cao".) Và một số nguyên cố định .h nwhn

Bây giờ chúng tôi muốn phủ lên hình chữ nhật có kích thước trên lưới sao cho tổng tổng giá trị của các ô trong các hình chữ nhật này được tối đa hóa.w × hnw×h

Hình ảnh sau đây là một ví dụ về lưới hai chiều với hai hình chữ nhật như vậy được phủ lên trên nó (hình ảnh không thể hiện giải pháp tối ưu, chỉ là một lớp phủ có thể có trong đó và )n = 2w=h=2n=2

Ví dụ lưới

Các hình chữ nhật không thể giao nhau (nếu không chúng ta chỉ cần tìm vị trí tối ưu cho một hình chữ nhật và sau đó đặt tất cả các hình chữ nhật vào vị trí đó.)

Trong ví dụ trên, tổng giá trị trong các ô sẽ là2+4.2+2.4+3.14+2.31.4+13.1

Điều này có giống với bất kỳ vấn đề đã biết nào trong tối ưu hóa tổ hợp không? để tôi có thể bắt đầu đọc và cố gắng tìm cách giải quyết nó.

Một số nền tảng cho những người quan tâm:

Cho đến nay, những ý tưởng duy nhất tôi có là thuật toán tham lam (sẽ tìm vị trí tốt nhất cho hình chữ nhật đầu tiên, sau đó tìm vị trí không chồng lấp cho hình chữ nhật thứ hai, v.v.) hoặc một số siêu dữ liệu như thuật toán di truyền.

Trong thực tế, tôi muốn giải quyết vấn đề này bằng một lưới có khoảng một triệu ô và hàng chục nghìn (thậm chí hàng trăm nghìn) hình chữ nhật, mặc dù không cần thiết phải giải quyết trong một thời gian ngắn (nghĩa là có thể chấp nhận được thuật toán mất hàng giờ hoặc thậm chí vài ngày.) Tôi không mong đợi một giải pháp chính xác nhưng tôi muốn có được một giải pháp tốt nhất có thể với những ràng buộc này.

Chúc mừng!


(trên điện thoại) điều này có vẻ như có thể được giải quyết bằng kết hợp tối đa theo một phép biến đổi và một số ràng buộc bổ sung. Tôi sẽ cố gắng viết lên sau.
Nicholas Mancuso

Tôi có thể tưởng tượng yêu cầu chính xác được sử dụng có nghĩa là đôi khi không sử dụng tối đa "cục bộ" mà chỉ có một vòng bao quanh nó. Tôi đang tưởng tượng một hình dạng mái vòm đơn giản ở đây, trong đó việc "tham lam" lấy trung tâm của mái vòm có nghĩa là bạn không thể phù hợp với tất cả xung quanh nó. n - 1nn1
Đánh dấu

Suy nghĩ đầu tiên của tôi sẽ là thử lập trình động. Đánh số các ô vuông theo khoảng cách Manhattan của họ từ phía trên bên trái. Một bài toán con là: một số của một hình vuông; một danh sách các hình chữ nhật bạn đã chọn có corder phía trên bên trái có số nhỏ hơn ; và mục tiêu là mở rộng đến tập hợp các hình vuông không chồng chéo tốt nhất có thể bằng cách thêm một số tập hợp con hình vuông với các góc trên bên trái có số . Bạn có thể giải quyết từng bài toán con một cách nhanh chóng nếu bạn có giải pháp cho tất cả các bài toán con sau này. Câu hỏi duy nhất là có bao nhiêu bài toán con bạn sẽ phải khám phá. L s L ssLsLs
DW

Câu trả lời:


2

Công thức cuối cùng của tôi có một lỗ hổng nghiêm trọng sẽ đòi hỏi số lượng nút "ràng buộc" theo cấp số nhân.

Một công thức đồ họa tự nhiên khác của vấn đề sẽ là tạo một biểu đồ trong đó mỗi đỉnh đại diện cho một hình chữ nhật với . Bất kỳ cặp hình chữ nhật chồng chéo đều có cạnh trong biểu đồ này. Bằng cách giải quyết cho tập kích thước độc lập có trọng số tối đa chúng tôi có một giải pháp cho vấn đề ban đầu của bạn. Có nhiều thuật toán heuristic và xấp xỉ tốt cho việc này.w r r , r k = nrwrr,rk=n


Đây là hướng tôi hiện đang hướng tới, tôi sẽ thử nghiệm điều này và chấp nhận giải pháp nếu đó là hướng cuối cùng tôi sử dụng, chúc mừng.
mươi

2

Bạn có thể hình thành điều này như một thể hiện lập trình tuyến tính số nguyên khổng lồ (ILP), và sau đó áp dụng bộ giải ILP ngoài luồng (lp_solve, CPLEX, v.v.). Họ sẽ cung cấp cho bạn giải pháp tốt nhất mà họ có thể tìm thấy. Với kích thước của ví dụ vấn đề của bạn, tôi không biết liệu điều này có đủ hiệu quả hay không, nhưng sẽ rất dễ để thử.

Đây là công thức ILP. Chúng tôi có một biến 0 hoặc một biến cho mỗi hình chữ nhật có thể , với cách giải thích dự định có nghĩa là bạn bao gồm hình chữ nhật trong tập hợp của mình và có nghĩa là bạn không bao gồm nó. Bạn muốn tối đa hóa hàm mục tiêu (trong đó là lợi nhuận của hình chữ nhật ), tuân theo hạn chế là và không có hai hình chữ nhật trùng nhau. Hạn chế thứ hai có thể được biểu thị dưới dạng bất đẳng thức tuyến tính bằng cách yêu cầu cho tất cả các cặp hình chữ nhật r x r = 1 r x r = 0 r c r x r c r r r x r = n x r + x s1 r , sxrrxr=1rxr=0rcrxrcrrrxr=nxr+xs1r,ssự chồng chéo đó. Vì vậy, theo cách này bạn có được ILP.


Bạn có nghĩ rằng vấn đề này là NP-hard? Tôi không tin rằng nó không có giải pháp đa thời gian và người giải ILP không có khả năng hoàn thành các trường hợp có kích thước vừa phải.
RB

1
@RB, tôi không biết đó có phải là NP-hard không. Xem nhận xét của tôi dưới câu hỏi về lập trình động cho suy nghĩ đầu tiên của tôi về cách thử tìm thuật toán đa thức thời gian (nhưng tôi không biết liệu thuật toán kết quả sẽ ở P hay không). Theo như những gì người giải quyết ILP có thể làm, cách duy nhất để tìm hiểu là thử - đôi khi hiệu suất của họ có thể gây ngạc nhiên.
DW
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.