Tìm đường giữa nhiều bản đồ


7

Tôi quan tâm đến việc tìm đường giữa nhiều bản đồ - có thể là bản đồ trong nhà / ngoài trời, các cấp độ khác nhau trong một tòa nhà, v.v. nhưng hạn chế chính là có một (hoặc nhiều) điểm vào / ra giữa các bản đồ khác nhau. Tôi đã xem và không thể tìm thấy bất kỳ giải pháp tốt nào, nhưng tôi biết một số trò chơi sử dụng các hệ thống tương tự.

Tôi đã tìm thấy bài viết này - Tìm kiếm con đường ngắn nhất phân cấp được áp dụng cho quy hoạch tuyến đường cho người dùng xe lăn dường như giải quyết một vấn đề tương tự, nhưng nó hoàn toàn là lý thuyết.

Bất cứ ai cũng làm tương tự với một số kinh nghiệm họ có thể chia sẻ, hoặc một số mẹo?


Tôi sẽ không đưa ra câu trả lời, vì tôi chưa bao giờ phải thực hiện một trường hợp như vậy khiến cho tuyên bố này bị suy đoán, nhưng tôi nghi ngờ có một giải pháp bên cạnh giải pháp rõ ràng là bạn phải tải các nút của mình ngay cả bản đồ chưa được tải (điều này không nên gây rắc rối vì dữ liệu lưới điểm hoặc điều hướng có thể là vài kilobyte ngay cả đối với bản đồ lớn). Không có các nút, không có thông tin mà thuật toán của bạn có thể sử dụng. Ngoài ra, nó phải khá thẳng về phía trước - tải tất cả các biểu đồ và kết nối chúng trên các điểm giao nhau (cửa ra vào, v.v.). chỉnh sửa: oh và +1
TravisG

Đồng ý về điều đó - Tôi không nghĩ rằng việc tải các nút là vấn đề - nó thông minh hơn một chút về cách các bản đồ khác nhau kết hợp với nhau. Giống như bạn nói, có thể đó là một trường hợp đơn giản sử dụng thuật toán tiêu chuẩn (A *?), Tải tất cả các bản đồ được đề cập và sau đó kết nối các bản đồ một cách giả tạo. Nếu có hơn 2 cấp độ thì có lẽ tôi nên sử dụng hai bộ tìm đường, vì tôi không cần toàn bộ đường dẫn - chỉ có đường dẫn ra khỏi bản đồ hiện tại?
Martyn

Chính xác. Có thể nhanh nhất nếu bạn đại diện cho một "bản đồ" (tòa nhà hoặc bất cứ thứ gì mà A * của bạn cần chạy vào) như một nút lớn cho đến khi AI của bạn thực sự đứng trước nó, tìm con đường ngắn nhất tới nút lớn đó, sau đó một khi bạn Sẽ tải toàn bộ biểu đồ của bản đồ con đó và tính toán đường dẫn chính xác hơn. Tính toán tất cả cùng một lúc lúc đầu là imo lãng phí, vì rất nhiều điều có thể xảy ra giữa phép tính đó và AI của bạn di chuyển đến đó.
TravisG

Câu trả lời:


5

Tôi đã làm một cái gì đó tương tự vài năm trước cho một bản demo thử nghiệm của bản sao "Liên minh lởm chởm" có chủ đề cyberchain, được cho là có bản đồ lớn chứa đầy các tòa nhà chọc trời. Đó là một ý tưởng ngu ngốc, rõ ràng bản đồ cho chiến đấu chiến thuật nên gọn gàng và dễ hiểu :)

Để có đường dẫn nhanh hơn, một bản đồ toàn cầu được chia thành nhiều khu vực hình vuông riêng biệt. Khi chúng tôi có tiêu chí cho các khu vực, đã đến lúc tìm "lối vào" có thể giữa mỗi cặp khu vực liền kề. "Lối vào" là điểm chuyển tiếp cho thấy tác nhân này có thể vào khu vực này vào thời điểm này.

Trong ví dụ của bạn với việc xây dựng nhiều tầng, mỗi tầng sẽ là một khu vực có đường viền được xác định bởi sàn, trần và tường ngoài; và các lỗ khác nhau trên tường hoặc sàn, hoặc thang sẽ là lối vào, có thể có rất nhiều trong số chúng. Vì vậy, các lối vào về cơ bản liên kết các nút đường dẫn từ một khu vực đến các nút đường dẫn trong khu vực khác.

Khi bạn đã xác định lối vào, bạn sẽ cần tìm mọi cách có thể để đi qua từng khu vực dẫn đến "bản đồ lối vào khu vực tới lối vào khu vực liền kề" với các cạnh giữa các lối vào hiển thị chiều dài của đường này qua khu vực.

Nếu mọi thứ đều ổn, đại lý của bạn đứng ở tầng 1 sẽ có thể nhanh chóng tìm được hộp đến tầng đặc biệt đó ở tầng 4. Có lẽ một cái gì đó tương tự có thể được sử dụng trong vấn đề của bạn về nhiều bản đồ, vì vậy hy vọng nó có ích.


1

Tôi tin rằng bạn đang tìm kiếm Ngôi sao tìm đường dẫn phân cấp như được mô tả ở đây:

HPA- *

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.