Data structure

Một phần của tài liệu ỨNG DỤNG PHƯƠNG PHÁP LUẬN SÁNG TẠO KHOA HỌC TRONG VẤN ĐỀ TÌM ĐƯỜNG ĐI NGẮN NHẤT (Trang 36)

Xây dựng map

Để tiện cho việc minh họa thì thuật toán này sẽ được cài đặt trên một mô hình lưới ( grid ), co hình thù như sau:

Việc sử dụng mô hình lưới giúp cho bảo đảm được tỉ lệ giữa các đỉnh luôn như nhau, cũng nhu tính chất đơn giản và dễ hiểu cúa nó. Cài đặt và biểu diễn thuật toán A* bằng Grid sẽ dễ minh họa hơn cho người dùng.

Việc xác định các đinh trên đồ thị hình lưới được mô họa như hình sau:

Ta dễ dàng thấy được rằng việc tin toan khoảng cách giữa các ô trong đồi thị này rất đơn giản vì chúng đã có một tỉ lệ nhất định. Số cột hay sô hàng trong đồ thị cũng được dễ dàng tinh chỉnh sao cho phù hợp với yêu cầu của người dùng.

Thuật toán A* có 3 tính chất quan trọng mà ta phải lưu ý trong quá trình cài đặt. + Thuật toán sẽ luôn trả về một tập hợp những điểm từ đầu cho đến đích sao cho chi phí của tập hợp này là thấp nhất.

+ Thuật toán sử dụng một phương pháp “ước lượng” (Heuristic) để áp dụng trong việc tìm kiếm các node gần với mục tiêu nhất. Tiết kiệm được chi phí vì không phải tìm kiếm toàn bộ. Điều này có khi còn giúp cho việc xử lý còn nhanh hơn.

+ Thuật toán A* dựa trên ý tưởng các node trên đồ thị có một chi phí riêng khác nhau. Nếu như tất cả các node này đều có chi phí như nhau thì tập hợp các điểm được trả về bởi thuật toán này sẽ là con đường ngắn nhất. Ngoài ra, nó còn cho phép ta thêm những mức chi phí di chuyển khác nhau giữa các đỉnh.

Cài đặt:

+ Thuật toán A* được sử dụng bởi 2 list những điểm. Trong đó, bao gồm một danh sách đóng ( closed list ) sẽ chứa những điểm tối ưu trên suốt quá trình tìm kiếm. Và một danh sách mở (open list) trong đó chứa các điểm mà thuật toán đang xem xét . Trong đó mỗi node sẽ bắt buộc có 3 giá trị cơ bản đó là F,G và H.

G: chi phí đích thật giữa 2 điểm đang xét

H: chi phí ước lượng từ điểm đang xét cho đên điểm đích cuối cùng

F = G + H : giá trị F sẽ cho ta biết được chi phí mà ta có thể phải bỏ ra để đi đên đích đến cuối cùng.

Bên cạnh đó, mỗi node còn cần thêm một số thông tin phụ như là tọa độ của chúng trên đồ thì, thông tin về node cha của chúng.

Mả giã:

B1: tạo một open list, ban đầu chỉ chứa đúng điểm khởi đâu B2: tạo một close list, ban đầu danh sách này rổng.

B3.1:Kiểm tra và trả về node có f thấp nhất trong Open list B3.2:

if (đây là node mục tiêu) ( return FOUND)

else (

Thêm Node đang xét vào trong Close list và bắt đầu xem xét các nút xung quanh nó.

foreach (mỗi node xung quanh) (

if (node này đã có trong Close list và giá trị g hiện tại thấp hơn so với giá trị G trong Close list) (

Cập nhật giá trị G cho node này

Thay đổi node Parent của node hiện tại là node đang xét.

)

else if (node này đã có trong Open list và giá trị g hiện tại thấp hơn so với giá trị G trong Open list) (

Cập nhật giá trị G cho node này

Thay đổi node Parent của node hiện tại là node đang xét.

)

else Node này không có trong Open list cũng như trong Close List (

Thêm node này vào trong Open list và cập nhật giá chị G cho node

}

Một phần của tài liệu ỨNG DỤNG PHƯƠNG PHÁP LUẬN SÁNG TẠO KHOA HỌC TRONG VẤN ĐỀ TÌM ĐƯỜNG ĐI NGẮN NHẤT (Trang 36)

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

(39 trang)
w