Các hệ thống thông minh nhân tạo & ứng dụng Các hệ thống thông minh nhân tạo & ứng dụng Khoa CNTT, ĐH KHTN HCM 1 BÀI TẬP THỰC HÀNH TÌM KIẾM CỤC BỘ CHO N HẬU I Đề bài Bài toán N Hậu Cho bàn cờ có vua c[.]
Trang 1Khoa CNTT, ĐH KHTN HCM 1
BÀI TẬP THỰC HÀNH
TÌM KIẾM CỤC BỘ CHO N-HẬU
I Đề bài
Bài toán N-Hậu: Cho bàn cờ có vua có kích thước 𝑁×𝑁, yêu cầu đặt N con hậu
lên bàn cờ sao cho các con hậu không bị ăn bởi con hậu khác
Bài toán N-Hậu có thể được giải bằng thuật giải tìm kiếm cục bộ Dưới đây là chi tiết thuật toán lặp cho tìm kiếm cục bộ:
Gán các con hậu ngẫu nhiên trên bàn cờ, mỗi con trên một cột
while <chưa tìm thấy lời giải> do:
Chọn con hậu bị tấn công nhiều nhất
For mỗi dòng 𝑦 trên cột 𝑥 mà con hậu được chọn đang đứng:
Tính ℎ(𝑥, 𝑦) = số cặp hậu tấn công lẫn nhau
End For
Chọn dòng y có giá trị ℎ(𝑥, 𝑦) nhỏ nhất
Cập nhật lại vị trí con hậu được chọn
End while
Yêu cầu: sinh viên viết chương trình sử dụng thuật giải lặp để giải bài toán N-Hậu nói trên
Trang 2Khoa CNTT, ĐH KHTN HCM 2
II Tham số dòng lệnh, tập tin input, output
Tham s ố dòng lệnh
Tên tập tin input và output được truyền dưới dạng tham số dòng lệnh như sau:
<MSSV>.exe <N> <tên_tập_tin_output>
Ví dụ: Sinh viên có mã số 07K2099 có:
Tập tin thực thi là 07K2099.exe
Bàn cờ có kích thước 16×16
Tập tin output là output.txt
Tham số dòng lệnh sẽ là:
07K2099.exe 16 output.txt
T ập tin output
Tập tin output được truyền vào trong tham số dòng lệnh thứ 3 (argv[2]) Gồm các thông tin sau:
Số bước lặp để tìm được kết quả
Vị trí của các con hậu trên bàn cờ Sinh viên ghi dòng tương ứng cho từng con hậu
Dưới đây là ví dụ tập tin output cho lời giải ở hình sau:
Trang 3Khoa CNTT, ĐH KHTN HCM 3
output.txt
101 //lặp 101 lần
6 4 2 0 5 7 1 3
Hình 1 File output.txt
III Cấu trúc thư mục
Sinh viên phải dịch ra tập tin MSSV.exe và đặt trong thư mục Release, toàn bộ source code đặt trong thư mục Source. Hai thư mục này đặt trong thư mục MSSV, toàn bộ thư mục này được nén thành MSSV.rar hoặc MSSV.zip
Ví dụ: Sinh viên mã số 07K2099 tổ chức thư mục như sau:
07K2099
Source
input.txt Release
07K2099.txt 07K2099.exe
Các tập tin của project
Những đoạn code trích dẫn (tham khảo) phải ghi rõ nguồn trích dẫn (tham khảo) Nguồn tham khảo hoặc trích dẫn phải được ghi dưới dạng chú thích ngay trên đoạn code tham
khảo hoặc trích dẫn đó (coi ví dụ dưới đây)
…
void main()
{
…
if (example==0)
{
/*Tham khao:nguon http://en.wikipedia.org/wiki/Genetic_algorithm*/
float minvalues[] ={-3, -3};
Trang 4Khoa CNTT, ĐH KHTN HCM 4
float maxvalues[] ={3, 3};
best = ga->Solve(2, fsquare,minvalues, maxvalues );
/*Ket thuc tham khao*/
} else
{
if (example ==1 ) {
float minvalues[] ={-10,-10, -10,-10};
float maxvalues[] ={10,10,10, 10};
best = ga->Solve(4, f4square,minvalues, maxvalues ); }
}
…
}
Những vấn đề khác nếu sinh viên cần trình bày với giáo viên cũng có thể ghi thẳng vào tập tin source code dưới dạng chú thích
IV Quy định Chấm Bài
Trong chương trình cuối cùng đem nộp không được dùng bất cứ hàm input từ màn hình nào (như getch, scanf, scanf_s, cin v.v…)
Đối với những bài giống nhau sẽ bị 0 điểm
Những bài không nào không trích dẫn nguồn tham khảo sẽ bị 0 điểm