Tôi hiện đang làm việc để tìm đường cho một trò chơi nơi các đơn vị đang di chuyển, nhưng chúng có quán tính. Hầu hết các thuật toán tìm đường điển hình (A *, Djikastra, v.v.) được thiết kế đơn giản để giảm thiểu độ dài của đường dẫn.
Tuy nhiên, theo như tôi biết, các kỹ thuật này không áp dụng cho các trường hợp đơn vị có quán tính. Nếu đơn vị có quán tính, thì có một sự khác biệt đáng kể về chi phí để đặt một lát theo một hướng cụ thể dựa trên hướng bạn muốn đi.
Ví dụ: chi phí rời khỏi một lát gạch tiến lên phía Bắc cao hơn đáng kể nếu bạn nhập gạch từ phía Đông so với khi bạn nhập từ miền Nam. (Trong ví dụ trước, bạn sẽ phải giảm tốc độ để dừng vận tốc Đông-Tây, trong khi ở ví dụ sau, bạn có thể đi thẳng qua.)
Thực tế là hệ thống có quán tính đồng nghĩa với việc để rẽ, bạn có thể phải giảm tốc độ trước khi rẽ. Suy nghĩ tốt nhất của tôi cho đến nay là bạn tính toán thời gian bổ sung cần thiết để làm chậm, và sau đó thêm nó vào chi phí heuristic của việc di chuyển. Tuy nhiên, điều này dường như ngụ ý rằng bạn không bao giờ có thể thêm một ô vào danh sách đã đóng, vì việc nhập từ một hướng khác về cơ bản có thể thay đổi chi phí di chuyển.
Ngoài ra, dù sao thì khái niệm sử dụng lưới là một sự trừu tượng, bởi vì cả vị trí và vận tốc đều là các khái niệm dấu phẩy động. Có một số thuật toán có thể xử lý tìm đường trên một mặt phẳng mở có quán tính tốt hơn A *, hoặc tôi có thể sửa đổi gì cho một thuật toán có sẵn để làm cho nó phù hợp với loại chuyển động này?