2011-08-14 19 views
10

Tôi khá bối rối với ý tưởng thực hiện 8-nữ hoàng vấn đề bằng cách sử dụng lập trình năng động. Dường như nó không thể ở một đầu cho DP "nếu vấn đề được chia thành một loạt các bài toán con và giải pháp tối ưu cho mỗi bài toán con được tìm thấy, thì giải pháp kết quả sẽ được thực hiện thông qua giải pháp cho các bài toán con này. không có cấu trúc này không thể được giải quyết bằng lập trình động "(Reference). Bằng cách sử dụng tính năng này, giải pháp tối ưu cho bo mạch 7x7 có thể không tối ưu (thậm chí không chính xác) cho 8x8. Vì vậy, kết quả của vấn đề có thể không nhận ra thông qua giải pháp tối ưu của vấn đề phụ. Mặt khác, DP là tối ưu hóa cho các vấn đề backtracking ... nếu vậy thì vấn đề 8-nữ hoàng có thể được giải quyết bằng backtracking ... nó có nghĩa là bằng cách lưu trữ chỉ có dead-end có thể chuyển đổi giải pháp backtracking thành DP không? Không. Nếu vậy, thì có thể 2,1 là không khả thi cho phụ huynh 1,1 nhưng có thể khả thi cho 1,2.8-nữ hoàng vấn đề bằng cách sử dụng lập trình năng động

Cập nhật

bất cứ ai có ý tưởng rằng cho dù 8-nữ hoàng hay vấn đề n-nữ hoàng có thể được giải quyết bằng cách sử dụng lập trình năng động? Nếu vậy thì ý kiến ​​của bạn về những quan sát được đưa ra ở trên là gì?

+1

Câu hỏi là gì? – Amy

+0

@lnuyasha đã cập nhật câu hỏi. – mqpasta

+1

@mqpasta, Tìm kiếm trên web cho "chương trình động 8 thanh thiếu niên" tạo ra số lượt truy cập hợp lý. Bạn đã đọc bất kỳ nguồn nào trong số các nguồn này để xem cách chúng xác định DP _cho vấn đề này_ chưa? Và bạn có đồng ý không? Bạn đúng rằng một giải pháp 7-nữ hoàng không phải là một thành phần của một giải pháp 8-nữ hoàng, vì vậy câu hỏi của bạn là rất thú vị. –

Trả lời

3

giải pháp tối ưu cho bảng 7x7 có thể không tối ưu cũng như (thậm chí không chính xác) cho 8x8.

Có, bạn là chính xác. Nhưng đây không phải là cách hay để chia nhỏ vấn đề. Nhìn vào paper yi_H posted in his answer, định lý 2.4 và xem mô tả thuật toán. Họ chia các giải pháp thành các lớp tương đương theo các nhóm đường khép kín (tức là các dòng bị đe dọa bởi các nữ hoàng). Định lý 2.4 đảm bảo rằng khi chúng giải quyết được vấn đề phụ trên tập hợp các đường khép kín cụ thể, chúng có thể giải quyết phần còn lại một cách riêng biệt và sau đó kết hợp kết quả! Rất thông minh.

1

Chỉ cần đăng rõ ràng google hit:

A dynamic programming solution to the n-queens problem

Lưu ý: đây vẫn là rất chậm đối lớn n của, O (f (n) * 8^n), bạn sử dụng tốt hơn một số khác thuật toán:

A Polynomial Time Algorithm for the N-Queens Problem

+1

Mục đầu tiên của bạn cho "Một giải pháp lập trình động cho vấn đề n-queens" không phải là khá rõ ràng. Tôi đọc tài liệu đó. Thậm chí còn có ví dụ chạy được cung cấp bởi tác giả. Đối với liên kết thứ hai, nó hoạt động trên hoán vị hoặc các giải pháp ngẫu nhiên .. nhiều khả năng di truyền của nó! dù sao đi nữa ... Tôi đang nghĩ đến việc lên kế hoạch cho một vấn đề DP để sửa chữa vấn đề 8-nữ hoàng không chính xác ... ý tưởng hay! – mqpasta

+0

Nhưng, tôi vẫn đang tìm kiếm câu trả lời để mô tả hoặc nhận xét về quan sát được nêu trong các câu hỏi của tôi. – mqpasta

Các vấn đề liên quan