1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo học phần trí tuệ nhân tạo đề tài trò chơi đoán số

19 4 0

Đ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

Thông tin cơ bản

Tiêu đề Trò Chơi Đoán Số
Tác giả Hoàng Minh Công, Đào Cẩm Tú, Mùng Chí Bảo, Đặng Nhật Anh
Trường học Trường Đại Học Công Nghệ GtvT
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 19
Dung lượng 292,85 KB

Nội dung

Thuật Tốn Tìm Kiếm Mù Blind Search...73.2 Mô tả trạng thái của bài tốn...8PHẦN IV: CHƯƠNG TRÌNH GIẢI QUYẾT BÀI TỐN...10PHẦN V: TỔNG KẾT...14 Trang 5 LỜI MỞ ĐẦUAI - Artificial Intelligen

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GTVT KHOA CÔNG NGHỆ THÔNG TIN

-o0o -BÁO CÁO HỌC PHẦN TRÍ TUỆ NHÂN TẠO

ĐỀ TÀI: TRÒ CHƠI ĐOÁN SỐ

Nhóm sinh viên thực hiện:

HÀ NỘI 2023

BẢNG PHÂN CÔNG

1 Hoàng Minh Công

(Nhóm trưởng)

Tìm hiểu bài, phân chia công việc cho nhóm, code demo 100%

Trang 2

2 Đào Cẩm Tú Tìm kiếm tài liệu, làm word, hỗ trợ

nhóm trưởng làm code 100%

3 Mùng Chí Bảo Tìm hiểu thuật toán, làm powerpoint,

hỗ trợ nhóm trưởng làm code 100%

4 Đặng Nhật Anh Tìm hiểu các khải niệm, thuyết trình,

hỗ trợ nhóm trường làm code 100%

Trang 3

MỤC LỤ

C

LỜI MỞ ĐẦU 1

PHẦN I: PHÂN TÍCH BÀI TOÁN 2

1.1 Yêu cầu bài toán 2

1.2 Phân tích yêu cầu bài toán 2

PHẦN II: KHÁI NIỆM KHÔNG GIAN TRẠNG THÁI 4

2.1 Đặt vấn đề 4

2.2 Mô tả trạng thái 4

2.3 Toán tử chuyển trạng thái 4

2.4 Không gian trạng thái của bài toán 5

2.5 Biểu diễn không gian trạng thái dưới dạng đồ thị 5

PHẦN III: THUẬT TOÁN VÀ BIỂU DIỄN TRẠNG THÁI CỦA BÀI TOÁN 7

3.1 Thuật Toán Tìm Kiếm Mù Blind Search 7

3.2 Mô tả trạng thái của bài toán 8

PHẦN IV: CHƯƠNG TRÌNH GIẢI QUYẾT BÀI TOÁN 10

PHẦN V: TỔNG KẾT 14

KẾT LUẬN 15

Trang 5

LỜI MỞ ĐẦU

AI - Artificial Intelligence hay Trí tuệ nhân tạo là một ngành thuộc lĩnh vực khoa học máy tính, hoạt động dựa trên cơ chế mô phỏng suy nghĩ, nhận thức của con người và đưa vào bộ não của các thiết bị, hệ thống Có thể nói, các AI không chỉ đơn thuần là một phần mềm máy tính có tính logic mà chúng còn chứa đựng cả trí tuệ của con người Chúng biết suy nghĩ, lập luận để giải quyết các vấn đề khác nhau theo từng tình huống, cũng có thể giao tiếp với con người

AI được ứng dụng trong rất nhiều hoạt động và lĩnh vực khác nhau Đối với hoạt động nghiên cứu cơ bản, AI giúp giải phương trình vi phân, tính toán mô phỏng quá trình tương tác ở mức lượng tử, mô phỏng tái tạo thành công lỗ hổng đen, tối ưu hoá gen, xác định cấu trúc hoá học, … Đối với hoạt động nghiên cứu ứng dụng, AI hỗ trợ bác sĩ chẩn đoán bệnh, phân tích hình ảnh y khoa, xem xét tác động chính sách, giúp dự báo trước các rủi ro và mối nguy hại tiềm ẩn,…

