Tốc độ hay sự chính xác?

Một phần của tài liệu Tính toán đường đi trong môi trường giao thông động (Trang 41)

Khả năng thay đổi những đặc điểm của thuật toán A* thông qua Heuristic và hàm giá trị của nó vô cùng hữu dụng trong lập trình game đặc biệt là game thực tại ảo, nơi luôn cần có được sự linh hoạt của thuật toán để phù hợp với những điều kiện khác nhau về phần cứng. Sự chuyển đổi giữa tốc độ và độ chính xác của thuật toán có thể được khai thác để giúp cho game chạy nhanh hơn. Trong phần lớn các game, đôi khi ta không cần đường đi tốt nhất giữa hai điểm, mà chỉ cần một đường đi tương đối. Những gì ta cần sẽ phụ thuộc vào những gì diễn ra trong game, hoặc tốc độ của máy tính.

Giả sử trong game có hai loại địa hình, đất bằng và đồi núi, và chi phí di chuyển trên đất bằng là 1 và chi phí di chuyển trên vùng núi là 3, A* sẽ tìm kiếm một đường đi trên đường bằng dài gấp 3 lần trên địa hình núi, bởi vì hoàn toàn có thể tồn tại đường đi trên địa hình bằng vòng quanh chân núi. Ta có thể tăng tốc độ tìm kiếm của thuật toán A* bằng cách sử dụng 1.5 làm heuristic khoảng cách giữa

hai điểm. Như một cách lựa chọn, ta cũng có thể tăng tốc độ tìm kiếm A* bằng cách giảm số lượng tìm kiếm vòng quanh núi – chỉ cần thay thế chi phí di chuyển trên địa hình núi bằng 2 thay vì 3. Bây giờ nó chỉ tìm kiếm đường đi trên đất bằng dài gấp đôi trên đồi núi.

Sự lựa chọn giữa tốc độ và độ chính xác không cần phải ổn định. Ta có thể lựa chọn một cách linh động tuỳ thuộc theo tốc độ của CPU, lượng thời gian trong khi tìm kiếm, số đơn vị trên bản đồ, tầm quan trọng của mỗi đơn vị, kích thước của cả nhóm, độ khó, hay các nhân tố khác. Một cách để thực hiện việc chuyển đổi linh hoạt này là xây dựng hàm Heuristic mà giả định chi phí nhỏ nhất của một ô lưới là một và xây dựng hàm chi phí theo tỉ lệ

) 1 ) ( ( * 1 ) ( '    g n n g

Nếu  = 0 thì hàm thi phí  1. Trong thiết đặt này, chi phí địa hình hoàn toàn bị bỏ qua, và A* chỉ làm việc với hai trạng thái đi qua được và không đi qua được. Nếu  = 1. thì khi đó hàm chi phí gốc sẽ được sử dụng, và ta có thể có được toàn bộ các tiện ích của A*. Ta có thể chọn  bất kì [0,1] . Ta cũng có thể chuyển từ heuristic trả về giá trị min thực sự thành heuristic trả về giá trị min mong muốn. Ví dụ, nếu phần lớn địa hình là đồng cỏ với chi phí di chuyển là 2 nhưng trong đó có một số khu vực là đường đi với chi phí di chuyển là 1, khi đó ta sẽ phải coi như có một heuristic giả định không có đường đi, và trả về giá trị 2* khoảng cách.

Sự lựa chọn giữa tốc độ và độ chính xác không nhất thiết phải là toàn bộ không gian, ta có thể lựa chọn mang tính khu vực. Ví dụ như sẽ là quan trọng khi chọn một đường đi tốt gần vị trí hiện tại, với giả thiết rằng ta có thể kết thúc tính toán lại đường đi hay chuyển đổi hướng tại một số điểm, vì thế tại sao lại phải quan tâm tới độ chính xác của những phần xa của đường đi. Và cũng có thể là không cần phải có đường đi ngắn nhất trong khu vực an toàn của địa hình, nhưng khi kín đáo đi qua khu vực của kẻ thù thì tính an toàn và tốc độ là quan trọng

Một phần của tài liệu Tính toán đường đi trong môi trường giao thông động (Trang 41)

Tải bản đầy đủ (PDF)

(69 trang)