Tải bản đầy đủ (.pdf) (2 trang)

Thuật toán A, Thuật toán A, Thuật toán cổ điển hay

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (253.43 KB, 2 trang )

Môn: Trí tuệ nhân tạo

Lớp TH2006/01,02

Bài tập thực hành 3

Thuật toán A*
Nội dung
Cài đặt thuật toán tìm kiếm đường đi A* áp dụng trên bài toán đồ thị.

Mục tiêu
-

Sinh viên nắm được cơ chế vận hành của thuật toán tìm kiếm đường đi A*, áp
dụng lên một dạng bài toán tìm kiếm cụ thể là tìm kiếm trên đồ thị.

-

Sinh viên có sự quan sát và so sánh các thuật toán đã học: UCS (tìm kiếm với chi
phí g), Greedy (tìm kiếm với heuristic h) và A* (kết hợp g và h).

Yêu cầu
Cho một bản đồ có N thành phố và các đường đi có thể có giữa các thành phố.Chi phi di
chuyển giữa hai thành phố kế cận nhau là w (w > 0), các đường đi có thể là 2 chiều (A
đến được B thì B cũng đến được A), hoặc 1 chiều (chỉ có A đến được B). Cho trước
thành phố xuất phát và thành phố đích.
Hãy tìm đường đi giữa hai thành phố được chỉ định bằng thuật toán A* với h = khoảng
cách Eulicde từ thành phố đang xét đến thành phố đích. Nếu tồn tại đường đi: xuất ra
màn hình thứ tự đường đi. Nếu không tồn tại đường đi: thông báo không có đường đi.
Định dạng dữ liệu đầu vào:
¾ Dòng 1: Số thành phố trên bản đồ


¾ Dòng 2: Thành phố xuất phát và thành phố đích
¾ N dòng tiếp theo: tọa độ (x, y) của các thành phố (x, y > 0)
¾ N dòng tiếp theo: ma trận kề của đồ thị với quy ước:
9 M[i][j] = w: có đường nối trực tiếp từ i đến j với chi phí là w (w > 0)
9 M[i][j] = 0: không có đường nối trực tiếp từ i đến j
Các thành phố được đánh chỉ số từ 0
Thời gian: 1 tuần (03/10/2008 – 09/10/2008)
Quy định nộp: Nộp bài qua Moodle theo thời hạn đã chỉ định, bài nộp không bao
gồm các vấn đề nêu trong mục Các vấn đề khác.
GVHDTH:
Nguyễn Ngọc Thảo, Võ Đình Phong, Lê Ngọc Thành, Trần Ngọc Trung

1


Môn: Trí tuệ nhân tạo

Lớp TH2006/01,02

Ví dụ

Lưu ý: giá trị h trong hình chỉ mang tính minh họa và không có sẵn trong dữ liệu đầu vào.

Các vấn đề khác
Vấn đề so sánh hiệu quả của các dạng thuật toán tìm kiếm: sinh viên cần có sự
quan sát và so sánh các thuật toán tìm kiếm đã được học, các đại diện bao gồm:
UCS (chỉ sử dụng chi phí g), Greedy (sử dụng heuristic h), và A* (kết hợp g và h).
Hiệu quả thuật toán xét trên các tiêu chí: số đỉnh mở, đường đi tối ưu hay không,
thời gian thực hiện (với bài toán có số trạng thái lớn). Cần thực hiện trên các dạng
bài toán khác nhau để nắm vững hơn ý tưởng của bài toán tìm kiếm, ví dụ: bài

toán tìm đường đi trên đồ thị, n-puzzle, n-Queens, tháp Hà Nội…
Với những bài toán dùng A* để tính toán mà có thể có nhiều hàm h khác nhau,
cần tìm hiểu và thử lý giải bằng lý thuyết và thực nghiệm để chứng tỏ hiệu quả
của từng dạng hàm h khác nhau khi đưa vào bài toán cụ thể. Điều này tạo cơ sở
cho việc lập luận vững chắc khi cần quyết định chọn hay tự thiết kế một công
thức tính h cho bài toán mà mình cần giải quyết.
Cài đặt mở rộng liên hệ với thuật toán A*:
-

Cài đặt thuật toán Greedy: đây là khởi nguyên của thuật toán tìm kiếm dựa
trên heuristic. Hãy nhận xét xem Greedy có nhược điểm gì so với A*?

-

Cài đặt IDA*: với cách lặp sâu dần, IDA* nhằm giải quyết vấn đề về bộ
nhớ. Hãy nhận xét xem hiệu quả của IDA* có tốt hơn A* không?

GVHDTH:
Nguyễn Ngọc Thảo, Võ Đình Phong, Lê Ngọc Thành, Trần Ngọc Trung

2



×