Để có thể hiểu rõ hơn về lĩnh vực khoa học công nghệ nói chung và công nghệ Trí tuệ nhân tạo nói riêng, nhóm em lựa chọn ứng dụng trí tuệ nhân tạo vào giải bài

toán “Trò chơi đoán số”.

Trang 6

PHẦN I: PHÂN TÍCH BÀI TOÁN 1.1 Yêu cầu bài toán

Tên bài toán: Trò chơi đoán số

Cậu bé nghĩ ra 1 số (Gọi là S) gồm bỗn chữ số (không nhất thiết khác nhau) trong sáu chữ số từu 1 đến 6 Để tìm số đó máy lần lượt đưa ra các số dự đoán (gọi là M), mỗi số gồm 4 chữ số không nhất thiết khác nhau Với mỗi lần dự đoán, máy nhận được 2 câu trả lời của cậ bé cho 2 câu hỏi sau

+ Có bao nhiêu chữ số trong M là chữ số trong S nhưng vị trí xuất hiện của mỗi chữ số đó là sai?

+ Có bao nhiêu chữ số trong M là chữ số trong S và đồng thời vị trí xuất hiện của mỗi chữ số đều đúng?

Yêu cầu: Hãy hiện lên màn hình các số máy dự đoán và nói mỗi số đó nhận 2 câu

trả lời từ bàn phím của cậu bé cho đến khi được số đúng như cậu bé nghĩ (Số lần

dự đoán không quá 6 lần)

1.2 Phân tích yêu cầu bài toán

Ví dụ:

Cậu bé nghĩ ra 1 số (Gọi là S) gồm bỗn chữ số: 5436 (số Máy cần tìm)

Hiện lên màn hình:

Số máy dự đoán: 1234

Máy Nhận được 2 câu trả lời:

Đúng số - Đúng vị trí: 1

Đúng số - Sai vị trí: 1

Số máy dự đoán: 2156

Máy Nhận được 2 câu trả lời:

Đúng số - Đúng vị trí: 1

Đúng số - Sai vị trí: 1

Trang 7

Số máy dự đoán: 1416

Máy Nhận được 2 câu trả lời:

Đúng số - Đúng vị trí: 2

Đúng số - Sai vị trí: 0

Số máy dự đoán: 5436

Máy Nhận được 2 câu trả lời:

Đúng số - Đúng vị trí: 4

Đúng số - Sai vị trí: 0

Thông báo máy chọn đúng số (Đúng số - Đúng vị trí: 4)

Trang 8

PHẦN II: KHÁI NIỆM KHÔNG GIAN TRẠNG THÁI 2.1 Đặt vấn đề

Khi giải quyết bài toán bằng phương pháp tìm kiếm, trước hết ta phải xác định không gian tìm kiếm bao gồm tất cả các đối tượng trên đó thực hiện việc tìm kiếm Một phương pháp biểu diễn vấn đề phù hợp là sử dụng các khái niệm trạng thái (state) và toán tử (operator)

Phương pháp giải quyết vấn đề dựa trên khái niệm trạng thái và toán tử được gọi

là cách tiếp cận giải quyết vấn đề nhờ không gian trạng thái

2.2 Mô tả trạng thái

Giải bài toán trong không gian trạng thái, trước hết phải xác định dạng mô tả trạng thái bài toán sao cho bài toán trở nên đơn giản hơn, phù hợp bản chất vật lý của bài toán (Có thể sử dụng các xâu ký hiệu, véctơ, mảng hai chiều, cây, danh sách) Mỗi trạng thái chính là mỗi hình trạng của bài toán, các tình trạng ban đầu và tình trạng cuối của bài toán gọi là trạng thái đầu và trạng thái cuối

2.3 Toán tử chuyển trạng thái

Toán tử chuyển trạng thái thực chất là các phép biến đổi đưa từ trạng thái này sang trạng thái khác Có hai cách dùng để biểu diễn các toán tử:

- Biểu diễn như một hàm xác định trên tập các trạng thái và nhận giá trị cũng trong tập này

- Biểu diễn dưới dạng các quy tắc sản xuất S? A có nghĩa là nếu có trạng thái S thì có thể đưa đến trạng thái A

