TRƯỜNG ĐẠI HỌC ĐIỆN LỰCKHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN MÔN NHÂP MÔN TRÍ TUỆ NHÂN TẠO ĐỀ T I: PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI THỎA MÃN CÁC R NG BUỘC V B I TOÁN 8 QUÂN HẬ
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
MÔN NHÂP MÔN TRÍ TUỆ NHÂN TẠO
ĐỀ T I: PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI THỎA MÃN CÁC R NG BUỘC V B I TOÁN 8 QUÂN HẬU TRÊN
B N CƠ
Sinh viên thực hiện : PHAN TIẾN HUY
PHÙNG THÁI SƠN Giảng viên hướng dẫn : PHẠM HỒNG ĐỨC
Hà Nội, tháng năm 2022
Trang 4LỜI MỞ ĐẦU
Cờ vua là một trò chơi giải trí xuất hiện từ khoảng thế kỷ thứ VI và ngàycàng trở nên phổ biến trên thế giới Bên cạnh việc chơi cờ giải trí, người ta cònsuy nghĩ ra nhiều bài toán xung quanh bàn cờ vua Một trong những bài toánphổ biến về cờ vua đó là bài toán “8 quân hậu” Đây cũng là một trong nhưngbài toán nổi tiếng và quen thuộc đối với người lập trình
Bài toán 8 quân hậu được đưa ra vào năm 1848 bởi kỳ thủ Max Bezzel,nhiều nhà toán học (trong đó có Gauss và Georg Cantor) đã có các công trìnhnghiên cứu về bài toán này và tổng quát nó thành bài toán xếp hậu Từ đó nhóm
chúng em quyết định chọn đề tài “Phương pháp tìm kiếm lời giải thỏa mãn các ràng buộc và Bài toán 8 quân hậu trên bàn cờ” sử dụng thuận toán quay lui vét
cạn Do thời gian làm báo cáo có hạn nên không tránh khỏi thiếu xót chúng emrất mong được sự góp ý của thầy, cô giáo để bọn em tiếp tục hoàn thiện.Chúng em xin trân thành cảm ơn !
Trang 5CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Các vấn đề cơ bản của trí tuệ nhân tạo
Trí tuệ nhân tạo hay trí thông minh nhân tạo (Artificial intelligence – viếttắt là AI) là một ngành thuộc lĩnh vực khoa học máy tính (Computer science)
Là trí tuệ do con người lập trình tạo nên với mục tiêu giúp máy tính có thể tựđộng hóa các hành vi thông minh như con người
Trí tuệ nhân tạo là một nhánh của khoa học liên quan đến việc làm chomáy tính có những khả năng của trí tuệ con người, tiêu biểu như các khả năng
“suy nghĩ”, “hiểu ngôn ngữ”, và biết “học tập”
Trí tuệ nhân tạo khác với việc lập trình logic trong các ngôn ngữ lập trình
là ở việc ứng dụng các hệ thống học máy (machine learning) để mô phỏng trítuệ của con người trong các xử lý mà con người làm tốt hơn máy tính
Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của conngười như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểungôn ngữ, tiếng nói, biết học và tự thích nghi,…
Tuy rằng trí thông minh nhân tạo có nghĩa rộng như là trí thông minhtrong các tác phẩm khoa học viễn tưởng, nó là một trong những ngành trọng yếucủa tin học Trí thông minh nhân tạo liên quan đến cách cư xử, sự học hỏi vàkhả năng thích ứng thông minh của máy móc
Các nền tảng của trí tuệ nhân tạo:
- Triết học :
+ Logic
+ Các phương pháp suy diễn
+ Các cơ sở (nền tảng) của việc học
Trang 6Lịch sử trí tuệ nhân tạo:
- Những năm 50: Khai sinh ngành khoa học trí tuệ nhân tạo
- Thí nghiệm Turing: Sử dụng máy để trả lời các câu hỏi của con người
- 8/1956: J McCarthy, M Minsky, … đưa ra khái niệm “trí tuệ nhân tạo”
- Chương trình đầu tiên về trí tuệ nhân tạo có nguồn gốc từ lý thuyếtlogic, và từ các trò chơi cờ
- Ngôn ngữ lập trình LISP ra đời, phù hợp với các nhu cầu xử lý đặctrưng của trí tuệ nhân tạo
Những năm 60: Có nhiều đề án về trí tuệ nhân tạo
- Chương trình chứng minh các định lý hình học phẳng
- Hệ thống giải bài toán tổng quát GPS
- Chương trình ELIZA có khả năng làm việc giống như một chuyên giaphân tích tâm lý
Những năm 70: Bắt đầu khai thác và ứng dụng các kết của nghiên cứu vềtrí tuệ nhân tạo Các thành quả của trí tuệ nhân tạo thuộc các lĩnh vực sau:
- Biểu diễn tri thức và suy diễn
- Hệ chuyên gia
- Xử lý ngôn ngữ tự nhiên (cho phép con người liên lạc với máy, ítnhất là bằng tiếng Anh)
- Người máy thông minh
Những năm 80: Trí tuệ nhân tạo thâm nhập vào các ngành kinh tế: máygiặt, máy ảnh sử dụng trí tuệ nhân tạo
Những năm 90: Trí tuệ nhân tạo đạt được các thành tựu:
- Cài đặt thành phần thông minh trong các hệ thống thông tin
- Làm rõ hơn các thành phần của ngành khoa học trí tuệ nhân tạo
- Tiến hành các nghiên cứu mới: về cơ chế suy lý, về
- Trí tuệ nhân tạo phân tán, về bài toán học, về các mô hình tính toán,…Vào ngày 11 tháng 5 năm 1997, máy tính Deep Blue của IBM đã trởthành máy tính đầu tiên đánh bại một nhà vô địch cờ vua thế giới, GarryKasparov Siêu máy tính này được xây dựng trên một framework của IBM, cókhả năng tính toán 200 triệu nước đi mỗi giây Khả năng tính toán của DeepBlue cũng được cải thiện với việc phân tích hàng ngàn trận đấu của nhữngngười chơi cờ vua giỏi nhất thế giới
Thế kỷ 21: Big Data, Deep Learning và ứng dụng thương mại rộng rãicủa Trí tuệ nhân tạo:
Trang 7- Sự ra đời của Deep Learning cùng với Neural Network tạo ra lời giảicho các vấn đề phức tạp như nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên, chơigame…
- Một số sự kiện nổi bật về Trí tuệ nhân tạo trong giai đoạn này bao gồmviệc AI của DeepMind chơi được Atari Games và AlphaGo đánh bại kì thủ cờvây Lee Sedol
Một số ứng dụng của trí tuệ nhân tạo:
Một số ứng dụng có thể nhắc đến của AI như; Dịch tự động, nhận dạngchữ viết, nhận dạng tiếng nói, tìm kiếm thông tin, robot, lái xe tự động,…Trí tuệ nhân tạo được chia thành 2 nhóm: Một nhóm dùng máy tính đểbắt chước hành vi của con người, một nhóm là thiết kế ra những máy tính thôngminh độc lập, có khả năng tự học hỏi và tự suy nghĩ và giải quyết vấn đề nhưcon người
Các lĩnh vực của trí tuệ nhân tạo:
Trò chơi và các bài toán đố
Suy luận và chứng minh định lý tự động
Các hệ chuyên gia (các hệ tri thức)
1.2 Chi tiết thuật toán quay lui
Kỹ thuật quay lui (Backtracking) như tên gọi của nó, là một quá trìnhphân tích đi xuống và quay lui trở lại theo con đường đã đi qua Tại mỗi bướcphân tích chúng ta chưa giải quyết được vấn đề do còn thiếu cứ liệu nên cứ phảiphân tích cho tới các điểm dừng, nơi chúng ta xác định được lời giải của chúnghoặc là xác định được không thể (hoặc không nên) đi theo hướng này Từ cácđiểm dừng này chúng ta quay ngược trở lại con đường mà chúng ta đã đi qua đểgiải quyết các vấn đề còn tồn đọng và cuối cùng ta sẽ giải quyết được vấn đềban đầu
Quy trình đó thường được cài đặt bằng một hàm đệ quy mà trong đó mỗithể hiện của hàm lấy thêm một biến và lần lượt gán tất cả các giá trị có thể cho
Trang 8biến đó, với mỗi lần gán trị lại gọi chuỗi đệ quy tiếp theo để thử các biến tiếptheo
Giải thuật quay lui tỏ ra hiệu quả trong những trường hợp mà ban đầutưởng như có rất nhiều khả năng lựa chọn, nhưng sau đó chỉ một số ít khả năng
là còn sót lại sau tiến trình kiểm tra xa hơn Trong các bài toán xếp thời khóabiểu, chẳng hạn trong việc tổ chức các vòng đấu thể thao, sự lựa chọn thời giancho một số trận đấu ban đầu thường là rất dễ, nhưng càng về sau, các ràng buộc
sẽ làm giảm đáng kể các khả năng có thể
Giả sử bài toán cần gán giá trị cho n biến, chúng ta có thể tìm lời giải củabài toán bằng các bước mô tả như sau:
1 Bắt đầu bằng phép gán rỗng, chưa gán giá trị cho biến nào cả { }
2 Nếu tất cả các biến đã được gán giá trị, in ra lời giải và thoát khỏichương trình
3 Tìm giá trị để gán cho biến chưa có giá trị mà không xung đột vớicác các biến đã được gán trước đó (xung đột hay không là dựa trêntập ràng buộc) Nếu không tìm được giá trị thỏa mãn các ràng buộccho biến đang xét thì hủy bỏ phép gán giá trị cho biến liền trước đó
và tìm giá trí mới cho nó
4 Nếu biến đầu tiên không còn giá trị phù hợp để gán thì bài toánkhông có lời giải
Mã giả cho thuật toán quay lui:
} else
{ Backtracking(k+1);
[Bỏ chọn i cho X[k]];
} }
Trang 9}
Ví dụ minh họa: Liệt kê dãy nhị phân độ dài N
Ý tưởng: Biểu diễn dãy nhị phân độ dài N dưới dạng (x1, x2, …, xn) Ta
sẽ liệt kê các dãy này bằng cách dùng các giá trị {0,1} cho xi Với mỗi giá trịgiá trị thử gán cho xi lại thử các giá trị có thể gán cho xi+1… Chương tình liệt
kê thuật toán có thể viết:
Trang 10CHƯƠNG 2: ÁP DỤNG XỬ LÝ B I TOÁN
2.1 Phát biểu bài toán
Bài toán tám quân hậu là bài toán đặt tám quân hậu trên bàn cờ vua kíchthước 8×8 sao cho không có quân hậu nào có thể "ăn" được quân hậu khác, haynói khác đi không quân hậu nào có để di chuyển theo quy tắc cờ vua Màu củacác quân hậu không có ý nghĩa trong bài toán này Như vậy, lời giải của bài toán
là một cách xếp tám quân hậu trên bàn cờ sao cho không có hai quân nào đứngtrên cùng hàng, hoặc cùng cột hoặc cùng đường chéo Bài toán tám quân hậu cóthể tổng quát hóa thành bài toán đặt n quân hậu trên bàn cờ n×n (n ≥ 4)
2.2 Mô hình hóa bài toán
Bài toán 8 quân hậu có thể biểu diễn bởi các thành phần như sau:
- Trạng thái: mảng một chiều 8 phần tử HAU[0,1, ,7], phần tử HAU[i]biểu diễn dòng đặt con hậu cột i Ví dụ HAU[i]=j có nghĩa là con hậu cột
2.3 Các bước giải bài toán
Bước 1: Trạng thái đầu của bài toán ta sẽ đạt quân hậu ở vị trí bất kỳ trên hàngthứ k = 1 của bàn cờ Các vị trí của quân hậu sẽ được lưu vào mảng một chiều
số nguyên HAU[8]
Trang 11Bước 2: Sau khi đã đặt được quân hậu ở dòng thứ k=1, ta quay lại đặt quân hậu
ở dòng thứ k+1 cho đến hết bàn cờ thỏa mãn những yêu cầu sau:
- Các quân hậu không nằm trên cùng 1 cột HAU[j] ≠ i
- Các quân hậu không nằm trên cùng đường chéo chính của nhau:
+Quân hậu thứ nhất ở vị trí (HAU[j], j)
+Quân hậu thứ hai ở vị trí (i, k)
+Ta thấy để cùng nằm trên đương chéo chính thì hiệu của chỉ số dòng
và chỉ số cột của chúng bằng nhau nên ta đặt quân hậu sao cho HAU[j] - j ≠ i – k
- Các quân hậu không nằm trên cùng đường chéo phụ của nhau:
Trang 12+Quân hậu thứ nhất ở vị trí (HAU[j], j)
+Quân hậu thứ hai ở vị trí (i, k)
+Ta thấy để cùng nằm trên đương chéo phụ thì tổng của chỉ số dòng vàchỉ số cột của chúng bằng nhau nên ta đặt quân hậu sao cho HAU[j] + j ≠ i + k
Bước 3: Thực hiện lặp lại quá trình đặt quân cờ ở vị trí k+1 cho đến hết số dòng của bàn cờ
Ví dụ: Đặt 4 quân hậu ở bàn cờ 4x4:
+Bước 1: Xét bàn cờ rỗng chưa có quân hậu nào, ta xét từng hàng một di
từ trên xuống => Có 4 trường hợp nhận được
+Bước 2: Xét TH1 => có 2 trường hợp xảy ra
Trang 13+Bước 3: Xét TH1.1 => không thể đặt quân hậu vào bất kỳ ô nào => quay về
+Bước 4: Xét TH1.2 => Có 1 trường hợp xảy ra
+Bước 5: Xét TH1.2.1 => không thể đặt quân hậu vào bất kỳ ô nào => quay về
+Bước 6: Xét TH2 => có 1 trường hợp xảy ra
+Bước 7: Xét TH2.1 => có 1 trường hợp xảy ra
+Bước 8: Xét TH2.1.1 => có 1 trường hợp xảy ra
+Bước 9: Xét TH2.1.1.1 => Bàn cờ đã được sắp xếp đủ 4 quân hậu và không quân nào có thể ăn nhau => Kết thúc
Làm tương tự ta được TH3 có thể sắp xếp được, TH4 không thể sắp xếp được
2.4 Kết quả thực nghiệm
Khai báo những thông số cần thiết:
Code kiểm tra xem có đặt quân hậu ở hàng thứ k cột thứ i không:
Code in kết quả khi đã xếp đủ số quân hậu ra màn hình
Trang 14Code đặt quân hậu ở dòng thứ k:
Hàm main:
Kết quả:
Nhập n=8 có 92 lời giải với thời gian giải quyết là 3,107 giây Một trong số lời giải:
Trang 15KẾT LUẬN
Thông qua việc tìm hiểu và nghiên cứu đề tài này giúp chúng tôi có cái nhìn toàn diện hơn trong việc ứng dụng trí tuệ nhân tạo vào giải quyết vấn đề thực tế Đây là bài toán cổ điển trong trí tuệ nhân tạo cho các thuật toán mô hìnhhóa liên quan đến tìm kiếm có tri thức bổ sung Đề tài đã được nhiều người nghiên cứu giải quyết, nhưng cho đến nay vẫn chưa có cách giải quyết tối ưu cho tất cả không gian trạng thái trò chơi vì kích thước tăng không gian trạng thái sẽ tăng lên rất nhanh Hy vọng những nghiên cứu đánh giá của chúng tôi sẽ góp phân bổ sung thêm một hướng giải quyết cho bài toán Do thời gian có hạn nên đề tài không tránh khỏi những sai sót, mong thây góp ý, đánh giá giúp chúng tôi hoàn thiện đê tài
Trang 16T I LIỆU THAM KHẢO
- Giáo trình nhập môn trí tuệ nhân tạo- TS.Phạm Hồng Đức
- Trí tuệ nhân tạo – Các phương pháp Giải quyết vấn đề và kỹ thuật xử lý tri thức (1999) Nguyễn Thanh Thuỷ
- Trí tuệ nhân tạo – Đinh Mạnh Tường