You are on page 1of 18

Thuật Toán A*

Bài toán
• Tìm đường đi ngắn nhất
VD: Cho bản đồ 1 khu vực với các thành phố được
đánh dấu, có chiều dài đường đi giữa những
thành phố thông nhau trực tiếp, Hãy tìm đường đi
ngắn nhất từ 1 thành phố A đến 1 thành phố B.

28/9/2010 Lưu Thế Phương - SPTK33 1


Giải pháp
• Bài toán được chuyển về đồ thị
• Sử dụng kỹ thuật tìm kiếm tốt nhất đầu tiên
(best-first search) với hàm đánh giá f(u).

28/9/2010 Lưu Thế Phương - SPTK33 2


Giải pháp

• f(u) = g(u) + h(u)


– Hàm g(u): độ dài đường đi ngắn nhất từ đỉnh đầu
u0 đến đỉnh u tại thời điểm đang xét
– Hàm h(u): đánh giá độ dài đường đi từ u đến đích
• Là hàm heuristic.
• h(u) <= đường đi ngắn nhất từ u đến đích
– Hàm f(u): đánh giá độ dài đường đi từ u0 đến đích
có đi qua u

28/9/2010 Lưu Thế Phương - SPTK33 3


Giải pháp
• Hàm g(u) ngắn nhất tại thời điểm đang xét

28/9/2010 Lưu Thế Phương - SPTK33 4


Giải pháp
• Hàm h(u) là heuristic, <= đường đi ngắn nhất từ u đến đích

28/9/2010 Lưu Thế Phương - SPTK33 5


Giải pháp
• Hàm h(u) là heuristic, <= đường đi ngắn nhất từ u đến đích

28/9/2010 Lưu Thế Phương - SPTK33 6


Thuật Toán
• Bước 1: cho đỉnh đầu tiên vào tập mở
• Bước 2:
- Nếu tập mở rỗng, dừng (fail -> không có đường đi)
- Ngược lại, chọn đỉnh u có f(u) nhỏ nhất cho vào tập đóng
- Nếu u là đích, dừng (success)
- Ngược lại, qua bước 3
• Bước 3:
- Tính g, f của các đỉnh ui có thể đi tới từ u
- g(ui) = g(u) + (u, ui), f(ui) = g(ui) + h(ui)
• Bước 4:
- Cập nhật các đỉnh ui ở bước 3 vào tập mở O (Open) và tập đóng C
(Closed)
- Nếu ui đã có trong O và gcũ(ui)>gmới(ui) thì cập nhật lại ui.
- Nếu ui đã có trong C và gcũ(ui)>gmới(ui) thì cập nhật lại ui, chuyển ui qua
O (còn gọi là mở nút ui)
- Nếu ui chưa có trong O và C, thì cho vào O
- Quay lại bước 2
28/9/2010 Lưu Thế Phương - SPTK33 7
VD

28/9/2010 Lưu Thế Phương - SPTK33 8


VD
g h f cha
• O= A 0 366 366 _ 
• C = {}

• O = {}
• C= A 0 366 _

28/9/2010 Lưu Thế Phương - SPTK33 9


VD
(0)
g h f cha
S +140=140 253 393 A
Z +75=75 374 449 A
T +118=118 329 447 A

• O= S 140 393 A 
Z 75 449 A
T 118 447 A

• C= A 0 366 _
S 140 393 A

28/9/2010 Lưu Thế Phương - SPTK33 10


(140)
g h f cha
A +140=280 366 646 S
O +151=291 380 671 S
F +99=239 178 417 S
R +80=220 193 413 S

• O= Z 75 449 A
T 118 447 A
O 291 671 S
F 239 417 S
R 220 413 S 

• C= A 0 366 _
S 140 393 A
R 220 413 S

28/9/2010 Lưu Thế Phương - SPTK33 11


(220)
g h f cha
S +80=300 253 553 R
P +97=317 98 415 R
C +146=366 160 526 R

• O= Z 75 449 A
T 118 447 A
O 291 671 S
F 239 417 S
P 317 415 R 
C 366 526 R

• C= A 0 366 _
S 140 393 A
R 220 413 S
P 317 415 R
28/9/2010 Lưu Thế Phương - SPTK33 12
(317)
g h f cha
R +97=414 193 607 P
C +138=455 160 615 P
B +101=418 0 418 P

• O= Z 75 449 A
T 118 447 A
O 291 671 S
F 239 417 S 
C 366 526 R
B 418 418 P

• C= A 0 366 _
S 140 393 A
R 220 413 S
P 317 415 R
28/9/2010 F 239 Lưu Thế Phương - SPTK33 417 S 13
(239)
g h f cha
S +99=338 253 591 F
B +211=450 0 450 F

• O= Z 75 449 A
T 118 447 A
O 291 671 S
C 366 526 R
B 418 418 P 

• C= A 0 366 _
S 140 393 A
R 220 413 S
P 317 415 R
F 239 417 S
B 418 418 P (đích)
28/9/2010 Lưu Thế Phương - SPTK33 14
VD
Kết quả đường đi ngắn nhất tìm được: A S R P B với
độ dài là g(B) = 418

28/9/2010 Lưu Thế Phương - SPTK33 15


BT1

28/9/2010 Lưu Thế Phương - SPTK33 16


BT2

28/9/2010 Lưu Thế Phương - SPTK33 17


Tài liệu tham khảo
• Trương Hải Bằng – AI
• Đinh Mạnh Tường – giáo trình Trí Tuệ Nhân
Tạo – ĐHQG Hà Nội
• Nguyễn Quang Hoan – Nhập môn Trí Tuệ Nhân
Tạo – HVCNBCVT
• Lê Xuân Vinh – Trí Tuệ Nhân Tạo – ĐH Quy
Nhơn

28/9/2010 Lưu Thế Phương - SPTK33 18

You might also like