I.Lời nói đầu Ngày này, việc nguyên cứu Trí tuệ nhân tạo và đưa nó vào các ứng dụng thực tế đang ngày càng nhiều, và ngày càng chứng tỏ được thế mạnh của mình trong các công việc đòi hỏi khả năng suy nghĩ và tính toán giống như con người. Trong đó, vấn đề Tìm kiếm có đối thủ đang được áp dụng rất rộng rãi trong các trò chơi đối kháng, tất nhiên, tuân theo những tiêu chuẩn nhất định. Bản đồ án này được xây dựng, cũng nằm một trong số đó. Áp dụng lí thuyết Trí tuệ nhân tạo, kết hợp với các hàm đánh giá, từ đó xây dựng một chương trình cờ vua mang tính chất minh họa thuật toán hơn là xây dựng một chương trình có tính ứng dụng cao trong thực tế. Sau đây là cơ sở lý thuyết về không gian trạng thái cờ vua theo phương pháp Minimax. II.Cơ sở lí thuyết Vấn đề chơi cờ có thể xem xét như vấn đề tìm kiếm trong không gian trạng thái. Mỗi trạng thái là một tình thế (cách bố trí các quân cờ trên bàn cờ). -Trạng thái ban đầu là sự sắp xếp các quân cờ của hai bên lúc bắt đầu chơi. -Các toán tử là các nước đi hợp lệ. -Các trạng thái kết thúc là các tình thế mà cuộc chơi dừng, thường được xác định bởi một điều kiện dừng nào đó. -Một hàm kết cuộc ứng mỗi trạng thái kết thúc với một giá trị nào đó. Chiến lược tìm kiếm Minimax là chiến lược tìm kiếm theo độ sâu. Quá trình chơi cờ là quá trình trắng và đen thay phiên nhau đưa ra quyết định, thực hiện một trong số các nước đi hợp lệ. Trên cây trò chơi, quá trình đó sẽ tạo ra đường đi từ gốc đến lá. Giả sử tới một thời điểm nào đó, đường đi đã dẫn tới đỉnh u. Nếu u là đỉnh trắng (đen) thì trắng (đen) cần chọn đi tới một trong các đỉnh đen (trắng) v là con của u. Tại đỉnh đen (trắng) v mà trắng (đen) vừa chọn, đen (trắng) sẽ phải chọn đi tới một trong các đỉnh trắng (đen) w là con của v. Quá trình trên sẽ dừng lại khi đạt tới một đỉnh là lá của cây. Giả sử trắng cần tìm nước đi tại đỉnh u. Nước đi tối ưu cho trắng là nước đi dần tới đỉnh con của v là đỉnh tốt nhất(cho trắng) trong số các đỉnh con của u. Ta cần giả thiết rằng, đến lượt đối thủ chọn nước đi từ v, đen cũng sẽ chọn nước đi tốt nhất cho a ta. Như vậy, để chọn nước đi tối ưu cho trắng tại đỉnh u, ta cần phải xác định giá trị các đỉnh của trò chơi gốc u. Giá trị của các đỉnh lá là giá trị của hàm kết cuộc. Đỉnh có giá trị càng lớn càng tốt cho trắng, đỉnh có giá trị càng nhỏ càng tốt cho đen, Để xác định giá trị các đỉnh của cây trò chơi gốc u, ta đi từ mức thấp nhất lên gốc u. Giả sử v là đỉnh trong của cây và giá trị các đỉnh con của nó đã được xác định. Khi đó nếu v là đỉnh trắng thì giá trị của nó được xác định là giá trị lớn nhất trong các giá trị của các đỉnh con. Còn nếu v là đỉnh đen thì giá trị nhỏ nhất trong các giá trị của các đỉnh con.
Trang 1HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
Đồ án Nhập môn trí tuệ nhân tạo
Đề tài: Không gian trạng thái là trò chơi cờ vua Xây dựng chương trình giải quyết bài toán theo phương pháp Minimax
Thầy giáo hướng dẫn: Ngô Hữu Phúc Học viên: Nguyễn Trần Quyết
Lớp: Tin học 5A
Hà Nội, 3 - 2010
Trang 2I Lời nói đầu
Ngày này, việc nguyên cứu Trí tuệ nhân tạo và đưa nó vào các ứng dụng thực tế đang ngày càng nhiều, và ngày càng chứng tỏ được thế mạnh của mình trong các công việc đòi hỏi khả năng suy nghĩ
và tính toán giống như con người Trong đó, vấn đề Tìm kiếm có đối thủ đang được áp dụng rất rộng rãi trong các trò chơi đối kháng, tất nhiên, tuân theo những tiêu chuẩn nhất định Bản đồ án này được xây dựng, cũng nằm một trong số đó Áp dụng lí thuyết Trí tuệ nhân tạo, kết hợp với các hàm đánh giá, từ đó xây dựng một chương trình cờ vua mang tính chất minh họa thuật toán hơn là xây dựng một chương trình
có tính ứng dụng cao trong thực tế Sau đây là cơ sở lý thuyết về không gian trạng thái cờ vua theo phương pháp Minimax
II Cơ sở lí thuyết
Vấn đề chơi cờ có thể xem xét như vấn đề tìm kiếm trong không gian trạng thái Mỗi trạng thái là một tình thế (cách bố trí các quân cờ trên bàn cờ)
- Trạng thái ban đầu là sự sắp xếp các quân cờ của hai bên lúc bắt đầu chơi
- Các toán tử là các nước đi hợp lệ
- Các trạng thái kết thúc là các tình thế mà cuộc chơi dừng, thường được xác định bởi một điều kiện dừng nào đó
- Một hàm kết cuộc ứng mỗi trạng thái kết thúc với một giá trị nào đó
Chiến lược tìm kiếm Minimax là chiến lược tìm kiếm theo độ sâu Quá trình chơi cờ là quá trình trắng và đen thay phiên nhau đưa ra quyết định, thực hiện một trong số các nước đi hợp lệ Trên cây trò chơi, quá trình đó sẽ tạo ra đường đi từ gốc đến lá Giả sử tới một thời điểm nào đó, đường đi đã dẫn tới đỉnh u Nếu u là đỉnh trắng (đen) thì trắng (đen) cần chọn đi tới một trong các đỉnh đen (trắng) v là con của
u Tại đỉnh đen (trắng) v mà trắng (đen) vừa chọn, đen (trắng) sẽ phải
Trang 3chọn đi tới một trong các đỉnh trắng (đen) w là con của v Quá trình trên sẽ dừng lại khi đạt tới một đỉnh là lá của cây
Giả sử trắng cần tìm nước đi tại đỉnh u Nước đi tối ưu cho trắng
là nước đi dần tới đỉnh con của v là đỉnh tốt nhất(cho trắng) trong số các đỉnh con của u Ta cần giả thiết rằng, đến lượt đối thủ chọn nước đi
từ v, đen cũng sẽ chọn nước đi tốt nhất cho a ta Như vậy, để chọn nước đi tối ưu cho trắng tại đỉnh u, ta cần phải xác định giá trị các đỉnh của trò chơi gốc u Giá trị của các đỉnh lá là giá trị của hàm kết cuộc Đỉnh có giá trị càng lớn càng tốt cho trắng, đỉnh có giá trị càng nhỏ càng tốt cho đen, Để xác định giá trị các đỉnh của cây trò chơi gốc u, ta
đi từ mức thấp nhất lên gốc u Giả sử v là đỉnh trong của cây và giá trị các đỉnh con của nó đã được xác định Khi đó nếu v là đỉnh trắng thì giá trị của nó được xác định là giá trị lớn nhất trong các giá trị của các đỉnh con Còn nếu v là đỉnh đen thì giá trị nhỏ nhất trong các giá trị của các đỉnh con
Để cài đặt kĩ thuật Minimax, việc gán giá trị cho các đỉnh được thực hiện bởi các hàm đệ quy Maxval và Minval Hàm MaxVal xác định giá trị cho các đỉnh trắng, hàm MinVal xác định giá trị cho các đỉnh đen
function MaxVal(u);
Trang 4if u là đỉnh kết thúc then MaxVal(u) f(u)
else MaxVal(u) max {MinVal(v) | v là đỉnh con của u}
end;
function MinVal(u);
begin
if u là đỉnh kết thúc then MinVal(u) f(u)
else MinVal(u) min {MaxVal(v) | v là đỉnh con của u}
end;
Trong cỏc hàm đệ quy trờn, f(u) là giỏ trị của hàm kết cuộc tại đỉnh kết thỳc u Sau đõy là thủ tục chọn nước đi cho trắng tại đỉnh u Trong thủ tục Minimax(u,v) v là biến lưu lại trạng thỏi mà trắng đó chọn đi tới từ u
procedure Minimax(u, v);
begin
val -;
for mỗi w là đỉnh con của u do
if val <= MinVal(w) then
{val MinVal(w) ; v w} end;
III Trũ chơi Cờ Vua
Chương trỡnh được xõy dựng dựa trờn cơ sở lớ thuyết vừa nờu trờn Với độ sõu được xột tới là 2
Giao diện chương trỡnh:
Trang 5Màn hình đăng nhập người chơi
Màn hình đăng nhập người chơi yêu cầu người chơi nhập tên trước khi bắt đầu trò chơi
Màn hình chơi chính
Trang 6Màn hình chơi chính giúp cho người chơi có thể chơi trực tiếp với máy tính Chương trình cho phép người chơi có thể bắt đầu một ván cờ mới, hay hoãn lại các nước đi
Màn hình hiển thị chi tiết nước cờ
Màn hình chi tiết hiển thị chi tiết các nước cờ đã chơi, tên người chơi cũng như thời gian chơi
Một chương trình chơi cờ được đánh giá dựa trên tiêu chí mức
độ thông minh của các nước đi Điều này phụ thuộc phần lớn vào hàm đánh giá được cài đặt trong trò chơi Từ đó có thể thấy mức độ quan trọng của hàm đánh giá trong bất cứ một chương trình chơi cờ nào Không nằm ngoài ý kiến đó, chương trình cũng xây dựng hàm đánh giá riêng, với mục đích phản ảnh rõ nhất cục diện bàn cờ cũng như đưa ra được lựa chọn tốt nhất ứng với trạng thái cụ thể
Trang 7Hàm đánh giá của chương trình được xây dựng dựa trên các yếu
tố về các giai đoạn của ván cờ, giá trị các quân cờ và vị trí của chúng (vị trí trung tâm) Cụ thể:
Hàm tính giá trị của từng quân cờ:
For i = 0 To 7
For j = 0 To 7
If mangdanhgia.Vitri(i, j) > 0 Then
tgiatri(mangdanhgia.Vitri, i, j,
mangdanhgia.Vitri(i, j))
End If
Next
Next
Vị trí trung tâm:
For i = 0 To 7
For j = 0 To 7
If 3 <= i And i <= 4 And 3 <= j And j <= 4 And
mangdanhgia.Vitri(i, j) > 0 Then
eval += 200
ElseIf 2 <= i And i <= 5 And 2 <= j And j <= 5 And
mangdanhgia.Vitri(i, j) > 0 Then
eval += 100
End If
Hàm MinVal: tính giá trị nhỏ nhất
Public Sub Minval( ByVal u As Trangthai, ByVal a As Integer , ByVal b As Integer )
Dim i, j As Integer
If u.cls = 2 Then
Heristis(u)
min = u.Eval
Else
For i = 0 To 7
For j = 0 To 7
If u.Vitri(i, j) > 0 Then
Duyet(u, i, j, u.Vitri(i, j))
End If
Next
Next
For i = 1 To chiso
If Mangduyet(i).Father = u.Name Then
Maxval(Mangduyet(i), a, b)
End If
Next
min = b
End If
End Sub
Trang 8Hàm MaxVal: tính giá trị lớn nhất
Public Sub Maxval( ByVal u As Trangthai, ByVal a As Integer , ByVal b As Integer )
Dim i, j As Integer
If u.cls = 2 Then
Heristis(u)
max = u.Eval
Else
For i = 0 To 7
For j = 0 To 7
If u.Vitri(i, j) > 0 Then
Duyet(u, i, j, u.Vitri(i, j))
End If
Next
Next
For i = 1 To chiso
If Mangduyet(i).Father = u.Name Then
Minval(Mangduyet(i), a, b)
End If
Next
max = a
End If
End Sub
Hàm Minimax: Áp dụng giải thuật Minimax vào chương trình
Public Sub Minimax( ByVal u As Trangthai, ByVal v As Trangthai)
Dim a, b, i, j As Integer
a = -100
b = 100
For i = 0 To 7
For j = 0 To 7
If u.Vitri(i, j) > 0 Then
Duyet(u, i, j, u.Vitri(i, j))
End If
Next
Next
For i = 1 To chiso
If Mangduyet(i).Father = u.Name Then
Minval(Mangduyet(i), a, b)
If a <= min Then
a = min
ketqua = Mangduyet(i)
End If
End If
Next
End Sub
Trang 9IV Những mặt hạn chế của đề tài:
Về mặt lý thuyết, chiến lược Minimax cho phép ta tìm được nước đi tối ưu cho trắng Song nó không thực tế, chúng ta sẽ không đủ thời gian để tính được nước đi tối ưu Bởi vì thuật toán Minimax đòi hỏi chúng ta phải xem xét toàn bộ các đỉnh của cây trò chơi Trong các trò chơi hay, cây trò chơi là cực lớn Chẳng hạn đối với cờ vua, chỉ tính đến độ sâu 40, thì cây trò chơi đã có khoảng 10120 đỉnh!
Chất lượng của chương trình phụ thuộc vào hàm đánh giá, để xây dựng được hàm đánh giá thông minh thì ta cần phải xét toàn bộ các yếu tố cần thiết Ở đây hàm đánh giá của chương trình còn chưa chặt chẽ nên cần phải phân tích rõ hơn về hàm đánh giá để máy có thể đánh thông minh hơn
V Kết luận:
Khuôn khổ của đồ án này chỉ giới hạn trong việc xây dựng không gian trạng thái trò chơi Cờ Vua, chưa thể thành một trò chơi để người đấu trí với máy được Nếu muốn áp dụng thực tế và phát triển đồ
án hơn thì sẽ cần nhiều thời gian và quá trình nghiên cứu tìm tòi hơn Sau khi kết thúc môn học này, em mong thầy có thể giúp đỡ em để em hoàn thành chương trình một cách hoàn thiện hơn