Tải bản đầy đủ (.docx) (60 trang)

LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A

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 (2.7 MB, 60 trang )

1

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A*

1


2

Hà Nội – Năm 2017

2


3

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

SINH VIÊN: NGUYỀN THỊ MY LINH

LẬP TRÌNH GAME ỨNG DỤNG THUẬT TOÁN A*

Chuyên ngành

:

Người hướng dẫn



: Thạc sỹ Vũ Văn Huân

\

Hà Nội – Năm 2017
3

Công nghệ thông tin


4

LỜI CAM ĐOAN
Những nội dung trong đồ án tốt nghiệp này là thành quả từ sự nghiên
cứu và được thực hiện dưới sự trực tiếp hướng dẫn của giảng viên hướng dẫn
Thạc sỹ Vũ Văn Huân.
Đồ án được thực hiện hoàn toàn mới, là thành quả của riêng em, không
sao chép theo bất cứ đồ án tương tự nào. Mọi sự tham khảo sử dụng trong đồ
án đều được trích dẫn các nguồn tài liệu trong danh mục tài liệu tham khảo.
Mọi sao chép không hợp lệ, vi phạm quy chế của nhà trường, em xin
hoàn toàn chịu trách nhiệm
Sinh viên thực hiện
Nguyễn Thị My Linh

4


5


LỜI CẢM ƠN
Trong suốt quá trình học tập tại Trường Đại Học Tài Nguyên và Môi
Trường Hà Nội, chúng em đã được các thầy cô giảng dạy, giúp đỡ và được
truyền đạt nhiều kiến thức vô cùng quý giá. Ngoài ra, chúng em còn được rèn
luyện bản thân trong một môi trường học tập đầy sáng tạo và khoa học. Đây
là một quá trình hết sức quan trọng giúp em có thể thành công khi bắt tay vào
nghề nghiệp tương lai sau này. Em xin chân thành cảm ơn Ban giám hiệu nhà
trường, Ban chủ nhiệm khoa công nghệ thông tin, cùng toàn thể các thầy cô
đã tận tình giảng dạy và trang bị cho em nhiều kiến thức bổ ích trong suốt quá
trình học tập tại trường vừa qua. Đây là quãng thời gian vô cùng hữu ích, đã
giúp em trưởng thành lên rất nhiều và là hành trang rất quan trọng không thể
thiếu khi chuẩn bị ra trường và công việc sau này.
Đặc biệt em xin cảm ơn đến thầy Vũ Văn Huân, thầy đã tận tình giúp
đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm đồ án tốt nghiệp.
Trong thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều kiến
thức bổ ích mà còn học tập được tinh thần làm việc thái độ nghiên cứu
nghiêm túc, hiệu quả, đây là những điều rất cần thiết cho em trong quá trình
học tập và công tác sau này.
Mặc dù đã cố gắng trong suốt quá trình thực tập và làm đồ án, nhưng
do kinh nghiệm thực tế và trình độ chuyên môn chưa được nhiều nên em
không tránh khỏi những thiếu sót, em rất mong được sự chỉ bảo, góp ý chân
thành từ các thầy, cô giáo cùng tất cả các bạn.
Em xin chân thành cảm ơn!
Sinh viên thực hiện
Nguyễn Thị My Linh

5


6


MỤC LỤC

6


7

DANH MỤC CÁC CHỮ VIẾT TẮT
Chữ viết tắt
AI
TTNT

7

Tên tiếng anh
Artificial intelligence

Nghĩa tiếng việt
Trí tuệ nhân tạo
Trí tuệ nhân tạo


8

DANH MỤC HÌNH

8



9

DANH MỤC BẢNG

9


10

PHẦN MỞ ĐẦU
1. Tính cấp thiết của đề tài
Trí tuệ nhân tạo là một lĩnh vực gắn liền với ngành công nghệ thông tin,
hiện nay các sản phẩm game trí tuệ nhân tạo xuất hiện rất nhiều, và trí tuệ
nhân tạo đã trở nên quen thuộc dần với cuộc sống ngày nay.
Thuật toán A* là một thuật toán tìm kiếm đồ thị nhằm đưa ra lựa chọn
tìm kiếm thông minh, tối ưu nhất để thỏa mãn yêu cầu bài toán đưa ra. Trên
thực tế, người ta sử dụng các thuật toán tìm kiếm tạo nên các chương trình
nhằm phục vụ cho thực tiễn rất nhiều chẳng hạn như:
-