Ví dụ Bài toán đong nước.

Các thao tác sử dụng để chuyển trạng thái này sang trạng thái khác gồm:

Đổ đầy một bình, đổ hết nước trong một bình ra ngoài, đổ nước từ bình này sang bình khác Như vậy, nếu trạng thái đang xét là (x, y) thì các trạng thái kế tiếp có thể chuyển đến sẽ là:

Trang 9

(m, y)

(x, n)

(0, y)

(x, 0)

(x, y) (0, x+ y) nếu x+y < = n (x+y -n, n) nếu x+y > n

(x+ y,0) nếu x+y < = m

(m, x+y-m) nếu x+y > m

2.4 Không gian trạng thái của bài toán

Không gian trạng thái là tập tất cả các trạng thái có thể có và tập các toán tử của bài toán

Không gian trạng thái là một bộ bốn, Ký hiệu: K= (T, S, G, F) Trong đó,

T: tập tất cả các trạng thái có thể có của bài toán

S: trạng thái đầu

G: tập các trạng thái đích

F: tập các toán tử

Ví dụ 1: Không gian trạng thái của bài toán đong nước là bộ bốn T, S, G, F xác

đinh như sau:

T = {(x, y) / 0 <= x <= m; 0 <= y <= n}

S = (0,0)

G = {(x, k) hoặc (k, y) / 0 <= x <= m; 0 <= y <= n}

F = Tập các thao tác đong đầy, đổ ra hoặc đổ sang bình khác thực hiện trên một bình

2.5 Biểu diễn không gian trạng thái dưới dạng đồ thị

Các khái niệm

Đồ thị G = (V, E) trong đó V: tập đỉnh, E: tập cung (EV*V)

Trang 10

Chú ý

- G là đồ thị vô hướng thì (i, j) là một cạnh cũng như là (j, i) (tức là:(i, j) I E thì (j, i) I E)

- Nếu G là đồ thị có hướng thì cung (i, j) hoàn toàn khác với cung (j, i)

Trang 11

PHẦN III: THUẬT TOÁN VÀ BIỂU DIỄN

TRẠNG THÁI CỦA BÀI TOÁN

Bài toán: trò chơi đoán số

Đầu vào: số tự nhiên có 4 chữ số  9*10*10*10 = 9000 trạng thái

Đích: số tự nhiên có 4 chữ số trong đoạn từ 1 đến 6  6*6*6*6 = 1296 trạng thái

 Nhóm chúng em quyết định lựa chọn phương pháp tìm kiếm mù Blind Search

3.1 Thuật Toán Tìm Kiếm Mù Blind Search

Khái niệm: Một tìm kiếm mù (hay còn gọi là tìm kiếm không hiểu rõ) là một tìm kiếm mà không có thông tin về phạm vi của nó Điều duy nhất mà tìm kiếm mù có thể làm là phân biệt trạng thái không mục tiêu với trạng thái mục tiêu

Hãy xem xét bản đồ đơn giản sau của Romania

Giả sử bạn hiện đang ở Arad và chúng tôi muốn đến Bucharest Nếu chúng ta tạo

ra một cây tìm kiếm, cấp 1 sẽ có ba trạng thái; Zerind, Sibiu và Timisoara Một tìm kiếm mù sẽ không có ưu tiên về việc nó sẽ khám phá nút nào trước (sau này chúng ta

Trang 12

sẽ thấy rằng chúng ta có thể phát triển các chiến lược tìm kiếm kết hợp một số thông tin tình báo)

Bạn có thể thắc mắc tại sao chúng ta nên sử dụng tìm kiếm mù, khi chúng ta có thể sử dụng tìm kiếm với một số trí thông minh được tích hợp sẵn Câu trả lời đơn giản

là có thể không có bất kỳ thông tin nào mà chúng tôi có thể sử dụng Chúng tôi có thể chỉ đang tìm kiếm một câu trả lời và sẽ không biết rằng chúng tôi đã tìm thấy nó cho đến khi chúng tôi nhìn thấy nó

