Thuật toán Jump Point Search hoạt động như thế nào và tại sao nó lại hiệu quả đến vậy?


8

Trong khi thử các applet dưới đây, tôi thấy rằng thuật toán tìm đường dẫn này có tên Jump Point Search mang lại kết quả nhanh hơn đáng kể so với A * và Dijkstra.

http://qiao.github.io/PathFinding.js/visual/

A *: 46 giây nhập mô tả hình ảnh ở đây

Dijkstra: 1 phút 39 giây nhập mô tả hình ảnh ở đây

Tìm kiếm điểm nhảy: Ít hơn 3 giây nhập mô tả hình ảnh ở đây

Không cần phải nói, tôi khá kinh ngạc với kết quả. Từ biểu diễn trực quan, Jump Point Search dường như đưa ra nhiều dự đoán ngẫu nhiên (có thể là rất thông minh) trong việc tìm đường dẫn (ít nhất là từ lựa chọn khối), nhưng tôi chưa tìm thấy trường hợp thử nghiệm nào mà thuật toán này cho kết quả tệ hơn kết quả hơn A * và Dijkstra.

Thuật toán này hoạt động như thế nào? Làm thế nào nó hiệu quả so với A * và Dijkstra?


2
Rõ ràng từ ảnh chụp màn hình của bạn rằng A * mất 7ms để hoàn thành (không phải 46 giây), Dijkstra 13ms (không phải 1m 39s) và JPS 2ms (không phải 3 giây). Bạn lấy số từ đâu?
yannis

Bằng cách định thời gian bằng tay với một bộ đếm thời gian. Lỗi của con người có thể chỉ ra rằng tôi có thể mất vài giây hoặc hơn nhưng không có cách nào mà nó mất nhiều thời gian như đã đề cập trong applet. Có lẽ nó đang đề cập đến một cái gì đó khác hoặc nó là một lỗi.
l46kok

7
Oh, bạn đã thực sự làm điều đó? Thời gian báo cáo công cụ là chính xác: Đây là thời gian để mỗi thuật toán hoàn thành. Độ trễ (đáng kể) sau đó là để trình bày các đường dẫn của thuật toán. Hoạt hình SVG là một trong những điều thú vị nhất trong HTML5, nhưng nó (vẫn) chậm .
yannis

@YannisRizos Dang, tôi nên biết rõ hơn :(
l46kok

1
nó chậm để hiển thị tiến trình của thuật toán, chứ không phải vì "HTML5 chậm", v.v.
Steven Lu

Câu trả lời:


5

Ý tưởng cơ bản là JPS cho phép loại bỏ sớm nhiều con đường ứng cử viên, do đó giảm số lượng tính toán cần thiết.

Trong nhiều bản đồ, nhiều đường dẫn có cùng chi phí dẫn đến cùng một đích, chẳng hạn như bản đồ trò chơi có diện tích mở lớn. JSP cho phép cắt tỉa những đường dẫn đó.

Một lời giải thích sâu sắc có thể được tìm thấy ở đây .


1

Với phiên bản mới nhất của công cụ, JPS thực sự được hiển thị chậm hơn A * đối với nhiều loại biểu đồ, vì giờ đây chúng cũng hiển thị đệ quy JPS.

Tìm kiếm JPS Các nút màu xám được kiểm tra các nút

Điều này cũng đúng trong thế giới thực; trong khi JPS sẽ thường enqueue nút xa hơn, nó thường xem xét nhiều hơn nữa. Cho dù điều đó dẫn đến việc tăng tốc thực tế phụ thuộc vào biểu đồ.

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.