Tạo nên các trạng thái di chuyển thông minh và an toàn nhất cho Robot
Các chương trình tìm kiếm các đối tượng được định vị.
Các chức năng tìm kiếm đường đi ngắn nhất trên bản đồ…
Vậy nên em muốn đề xuất và thực hiện đề tài này để hiểu rõ hơn về thuật
toán tìm kiếm A* và ứng dụng được thuật toán vào một chương trình Gamecụ
thể sử dụng thuật toán để tìm kiếm đường đi tới đích một cách tối ưu nhất.
2. Tổng quan về đề tài nghiên cứu
Đề tài sẽ hệ thống lại một số cơ sở lý thuyết về đồ thị và về thuật toán
tìm đường, từ đó sẽ áp dụng thuật toán tìm kiếm A* vào game.
Đề tài được thực hiện nhằm mục đích xây dựng một hệ thống giải quyết

một bài toán tìm kiếm đường đi thực tế dựa trên chiến lược tìm kiếm
Heuristic và xây dựng một trò chơi ứng dụng thuật toán này.
3. Mục đích nghiên cứu

-

Mục đích tổng quát:
Tạo ra một sản phẩm Game ứng dụng Thuật toán tìm kiếm A* mang tính
trí tuệ nhân tạo và phục vụ cho giải trí.



Mục tiêu cụ thể:
Hiểu rõ về Lý thuyết đồ thị và Thuật toán tìm kiếm A*


11



Vận dụng tốt các kiến thức lập trình nền tảng và kỹ thuật lập trình để tạo ra
sản phẩm Game ứng dụng thuật toán A*
4. Đối tượng nghiên cứu và phạm vi nghiên cứu
Đối tượng nghiên cứu gồm có:

-

Lý thuyết đồ thị
Trí tuệ nhân tạo
Thuật toán A*

Phạm vi nghiên cứu:

-

Tổng quan về lý thuyết đồ thị và trí tuệ nhân tạo
Thuật toán A*
5. Phương pháp nghiên cứu








Lý thuyết:
Tổng hợp kiến thức về lý thuyết đồ thị tìm kiếm
Tìm hiểu thuật toán tìm kiếm A*
Phân tích thiết kế cho chương trình game
Thực nghiệm:
Ngôn ngữ lập trình: Java
Công cụ lập trình: Phần mềm Eclipse
Phầm mềm hỗ trợ phân tích thiết kế: Visual Paradigm.
6. Những đóng góp của báo cáo
Đồ án hoàn thành có những đóng góp sau đây:

-

Hệ thống hóa những vấn đề lý thuyết cơ bản về lý thuyết đồ thị, trí tuệ nhân


-

tạo
Lý thuyết của thuật toán A*.
Chương trình Game ứng dụng thuật toán A*


12

7. Kết cấu của báo cáo
Đồ án gồm có 3 chương như sau:
Chương 1: Tổng quan về cơ sở lý thuyết
Chương này trình bày tổng quan về Lý thuyết đồ thị và giới thiệu về Trí
tuệ nhân tạo. Đồng thời đề cập và giải thích về thuật toán A*.
1.1. Tổng quan về lý thuyết đồ thị
1.2.Tổng quan về trí tuệ nhân tạo
1.3.Giới thiệu về thuật toán A*
Chương 2: Phân tích thiết kế hệ thống
Mô tả các chức năng của chương trình game và xây dựng các biểu đồ
cần thiết như Biểu đồ Use Case, biểu đồ Hoạt động, biểu đồ Tuần tự.
2.1. Phân tích yêu cầu
2.2. Phân tích hệ thống thông tin
Chương 3: Xây dựng chương trình Game ứng dụng thuật toán A*
Trong chương này sẽ giải thích việc áp dụng thuật toán vào game như
thế nào và Demo chương trình Game.
3.1. Giới thiệu về chương trình Game
3.2. Áp dụng thuật toán A* vào Game
3.3. Xây dựng giao diện Game

CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT

1.1. Tổng quan về lý thuyết đồ thị
1.1.1. Định nghĩa
Lý thuyết đồ thị là một lĩnh vực đã có từ lâu và có nhiều ứng dụng hiện
đại. Những tư tưởng cơ bản của lý thuyết đồ thị được đề xuất vào những năm
đầu của thế kỷ 18 bởi nhà toán học lỗi lạc người Thụy Sỹ Lenhard Eurler.


13

Chính ông là người đã sử dụng đồ thị để giải bài toán nổi tiếng về các cây cầu
ở thành phố Konigsberg.
Năm 1852 Francis Guthrie đưa ra bài toán bốn màu về vấn đề liệu chỉ
với bốn màu có thể tô màu một bản đồ bất kì sao cho không có hai nước nào
cùng biên giới được tô cùng màu. Bài toán này được xem như đã khai sinh ra
lý thuyết đồ thị và chỉ được giải sau một thế kỷ vào năm 1976 bởi Kennenth
Appel và Wolfgang Haken.
Trong toán học và tin học, lý thuyết đồ thị (Graph Theory) nghiên cứu
các tính chất của đồ thị (Graph). Một cách không chính thức, đồ thị là một tập
các đối tượng được gọi là các đỉnh (hoặc nút) nối với nhau bởi các cạnh (hoặc
cung). Cạnh có thể có hướng hoặc vô hướng. Đồ thị thường được vẽ dưới
dạng một tập các điểm (các đỉnh) nối với nhau bằng các đoạn thẳng (các
cạnh).
Đồ thị (Graph) là một cấu trúc rời rạc gồm các đỉnh và các cạnh nối các
đỉnh đó. Đồ thị được ký hiệu là G = (V,E), trong đó:
V là tập đỉnh (vertex)
E ⊆ V x V là tập hợp các cạnh (edge)


14


Một số hình ảnh minh họa của đồ thị(Hình 1.1)

Hình 1.1 : Một số hình ảnh của đồ thị
a)

Các dạng đồ thị đặc biệt gồm có 5 dạng phổ biến:
Đơn đồ thị

Hình 1.2: Đơn đồ thị
Một đơn đồ thị (simple graph) G = (V,E) gồm một tập không rỗng V và
một tập cạnh E là các cạnh không sắp thứ tự của các đỉnh phân biệt
b) Đa đồ thị

Hình 1.3: Đa đồ thị


15

Một đa đồ thị (multigraph) G = (V, E) gồm một tập các đỉnh V, một tập
các cạnh E và một hàm f từ E tới {{u, v} | u, v ϵ V, u ≠ v}. Các cạnh ,
c)

được gọi là cạnh song song (parallel) nếu f( ) = f().
Giả đồ thị
Một giả đồ thị (pseudo graph) G = (V, E) gồm một tập đỉnh V, một tập
các cạnh E và một hàm f từ E tới {{u, v} | u, v ϵ V}. Một cạnh là khuyên
(loop) nếu f(e) = {u, u} = {u} với một đỉnh u nào đó.

Hình 1.4: Giả đồ thị
d)


Đồ thị có hướng
Một đồ thị có hướng (derected graph hoặc digraph) G = (V, E) gồm tập
các đỉnh V và tập các cạnh E là các cặp có thứ tự của các phần tử thuộc V.
Các cạnh ở đây còn được gọi là cung (arc).

Hình 1.5: Đồ thị có hướng
e)

Đa đồ thị có hướng
Một đa đồ thị có hướng (directed multigraph) G = (V, E) gồm một tập
các đỉnh V, tập các cạnh E và một hàm f từ E tới {{u, v} | u, v ϵ V}. Các
cạnh , được gọi là cạnh bội nếu f( ) = f().


16

