Professional Documents
Culture Documents
Noi Dung TH
Noi Dung TH
Noi Dung TH
2. Phần game:
• Trình tự thực hành:
o Sinh viên đọc hiểu giải thuật minimax và alphabeta trước ở nhà, tham khảo
giải thuật viết bằng Prolog trong quyển sách của Ivan Bratko pp. 504 - 512.
o Viết và chạy thử giải thuật minimax và alphabeta với 1 cây tìm kiếm bằng
B-Prolog.
• Thực hiện các bước cải tiến giải thuật
o Cải tiến để cho phép định nghĩa người chơi ở vị trí hiện tại là max hay min
(không còn sử dụng vị từ: max_to_move và min_to_move nữa).
minimax(a, min, Next, Val) hoặc minimax(a, max, Next, Val)
alphabeta(a, min, -infinity, +infinity, Next, Val) hoặc alphabeta(a, max, -
infinity, +infinity, Next, Val)
o Cải tiến giải thuật để cho phép khả năng giới hạn số bước nhìn trước
alphabeta(Pos, Player, Alpha, Beta, Depth, Next, Val).
Trang 1 / 6
Thực hành trí tuệ nhân tạo
• Sử dụng giải thuật minimax và alphabeta đã cải tiến để viết các bài NIM, TIC-
TAC-TOE, và bốc diêm.
Trang 2 / 6
Thực hành trí tuệ nhân tạo
Yêu cầu: Hiện thực các bài toán sau với ba giải thuật Breadth-First Search,
Depth-First Search và Best-First Search.
1. 8-puzzle
8-puzzle là một bảng 3x3 trong đó có 8 ô đánh số từ 1 → 8. Ô thứ chín để trống. Một ô kề với
ô trống có thể trượt vào ô trống đó. Trò chơi bao gồm trạng thái bắt đầu và trạng thái đích.
Mục tiêu là chuyển từ trạng thái bắt đầu sang trạng thái kết thúc bằng cách trượt các ô sang
các vị trí lân cận.
1 2 4 2 6
3 5 5 4 7
7 8 6 3 1 8
2. Đong nước
Có 2 bình nước, một 4 lít và một 3 lít. Mỗi bình không có vạch đo nước. Nước đổ vào bình có
thể lấy từ vòi. Làm thế nào để có thể đong 2 lít nước vào bình 4 lít?
Trang 3 / 6
Thực hành trí tuệ nhân tạo
Yêu cầu: Hiện thực các bài toán sau với hai giải thuật Minimax và Alpha-Beta.
1. Bốc diêm
Ban đầu có một đống gồm N que dim. Người chơi phải chọn ra được 1 đống để chia nó thành
2 đống khác, với điều kiện không thể chia ra 2 đống với số que bằng nhau. Nếu không chọn
được 1 đống như vậy thì coi như bị thua.
Hãy hiện thực bài toán bốc diêm với N = 7, số bước nhìn trước là 3.
2. Nim
Có N đống que diêm, mỗi đống có một số lượng que diêm cho trước.
Luật chơi:
Hai người chơi đi xen kẽ, đến lượt đi của mình, người chơi PHẢI chọn một đống để
rút ra m que diêm (1 ≤ m ≤ số que diêm hiện có của đống). Một đống bị rút hết không còn que
diêm nào xem như xóa ra khỏi tập các đống hiện tại.
Luật thắng – thua:
Người chơi đến lượt đi của mình mà không thể chọn ra một đống diêm để rút thì bị
thua. Người còn lại xem như thắng cuộc.
Hiện thực bài toán Nim trong trường hợp N = 2, số lượng hai đống diêm là (3, 2)
3. Tic-tac-toe
Người chơi lần lượt đặt quân vào một trong các ô của bàn cờ 3x3. Khi đến lượt, mỗi người đặt
quân X hay O. Người đầu tiên đạt được ba quân của mình trên cùng hàng ngang, hàng dọc,
hay đường chéo là người thắng cuộc. Hỏi MAX hoặc MIN đi trước thì nên đi đến nước nào?
Trang 4 / 6
Thực hành trí tuệ nhân tạo
A
C B
A B C
ON(C,A) ON(B,C) ∧ ON(A,B)
Có một cái bàn phẳng, các khối vuông có nằm trên đó được. Có 1 số khối vuông, kích thước
bằng nhau.
Có một cánh tay robot, có thể làm cách hành động:
UNSTACK(X,Y): Nhấc khối X ra khỏi khối Y
STACK(X,Y): Để khối X nằm trên khối Y
PICKUP(X): Nhấc khối X từ mặt bàn lên
PUTDOWN(X): Đặt khối X xuống mặt bàn
Các vị từ dùng để mô tả trạng thái bài toán:
ON(X,Y): Khối X nằm trên khối Y
ONTABLE(X): Khối X nằm trên mặt bàn
CLEAR(X): Khối X trống (Không có khối nào nằm trên X; mặt bàn được xem là luôn
luôn trống)
HOLDING(X): Cánh tay robot đang nắm khối X
ARMEMTY: Cánh tay robot không nắm vật gì cả
ON(B,C) ∧ ON(A,B)
ON(B,C) ON(A,B)
Put B on C
Move A Put A on B
to table
Clear(A) ON(A,B)
2. Hoán vị thanh ghi
Chúng ta muốn hoán đổi giá trị của hai thanh ghi, A và B. Giả sử ta đã có sẵn toán tử
ASSIGN (x, v, lv, ov) thực hiện việc gán giá trị v, được chứa ở thanh ghi lv, cho thanh ghi x,
vốn trước đó chứa giá trị ov:
ASSIGN (x, v, lv, ov)
POSTCONDITION: CONTAINS (lv, v) ∧ CONTAINS (x, ov)
DELETE: CONTAINS (x, ov)
Trang 5 / 6
Thực hành trí tuệ nhân tạo
Trang 6 / 6