2013-02-24 36 views
5

Tôi đang làm việc trên một dự án có rô bốt ảo (Turtles trong mod ComputerCraft cho Minecraft), nơi robot sẽ ở trong mê cung của đường hầm và phải di chuyển xung quanh trong đó. Thế giới là thuận tiện đã được chia thành gạch (một đồ thị 2D Cartesian của họ, với một giá trị boolean passable/không thể vượt qua cho mỗi), và robot xây dựng các đường hầm sẽ bản đồ chúng khi anh ta đi.Kết nối với teleporters

Ngoài ra, có các "phím tắt" teleporter nằm rải rác xung quanh ở những khu vực mà robot cần phải nhanh chóng di chuyển giữa chúng.

Câu hỏi đặt ra là: Cách tốt nhất để có đường dẫn robot đến đích là gì? Làm thế nào hệ thống sẽ xác định các khu vực cần teleporters? A * là thuật toán nổi tiếng nhất, nhưng có những thuật toán nào khác có thể phù hợp với ứng dụng tốt hơn không? Hãy ghi nhớ rằng tôi có rất ít kinh nghiệm với các thuật toán hướng dẫn, vì vậy bạn có thể phải chia nhỏ mọi thứ thành các thuật ngữ cơ sở để tôi hiểu. Bất kỳ đề xuất?

+3

Tại sao bạn không thử A * trước và xem nó hoạt động như thế nào? –

+0

Tôi chắc chắn có thể, nhưng tôi giả sử A * không dùng "phím tắt" như các dịch chuyển tức thời mà không cần hack. Tôi sẽ phải xem xét làm thế nào để thuật toán hoạt động nhiều hơn một chút. – Schilcote

+0

Hack gì? Tôi nghĩ rằng A * có thể làm việc với các cạnh có độ dài bằng không tốt. Tôi tò mò. –

Trả lời

2

Vấn đề duy nhất khi sử dụng A * là tìm kiếm admissible heuristic cho sự cố của bạn. May mắn thay, điều này đã được trả lời here.

Làm cách nào hệ thống xác định các khu vực cần teleporter?

Điều đó phụ thuộc vào nơi rùa thực sự di chuyển đến/từ. Nếu anh ta luôn luôn di chuyển đến/từ cùng một điểm bắt đầu/kết thúc, câu trả lời là tầm thường: thêm dịch chuyển khi bắt đầu và kết thúc. Đối với các thiết lập phức tạp hơn, tôi đoán rằng đây là NP-hard; nếu đúng, bạn sẽ phải xem xét global-optimization strategies(hoặc chỉ cần thử một nhóm vị trí ngẫu nhiên và chọn vị trí tốt nhất).