1.1.2. Biểu diễn đồ thị trên máy tính
Để lưu trữ đồ thị và thực hiện các thuật toán khác nhau với đồ thị trên
máy tính cần phải tìm những cấu trúc dữ liệu thích hợp để mô tả đồ thị. Việc
chọn cấu trúc dữ liệu nào để biểu diễn đồ thị có tác động rất lớn đến hiệu quả
của thuật toán. Vì vậy, việc chọn lựa cấu trúc dữ liệu để biểu diễn đồ thị phụ
thuộc vào từng tình huống cụ thể (bài toán và thuật toán cụ thể).
Dưới đây là ba phương pháp biểu diễn đồ thị trên máy tính cơ bản:

Hình 1.6: Đồ thị G
a)

Biểu diễn bằng danh sách kề
Xét theo đồ thị G, ta có bảng tóm tắt như Bảng 1.1:

Biểu diễn bằng danh sách kề có hai cách như sau:
Cách 1:
Sử dụng một ma trận (mảng 2 chiều) và một dữ liệu là mảng một chiều.
int ke[MAX][MAX];
int sodinhke[MAX];


17

Bảng 1.1 : Tóm tắt đồ thị G
Trong đó mảng 2 chiều sẽ lưu những đỉnh kề và cần có số đỉnh kề để biết
với mỗi đỉnh như vậy thì số đỉnh kề là bao nhiêu. Chẳng hạn như hình đồ thị
cho ở trên, ta cần một ma trận gồm có 5 dòng và 3 cột ( 5 x 3), số dòng tương
ứng với số đỉnh của đồ thị, ma trận sẽ lưu số đỉnh kề của đỉnh đó. Mảng này
chỉ lưu các cạnh kề của từng đỉnh nền ta tự hiểu từ trên xuống lần lượt là các
đỉnh a, b, c, d, e.
Mỗi dòng này chính là một mảng một chiều, khi chúng ta làm việc trên
mảng một chiều ngoài mảng lưu dữ liệu thì cần thêm một mảng nữa để ghi lại
số phần tử thực dùng để máy tính hiểu được mỗi dòng có bao nhiêu phần từ
(tức là có bao nhiêu đỉnh). Vậy ta cần có một mảng một chiều để lưu số phần
tử thực dùng của mỗi đỉnh, minh họa như hình 1.7.

Hình 1.7: Minh họa mảng 2 chiều lưu đỉnh kề và mảng 1 chiều lưu số phần tử


18

Cách 2:
Sử dụng danh sách liên kết: List ke[MAX];
Với mỗi dòng ta sẽ tạo một danh sách liên kết tương ứng để lưu trữ. Với

dòng thứ nhất của đỉnh a thì tạo danh sách liên kết để lưu, phần tử đầu tiên
chứa b, sau đó liên kết đến phần tử thứ 2 là đỉnh e rồi đến null. Tiếp đến là
đỉnh b, và danh sách liên kết chứa các đỉnh kề tương tự như đỉnh a. Cuối cùng
mỗi đỉnh a, b, c, d, e là tập hợp các danh sách, khi đó ta có mảng một chiều
các danh sách liên kết để lưu trữ các đỉnh kề.

Hình 1.8: Minh họa biểu diễn bằng danh sách liên kết
Các danh sách liên kết giúp ta quản lí số phần tử tối đa và số phần tử
thực dùng trong mảng, đây là một ưu điểm của việc sử dụng danh sách liên
kết so với cách 1. Tuy nhiên có hạn chế là không thể truy xuất ngẫu nhiên
được mà phải truy xuất lần lượt.
b)

Biểu diễn bằng ma trận kề
Sử dụng mảng hai chiều để biểu diễn:
int a[MAX][MAX];


19

Giả sử G = (V, E) là một đơn đồ thị có số đỉnh. Không mất tính tổng quát
có thể coi các đỉnh được đánh số 1, 2, ..., n. Khi đó ta có thể biểu diễn đồ thị
bằng một ma trận vuông A = [] cấp n. Trong đó:



= 1 nếu (i, j) ∈ E
= 0 nếu (i, j) ∉ E
Quy ước = 0 với ∀i. Đối với đa đồ thị thì việc biểu diễn cũng tương tự
trên, chỉ có điều nếu như (i, j) là cạnh thì không phải ta ghi số 1 vào vị trí mà