Nhưng cũng rất hữu ích khi nghiên cứu những tìm kiếm không được thông tin này vì chúng tạo cơ sở cho một số tìm kiếm thông minh mà chúng ta sẽ xem xét sau này

Các tìm kiếm mù mà chúng ta sắp xem xét chỉ khác nhau về thứ tự mà chúng ta

mở rộng các nút, nhưng như chúng ta sẽ thấy, điều này có thể có tác động đáng kể đến việc tìm kiếm hoạt động tốt như thế nào

3.2 Mô tả trạng thái của bài toán

Mỗi trạng thái chính là mỗi hình trạng của bài toán, các tình trạng ban đầu và tình trạng cuối của bài toán gọi là trạng thái đầu và trạng thái cuối

Ví dụ 1: (Trò chơi đoán số - Bulls and Cows)

- Gọi x là số chữ số trong M là chữ số trong S và đồng thời vị trí xuất hiện của mỗi chữ số đều đúng

- Gọi y là số số trong M là chữ số trong S nhưng vị trí xuất hiện của mỗi chữ số

đó là sai

Như vậy bộ có thứ tự (x | y) có thể xem là trạng thái của bài toán Với cách mô tả như vậy, các trạng thái đặc biệt của bài toán sẽ là:

* Xét trường hợp: Các số không trùng nhau

+ T là tập các đỉnh như hình dưới

+ S Trạng thái ban đầu là (x | y) với x + y ≥ 2 và (x | y) ≠ (3 | 1)

+ G Trạng thái cuối là (4 | 0)

Trang 13

+ F: Random

abcd 1 2 3 4 5 6 ≠ (0,0) (1,0) (0,1) (3,1) mnpq 1 3 6 4

Trang 14

PHẦN IV: CHƯƠNG TRÌNH GIẢI QUYẾT BÀI TOÁN Chương trình gồm 2 file

File1: bullandcow.java

package trochoidoanso;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.Scanner;

import static trochoidoanso.test.ran;

