1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo Cáo Chuyên Đề Học Phần Nhập Môn Trí Tuệ Nhân Tạo Áp Dụng Thuật Toán Minimax Vào Trò Chơi Tictactoe.pdf

18 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

TRƯỜ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 NHẬP MÔN TRÍ TUỆ NHÂN TẠOĐỀ T!I:

ÁP DỤNG THUẬT TOÁN MINIMAX V!O TRÒ CHƠI TICTACTOE

ĐẶNG ĐÌNH VIỆT ANH NGUYỄN QUỐC VIỆTGiảng viên hướng dẫn : VŨ VĂN ĐỊNH

Hà Nội, tháng 12 năm 2023

Trang 2

PHIẾU CHẤM ĐIỂM

Sinh viên thực hiện:

Trang 3

MỤC LỤC

LỜI NÓI ĐẦU 4

CHƯƠNG 1: GIỚI THIỆU B!I TOÁN 5

1.1Giới thiệu trò chơi TicTacToe 5

1.2Áp dụng thuật toán minimax vào bài toán Tic Tac Toe 5

CHƯƠNG 2: THUẬT TOÁN MINIMAX 6

2.1 Khái niệm thuật toán MINIMAX 6

2.2 Cách xây dựng thuật toán 9

2.2.1 Các bước giải thuật Minimax 10

2.2.2 Ví dụ mô phỏng giải thuật Minimax cho trò chơi Tic Tac Toe 10

2.3 Ưu điểm và nhược điểm 11

2.3.1 Ưu điểm 11

2.3.2 Nhược điểm 11

2.4 Làm thế nào để áp dụng thuật toán minimax vào các trò chơi phức tạp hơn? 12

2.5 Thuật toán minimax có thể được sử dụng cho những mục đích nào ngoài các trò chơi? 12

CHƯƠNG 3: C!I ĐẶT THUẬT TOÁN 13

3.1 Triển khai thuật toán Minimax 13

3.2 Demo sản phẩm 15

Trang 4

DANH MỤC HÌNH ẢNH

Hình 1: Trò chơi Tic Tac Toe 5Hình 2.1: Hình minh họa thuật toán Minimax 6Hình 2.2: Hình minh họa Game Tree 7Hình 2.3: Hình minh họa Game Tree 8Hình 2.4: Hình minh họa Game Tree 8Hình 2.5: Hình minh họa Game Tree 9Hình 2.6: Mô hình mimax trong Tic-Tac-Toe 10Hình 3.1: Hình ảnh hàm triển khai nước đi tối ưu nhất của AI 13Hình 3.2: Hình ảnh hàm kiểm tra kết quả thắng cuộc 14Hình 3.3: Hình ảnh hàm kiểm tra lượt chơi người chơi Max và Min 14Hình 3.4: Hình minh họa thực hiện trò chơi Tic Tac Toe 15Hình 3.5: Hình mô phỏng các trường hợp có thể xảy ra khi O thực

hiện lượt đi

16

Trang 5

LỜI NÓI ĐẦU

Trong ngành khoa học máy tính, một giải thuật tìm kiếm là một thuật toánlấy đầu vào là một bài toán và trả về kết quả là một lời giải cho bài toán đó, thườnglà sau khi cân nhắc giữa một loạt các lời giải có thể Tập hợp tất cả các lời giải cóthể cho bài toán được gọi là không gian tìm kiếm Có những thuật toán tìm kiếm“sơ đẳng” không có thông tin, đây là những phương pháp đơn giản và trực quan,trong khi đó các thuật toán tìm kiếm có thông tin sử dụng hàm đánh giá heuristicgiúp ta giảm đáng kể thời gian cần thiết cho việc tìm kiếm lời giải

Để áp dụng được các giải thuật tìm kiếm, ta cần chuyển không gian tìm kiếmvề dạng đồ thị Với dạng đồ thị ta sẽ nắm bắt những mối liên hệ, những ảnh hưởnggiữa các trạng thái của bài toán một cách nhanh chóng và ngắn gọn Chính vì vậy,nhóm chúng em chọn đề tài: “Áp dụng thuật toán Minimax vào trò chơiTicTacToe” làm bài báo cáo của mình

