Table of Contents
Các thuật toán A * và Dijkstra là những thuật toán cơ bản trong việc tìm kiếm và tìm kiếm đồ thị qua đường đi, được sử dụng rộng rãi trong hệ thống định vị, robot và mạng lưới định tuyến.
Đại diện đồ thị
Các thuật toán hoạt động trên đồ thị, gồm các nút (các cạnh). cạnh có thể có trọng lượng đại diện cho chi phí, khoảng cách, hay thời gian. Biểu đồ có thể được đạo diễn hay không đánh dấu, và trọng lượng thường không phải âm tính.
Hàm phải trả và sự tìm tòi
Thuật toán của Dijkstra dùng chi phí tích lũy từ nút bắt đầu, trong khi A * thêm vào một số ước tính về chi phí còn lại cho mục tiêu.
Hình học
Hãy để G = (V, E) là một đồ thị với các đỉnh V và các cạnh E. Mỗi cạnh (u, v) có một trọng lượng w (u, v). Mục tiêu là tìm đường dẫn ngắn nhất từ đầu nút s để mục tiêu nút t.
Thuật toán Dijkstra cập nhật khoảng cách d(v) cho mỗi đỉnh d(v), khởi tạo là 0 và d(v) = v cho v s. Nó tự động chọn đỉnh với d(v) nhỏ nhất, sau đó làm cho các cạnh cạnh của nó thư giãn.
A* Thay đổi điều này bằng cách tổng hợp một h(v) ước lượng giá trị từ v đến t. Hàm ưu tiên trở thành f(v) = d(v) + h(v). Thuật toán mở rộng nút dựa trên f(v) thấp nhất.
Thuật toán Efficency
Hiệu quả phụ thuộc vào cấu trúc dữ liệu được sử dụng. Thuật toán của Dijkstra có độ phức tạp thời gian của O (E + BAR log
- Biểu đồ với trọng lượng không phải âm tính
- Khả năng tiên đoán được cho A*
- Hàng đợi ưu tiên cho phần chọn nút
- Name