là ghi số cạnh nối giữa đỉnh i và đỉnh j.

Hình 1.9: Biểu diễn đồ thị dưới dạng ma trận kề
c)

Biểu diễn bằng ma trận liên thuộc
Sử dụng mảng hai chiều để biểu diễn:
int a[MAX][MAX];
Xét trong cây đồ thị G = (V, E). Ma trận liên thuộc M của G là một ma
trận 0 – 1, có phần tử tại dòng i, cột j bằng 1 nếu cạnh nối với đỉnh vi và
bằng 0 nếu cạnh không nối với đỉnh .


20

Hình 1.10: Đồ thị G với các cạnh e
Ta có bảng biểu diễn bằng ma trận liên thuộc như sau:
e1

e2

e3

e4

e5

e6

1

0
1
0
0
0
b
1
1
0
0
0
0
c
0
1
0
1
0
1
d
0
0
0
1
1
0
e
0
0
1

0
1
1
Bảng 1.2: Biểu diễn đồ thị dưới dạng ma trận liên thuộc
a

1.1.3. Ý nghĩa của lý thuyết đồ thị
Lý thuyết đồ thị là ngành khoa học xuất hiện từ lâu nhưng có nhiều ứng
dụng hiện đại, có vị trí quan trọng của mình trong việc áp dụng để giải các bài
toán thực tế nhờ vào việc áp dụng các định lý, công thức và thuật toán. Một
bộ phận quan trọng của lý thuyết đồ thị là dạng bài toán Tìm kiếm đường đi,
được hình thành và có nhiều thuật toán giải quyết khác nhau đưa ra kết quả
phù hợp với từng bài toán.
Lý thuyết đồ thị rất đa dạng và có nhiều lĩnh vực con. Trong đó có:


Lý thuyết đồ thị đại số (Algebraic graph theory)



Lý thuyết đồ thị tô pô (Topological graph theory)



Lý thuyết đồ thị hình học (Geometric graph theory)


21




Lý thuyết đồ thị cực trị (Extremal graph theory)



Lý thuyết đồ thị mê-tríc (Metric graph theory)



Lý thuyết đồ thị xác suất (Probabilistic graph theory)
Lý thuyết đồ thị được ứng dụng nhiều trong phân tích lưới. Có hai kiểu