Trong quá trình làm báo cáo do có những hạn chế về trình độ, thời gian nênchúng em không khỏi có những thiếu sót trong quá trình tìm hiểu, nghiên cứu cũngnhư thực nghiệm Rất mong nhận được đánh giá và chỉnh sửa từ các thầy cô.

Nhóm em xin chân thành cảm ơn!

Trang 6

CHƯƠNG 1: GIỚI THIỆU B!I TOÁN1.1 Giới thiệu trò chơi TicTacToe

Tic Tac Toe hay còn gọi là Xs và Os là trò chơi thể loại giấy và bút dành chohai người đánh theo lượt bằng cách đánh dấu vào những ô trống bằng hàng ba vớiX hoặc O Người chơi nào thành công trong việc điền ba ô với X hoặc O theochiều ngang hoặc dọc là người chiến thắng.

Hình 1: Trò chơi Tic Tac Toe

Trò chơi được chơi trên một bảng gồm 9 ô vuông, được chia thành 3 hàng và3 cột Nếu không có người chơi nào đạt được điều kiện thắng sau khi tất cả các ôđã được đánh đầy, trò chơi sẽ kết thúc với kết quả là hòa Tic-Tac-Toe là trò chơigiải trí phổ biến và thường được sử dụng để giúp trẻ em phát triển tư duy và kỹnăng tương tác xã hội Ngoài ra, còn có các “biến thể” của trò chơi như 5x5 và7x7.

1.2 Áp dụng thuật toán minimax vào bài toán Tic Tac Toe

Phần mềm trò chơi Tic-Tac-Toe là một chương trình xây dựng trò chơi vàgiải quyết bài toán này Phầm mềm được viết trên nền Javascript và Html, sử dụnggiao diện đơn giản để mô phỏng trò chơi và thuật toán Minimax để cho AI khiđánh với người chơi sẽ đi lối đi tối ưu nhất để làm khó người chơi Người chơi sửdụng chuột click để điền X hoặc O vào bàn 3x3 của trò chơi.

Trang 7

CHƯƠNG 2: THUẬT TOÁN MINIMAX2.1 Khái niệm thuật toán MINIMAX

Thuật toán Minimax là một thuận toán đệ quy lựa chọn bước đi kế tiếp.Thuật toán phổ biến trong trò chơi đối kháng trong đó hai người thay phiên đi nướcđi của mình như: cờ vua, tic-tac-toe, cờ vây, Khi chơi bạn có thể khai triển hếtkhông gian trạng thái nhưng khó khăn chủ yếu là bạn phải tính toán được phản ứngvà nước đi của đối thủ mình như thế nào? Cách xử lý đơn giản là bạn giả sử đối thủcủa bạn cũng sử dụng kiến thức về không gian trạng thái giống bạn Giải thuậtMinimax áp dụng giả thuyết này để tìm kiếm không gian trạng thái của trò chơi.

Để dễ hình dung hơn ta sẽ có một ví dụ đơn giản như sau:

Hình 2.1: Hình minh họa thuật toán Minimax

Ta thấy Max và Min xen kẽ nhau, ta xét trạng thái A lúc đang ở hàng Maxbây giờ ta sẽ phải tìm trạng thái Max của A, trong đó A có 3 node lá với giá trị lầnlượt là B(-3), C(-1), D(2) mà ta thấy rằng trong 3 node lá của A, D có giá trị lớnnhất là 2 trong khi đó B là -3 và C là -1 nên Max A(-3,-1,2) = 2

Trang 8

Tương tự Min ta xét trạng thái của D lúc này đây đang ở hàng Min nên taphải xét trạng thái Min cho node D, node D lại có 3 node con lần lượt là H(2), I(3),J(4) ta thấy trong 3 node con thì H có giá trị nhỏ nhất là 2 nên Min D(2,3,4) = 2

Dưới đây là ví dụ về Game Tree đại diện cho trò chơi hai người chơi.- Trong ví dụ này, có hai người chơi, một người được gọi là Maximizer và

người khác được gọi là Minimizer.

