Câu trả lời:
tl; dr:
Không có thuật toán nào trong số này là thực tế cho công việc hiện đại, nhưng chúng là nơi tốt để bắt đầu sư phạm.
Bạn nên luôn luôn thích sử dụng cắt tỉa Alpha-Beta hơn tìm kiếm minimax trần.
Bạn nên sử dụng một số hình thức tìm kiếm hướng dẫn heuristic nếu bạn có thể đưa ra một heuristic hữu ích. Đến với một heuristic hữu ích thường đòi hỏi nhiều kiến thức về miền.
Bạn nên sử dụng tìm kiếm Monte Carlo Tree khi bạn thiếu một heuristic tốt, khi tài nguyên tính toán bị hạn chế và khi sai lầm sẽ không vượt quá hậu quả trong thế giới thực.
Thêm chi tiết:
Trong tìm kiếm minimax, chúng tôi không cố gắng tỏ ra rất thông minh. Chúng tôi chỉ sử dụng một phương pháp lập trình động tiêu chuẩn. Thật dễ dàng để tìm ra giá trị của các bước di chuyển khác nhau nếu chúng ta gần kết thúc trò chơi (vì trò chơi sẽ kết thúc ở nước đi tiếp theo, chúng ta không cần phải nhìn về phía trước rất xa). Tương tự như vậy, nếu chúng ta biết đối thủ của mình sẽ làm gì trong nước đi cuối cùng của trò chơi, thật dễ dàng để tìm ra những gì chúng ta nên làm trong lần di chuyển cuối cùng thứ hai. Thực tế, chúng ta có thể coi bước cuối cùng thứ hai là bước cuối cùng của một trò chơi ngắn hơn. Sau đó chúng ta có thể lặp lại quá trình này. Sử dụng phương pháp này là chắc chắn để khám phá các chiến lược tốt nhất trong một trò chơi dạng rộng tiêu chuẩn, nhưng sẽ yêu cầu chúng tôi xem xét mọi di chuyển có thể, không thể áp dụng cho tất cả các trò chơi đơn giản nhất.
Cắt tỉa Alpha-Beta là một cải tiến nghiêm ngặt về tìm kiếm Minimax. Nó sử dụng thực tế là một số di chuyển rõ ràng là tồi tệ hơn so với những người khác. Ví dụ, trong cờ vua, tôi không cần phải xem xét bất kỳ động thái nào sẽ cho bạn cơ hội đưa tôi vào vị trí người chơi, ngay cả khi bạn có thể làm những việc khác từ vị trí đó. Một khi tôi thấy rằng một động thái có thể dẫn đến thua cuộc, tôi sẽ không bận tâm suy nghĩ về những gì khác có thể xảy ra từ thời điểm đó. Tôi sẽ đi xem xét những thứ khác. Thuật toán này cũng chắc chắn mang lại kết quả chính xác, và nhanh hơn, nhưng vẫn phải xem xét hầu hết các động thái trong thực tế.
Có hai cách phổ biến mà bạn có thể nhận được xung quanh chi phí tính toán cực cao để giải quyết chính xác các loại trò chơi này:
Sử dụng một Heuristic (tìm kiếm A * là thuật toán thông thường cho mục đích sư phạm, nhưng tìm kiếm Quieshood là một ý tưởng tương tự trong 2 trò chơi người chơi). Đây chỉ là một chức năng đưa ra ước tính giá trị của trạng thái của trò chơi. Thay vì xem xét tất cả các động thái trong một trò chơi, bạn chỉ có thể xem xét di chuyển ra một khoảng cách hữu hạn phía trước, và sau đó sử dụng giá trị của heuristic để đánh giá giá trị của các trạng thái bạn đạt được. Nếu heuristic của bạn là nhất quán (về cơ bản: nếu nó luôn đánh giá quá cao chất lượng của các trạng thái), thì điều này vẫn sẽ mang lại câu trả lời chính xác, nhưng với tốc độ rất lớn trong thực tế.
Sử dụng Rollouts (như Tìm kiếm cây Monte Carlo). Về cơ bản, thay vì xem xét mọi di chuyển, hãy chạy vài nghìn trò chơi mô phỏng giữa những người chơi hành động ngẫu nhiên (điều này nhanh hơn so với việc xem xét tất cả các động thái có thể). Gán một giá trị cho các trạng thái bằng với tỷ lệ thắng trung bình của các trò chơi bắt đầu từ nó. Điều này có thể không mang lại câu trả lời chính xác, nhưng trong một số loại trò chơi, nó thực hiện đáng tin cậy. Nó thường được sử dụng như một phần mở rộng của các kỹ thuật chính xác hơn, thay vì được sử dụng riêng.
NB Lý do tại sao tôi chỉ chọn ba thuật toán này là do thời gian tôi có sẵn để hiểu chúng. Từ một nghiên cứu nhỏ, tôi thấy rằng các thuật toán này về cơ bản được đan xen vào thuật toán minimax. Vì vậy, nếu tôi có thể hiểu một thì hai người kia sẽ rơi vào vị trí.
Với bối cảnh này, tôi khuyên bạn nên bắt đầu với Minimax . Trong ba thuật toán, Minimax là dễ hiểu nhất.
Alpha-Beta , như những người khác đã đề cập trong các câu trả lời khác, là một cải tiến nghiêm ngặt trên đỉnh Minimax. Minimax về cơ bản là một phần của việc triển khai Alpha-Beta và hiểu biết tốt về Alpha-Beta đòi hỏi phải bắt đầu với sự hiểu biết tốt về Minimax. Nếu bạn tình cờ còn thời gian sau khi hiểu và triển khai Minimax, tôi khuyên bạn nên chuyển sang Alpha-Beta sau đó và xây dựng nó trên đỉnh Minimax. Bắt đầu với Alpha-Beta nếu bạn chưa hiểu Minimax không thực sự có ý nghĩa.
Monte-Carlo Tree Search có lẽ tiên tiến hơn một chút và phức tạp hơn để thực sự, hiểu sâu sắc. Trong thập kỷ qua, MCTS thực sự đã trở nên phổ biến hơn nhiều so với hai loại kia, vì vậy từ quan điểm đó, hiểu MCTS có thể "hữu ích" hơn.
Kết nối giữa Minimax và MCTS ít trực tiếp / rõ ràng hơn kết nối giữa Minimax và Alpha-Beta, nhưng vẫn có một kết nối ít nhất là ở cấp độ khái niệm. Tôi tranh luận rằng việc hiểu rõ về Minimax trước tiên vẫn có lợi trước khi lao vào MCTS ; đặc biệt, hiểu Minimax và những sai sót / điểm yếu của nó có thể cung cấp bối cảnh hữu ích / giúp bạn hiểu tại sao MCTS trở nên "cần thiết" / phổ biến.
Để kết luận, theo tôi:
Tôi phải chọn giữa cắt tỉa Minimax và Alpha-Beta, bạn nên chọn Alpha-beta. Nó hiệu quả và nhanh hơn vì nó có thể cắt tỉa một phần đáng kể của cây thăm dò của bạn. Nhưng bạn cần phải sắp xếp các hành động từ tốt nhất đến xấu nhất tùy thuộc vào quan điểm tối đa hoặc tối thiểu, để thuật toán có thể nhanh chóng nhận ra nếu việc thăm dò là cần thiết.