2010-07-21 20 views
11

Tôi đang viết AI cho trò chơi bài và sau một số thử nghiệm tôi đã phát hiện ra rằng sử dụng MTD (f) trên thuật toán alpha beta của mình - một chuỗi các tìm kiếm không có cửa sổ - nhanh hơn chỉ sử dụng alpha-beta.Cách sử dụng bảng chuyển đổi với MTD (f)

Các MTD (f) thuật toán được mô tả tốt ở đây http://people.csail.mit.edu/plaat/mtdf.html

Tôi có vấn đề ở đây là mỗi đường chuyền trong MTD (f) tìm kiếm (đối với từng dự đoán) Tôi không tái sử dụng bất kỳ vị trí trước Tôi đã lưu trữ ngay cả khi ghi lên trên liên kết cho thấy rằng tôi nên (trong thực tế, thanh toán bù trừ các bảng giữa các lần lặp tăng tốc thuật toán).

Vấn đề của tôi là khi tôi lưu trữ một vị trí và một giá trị trong bảng chuyển vị của tôi, tôi cũng lưu trữ các giá trị alpha và beta mà nó hợp lệ. Do đó, lần thứ hai đi qua cây với một dự đoán khác (và do đó alpha và beta) không thể sử dụng lại bất kỳ thông tin nào. Đây có phải là những gì được mong đợi hoặc tôi thiếu một cái gì đó cơ bản ở đây?

Ví dụ, nếu cho alpha = 3 beta = 4, chúng tôi đến kết quả của 7 (rõ ràng là một cut-off) tôi nên lưu trữ trong bảng như là hợp lệ cho alpha = 3 để beta = 6? Hoặc beta = 7?

Trả lời

9

Sự cố của bạn đi kèm với hiểu biết khái niệm về cách sử dụng bảng chuyển vị cùng với tìm kiếm alpha beta. Đây là một vấn đề lớn mà tôi cũng gặp phải, và sau khi nhìn xung quanh, tôi tìm thấy this discussion, giải thích khái niệm này một cách tự nhiên hơn bất kỳ bài báo nào tôi đã đọc về chủ đề này. Về cơ bản, bạn không thể xử lý tất cả các kết quả alpha-beta giống nhau bởi vì khi một điểm cắt xảy ra, kết quả chỉ biểu thị một giá trị giới hạn và không phải là giá trị cực tiểu thực. Nó đã được chứng minh rằng việc sử dụng giới hạn sẽ luôn luôn cung cấp cho bạn cùng một trạng thái tốt nhất tiếp theo, nhưng có thể không có điểm chính xác. Khi bạn lưu trữ trạng thái từ một cutoff, bạn cần phải đối xử với nó như là một ràng buộc và cố gắng cải thiện nó trên pass tiếp theo. Điều này thường sẽ đánh giá cùng một nút nhiều lần, nhưng nó sẽ liên tục cải thiện điểm số thực tế khi cần thiết.

Here is a good example thực hiện đầy đủ hơn các khái niệm được liệt kê trong bài viết được liên kết trước đó. Di chuyển đến trang 14.

+2

Cảm ơn bạn, đây chính xác là những gì tôi đang tìm kiếm và đã cắm một vài lỗ vào sự hiểu biết của tôi. – Daniel

+0

Tôi nghĩ rằng nó cũng cần thiết để bằng cách nào đó chứng minh rằng nó không làm mất hiệu lực giả định alpha/beta để sử dụng các giá trị tt từ một tìm kiếm sâu hơn. Ít nhất là nếu bạn muốn toàn bộ sức mạnh. –

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