- Maximizer sẽ cố gắng đạt được số điểm Tối đa có thể, và Minimizer sẽ cốgắng đạt được số điểm tối thiểu có thể.

- Thuật toán này áp dụng DFS, vì vậy trong Game Tree này, chúng ta phải đihết các lá để đến được các nút đầu cuối.

- Tại nút đầu cuối, các giá trị đầu cuối được đưa ra vì vậy chúng tôi sẽ so sánhcác giá trị đó và điều chỉnh lại cây cho đến khi trạng thái ban đầu xảy ra Sauđây là các bước chính liên quan đến việc giải quyết Game Tree hai ngườichơi:

Bước 1: Trong bước đầu tiên, thuật toán tạo ra Game Tree và áp dụng hàm tiện íchđể nhận các giá trị và các trạng thái kết thúc

Trong sơ đồ cây dưới đây, hãy lấy A là trạng thái bắt đầu của Tree Giả sửbộ tối đa hóa thực hiện lượt đi đầu tiên có giá trị ban đầu trong trường hợp xấunhất = – infinite và minimizer sẽ thực hiện lượt tiếp theo có giá trị ban đầu trongtrường hợp xấu nhất = + infinity.

Trang 9

Hình 2.2: Hình minh họa Game Tree

Bước 2: Bây giờ, đầu tiên chúng ta tìm giá trị tiện ích cho Maximizer, giá trị banđầu của nó là -∞, vì vậy chúng ta sẽ so sánh từng giá trị ở trạng thái đầu cuối vớigiá trị ban đầu của Maximizer và xác định các giá trị nút cao hơn Nó sẽ tìm thấymức tối đa trong số tất cả.

Đối với nút D max (-1, – -∞) => max (-1,4) = 4Đối với nút E max (2, -∞) => max (2, 6) = 6Đối với nút F max (-3, -∞) => max (-3, -5) = -3Đối với nút G max (0, -∞) = max (0, 7) = 7

Hình 2.3: Hình minh họa Game Tree

Bước 3: Trong bước tiếp theo, đến lượt trình thu nhỏ, vì vậy nó sẽ so sánh giá trịtất cả các nút với + ∞ và sẽ tìm giá trị nút lớp thứ 3.

Đối với nút B = min (4,6) = 4Đối với nút C = min (-3, 7) = -3

Trang 10

Hình 2.4: Hình minh họa Game Tree

Bước 4: Bây giờ đến lượt Maximizer, nó sẽ lại chọn giá trị lớn nhất của tất cả cácnút và tìm giá trị lớn nhất cho nút gốc Trong Game Tree này, chỉ có 4 lớp, do đóchúng tôi truy cập ngay đến nút gốc, nhưng trong trò chơi thực, sẽ có nhiều hơn 4lớp.

Đối với nút A max (4, -3) = 4

Hình 2.5: Hình minh họa Game TreeĐó là toàn bộ quy trình làm việc của trò chơi minimax hai người chơi.

2.2 Cách xây dựng thuật toán

Hai đối thủ trong trò chơi được gọi là MIN và MAX luân phiên thay thếnhau đi MAX đại diện cho người quyết dành thắng lợi và cố gắng tối đa hóa ưuthế của mình, ngược lại người chơi đại diện cho MIN lại cố gắng giảm điểm số củaMAX và cố gắng làm cho điểm số của mình càng âm càng tốt Giả thiết đưa raMIN và MAX có kiến thức như nhau về không gian trạng thái trò chơi và cả haiđối thủ đều cố gắng như nhau Mỗi Node biểu diễn cho một trạng thái trên cây tròchơi Node lá là Node chứa trạng thái kết thúc của trò chơi Giải thuật Minimax thể

Trang 11

2.2.1 Các bước giải thuật Minimax

• Nếu như đạt đến giới hạn tìm kiếm (đến tầng dưới cùng của cây tìm kiếm tứclà trạng thái kết thúc của trò chơi).

• Tính giá trị của thế cờ hiện tại ứng với người chơi ở đó Ghi nhớ kết quả.• Nếu như mức đang xét là của người chơi cực tiểu (nút MIN), áp dụng thủ tụcMinimax này cho các con của nó Ghi nhớ kết quả nhỏ nhất.

