Câu trả lời:
Nếu bạn đang muốn nghiên cứu và tìm hiểu về tìm đường nói chung, tôi chắc chắn khuyên bạn nên học nhiều hơn một thuật toán. Bạn sẽ muốn hiểu các khái niệm tổng thể nhưng có thể áp dụng chúng cho bất cứ điều gì bạn đang làm việc. Hầu hết các nhà phát triển trò chơi, những người cần thực hiện bất kỳ tìm đường nghiêm túc nào đều phải viết các thuật toán tùy chỉnh của riêng họ, mặc dù dựa trên các giải pháp đã biết, mỗi trò chơi đều khác nhau và sẽ có các yêu cầu khác nhau.
Tôi sẽ bắt đầu bằng cách đọc một số phương pháp được biết nhiều hơn như A *, Thuật toán Dijkstra, Độ sâu và Độ sâu tìm kiếm đầu tiên. Có rất nhiều thông tin tốt trên internet về mỗi thứ này. ( http://en.wikipedia.org/wiki/Pathfinding )
Trong khi đọc chúng, hãy lưu ý về những mặt trái và nhược điểm của từng phương pháp, cũng như loại dữ liệu mà thuật toán có thể vận hành. Nó có thể được áp dụng cho các đường dẫn 3 chiều không? Nó có thể được sửa đổi để giải thích cho AI của con người chúng ta, những người muốn tránh mìn trên bản đồ không?
Khi nói đến tìm đường, A * gần như là tấm vé vàng mà mọi người đều sử dụng. Bạn chắc chắn nên biết làm thế nào nó hoạt động. ( http://en.wikipedia.org/wiki/A*_search_alacticm )
Đây là một ví dụ hay về A * khi áp dụng cho trò chơi RTS, cần đưa các thực thể có kích thước khác nhau vào tài khoản: http://aigamedev.com/open/tutorials/clparent-basing-pathfinding/
Chúc may mắn!
Các thuật toán tìm đường về cơ bản là một thuật toán giải quyết vấn đề tìm kiếm đồ thị.
http://en.wikipedia.org/wiki/Pathfinding#Alacticms
Được biết đến nhiều nhất là thuật toán của Djikstra: http://en.wikipedia.org/wiki/Dijkstra's_alacticm
và biến thể thuật toán tìm kiếm A * của nó: http://en.wikipedia.org/wiki/A*
Đây là một nguồn tài nguyên khởi đầu tuyệt vời, xem xét tất cả các khía cạnh của việc tìm đường theo cách tiếp cận rất dễ tiêu hóa.
... Tìm đường giải quyết vấn đề tìm đường đi tốt từ điểm xuất phát đến mục tiêu tránh chướng ngại vật, tránh kẻ thù và giảm thiểu chi phí (nhiên liệu, thời gian, khoảng cách, thiết bị, tiền, v.v.). Phong trào giải quyết vấn đề đi một con đường và di chuyển dọc theo nó. Bạn chỉ có thể dành những nỗ lực của mình cho một trong số này. Ở một thái cực, một đường dẫn tinh vi kết hợp với thuật toán chuyển động tầm thường ...
Tìm đường là một vấn đề khá được giải quyết ... như đã đề cập trong hầu hết mọi câu trả lời ở đây, một số biến thể trên A * sẽ là những gì bạn sử dụng.
Thách thức lớn hơn với tôi, là cách bạn muốn đại diện cho con đường của mình . Sử dụng lưới, mã đường dẫn, điều hướng, lưới phân cấp hoặc các cấu trúc phức tạp khác, v.v.
Tôi không có bất kỳ tài liệu tham khảo cụ thể nào trong đầu, nhưng khám phá AIGameDev sẽ cung cấp cho bạn tất cả các loại ý tưởng về những gì ngoài kia.
Chỉ cần nhớ rằng mỗi đại diện có ưu và nhược điểm của nó; không phải là tìm kiếm "cái tốt nhất", mà là tìm ra thứ phù hợp nhất với lối chơi của bạn .
Có một danh sách hay trên Wikipedia: Pathfinding
Theo tôi biết, A * và D * đều khá phổ biến.
Có một số thuật toán tìm đường ra khỏi đó.
Một trong những cái phổ biến nhất có lẽ là A * ( A-Star ). Đây là một thuật toán rất hữu ích nếu bạn có một hàm heuristic có thể cung cấp cho bạn chi phí ước tính để đạt được mục tiêu (ví dụ sẽ là khoảng cách tầm nhìn đến mục tiêu). A * rất hữu ích để tìm đường đi ngắn nhất từ điểm bắt đầu đến điểm kết thúc.
Ngoài ra, còn có thuật toán của Dijkstra , rất hữu ích để tìm ra vật phẩm gần nhất trong số một số vật phẩm. Ví dụ. nếu bạn muốn tìm ra cách tăng sức mạnh (hoặc tương tự) gần nhất với nhân vật chơi game của bạn.
Có một số thuật toán khác, nhưng tôi đoán A * là thuật toán phổ biến nhất. Ví dụ, Mat Buckland có một chương xuất sắc về Tìm kiếm con đường trong Trò chơi lập trình sách AI của mình . Tôi rất khuyến khích bạn để có được một bản sao của nó. Nếu không, bạn sẽ tìm thấy vô số thông tin trực tuyến bằng cách tìm kiếm "Tìm kiếm ngôi sao".
Đây là một hướng dẫn về cách sử dụng Thuật toán của Dijkstra để tìm đường.
Dưới đây là một ví dụ hay về việc A * đang được sử dụng trong một trò chơi với một số mã psuedo: http://www.anotherearlymorning.com/2009/02/pathfinding-with-a-star/
Đây không phải là phần lớn, nhưng chúng tôi đã thảo luận nhiều về thuật toán đồ thị trong lớp thuật toán của chúng tôi vào mùa thu năm 2009. Chúng tôi đã sử dụng cuốn sách này,
Giới thiệu về Thuật toán, Ấn bản thứ ba của Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest và Clifford Stein
http://mitpress.mit.edu/alerskyms/
và nó cũng có các bài giảng youtube đi kèm từ một lớp MIT.
Chương 17, 18 và 19 xử lý những con đường ngắn nhất.
Xem [Thuật toán tìm kiếm đồ thị và cây] trên Wikipedia 1 . Chúng gần như chỉ là một biến thể của Tìm kiếm không gian trạng thái, Bạn chỉ cần đi qua tất cả những thứ này và tìm nơi chúng khác nhau.
Ngoài ra còn có Collaborative Diffusion , đây là một trong những thuật toán được đề cập trước đây được thực hiện một cách thú vị.
Điều này có vẻ thú vị:
http://www.codeproject.com/Articles/455 Tôi tự hỏi liệu nó có tốt hơn A * không?