phân tích lưới. Kiểu thứ nhất là phân tích để tìm các tính chất về cấu trúc của
một lưới, chẳng hạn nó là một scale-free network hay là một small-world
network. Kiểu thứ hai, phân tích để đo đạc, chẳng hạn mức độ lưu thông xe cộ
trong một phần của mạng lưới giao thông (transportation network).
Lý thuyết đồ thị còn được dùng trong nghiên cứu phân tử. Trong vật lý
vật chất ngưng tụ, cấu trúc ba chiều phức tạp của các hệ nguyên tử có thể
được nghiên cứu một cách định lượng bằng cách thu thập thống kê về các tính
chất lý thuyết đồ thị có liên quan đến cấu trúc tô pô của các nguyên tử. Ví dụ,
các vành đường đi ngắn nhất Franzblau (Franzblau's shortest-path rings).
Với sự xuất hiện của nhiều của các hệ thống mạng như: hệ thống mạng
điện, mạng sản xuất, mạng lưới giao thông, mạng Internet… đã làm nảy sinh
ra các nhu cầu vận chuyển các chất liệu trên các mạng này sao cho đạt hiệu
quả cao nhất, chất liệu ở đây có thể là dòng điện, dữ liệu, hàng hóa…; hiệu
quả ở đây có thể xét theo tiêu chuẩn về thời gian, độ dài quãng đường, chi phí
và độ an toàn... Vậy nên các bài toán Tìm kiếm đường đi nói riêng và các bài
toán đồ thị nói chung có vai trò quan trọng trong các ngành khoa học hiện đại,
nó giúp giải quyết các bài toán luồng hiệu quả và tối ưu hơn, đem lại nhiều
ứng dụng thực tiễn, đảm bảo các yêu cầu thời gian, chi phí, tiền bạc… được

tốt hơn.
1.2. Tổng quan về trí tuệ nhân tạo
1.2.1. Định nghĩa trí tuệ nhân tạo
Trí tuệ nhân tạo là trí thông minh của máy do con người tạo ra. Ngay từ
khi chiếc máy tính điện tử đầu tiên ra đời, các nhà khoa học máy tính đã


22

hướng đến phát hiển hệ thống máy tính (gồm cả phần cứng và phần mềm) sao
cho nó có khả năng thông minh như loài người. Mặc dù cho đến nayước mơ
này vẫn còn xa mới thành hiện thực, tuy vậy những thành tựu đạt được cũng
không hề nhỏ: chúng ta đã làm được các hệ thống (phần mềm chơi cờ vua
chạy trên siêu máy tinh GeneBlue) có thể thắng được vua cờ thế giới; chúng
ta đã làm được các phần mềm có thể chứng minh được các bài toán hình học;
các loại Robot xử lý dữ liệu thông minh... Hay nói cách khác, trong một số
lĩnh vực, máy tính có thể thực hiện tốt hơn hoặc tương đương con người (tất
nhiên không phải tất cả các lĩnh vực). Đó chính là các hệ thống thông minh.
Có nhiều cách tiếp cận để làm ra trí thông minh của máy (hay là trí tuệ nhân
tạo), chẳng hạn là nghiên cứu cách bộ não người sản sinh ra trí thông minh
của loài người như thế nào rồi ta bắt chước nguyên lý đó, nhưng cũng có
những cách khác sử dụng nguyên lý hoàn toàn khác với cách sản sinh ra trí
thông minh của loài người mà vẫn làm ra cái máy thông minh như hoặc hơn
người; cũng giống như máy bay hiện nay bay tốt hơn con chim do nó có cơ
chế bay không phải là giống như cơ chế bay của con chim. Như vậy, trí tuệ
nhân tạo ở đây là nói đến khả năng của máy khi thực hiện các công việc mà
con người thường phải xử lý; và khi dáng vẻ ứng xử hoặc kết quả thực hiện
của máy là tốt hơn hoặc tương đương với con người thì ta gọi đó là máy thông
minh hay máy đó có trí thông minh. Hay nói cách khác, đánh giá sự thông
minh của máy không phải dựa trên nguyên lý nó thực hiện nhiệm vụ đó có

giống cách con người thực hiện hay không mà dựa trên kết quả hoặc dáng vẻ
ứng xử bên ngoài của nó có giống với kết quả hoặc dáng vẻ ứng xử của con
người hay không.
(1)

Các định nghĩa (quan điểm) về TTNT được chia thành 4 nhóm:
Các hệ thống suy nghĩ (thông minh) như con người


23

"[The automation of] acticvities that we associate with human thinking,
activities such as decision-making, problem solving, learning..." (Bellman,
(2)

1978)
Các hệ thống suy nghĩ một cách hợp lý
"The study of the computations that make it possible to perceive, reason,

(3)

and act." (Winston, 1992)
Các hệ thống hành động thông minh như con người
"The art or creating machines that perform functions that require
intelligence when performed by people." (Kurzweil, 1990)
"The study or how to make computers do things at which, at the

(4)

moment, people are better.” (Rich and Knight, 1991)

Các hệ thống hành động một cách hợp lý
"AI… is concerned with intelligent behavior in artifacts." (Nilsson,

-

1998)
Các định nghĩa (1) và (2) liên quan đến các quá trình suy nghĩ và suy diễn
Các định nghĩa (3) và (4) liên quan đến cách hành động
Các định nghĩa (1) và (3) đánh giá mức độ thành công (sự thông minh) theo

-

tiêu chuẩn của con người
Các định nghĩa (2) và (4) đánh giá mức độ thành công (sự thông minh) theo
tiêu chuẩn của sự hợp lý. Một hệ thống hành động hợp lý nếu nó làm các việc
phù hợpđối với những gì nó (hệ thống) biết.
1.2.2. Các nền tảng của trí tuệ nhân tạo