• Nếu như mức đang xét là của người chơi cực đại (nút MAX), áp dụng thủ tụcMinimax này cho các con của nó Ghi nhớ kết quả lớn nhất.

2.2.2 Ví dụ mô phỏng giải thuật Minimax cho trò chơi Tic Tac Toe

Hình 2.6: Mô hình mimax trong Tic-Tac-Toe

Trang 12

Áp dụng giải thuật Minimax: Từ trạng thái bàn cờ hiện tại ta dự đoán nướcđi của trạng thái tiếp theo nếu trạng thái tiếp theo ta tiến hành lượng giá cây tròchơi bằng cách ta tiến hành quét cạn tất cả các trạng thái tiếp theo cho đến lúc gặptrạng thái chiến thắng (Node lá) như trong lần 1 người chơi O có ba hướng đánhtựa trưng cho 3 node lá khi ta đánh thắng thì MAX sẽ được tính điểm cho node đónhư sau:

• Nếu ở trạng thái mà ta gặp chiến thắng nếu đó là lượt đi của quân X thì đánh giáđiểm trạng thái đó là -10.

• Nếu ở trạng thái ta gặp chiến thắng nếu đó là lượt đi của quân O thì đánh giáđiểm trạng thái đó là 10.

• Nếu là hòa thì điểm trạng thái đó là 0.Sau đó tính ngược lại cây trò chơi theo quy tắc:

• Nút thuộc lớp MAX thì gán cho nó giá trị lớn nhất của các Node con của Nodeđó.

• Nút thuộc lớp MAX thì gán cho nó giá trị nhỏ nhất của các Node con của Nodeđó.

Sau khi lượng giá hết cây trò chơi ta tiến hành chọn bước đi tiếp theo nguyên tắc:• Nếu lớp tiếp theo là MAX ta chọn Node con có giá trị lớn nhất.

• Nếu lớp tiếp theo là MIN ta chọn Node con có giá trị nhỏ nhất.

2.3 Ưu điểm và nhược điểm2.3.1 Ưu điểm

• Đảm bảo tìm được chiến lược tối ưu cho một người chơi trong trò chơi haingười với lượt đi xen kẽ.

• Dễ hiểu và áp dụng.

• Tính toán độ chính xác cao khi số lượng các trạng thái trong trò chơi không

Trang 13

Tóm lại, thuật toán Minimax là một thuật toán tìm kiếm cây trò chơi phổ biếnvà mạnh mẽ cho các trò chơi hai người với lượt đi xen kẽ Tuy nhiên, nó có nhữnggiới hạn về khả năng áp dụng cho các trò chơi lớn và phức tạp hơn

2.4 Làm thế nào để áp dụng thuật toán minimax vào các trò chơi phức tạphơn?

Các trò chơi phức tạp hơn, ví dụ như cờ vua, thường có số lượng nút lớn hơnrất nhiều so với các trò chơi đơn giản hơn như tic-tac-toe Để áp dụng thuật toánminimax vào các trò chơi phức tạp hơn, ta cần sử dụng các kỹ thuật cải tiến đểgiảm số lượng nút trong cây trò chơi, và tối ưu hóa thời gian tính toán.

Một trong những kỹ thuật cải tiến phổ biến là sử dụng bảng tra cứu đánh giá,trong đó các giá trị đánh giá cho các trường hợp đặc biệt đã được tính toán trước vàlưu trữ trong bảng Khi thực hiện thuật toán minimax, ta có thể sử dụng bảng nàyđể tránh tính toán lại các giá trị đánh giá đã được tính toán trước đó.

Ngoài ra, ta cũng có thể sử dụng các kỹ thuật thay thế cho thuật toánminimax, như phương pháp Monte Carlo, để giảm thời gian tính toán và tối ưu hóathuật toán cho các trò chơi phức tạp hơn.

2.5 Thuật toán minimax có thể được sử dụng cho những mục đích nào ngoàicác trò chơi?

