6

Click here to load reader

NoiDungTH

Embed Size (px)

Citation preview

Page 1: NoiDungTH

Thực hành trí tuệ nhân tạo

Trang 1 / 6

THỰC HÀNH TRÍ TUỆ NHÂN TẠO

I. Những quy định: 1. % điểm: 10%. 2. Hình thức đánh giá:

- Thời gian làm bài: 30’ - Bài kiểm tra thực hành: Tương đối nhẹ nhàng, bao gồm bốc thăm đề bài (một

trong các bài sẽ được thực hành trong các buổi thực hành), sau đó làm bài trên máy và nộp.

- Phần mềm thực hành: B-Prolog

II. Nội dung:

1. Phần tìm kiếm: • Các bài toán phải thực hành trong phần này:

8puzzle, đong nước, người nông dân qua sông, nhà truyền giáo. • Các giải thuật phải được chạy thử:

Depth First Search(DFS), Breadth First Search(BrFS) • Chương trình mẫu: Bài toán 8 puzzle

a. Kết xuất dạng text, giải thuật DFS, BrFS Có tại thư mục: 8Puzzle\BProlog. Chạy với B-Prolog.

b. Kết xuất dạng đồ họa trên Windows, giải thuật DFS, BrFS, A*. Có tại thư mục: 8Puzzle\VProlog. Chạy với Visual Prolog.

• Trình tự thực hành: o Sinh viên chạy và hiểu 1 chương trình tìm kiếm mẫu cho bài toán 8 puzzle,

với các giải thuật: DFS, BrFS. o Sinh viên tự viết lại cho các bài toán khác. Các chương trình tự viết nên có

kết xuất đơn giản, ở dạng TEXT, không cần GUI và phần giải thuật nên đặt tách rời với phần đặc tả từng bài toán.

o Các bài bắt buộc phải làm xong: Đong nước, nông dân qua sông, truyền giáo.

o Các bài toán mở rộng thêm: Con khỉ và quả chuối, các khối...

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).

Page 2: NoiDungTH

Thực hành trí tuệ nhân tạo

Trang 2 / 6

• 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.

3. Phần lập kế hoạch: Trình tự thực hành:

• Sinh viên đọc hiểu chương trình giải bài toán các khối (Block world) được cho sẵn viết bằng B-Prolog.

• Áp dụng tương tự để giải bài toán thanh ghi, con khỉ và quả chuối.

4. Thi thực hành: Dự kiến vào tuần dự trữ, sẽ được thông báo cụ thể sau. Khi làm bài thi thực hành, các sinh viên cần phải viết vị từ go là vị từ chính để chạy chương trình. Giáo viên sẽ chạy vị từ này để chấm điểm.

Page 3: NoiDungTH

Thực hành trí tuệ nhân tạo

Trang 3 / 6

Mô tả yêu cầu đề bài CHỦ ĐỀ: TÌM KIẾM

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.

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?

3. Người nông dân qua sông Có một người nông dân, một con trâu, một con hổ và một bó cỏ bên bờ sông và muốn sang bên kia. Họ chỉ có một chiếc thuyền. Thuyền chỉ có thể chở được người nông dân và con hổ hoặc trâu hoặc bó cỏ. Không thể để hổ và trâu ở cùng một bờ sông mà không có người nông dân, tương tự cho con trâu và bó cỏ. Làm thế nào để tất cả cùng qua sông?

4. Nhà truyền giáo và kẻ ăn thịt Có 3 nhà truyền giáo và 3 kẻ ăn thịt người (quỷ) cùng đứng bên bờ của một dòng sông và muốn sang bờ bên kia. Các nhà truyền giáo sợ kẻ ăn thịt người có thể làm hại người đi chung. Do đó, các nhà truyền giáo muốn quản lý sự di chuyển qua bên kia sông sao cho số lượng các nhà truyền giáo trong bất kỳ bờ bên nào của dòng sông không bao giờ nhỏ hơn số lượng các kẻ ăn thịt người trong cùng bờ bên đó. Chiếc thuyền chỉ có thể chở được hai người một lúc. Làm thế nào để tất cả cùng qua sông mà không có nhà truyền giáo nào bị ăn thịt?

1 2 4

3 5

7 8 6

2 6

5 4 7

3 1 8

Page 4: NoiDungTH

Thực hành trí tuệ nhân tạo

Trang 4 / 6

CHỦ ĐỀ: TRÒ CHƠI 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?

Page 5: NoiDungTH

Thực hành trí tuệ nhân tạo

Trang 5 / 6

CHỦ ĐỀ: LẬP KẾ HOẠCH

1. Blocks world – 4 actions

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ả

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)

ON(B,C) ∧ ON(A,B)

BC

A

ON(C,A)

C A B

Put B on C

ON(A,B) ON(B,C)

ON(B,C) ∧ ON(A,B)

ON(B,C)

ON(A,B)

Clear(A) ON(A,B)

Clear(A)

Move A to table

Put A on B

Page 6: NoiDungTH

Thực hành trí tuệ nhân tạo

Trang 6 / 6

ADD: CONTAINS (x, v) Giả sử có ít nhất một thanh ghi C trống. 3. Con khỉ và quả chuối Có một con khỉ đứng ở cửa ra vào một căn phòng. Giữa phòng có một quả chuối được treo trên trần nhà. Con khỉ thì đói và muốn lấy quả chuối, nhưng nó không đủ cao để với tới. Trong phòng có một cái hộp tại cửa sổ. Con khỉ có thể thực hiện các hành động sau: đi bộ trên sàn, leo lên cái hộp, đẩy chiếc hộp đi và chụp lấy quả chuối nếu đứng trên chiếc hộp trực tiếp bên dưới quả chuối. Con khỉ có thể lấy được quả chuối không và làm như thế nào?