a)
b)
-

Triết học
Logic
Các phương pháp suy diễn
Các cơ sở (nền tảng) của việc học
Ngôn ngữ
Sự hợp lý
Toán học
Biểu diễn hình thức và các giải thuật chứng minh

Tính toán
Bài toán (vấn đề) giải quyết được và không giải quyết được
Bài toán (vấn đề) áp dụng được và không áp dụng được (độ phức tạp tính toán
- thời gian để giải quyết bài toán chính là hàm mũ)


24

c)
d)

f)
g)
h)
-

Xác suất
Kinh tế học
Hàm lợi ích (tiện ích)
Lý thuyết ra quyết định
Khoa học thần kinh
Nền tảng (cơ sở) tự nhiên của các hoạt động trí óc
e) Tâm lý học
Sự thích nghi
Các dấu hiệu của nhận thức và điều khiển vận động
Các kỹ thuật thực nghiệm (ví dụ: tâm sinh lý học,…)
Công nghệ máy tính
Xây dựng các máy tính có tốc độ tính toán nhanh
Lý thuyết điều khiển
Thiết kế các hệ thống nhằm cực đại hóa một hàm mục tiêu nào đó

Ngôn ngữ học
Biểu diễn tri thức
Ngữ pháp (của một ngôn ngữ)
1.2.3. Các lĩnh vực trong trí tuệ nhân tạo

a)

Tác tử
Tác tử là bất cứ cái gì (con người, người máy, software robots, các bộ ổn
nhiệt,…) có khả năng cảm nhận (nhận biết) môi trường xung quanh nó thông
qua các bộ phận cảm biến (sensors) và hành động phù hợp theo môi trường đó
thông qua các bộ phận hoạt động (actuators). Gồm 2 nhóm tác tử chính:

-

-

Tác tử con người
• Các bộ phận cảm biến: mắt, tai, và một số bộ phận cơ thể khác
• Các bộ phận hoạt động: tay, chân, miệng, và một số bộ phận cơ thể
khác
Tác tử người máy
• Các bộ phận cảm biến: các máy quay (cameras), các bộ truy tìm tín


hiệu hồng ngoại
Các bộ phận hoạt động: các loại động cơ (motors)

Có thể hiểu hơn về tác tử thông qua minh họa sau đây về máy hút bụi.
Ở máy hút bụi, khi nó vận hành làm việc sẽ được chia tác tử theo 2 hướng đó

là các nhận thức và các hành động.


25

Hình 1.11: Máy hút bụi làm việc dựa trên các tác tử
Cụ thể ở đây tác tử của máy sẽ nhận biết và hoạt động như sau:
Các nhận thức bao gồm : Vị trí và mức độ sạch sẽ. Ví dụ: [A, Bẩn], [B,
Bẩn].
Các hành động là trạng thái di chuyển của máy gồm: sang trái, sang
phải, hút bụi hoặc không làm gì.
b)

Giải quyết vấn đề
Giải quyết vấn đề bao gồm 2 phương pháp chính là Tìm kiếm và Thỏa
mãn ràng buộc. Tùy vào từng bài toán cụ thể, không gian trạng thái đưa ra …
sẽ áp dụng những phương pháp giải quyết phù hợp. Đối với từng phương
pháp luôn chứa đựng rất nhiều giải thuật khác nhau để vận dụng nhằm đưa ra
được lời giải. Ở đề tài này sẽ tìm hiểu khái quát chung về 2 phương pháp
chính này và tìm hiểu kĩ về thuật toán A* (giải quyết vấn đề trong bài toán
tìm kiếm đường đi).



Giải quyết vấn đề bằng phương pháp tìm kiếm
Giải quyết vấn đề bằng tìm kiếm: giúp tìm chuỗi các hành động cho phép đạt



đến (các) trạng thái mong muốn.

Các bước chính gồm:
Xác định mục tiêucần đạt đến (goal formulation)gồm một tập hợp của các

o

trạng thái (đích) vàdựa trên trạng thái hiện tại (của môi trường) và đánh giá
hiệu quả hành động (của tác tử).


×