Mặc dù thuật toán minimax thường được sử dụng để giải quyết các trò chơi,nó cũng có thể được áp dụng cho các bài toán tối ưu hóa và quyết định trong cáclĩnh vực khác Ví dụ, thuật toán minimax có thể được sử dụng để tìm kiếm chiến

Trang 14

lược tối ưu trong quản lý tài sản và quản lý rủi ro Thuật toán minimax cũng có thểđược sử dụng trong các bài toán tìm kiếm con đường tối ưu trong đường đi tối ưuhoá, tối ưu hóa mạng và tối ưu hóa vận hành của hệ thống.

Trang 15

CHƯƠNG 3: C!I ĐẶT THUẬT TOÁN3.1 Triển khai thuật toán Minimax

Hình 3.1: Hình ảnh hàm triển khai nước đi tối ưu nhất của AI

Với hàm này này AI sẽ tìm nước đi ngắn nhất và tối ưu nhất đồng nghĩa vớiviệc với ma trận 3x3 thì người chơi chỉ có thể hòa hoặc thua máy.

Chúng ta sẽ khai báo giá trị bestScore = âm vô cực (-Infinity) để sau này tacó thể dùng nó để so sánh với điểm (score) tức là điều kiện để thắng của máy.Đồngthời với người chơi máy là Max ta sẽ để bestScore là âm vô cực tại vì để giả sửtrong trường hợp bị người chơi chặn nó sẽ tự tìm được nước đi tối ưu còn lại

Sau đó ta sẽ viết lệnh kiểm tra if(board[i][j] == ‘ ’) xem nếu như ở vị tríđược chuẩn bị đánh ở trạng thái trống, AI sẽ đi nước đi của mình.Nên để nó có thểđi tối ưu nhất ta sẽ lồng thêm lệnh if nữa đó là if(score > bestScore) vì theo lýthuyết để đi tối ưu nhất ta phải biết được giá trị Min hoặc Max của nó, trong

Trang 16

trường hợp này Máy là Max (bestScore), Máy sẽ duyệt đệ quy tất cả các trườnghợp có thể đi được để tìm nước đi tối ưu nhất để đến chiến thắng, score có thể là+10 cho bestScore, sau đó move = {i ,j} là để đi nước đi tiếp theo.

Kết thúc lệnh if sẽ thực hiện lệnh board[move.i][move.j] = ai là để thực hiệnnước đi của máy, currentPlayer =human là để chuyển lượt chơi cho người chơi.

Hình 3.2: Hình ảnh hàm kiểm tra kết quả thắng cuộc

Trang 17

Hàm kiểm tra lượt chơi người chơi Max và Min nó sẽ duyệt đệ quy ra tất cảcác trường hợp có thể thắng hoặc đi nước đi tối ưu của hai người chơi ở trườnghợp này Max sẽ là máy (board[i][j]=ai) và điều kiện chiến thắng của nó là +10trong khi người chơi sẽ là min điều kiện chiến thắng (board[i][j]=human) là -10,nên nó duyệt để tìm các lối đi có thể xảy ra của cả hai người chơi từ đó nếu ngườichơi nào đạt được +10( đối với người chơi Max) hoặc -10 (đối với người chơi Min)bestScore sẽ được gán bằng score , score sẽ kiểm tra điều kiện được thiết lập thìngười đó sẽ thắng.

3.2 Demo sản phẩm

Giả sử chúng ta có trường hợp đánh như thế này (Người chơi là O)

Hình 3.4: Hình minh họa thực hiện trò chơi Tic Tac ToeKhi đó sẽ chia ra thành các trường hợp mà máy có thể đánh X như sau:

Trang 18

Hình 3.5: Hình mô phỏng các trường hợp có thể xảy ra khi O thực hiện lượt điTừ trạng thái bàn cờ hiện tại ta dự đoán nước đi của trạng thái tiếp theo nếu trạng thái tiếp theo ta tiến hành lượng giá cây trò chơi bằng cách ta tiến hành quét cạn tất cả các trạng thái tiếp theo cho đến lúc gặp trạng thái chiến thắng.

Ngày đăng: 13/06/2024, 09:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w