Tải bản đầy đủ (.pdf) (19 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (292.85 KB, 19 trang )

lOMoARcPSD|11424851

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

STT Họ và tên sinh viên Nội dung thực hiện Tiến độ
hồn thành
Hồng Minh Cơng Tìm hiểu bài, phân chia cơng việc
1 (Nhóm trưởng) 100%
cho nhóm, code demo

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

2 Đào Cẩm Tú Tìm kiếm tài liệu, làm word, hỗ trợ 100%
3 Mùng Chí Bảo nhóm trưởng làm code
4 Đặng Nhật Anh
Tìm hiểu thuật tốn, làm powerpoint, 100%
hỗ trợ nhóm trưởng làm code



Tìm hiểu các khải niệm, thuyết trình, 100%
hỗ trợ nhóm trường làm code

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

MỤC LỤ
C

LỜI MỞ ĐẦU................................................................................................................1
PHẦN I: PHÂN TÍCH BÀI TỐN.............................................................................2

1.1 u cầu bài tốn.................................................................................................2
1.2 Phân tích u cầu bài tố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 Tốn tử chuyển trạng thái......................................................................................4
2.4 Khơng gian trạng thái của bài tố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 Tốn Tìm Kiếm Mù Blind Search..............................................................7
3.2 Mơ tả trạng thái của bài tố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

Downloaded by nhung nhung ()


lOMoARcPSD|11424851

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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 tốn mơ phỏng
q 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 đố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
tốn “Trị chơi đốn số”.

1

Downloaded by nhung nhung ()

lOMoARcPSD|11424851


PHẦN I: PHÂN TÍCH BÀI TỐN
1.1 u cầu bài tốn

Tên bài tố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ự đố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ự đốn khơng q 6 lần).
1.2 Phân tích u cầu bài tố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ự đố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ự đố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


2

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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)

3

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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 tốn sao cho bài tốn trở nên đơn giản hơn, phù hợp bản chất vật lý của
bài tố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 tố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 ngồ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à:

4


Downloaded by nhung nhung ()

lOMoARcPSD|11424851

(x, y) (m, y)
(x, n)
(0, y)
(x, 0)
(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 tố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 tốn tử của

bài tố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 tố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)

5

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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) hồn toàn khác với cung (j, i).

6

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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

Bài tốn: trị chơi đố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 Tố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

7

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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 tốn

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

Ví dụ 1: (Trị chơi đố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 tố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)

8

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

+ F: Random 1 2 3 4 5 6 ≠ (0,0) (1,0) (0,1) (3,1)
abcd 1 3 6 4

mnpq

9

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

PHẦN IV: CHƯƠNG TRÌNH GIẢI QUYẾT BÀI TỐ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 đố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 đốn là: " + AIguess);

10

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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 đã đố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;
}

11

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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;
}
}

12

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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;
}
}

13

Downloaded by nhung nhung ()


lOMoARcPSD|11424851

PHẦN V: TỔNG KẾT
- Đặt vấn đề:

Khi giải quyết bài tố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 tố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 tố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
tố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 tốn, các tình trạng ban đầu và tình
trạng cuối của bài tố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 tố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 tốn tử của bài
tố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 tốn, các tình trạng ban đầu và tình

trạng cuối của bài tốn gọi là trạng thái đầu và trạng thái cuối.

14

Downloaded by nhung nhung ()

lOMoARcPSD|11424851

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 q trình tìm tịi nghiên cứu và thực hiện đề tài “Trị chơi đố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 tố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 đố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ừ q thầy, cơ để có thể hồ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!

15

Downloaded by nhung nhung ()



×