Các kỹ thuật người ta có thể sử dụng để giữ tất cả các mảnh trên bảng là gì? Nó giống như một vấn đề nữ hoàng
Có phải là sự kết hợp của n-queen
Các kỹ thuật người ta có thể sử dụng để giữ tất cả các mảnh trên bảng là gì? Nó giống như một vấn đề nữ hoàng
Có phải là sự kết hợp của n-queen
Câu trả lời:
Để giải quyết chỉnh sửa cho câu hỏi Nếu bạn nhận được các mảnh theo thứ tự ngẫu nhiên và bạn không có bất kỳ thông tin nào về các mảnh trong tương lai, cách sắp xếp các mảnh sẽ là đưa ra các mảnh có phạm vi ít nhất. Ví dụ, nếu tôi nhận được một nữ hoàng ở lượt đầu tiên, tôi sẽ đặt nó ở một trong bốn góc. Một số quy tắc nữa sẽ là giữ các hiệp sĩ gần nhau và những con tốt xếp chồng lên nhau. Tất cả các chiến lược này là một chút rõ ràng, nhưng thật khó để có một chiến lược nhất quán để sử dụng vì có rất nhiều sự kết hợp tiềm năng của các mảnh.
Đây dường như là một câu hỏi về lập trình nhiều hơn là một câu hỏi về cờ vua, nhưng nó không thú vị! Sau khi suy nghĩ một chút, tôi sẽ suy nghĩ rằng cách tốt nhất để tiếp cận vấn đề này là sử dụng các hiệp sĩ làm cơ sở. Người ta biết rằng số hiệp sĩ tối đa có thể nằm trên một bảng là 32 (chỉ cần đặt chúng trên tất cả các ô vuông có cùng màu), do đó, vị trí bắt đầu của bạn là hợp lý vì đây là công suất tối đa bạn có thể có với mảnh cá nhân. Chiến lược này mở rộng chính nó đến một bảng N x N.
Sau đó, tôi sẽ sử dụng những con tốt vì sức mạnh tấn công của chúng bị giới hạn ở các đường chéo phía trước của một hình vuông trong phạm vi. Chúng có thể chiếm mọi cột khác (không phải hàng vì điều này sẽ bị giới hạn ở 2, 4 và 6 nếu tuân theo các quy tắc thông thường) và điều này sẽ thêm N / 4 ô vuông chiếm thêm cho một bảng NxN. Điều này khái quát cho tổng số hình vuông chiếm tới N / 2 + N / 4, hoặc đơn giản là tổng số hình vuông chiếm 3N / 4.
Đây là kết quả của khoảng 5 phút xem xét, vì vậy thuật toán của tôi có thể bị sai sót. Tôi hy vọng điều này sẽ giúp trả lời câu hỏi của bạn!
Tôi nghĩ rằng với một lựa chọn ngẫu nhiên các mảnh, chiến lược cơ bản sẽ là đặt chúng lên bảng để chúng tấn công càng ít hình vuông càng tốt và không cản trở bất kỳ thứ hạng hoặc tập tin nào không bị cản trở bất cứ khi nào có thể. tức là các hiệp sĩ ở các góc, các quân cờ di chuyển khoảng cách ngắn như vua và hiệp sĩ trên cùng một cấp bậc hoặc tập tin, và các giám mục trên cùng một cấp bậc hoặc tập tin như các quân cờ khác. Nói chung khi chọn một hình vuông cho mảnh mới, nó sẽ tương tự như một cuộc săn vua. Khi cố gắng hạ gục nhà vua, bạn muốn giảm số lượng hình vuông mà anh ta có thể chiếm giữ một cách an toàn nhất có thể (mà không làm giảm nó một). Ở đây bạn muốn mỗi mảnh được đặt để giảm số lượng hình vuông vẫn không bị tấn công bởi bất kỳ mảnh nào càng ít càng tốt.
Vì định nghĩa vấn đề đã được cập nhật gần đây, tôi giả sử rằng bạn đang bắt đầu với một bảng NxN trống và được cung cấp một mảnh ngẫu nhiên và được yêu cầu đặt nó. Khi hoàn thành, bạn được cung cấp một mảnh ngẫu nhiên khác cho đến khi không còn có thể được đặt.
Đối với một chiến lược của con người , tôi đoán một quy tắc tốt sẽ là chọn một vị trí (hợp lệ) để giảm thiểu số lượng các ô vuông vẫn bị từ chối bởi phần mới. Có hai thành phần chính, ở mức độ cao:
Đối với một chiến lược lập trình , chúng ta phải xem xét lại vấn đề. Cách nó được nêu ở trên nó không thực sự là một vấn đề lập trình, vì thành công của chúng tôi phụ thuộc vào việc tìm ra chiến lược tốt nhất có thể (mà rõ ràng chúng tôi chưa thực hiện). Lập trình truyền thống sẽ không thực sự có ích theo nghĩa này, bởi vì các quy tắc của vấn đề từ chối máy tính kiến thức hoàn hảo về những gì đang đến. Điều này làm cho các cách tiếp cận truyền thống về cưỡng bức hoặc quay lui (thường được sử dụng để giải quyết vấn đề 8 / N-Queens ) không thể sử dụng được.
Tuy nhiên, người ta có thể sử dụng các kỹ thuật AI khác nhau để tìm kiếm một chiến lược tối ưu. Về cơ bản, điều này sẽ giúp bạn tìm ra cách thể hiện một chiến lược trong một loại cấu trúc dữ liệu nào đó. Đây thực sự là phần khó khăn và có thể cực kỳ khó khăn. Bạn có thể phải tạo một số loại ngôn ngữ dành riêng cho tên miền cho phép các quy tắc như "chọn cột ngoài cùng bên phải chưa có hiệp sĩ trong đó" hoặc bất cứ điều gì. Sau đó, về cơ bản, bạn sẽ chọn một số loại thuật toán tối ưu hóa (tìm kiếm ngẫu nhiên, thuật toán di truyền, chuỗi hạt, v.v.) để tìm một bộ quy tắc đặc biệt tốt, dường như đánh bại tất cả phần còn lại mà bạn tìm thấy cho đến nay. Có một cơ hội tốt rằng nó sẽ bị khủng khiếp đến mức chúng ta không bao giờ có thể hiểu làm thế nào và tại sao nó hoạt động tốt như vậy, nhưng nó có thể đánh bại những người chúng ta '
Hai điểm chính là:
Ví dụ, tôi sẽ đăng một nghiên cứu nhanh mà tôi đã làm về các hiệp sĩ, điều đó hơi ngớ ngẩn vì chúng ta đã biết chúng ta có thể đặt 32 hiệp sĩ trong một bảng 8 x 8 chỉ bằng cách đặt tất cả chúng lên cùng một màu, nhưng tôi vẫn làm điều đó xem có bao nhiêu hiệp sĩ nên được sắp xếp:
(chú ý cách điểm số 2 xác định cách sắp xếp nào tốt hơn khi chúng ta có cà vạt)
Ngoài ra, hai liên kết hữu ích tôi tìm thấy là:
Giữ các mảnh ra khỏi trung tâm, ở hai bên.