public class TroChoiDoanSo {

public static void main(String[] args) {

ArrayList<String> list = generateArray();

int steps = 0;

Scanner reader = new Scanner(System.in);

String AIguess = "";

System.out.println("Bulls and cows là một trò chơi giải mã trong đó bạn nghĩ đến

số có 4 chữ số và máy tính cố gắng đoán nó");

System.out.println("Bulls: Số đúng và đúng vị trí \nCows: Số đúng nhưng sai vị trí \n");

System.out.println("===========================================

======================\n");

System.out.println("Xin chào! Tôi là máy tính!\nBây giờ tôi sẽ nghĩ 1 con số ");

while (true) {

steps++;

System.out.println(" -*** -");

AIguess = list.get(ran.nextInt(list.size()));

System.out.println("Số còn lại là: " + list.size() + " số");

if(list.size() < 100){

System.out.println(list);

}

System.out.println("Số tôi đoán là: " + AIguess);

Trang 15

System.out.print("Số số đúng và đúng vị trí(Bulls): ");

int numberOfBulls = reader.nextInt();

System.out.print("Số số đúng nhưng sai vị trí(Cows): ");

int numberOfCows = reader.nextInt();

try{

removeWrongNums(new BcCount(numberOfBulls, numberOfCows), AIguess, list);

}catch(Exception e){

System.err.println(e);

}

if (numberOfBulls == 4) {

System.out.println("Tôi đã đoán với " + steps + " lần đoán");

break;

}

if(steps > 6){

System.out.println("Máy đã đoán quá 6 lần!");

}

}

reader.close();

}

public static ArrayList<String> generateArray(){

ArrayList<String> lst = new ArrayList<>();

for (int i = 1; i <= 6; i++) {

for (int j = 1; j <= 6; j++) {

for (int k = 1; k <= 6; k++) {

for (int l = 1; l <= 6; l++) {

lst.add(String.valueOf(i)+String.valueOf(j)+String.valueOf(k) +String.valueOf(l));

}

}

}

}

return lst;

}

Trang 16

public static void removeWrongNums(BcCount guessBcCount, String guess, ArrayList<String> list) {

Iterator<String> iter = list.iterator();

while (iter.hasNext()) {

String str = iter.next();

if (calcBullandCowCount(guess, str).equals(guessBcCount) == false) { iter.remove();

}

}

}

public static BcCount calcBullandCowCount(String guess, String candidate) { BcCount bcCount = new BcCount(0, 0);

for (int i = 0; i < candidate.length(); i++) {

if (guess.charAt(i) == candidate.charAt(i)) {

bcCount.bullCount++;

} else if (guess.contains(String.valueOf(candidate.charAt(i)))) {

bcCount.cowCount++;

}

}

return bcCount;

}

}

Trang 17

File2: BcCount.java

package bullandcow;

public class BcCount {

public int bullCount = 0;

public int cowCount = 0;

public BcCount(int b, int c) {

bullCount = b;

cowCount = c;

}

public String toString() {

return bullCount + " " + cowCount;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

BcCount other = (BcCount) obj;

if (bullCount != other.bullCount)

return false;

if (cowCount != other.cowCount)

return false;

return true;

}

}

Trang 18

PHẦN V: TỔNG KẾT

- Đặt vấn đề:

Khi giải quyết bài toán bằng phương pháp tìm kiếm, trước hết ta phải xác định không gian tìm kiếm bao gồm tất cả các đối tượng trên đó thực hiện việc tìm kiếm Phương pháp giải quyết vấn đề dựa trên khái niệm trạng thái và toán tử được gọi là cách tiếp cận giải quyết vấn đề nhờ không gian trạng thái

- Mô tả trạng thái:

Giải bài toán trong không gian trạng thái, trước hết phải xác định dạng mô tả trạng thái bài toán sao cho bài toán trở nên đơn giản hơn, phù hợp bản chất vật lý của bài toán (Có thể sử dụng các xâu ký hiệu, véctơ, mảng hai chiều, cây, danh sách)

Mỗi trạng thái chính là mỗi hình trạng của bài toán, các tình trạng ban đầu và tình trạng cuối của bài toán gọi là trạng thái đầu và trạng thái cuối

- Toán tử chuyển trạng thái:

Toán tử chuyển trạng thái thực chất là các phép biến đổi đưa từ trạng thái này sang trạng thái khác

- Không gian trạng thái của bài toán:

Không gian trạng thái là tập tất cả các trạng thái có thể có và tập các toán tử của bài toán

- Mô tả trạng thái của bài toán:

Mỗi trạng thái chính là mỗi hình trạng của bài toán, các tình trạng ban đầu và tình trạng cuối của bài toán gọi là trạng thái đầu và trạng thái cuối

Trang 19

KẾT LUẬN

Có thể nói, Trí tuệ nhân tạo (AI - Artificial Intelligence) xuất hiện đã đem đến bước tiến lớn trong ngành công nghệ phầm mềm Dù vẫn còn tồn tại những hạn chế nhưng không thể phủ định được những lợi ích mà AI mang lại trong mọi lĩnh vực cuộc sống, đặc biệt là trong các ngành y học, ngành công nghiệp nặng, tài chính ngân hàng, giao thông vận tải, giáo dục, hay trong việc phát triển các trò chơi giải trí trên máy tính, ti vi,…

Thông qua quá trình tìm tòi nghiên cứu và thực hiện đề tài “Trò chơi đoán số”, chúng em đã nắm vững được kiến thức về các khái niệm không gian trạng thái, các toán tử, đồ thị và các thuật toán, phương pháp tìm kiếm nói chung hay thuật toán tìm kiếm mù (Blind Search) nói riêng Đồng thời, hiểu rõ hơn về cách ứng dụng của ngành Trí tuệ nhân tạo (AI - Artificial Intelligence) trong việc tạo ra trò chơi giải trí cơ bản

Do kiến thức và vốn hiểu biết còn hạn chế nên trong quá trình phân tích và thực hiện đề tài “Trò chơi đoán số” vẫn còn tồn tại những sai sót, nhóm em rất mong nhận được sự góp ý cũng như chỉ bảo từ quý thầy, cô để có thể hoàn thành bài tập lớn một cách tốt nhất Chúng em xin chân thành cảm ơn!

Ngày đăng: 27/02/2024, 12:53

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w