Giải thuật Best First Search - BeFS Best Frist Search: là một loại thuật toán tìm kiếm khám phá biểu bằng cách mở rộng nút hứa hẹn nhất được chọn theo quy tắc cụ thể.. Judea Pearl đã mô
Trang 1TRƯỜNG ĐẠI HỌC LAO ĐỘNG – XÃ HỘI
-o0o -BÀI BÁO CÁO TRÍ TUỆ NHÂN TẠO
Trang 2TRƯỜNG ĐẠI HỌC LAO ĐỘNG – XÃ HỘI
-o0o -BÀI BÁO CÁO TRÍ TUỆ NHÂN TẠO
ĐỀ 1 Thành viên nhóm:
Vũ huy hoàng – 1117091685 - thực hiện phần 1
Nguyễn Tiến Đạt -1117092645 – thực hiện câu hỏi 9.2 ,9.3, 9.4 Hoàng Thị Bích Ngọc -1117092121- thực hiện câu hỏi 9.5 9.6 Lương Thị Linh -1117092120 - thực hiện câu hỏi 9.7 , 9.8 ,9.9 Phạm Huy Hoàng - 1117092116 - thực hiện phần 3 3
Năm 2023-2024
Trang 3MỤC LỤC
MỤC LỤC 3
MỞ ĐẦU 4
PHẦN 1: BÀI TOÁN TÌM KIẾM LỜI GIẢI TRÊN KHÔNG GIAN TRẠNG THÁI 6
I Giải thuật Best First Search - BeFS 6
II Ứng dụng BeFS giải bài toán người đưa thư 6
1 Giới thiệu bài toán 6
2 Giải bài toán toán người đưa thư 6
III Cài đặt thuật toán Best First Search cho bài toán người đưa thư 8
1 Ngôn ngữ lập trình 8
2 Cài đặt thuật toán 9
PHẦN 2: BÀI TOÁN LOGIC 12
Câu 9.2 12
Câu 9.3 12
Câu 9.4: 13
Câu 9.5 15
Câu 9.6 15
Câu 9.7 17
Câu 9.8 18
Câu 9.9 19
PHẦN 3 : HỌC MÁY 22
1 Thuật toán cây quyết định( CART) 22
2 Áp dụng phân lớp dữ liệu Iris bằng cây quyết định CART 24
3 Cài đặt thuật toán cây quyết định CART với dữ liệu Iris 25
TÀI LIỆU THAM KHẢO 26
1 Tài liệu tham khảo phần 1 : 26
2 Tài liệu tham khảo phần 2: 26
3 Tài liệu tham khảo phần 3 26
Trang 4MỞ ĐẦU
Trí tuệ nhân tạo (Artificial Intelligence - AI) là một lĩnh vực khoa học máy tính chuyên nghiên cứu và phát triển các hệ thống có khả năng thực hiện các nhiệm vụ mà trước đây chỉ con người mới có thể làm được, chẳng hạn như học tập, lập luận, giải quyết vấn đề, hiểu ngôn ngữ, và nhận diện các mô hình phức tạp AI không chỉ dừng lại ở việc mô phỏng các hành vi thông minh mà còn tìm cách vượt qua giới hạn của trí tuệ con người, tạo ra những giải pháp mới và sáng tạo cho các vấn đề phức tạp trong thế giới thực
AI hiện nay được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau, mang lại những cải tiến đáng kể và mở ra nhiều khả năng mới như :
Y Tế: AI được sử dụng để chẩn đoán bệnh, phân tích hình ảnh y khoa, và phát triển các phương pháp điều trị cá nhân hóa Hệ thống AI có thể phân tích lượng lớn dữ liệu y tế để đưa ra những chẩn đoán và dự báo chính xác hơn so với các phương pháp truyền thống
Giao Thông: Các hệ thống xe tự lái, quản lý giao thông thông minh và dự báo lưu lượng giao thông sử dụng AI để cải thiện an toàn và hiệu quả giao thông
Tài Chính: Trong lĩnh vực tài chính, AI hỗ trợ phân tích dữ liệu lớn, phát hiện gian lận, và đưa ra các quyết định đầu tư thông minh Các hệ thống giao dịch tự động và quản lý rủi ro sử dụng AI để cải thiện hiệu quả và độ chính xác
Giáo Dục: AI đóng vai trò quan trọng trong việc phát triển các hệ thống học tập thích ứng và hỗ trợ giảng dạy cá nhân hóa
Trong bài báo cáo này của bọn em đã phần nào tìm hiểu được về kiến thức của môn học AI Bài báo cáo được thực hiện bởi 5 thành viên :
Vũ huy hoàng – 1117091685 - thực hiện phần 1: Tìm kiếm lời giải trên không gian trạng thái
Nguyễn Tiến Đạt -1117092645 – thực hiện phần 2: bài toán logic câu hỏi 9.2 ,9.3, 9.4
Hoàng Thị Bích Ngọc -1117092121- thực hiện phần 2: bài toán logic câu hỏi 9.5 9.6
Trang 5Lương Thị Linh -1117092120 - thực hiện phần 2: bài toán logic câu hỏi 9.7 , 9.8 ,9.9
Phạm Huy Hoàng - 1117092116 - thực hiện phần 3: Học máy 3
Trang 6PHẦN 1: BÀI TOÁN TÌM KIẾM LỜI GIẢI TRÊN KHÔNG
GIAN TRẠNG THÁI
I Giải thuật Best First Search - BeFS
Best Frist Search: là một loại thuật toán tìm kiếm khám phá biểu bằng cách
mở rộng nút hứa hẹn nhất được chọn theo quy tắc cụ thể
Judea Pearl đã mô tả tìm kiếm đầu tiên tốt nhất là ước tính mức độ hứa
hẹn của nút n bằng "hàm đánh giá heuristic f(n) nói chung, điều này có thể phụ thuộc vào mô tả của n , mô tả mục tiêu, thông tin được thu thập bằng cách tìm
kiếm cho đến thời điểm đó và quan trọng nhất là vào bất kỳ kiến thức bổ sung nào
II Ứng dụng BeFS giải bài toán người đưa thư
1 Giới thiệu bài toán
Bài toán người đưa thư là một trong những bài toán tối ưu trên đồ thị đượcứng dụng rộng rãi trong thực tế Các bài toán đặt ra trong các ứng dụng như vậythường có cơ sở dữ liệu lớn nên việc rút ngắn và tìm kiếm đường đi ngắn nhất giữahai đỉnh trong đồ thị là một vấn đề cần thiết và phải được tối ưu nên bài toán tìmkiếm đường đi giữa 2 đỉnh là một bài toán chúng ta cần giải quyết
2 Giải bài toán toán người đưa thư
Giả dụ bạn là một người đưa thư và bạn có danh sách các địa chỉ cần giao(một bản đồ) như hình 1 phía dưới
Trang 7Hình 1: đồ thị trang tháiTrong đó điểm xuất phát của bạn là đỉnh A, địa chỉ bạn cần giao là điểm B
và bạn phải giao đến điểm B nhanh nhất có thể Đây là lúc mà phương pháp tìmkiếm Best Frist Search (BeFS) được áp dụng để tìm cho bạn con đường ngắn nhấtđến đích
Để thực hiện bài toán trên bằng phương pháp BeFS :
Ta sử dụng danh sách Open để lựa chọn trạng thái (đỉnh) vừa sinh ra và
chưa xét Lưu ý: Các phần tử sinh ra được sắp xếp theo hàm h(n) Nếukhông sắp xếp thì chọn giá trị h(n) tốt nhất
Sử dụng danh sách Closed để chứa các đỉnh đã xét.
Sử dụng mạng Father[1 n] để lưu lại vết đường đi xuất phát từ đỉnh s,
Father[w] = v, nếu w được thăm từ v Mảng Father khởi tạo null Danh sách
đỉnh kề của v ký hiệu Ke(v)
Đỉnh xuất phát s, đỉnh đích gTa có dồ thị trạng thái sau đây:
Với hình 1 sau khi sử dụng phương pháp BeFS ta có kết quả như sau:Lần
lặp
2 D6 [E7 ,I8,F10, C15] A20,D6
3 E7 [G5, I8,F10,K12,C15] A20,D6,E7
4 G5 [B0, H3,I8,F10,K12,C15] A20,D6,E7,G5
5 B0 [H3,I8,F10,K12,C15] A20,D6,E7,G5,B0
Trang 8Với lần lặp đầu tiên ta bắt đầu tại đỉnh A và xét các đỉnh lân cận với A là [D,E,C] vào danh sách Open (chưa xét) ta đưa đỉnh A vào danh sách Closed (đã xét)
Lần lặp 2 ta chọn đỉnh D là điểm đến tiếp theo vì D có giá trị h(n) tốt nhất
là 6 và đưa các điểm lân cận của D là [I,F] vào danh sách Open Ta đưa đỉnh D vào danh sách Closed
Lần lặp 3 ta chọn đỉnh E là điểm đến tiếp theo vì E có giá trị h(n) tốt nhất
là 7 và đưa các điểm lân cận của E là [G,K] vào danh sách Open Ta đưa đỉnh Evào danh sách Closed
Lần lặp 4 ta chọn đỉnh G là điểm đến tiếp theo vì G có giá trị h(n) tốt nhất
là 5 và đưa các điểm lân cận của G là [H,B] vào danh sách Open Ta đưa đỉnh
G vào danh sách Closed
Lần lặp 5 ta chọn đỉnh B là điểm đến tiếp theo vì B có giá trị h(n) tốt nhất
là 0 và B cũng là điểm cần đến nên ta kết thúc việc xét duyệt để tìm ngược lại đường đi Ta đưa đỉnh B vào danh sách Closed
Sau khi tìm ngược lại đường đi ta có kết quả là A – E – G – B
III Cài đặt thuật toán Best First Search cho bài toán người đưa thư
Jupyter là một nền tảng tính toán khoa học mã nguồn mở, với khả năng nổi bật cho phép tương tác trực tiếp với từng dòng code (interactive), hỗ trợ hơn
40 ngôn ngữ lập trình, trong đó tập trung vào 3 ngôn ngữ là Julia, Python và R Bên cạnh đó, Jupyter cũng là một công cụ hoàn toàn miễn phí, được tạo ra với mục đích nhắm đến khoa học dữ liệu và giáo dục, giúp mọi người cùng học lập trình dễ dàng hơn (cụ thể ở đây là Python) Jupyter có tính tương tác nên có thể
sử dụng làm môi trường chạy thử và giảng dạy
Trang 92 Cài đặt thuật toán
Để cài đặt thuật toán BeFS cho bài toán người đưa thư (hình 1) đầu tiên ta cần khai báo 2 thư viện “defaultdict” , “PriorityQueue” và nhập dữ liệu của đồ thị
Ta khởi tạo một class Node để biểu diễn một nút trong cấu trúc dữ liệu cây Mỗi Node bao gồm các thuộc tính sau:
- name : tên của nút
- par : Tham chiếu đến nút cha của nút hiện tại Mặc định là None nếu nút hiện tại là nút gốc của cây
- h : là hàm đánh giá của nút hiện tại
Các phương thức trong lớp Node bao gồm:
- display : hiển thị tên của nút và hàm đánh giá của nút đó
- lt : phương thức so sánh nhỏ hơn được sử dụng để so sánh hàm đánh giá của nút hiện tại với nút khác Nếu h của nút hiện tại nhỏ hơn thì sẽ trả
về True; ngược lại trả về False
Trang 10- eq : phương thức so sánh bằng được sử dụng để so sánh tên của nút hiện tại với tên của nút khác Nếu tên của nút hiện tại bằng tên của nút khác thì sẽ trả về True; ngược lại trả về False.
Các phương thức này giúp quản và thao tác với các đối tượng Node trongcấu trúc dữ liệu của đồ thị một cách dễ dàng và linh hoạt hơn
Tiếp theo chúng ta cần kiểm tra sự tồn tại của đối tượng trong hàng đợi
và tính toán khoảng cách từ nút gốc đến một nút bất kỳ:
- CheckInPriority(tmp, c) : Hàm này kiểm tra xem một đối tượng Node
‘tmp’ có ở trong hàng đợi ‘c’ hay không Nếu ‘tmp’ là None, trả về False.Nếu ‘tmp’ tồn tại trong hàng đợi trả về True
- getPath(O, distance) : Hàm này được sử dụng để in ra tên của nút ‘O’ và tính toán khoảng cách từ nút gốc đến nút ‘O’ bằng cách cộng thêm h (O.h) của nút đó vào biến distance Nếu nút ‘O’ có nút cha (O.par) khác
sẽ gọi đệ quy chính nó với đối số là nút cha của ‘O’ và cập nhật giá trị của biến ‘distance’ Khi đến nút gốc (nút cha là None) hàm sẽ tự in ra thông báo về khoảng cách tính được từ nút gốc đến nút ‘O’
Tiếp theo chúng ta triển khai thuật toán tìm kiếm theo chiều rộng (BFS)
Trang 11Hàm nhận hai đối tượng Node mặc định là A và B Ta khởi tạo hàng đợi Open và Closed dùng để lưu các nút chưa duyệt và đã xét “S.h = data[S.name][-1] ” dùng để truy xuất tới phần tử cuối cùng trong data sau đó ta đưa nút ‘S’ vào hàng đợi Open để bắt đầu tìm kiếm.
Trong vòng lặp While ta lặp cho đến khi hàng đợi Open trống Lấy nút đầu tiên ‘O’ ra khỏi hàng đợi Open và đưa vào Closed In ra tên nút ‘O’ đang được duyệt và hàm đánh giá (h) của nút đó Nếu nút ‘O’ bằng nút ‘G’ thông báotìm kiếm thành công, tính toán và in ra khoảng cách từ nút gốc đến nút ‘O’, sau
đó kết thúc thuật toán Nếu vòng lặp kết thúc và hàng đợi Open trống mà vẫn chưa tìm được thông báo tìm kiếm thất bại
Kết quả khi chạy thử chương trình với điểm gốc là A và điểm đích là B
Trang 12PHẦN 2: BÀI TOÁN LOGIC
quy tắc suy luận tổng quát tồn tại (Existential generalization) cho phép bạn suy
ra một mệnh đề với lượng từ tồn tại từ một mệnh đề cụ thể
Được cho: Một mệnh đề với chủ ngữ và vị ngữ cụ thể Trong ví dụ này,
mệnh đề là Likes(Jerry, IceCream), có nghĩa là Jerry thích kem một cách
cụ thể
Suy luận: Bạn có thể suy ra một mệnh đề mới nói rằng "tồn tại một thứ
gì đó" thỏa mãn vị ngữ Trong trường hợp này, mệnh đề suy ra là x ∃Likes(x, IceCream), có nghĩa là tồn tại ai đó (được biểu thị bằng biến x) thích kem
Điều kiện của quy tắc suy luận:
Mệnh đề bạn bắt đầu phải có một thành phần chủ ngữ (Jerry trong
trường hợp này) và một vị ngữ (Likes(x, y) trong trường hợp này).
Biến bạn đưa vào (x trong trường hợp này) không được xuất hiện trong
mệnh đề ban đầu Điều này đảm bảo rằng bạn đang tổng quát hóa về một cái gì đó nằm ngoài phạm vi của mệnh đề ban đầu
Trang 13Chỉ có thể suy ra AsHighAs(Kilimanjaro, Everest) ( x AsHighAs(x, Everest))∃
là kết quả hợp lệ của việc áp dụng phép lược bỏ tồn tại (Existential
Instantiation) cho cơ sở tri thức được cung cấp
Giải thích:
Phép lược bỏ tồn tại cho phép bạn suy ra rằng một thực thể cụ thể nào
đó có một thuộc tính nhất định, dựa trên việc biết rằng tồn tại một thực thể có thuộc tính đó.
Trong cơ sở tri thức đã cho, x AsHighAs(x, Everest) khẳng định rằng ∃tồn tại một ngọn núi (được biểu thị bằng x) có độ cao bằng Everest
AsHighAs(Everest, Everest) không phải là một kết quả hợp lệ vì nó
không giới thiệu một thực thể mới Cả chủ ngữ và vị ngữ đều đề cập đến cùng một ngọn núi (Everest), không cung cấp thông tin mới về những ngọn núi khác
AsHighAs(Kilimanjaro, Everest) AsHighAs(BenNevis, Everest) ∧
cũng không phải là kết quả hợp lệ vì phép lược bỏ tồn tại chỉ cho phép suy ra một mệnh đề duy nhất tại một thời điểm Bạn cần áp dụng phép lược bỏ tồn tại nhiều lần để suy ra cả hai mệnh đề này, nhưng mỗi lần áp dụng chỉ cung cấp thông tin về một ngọn núi cụ thể
Tóm lại:
Phép lược bỏ tồn tại hữu ích để chuyển từ kiến thức về sự tồn tại của một thực thể sang kiến thức về một thực thể cụ thể có các thuộc tính mong muốn
Trong trường hợp này, AsHighAs(Kilimanjaro, Everest) là một kết quả hợp lệ vì nó cho biết rằng ngọn núi Kilimanjaro có cùng độ cao với Everest
Trang 143 Older(Father(y), y) và Older(Father(x), John):
Không có mgu nào tồn tại
Giải thích:
Tương tự như trường hợp 1, câu đầu tiên yêu cầu Father(y) phải giống y
Câu thứ hai cho phép Father(x) khác John
Những ràng buộc này không thể được điều hòa
Trang 15Câu 9.5
với mỗi cặp câu nguyên tử, hãy đưa ra từ thống nhất tổng quát nhất nếu nó tồn tại:
1 P(A, A, B), P(x, y, z)
2 Q(y, G(A, B)), Q(G(x, x), y)
3 Older(Father(y), y), Older(Father(x), Jerry)
4 Knows (Father(y), y), Knows(x, ).
Bài làm :
1 P(A, A, B) và P(x, y, z)
- Đối với cặp này, chúng ta có thể thấy rằng A và x có thể được thay thế cho nhau, vì vậy từ thống nhất có thể là P(x, x, B)
2 Q(y, G(A, B)) và Q(G(x, x), y)
- Trong trường hợp này, chúng ta thấy rằng y có thể thay thế cho G(x, x), vì vậy từ thống nhất có thể là Q(y, y)
3 Older(Father(y), y) và Older(Father(x), Jerry)
- Đây là trường hợp mà chúng ta không thể thống nhất tổng quát một cách đơngiản Older(Father(y), y) mô tả một người cha già hơn con mình, trong khi Older(Father(x), Jerry) mô tả một người cha già hơn một người tên Jerry
Chúng không thể được thay thế lẫn nhau một cách thống nhất
Trang 162 Xây dựng mạng lưới cho câu tuyển dụng (IBM,y) (“Mọi người đều làm việc cho IBM”) Hãy nhớ bao gồm mọi loại truy vấn thống nhất với câu.
3.Giả sử rằng lập chỉ mục cho mỗi câu dưới mỗi nút trong mạng phụ của nó Giải thích cách hoạt động khi một số câu này chứa các biến; sử dụng làm ví dụ các câu trong (a) và (b) và truy vấn tuyển dụng (x,Father(x))
Richar d John
Mother
Fathe r
Tuyển dụng
IBM
Trang 173 Giả sử rằng lập chỉ mục cho mỗi câu dưới mỗi nút trong mạng phụ của nó Khi một số câu này chứa các biến, truy vấn "Tuyển dụng(x, father(x))" sẽ hoạt động như sau:
- Câu (a) có dạng "Tuyển dụng(x, father(x))" Đây là một truy vấn tổng quát vớibiến x, nơi x đại diện cho một đối tượng nào đó mà cha của nó tuyển dụng Trong mạng lưới, ta sẽ đi từ gốc (Tuyển dụng) và tiếp tục theo nhánh "father" cho đến khi tìm thấy đối tượng thỏa mãn truy vấn Ví dụ, nếu ta có một nút con dưới "father" là "James", truy vấn sẽ trả về "Tuyển dụng(James,
father(James))"
- Câu (b) không chứa biến, do đó truy vấn sẽ tạo ra các phát biểu cụ thể dựa trênthông tin trong câu Ví dụ, nếu ta có một nút con dưới "father" là "Richard", truy vấn sẽ trả về "Tuyển dụng(Richard,father(Richard))"
Câu 9.7
Viết các cách biểu diễn logic cho các câu sau, phù hợp để sử dụng với Modus Ponen tổng quát:
1 Ngựa, bò và lợn là động vật có vú
2 Con của ngựa là ngựa
3 Bluebeard là một con ngựa
4 Bluebeard là cha mẹ của Charlie
5 Con cái và cha mẹ là mối quan hệ nghịch đảo
6 Mỗi động vật có vú đều có cha mẹ
Trang 18P2: "Con của ngựa là ngựa."
P2 => Q(con của ngựa, ngựa)
P3: "Bluebeard là một con ngựa."
Những câu hỏi này liên quan đến vấn đề thay thế và Skolemization
1 Cho tiền đề x yP(x,y), sẽ không hợp lý khi kết luận rằng qP(q,q) Cho ví ∀ ∃ ∃
dụ về vị từ P trong đó điều đầu tiên là đúng nhưng điều thứ hai là sai
2 Giả sử rằng một công cụ suy luận được viết không chính xác và bỏ qua phần kiểm tra xảy ra, do đó nó cho phép một chữ như P(x,F(x)) thống nhất với P(q,q).(Như đã đề cập, hầu hết các triển khai tiêu chuẩn của Prolog thực sự đều cho phép điều này.) Hãy chứng minh rằng công cụ suy luận như vậy sẽ cho phép kếtluận yP(q,q) được suy ra từ tiền đề x yP(x,y).∃ ∀ ∃
3 Giả sử rằng một quy trình chuyển đổi logic bậc nhất thành dạng mệnh đề không chính xác Skolemizes x yP(x,y)đến P(x,Sk0)tức là, nó thay thế y bởi ∀ ∃hằng số Skolem chứ không phải bởi hàm Skolem của x Chứng tỏ rằng một công cụ suy luận sử dụng thủ tục như vậy cũng sẽ cho phép qP(q,q) được suy ∃