You are on page 1of 12

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC


TRÍ TUỆ NHÂN TẠO

BÁO CÁO GIỮA KÌ MÔN HỌC


TRÍ TUỆ NHÂN TẠO

Giáo viên hướng dẫn: Lương Hồng Lan

Sinh viên thực hiện: Lê Hùng Tiến

Lớp: D16TTNT&TGMT

Hà Nội, tháng 3 năm 2023


LỜI CẢM ƠN

Trên thực tế không có sự thành công nào mà không gắn liền với
những sự hỗ trợ, sự giúp đỡ dù ít hay nhiều, dù là trực tiếp hay gián tiếp
của người khác. Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường
Đại Học đến nay, chúng em đã nhận được rất nhiều sự quan tâm, giúp đỡ
của Thầy Cô, gia đình và bạn bè.
Xin gửi lời cảm ơn chân thành đến gia đình, bè bạn, đã luôn là nguồn
động viên to lớn, giúp chúng em vượt qua những khó khăn trong suốt quá
trình học tập và thực hiện đồ án.
Mặc dù đã rất cố gắng hoàn thiện đồ án với tất cả sự nỗ lực, tuy nhiên
báo cáo giữa kì môn học Trí tuệ nhân tạo chắc chắn sẽ không thể tránh
khỏi những thiếu sót. Chúng em rất mong nhận được sự quan tâm, thông
cảm và những đóng góp quý báu của các thầy cô và các bạn để đồ án này
ngày càng hoàn thiện hơn.
Sau cùng, chúng em xin kính chúc các thầy cô trong Khoa Công Nghệ
Thông Tin dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao
đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau.

Trân trọng!

Hà Nội, tháng 03 năm 2023


Sinh viên thực hiện:
Lê Hùng Tiến
I. BÀI TOÁN, THÀNH PHẦN BÀI TOÁN VÀ
PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI

1. Bài toán là gì
- Bài toán là một công việc hay một nhiệm vụ cần phải giải quyết.
- Để giải quyết bài toán, ta cần xác định điều kiện cho trước và kết quả cần
thu được.
- Thuật toán là dãy hữu hạn các thao tác cần thực hiện theo một trình tự
xác định để thu được kết quả cần thiết từ những điều kiện cho trước.

2. Các thành phần của bài toán


Phát biểu bài toán theo dạng 5 thành phần:
- Trạng thái bài toán
- Trạng thái đầu
- Trạng thái đích
- Các phép chuyển trạng thái
- Lược đồ chi phí các phép chuyển trạng thái

3. Các phương pháp tìm kiếm kinh nghiệm


* Tìm kiếm ưu tiên tốt nhất (BFS) và giải thuật A*
Nguyên lý chung: Chọn hướng đi triển vọng nhất trong số những
hướng đi đã biết
* Tìm kiếm ưu tiên tốt nhất (BFS):
Ưu điểm của tìm kiếm theo chiều sâu là không phải quan tâm đến sự
mở rộng của tất cả các nhánh. Ưu điểm của tìm kiếm theo chiều rộng là
không bị sa vào các đường dẫn bế tắc. Tìm kiếm BFS kết hợp cả hai
phương pháp trên cho phép ta đi theo một con đường duy nhất tại một thời
điểm, nhưng đồng thời vẫn “quan sát” được những hướng khác. Nếu con
đường đang đi không triển vọng bằng những con đường ta đang “quan sát”
ta sẽ chuyển sang đi theo một trong số các con đường này.
Cụ thể, tại mỗi bước tìm kiếm BFS, ta chọn đi theo trạng thái có khả
năng cao nhất trong số các trạng thái đã được xét cho đến thời điểm đó.
Với tiếp cận này, ta sẽ đi sâu vào những nhánh tìm kiếm có khản năng
nhất nhưng không bị luẩn quẩn trong các nhánh này vì nếu càng đi sâu vào
một hướng mà ta đã phát hiện ra rằng hướng này càng đi thì càng xấu thì
sẽ không đi tiếp hướng hiện tại nữa mà chọn đi theo một hướng tốt nhất
trong số những hướng chưa đi. Đó là ý tưởng chủ đạo của tìm kiếm BFS.
Để minh hoạ ý tưởng này ta có ví dụ sau:

Các con số dưới nút là giá trị hàm Heuristic ứng với nút đó. Nút có giá
trị càng nhỏ thì càng gần với nút đích.
Khởi đầu, chỉ có một nút A nên nó sẽ được mở rộng tạo ra ba nút mới
B, C và D. Do nút C là nút có khả năng nhất nên nó sẽ được mở rộng và
sinh ra hai nút kế tiếp là E và F. Đến đây, ta lại thấy nút B có khả năng
nhất, nên ta chọn mở rộng nút B và tạo được hai nút G và H.
Ta lại thấy nút E có khả năng nhất, vì thế nút E được mở rộng sinh ra
nút I và J. Ở bước tiếp theo, J sẽ được mở rộng vì nó có khả năng nhất.
Quá trình này tiếp tục cho đến khi tìm thấy một lời giải.
Thuật giải tìm kiếm BFS có hai đặc điểm khác với thuật giải tìm kiếm
leo núi dốc đứng. Thứ nhất, trong thuật giải tìm kiếm leo núi, một trạng
thái được chọn và tất cả các trạng thái khác bị loại bỏ, không bao giờ
chúng được xem xét lại. Trong thuật giải tìm kiếm BFS, tại mỗi bước cũng
có một trạng thái được chọn nhưng những trạng thái khác vẫn được giữ lại,
để ta có thể trở lại xét sau đó khi mà trạng thái hiện tại trở nên kém khả
năng hơn những trạng thái đã được lưu trữ. Thứ hai, trong thuật giải BFS,
ta chọn trạng thái tốt nhất mà không quan tâm đén nó có tốt hơn các trạng
thái trước đó hay không. Trong khi đó leo núi sẽ dừng nếu không có trạng
thái tiếp theo nào tốt hơn trạng thái hiện tại.
Thực tế, hiếm có một bài toán nào có thể giải thuần tuý bằng BFS. Ta
thường vận dụng một biên bản đặc biệt của BFS là thuật giải A*.
* Giải thuật A*:
Trong khoa học máy tính, A* (đọc là A sao) là thuật toán tìm kiếm
trong đồ thị. Thuật toán này tìm một đường đi từ một nút khởi đầu tới một
nút đích cho trước (hoặc tới một nút thỏa mãn một điều kiện đích). Thuật
toán này sử dụng một "đánh giá heuristic" để xếp loại từng nút theo ước
lượng về tuyến đường tốt nhất đi qua nút đó. Thuật toán này duyệt các nút
theo thứ tự của đánh giá heuristic này. Do đó, thuật toán A* là một ví dụ
của tìm kiếm theo lựa chọn tốt nhất (BFS).
Điểm khác biệt của A* đối với tìm kiếm theo lựa chọn tốt nhất là nó
còn tính đến khoảng cách đã đi qua. Điều đó làm cho A* "đầy đủ" và "tối
ưu", nghĩa là, A* sẽ luôn luôn tìm thấy đường đi ngắn nhất nếu tồn tại một
đường đi như vậy. A* không đảm bảo sẽ chạy nhanh hơn các thuật toán
tìm kiếm đơn giản hơn. Trong một môi trường dạng mê cung, cách duy
nhất để đến đích có thể là trước hết phải đi về phía xa đích và cuối cùng
mới quay lại. Trong trường hợp đó, việc thử các nút theo thứ tự "gần đích
hơn thì được thử trước" có thể gây tốn thời gian.

* Phương pháp nhánh cận


Ý tưởng:
- Thuật toán nhánh và cận sử dụng tìm kiếm leo đồi với hàm đánh giá f(u).
- Tại trạng thái u, chọn trạng thái v trong số các trạng thái kề với u, với
f(v) đạt min.
Tương tự cho đến khi:
- v là đích, hoặc
- v không có đỉnh kề, hoặc
- v có f(v) lớn hơn độ dài đường đi tối ưu hiện thời.
- Không phát triển v nữa, quay về cha của v để tìm trạng thái tốt nhất trong
các trạng thái còn lại chưa xét.
II. BÀI TOÁN MINH HOẠ TÌM ĐƯỜNG NGẮN NHẤT

Tìm đường đi từ A đến B bằng phương pháp BFS, A* và nhánh cận.


1. Phương pháp tìm kiếm ưu tiên tốt nhất (BFS)
- Ý tưởng: Tìm kiếm tốt nhất đầu tiên = tìm kiếm chiều rộng + hàm đánh
giá.
- Đầu vào:
+ Trạng thái đầu là A
+ Trạng thái kết thúc là B
- Thực hiện:
+ A được xét → C, D, E, F
+ Chọn D, vì h(D) = 6 (min), sinh ra H, E
+ Trong số các đỉnh chưa xét C, H, E, F; chọn F vì h(F) = 7, sinh ra I &
G
+ Chọn I để phát triển, sinh ra B và K
+ B là trạng thái kết thúc
→ Đường đi tốt nhất sẽ là A, D, F, I, B
- Ta có cây sơ đồ trạng thái như sau:
2. Thuật giải A*
- Ý tưởng: Tránh việc xét (phát triển) các nhánh tìm kiếm đã xác định (cho
đến thời điểm hiện tại) là có chi phí cao.
- Sử dụng hàm đánh giá f(n) = g(n) + h(n)
+ g(n) = chi phí từ nút gốc cho đến nút hiện tại n
+ h(n) = chi phí ước lượng từ nút hiện tại n tới đích
+ f(n) = chi phí tổng thể ước lượng của đường đi qua nút hiện tại n đến
đích
3. Phương pháp nhánh cận
- Ý tưởng:
+ Thuật toán nhánh và cận sử dụng tìm kiếm leo đồi với hàm đánh giá
f(u).
+ Tại trạng thái u, chọn trạng thái v trong số các trạng thái kề với u, với
f(v) đạt min.
- Tương tự cho đến khi:

+ v là đích, hoặc

+ v không có đỉnh kề, hoặc


+ v có f(v) lớn hơn độ dài đường đi tối ưu hiện thời.
→ Không phát triển v nữa, quay về cha của v để tìm trạng thái tốt nhất
trong các trạng thái còn lại chưa xét.
- Xét không gian trạng thái ở bài mẫu:
+ Phát triển A, có các đỉnh con C, E, D, F với f(C) = 24, f(D) = 13, f(E)
= 21, f(F) = 27
+ Chọn D, sinh ra các đỉnh con mới là H và E (mới) với f(H) = 25, f(E) =
19
+ Chọn E, sinh ra K và I với f(K) = 17, f(I) = 18
+ Chọn K, sinh ra B với f(B) = g(B) = 21 → đường đi tạm thời là 21
+ Từ B, quay về K, K quay lên E
+ Từ E, sang I với f(I) = 18 < độ dài tạm thời là 21. Sinh ra K, B với f(K)
= 25, f(B) = g(B) = 19 → đường đi tạm thời là 19
+ Với B thì không còn chi phí nào tốt hơn nữa
→ Đường đi tối ưu có độ dài 19

You might also like