You are on page 1of 21

Một số thuật toán tìm đường đi ngắn nhất và xây dựng ứng dụng game pikachu

pdf 51 trang
LỜI CẢM ƠN

Lời đầu tiên em xin bày tỏ lòng biết ơn chân thành và sâu sắc tới các
thầy, cô giáo trường Đại học sư phạm Hà Nội 2, đặc biệt là các thầy, cô giáo
trong khoa Công nghệ Thông tin đã truyền đạt cho em những kiến cần thiết và
bổ ích trong suốt quá trình học tập tại trường. Luận văn tốt nghiệp là cơ hội để
cho em có thể áp dụng, tổng kết lại những kiến thức mà mình đã học. Đồng
thời rút ra được những kinh nghiệm thực tế và quý giá trong suốt quá trình
thực hiện đề tài. Trong thời gian để hoàn thành khóa luận em đã nhận được sự
hướng dẫn tận tình của cô Lưu Thị Bích Hương cùng với các thầy, cô giáo và
các bạn lớp K35-Tin học đã giúp em hoàn thành tốt khóa luận này. Là sinh
viên lần đầu nghiên cứu khoa học chắc chắn đề tài của em không tránh khỏi
những thiếu sót, vì vậy em rất mong sự đóng góp ý kiến của các thầy, cô giáo
và các bạn để đề tài của em được hoàn thiện. Một lần nữa em xin chân thành
cảm ơn công lao dạy dỗ chỉ bảo của thầy, cô giáo. Kính chúc quý thầy, cô
giáo mạnh khỏe, tiếp tục đạt được nhiều thắng lợi trong nghiên cứu khoa học
và sự nghiệp trồng người.
Em xin chân thành cảm ơn!
Hà Nội, tháng 5 năm 2013
Sinh viên

Lê Thị Hạnh

LỜI CAM ĐOAN


Tên em là: LÊ THỊ HẠNH
Sinh viên lớp: K35 - Tin học, khoa Công nghệ Thông tin, trường Đại
học sư phạm Hà Nội 2.
Em xin cam đoan:
1. Đề tài: "Một số thuật toán tìm đường đi ngắn nhất và xây dựng
ứng dụng game Pikachu" là sự nghiên cứu cua riêng em, dưới sự hướng dẫn
của cô giáo Th.S Lưu Thị Bích Hương.
2. Khóa luận hoàn toàn không sao chép của các tác giả nào khác.
Nếu sai em xin hoàn toàn chịu trách nhiệm.

Hà Nội, tháng 5 năm 2013


Sinh viên

MỤC LỤC
MỞ ĐẦU ........................................................................................................... 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ................................................................... 8
1.1. Giới thiệu về ngôn ngữ Visual C#. ......................................................... 10
1.2. Lịch sử phát triển của trí tuệ nhân tạo..................................................... 10
1.3. Tổng quan về khoa học trí tuệ nhân tạo. ................................................. 11
1.4. Các khái niệm cơ bản ............................................................................. 12
1.5. Vai trò của trí tuệ nhân tạo. .................................................................... 13
1.6. Các kỹ thuật trí tuệ nhân tạo ................................................................... 14
1.7. Một số vấn đề trí tuệ nhân tạo quan tâm. ................................................ 16
CHƯƠNG 2: LÝ THUYẾT ĐỒ THỊ VÀ MỘT SỐ THUẬT TOÁN TÌM
ĐƯỜNG ĐI NGẮN NHẤT .............................................................................. 19
2.1. Lý thuyết đồ thị ......................................................................................... 19
2.1.1. Định nghĩa đồ thị................................................................................. 19
2.1.2. Định nghĩa đường đi, chu trình, đồ thị liên thông. ............................... 22
2.2. Một số khái niệm ....................................................................................... 24
2.2.1. Mở đầu ................................................................................................ 24
2.2.2. Giải quyết vấn đề bằng phương pháp tìm kiếm ................................... 25
2.2.3. Biểu diễn vấn đề trong không gian trạng thái ...................................... 26
2.2.4. Đường đi ngắn nhất xuất phát từ một đỉnh .......................................... 27
2.2.5. Tìm kiếm trên đồ thị và/hoặc............................................................... 28
2.3. Một số thuật toán tìm đường đi ngắn nhất ................................................. 28
2.3.1. Bài toán tìm đường đi ngắn nhất.......................................................... 28
2.3.2. Thuật toán tìm kiếm theo chiều sâu (Depth First Search - DFS) .......... 29
2.3.3. Thuật toán tìm kiếm theo chiều rộng (Breadth First Search)................ 32
2.3.4. Thuật toán tìm kiếm sâu dần ............................................................... 35
2.3.4. Thuật toán Dijkstra tìm đường đi ngắn nhất ........................................ 37
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG GAME PIKACHU .......................... 41

3.1. Giới thiệu bài toán ..................................................................................... 41


3.2. Cấu trúc game Pikachu .............................................................................. 41
3.3. Cách xây dựng game Pikachu .................................................................... 43
3.3.1. Cơ sở lý thuyết .................................................................................... 43
3.3.2. Áp dụng thuật toán tìm kiếm theo chiều rộng ...................................... 44
3.4. Một số giao diện và kết quả chạy chương trình.......................................... 46
3.4.1. Giao diện chính của chương trình khi mới tạo ..................................... 46
3.4.2. Giao diện khi chạy Auto Play .............................................................. 47
3.4.3. Giao diện khi người chơi tự chơi ......................................................... 48
KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN ....................................... 49
TÀI LIỆU THAM KHẢO ................................................................................ 51

MỞ ĐẦU
1. Lý do và mục đích chọn đề tài
Toán học là một môn khoa học có nhiều ứng dụng trong cuộc sống, cùng với sự phát
triển vượt bậc của khoa học kỹ thuật, đặc biệt là sự phát triển Công nghệ thông tin là một trong
những lĩnh vực có nhiều đóng góp thiết thực nhất trong cuộc sống làm cho Toán học thể hiện
được khả năng ứng dụng mạnh mẽ hơn trong hầu hết các lĩnh vực của đời sống xã hội.
Trong nhiều bài Toán ứng dụng thì một trong những kết quả quan trọng cần đạt đến là
phương án giải quyết tối ưu nhất. Chính vì vậy các lý thuyết về đồ thị đã trở thành một cơ sở lý
thuyết nền tảng để có thể giải quyết các bài toán ứng dụng thực tế đó.
Một trong những ứng dụng quan trọng của lý thuyết đồ thị là Trí tuệ nhân tạo, là một lĩnh
vực đang phát triển rất mạnh. Trí tuệ nhân tạo mở ra cho con người nhiều ứng dụng mang tính
đột phá và còn trợ giúp cho con người trong những công việc cần thiết.
Một trong những nghiên cứu của trí tuệ nhân tạo là đưa ra các quy trình, phương án hay
các giải thuật tối ưu nhất để giải quyết các bài toán một các nhanh nhất và chính xác nhất có thể.
Chính vì vậy để giải quyết các bài toán đó thì phương pháp sử dụng đồ thị cây có nhiều giải pháp
tối ưu, trong đó là các bài toán ứng dụng về cây quyết định.
Trong cuộc sống của chúng ta có rất nhiều các công việc cần xử lí dưới nhiều dạng các
bài toán khác nhau như: các bài toán trong kinh doanh, các quyết định trong quản lí, các chọn lựa
hợp lí,…Mô hình cây quyết định có rất nhiều giải pháp tối ưu để giải quyết các bài toán đó.
Máy tính điện tử đã và đang trở thành công cụ đắc lực không chỉ giảm nhẹ sức lao động là lao
động trí tuệ mà còn trợ giúp cho con người những kiến thức mới trước đây khó hình dung. Một
trong những ứng dụng của máy tính là lưu trữ dữ liệu giúp cho các nhà quản lý nắm bắt và xử lý
tình huống thông tin một cách chính xác, kịp thời và an toàn. Trí tuệ nhân tạo trong lĩnh vực
công nghệ thông tin là ngành khoa học nghiên cứu những phương thức để máy tính có khả năng
tư duy suy nghĩ như con người. Ngoài ra trí tuệ nhân tạo còn là ngành nghiên cứu những phương
thức để giúp máy tính làm được những công việc mà tại thời điểm đó nó là những công việc mà
con người chưa làm được hay không làm được. Một trong những nghiên cứu đó là đưa ra các
giải thuật tìm đường đi ngắn nhất, tối ưu nhất phục vụ việc giải quyết các vấn đề của bài toán
một cách nhanh nhất có thể. Là một sinh viên khoa Công nghệ Thông tin, trường Đại học sư
phạm Hà Nội 2, với mong muốn được nghiên cứu và tìm hiểu sâu hơn về vấn đề này, bắt đầu
làm quen với công việc nghiên cứu khoa học em đã chọn đề tài: “Một số thuật toán tìm đường đi
ngắn nhất và xây dựng ứng dụng Game Pikachu”.
ỨNG DỤNG CÂY QUYẾT ĐỊNH TRONG CÁC BÀI TOÁN THỰC TẾ
Đề tài được xây dựng trên ngôn ngữ lập trình C# trong bộ Microsoft Visual Studio 2008 với hệ
quản trị cơ sở dữ liệu Microsoft SQL Sever 2005.
2. Đối tượng và phạm vi nghiên cứu
2.1. Đối tượng nghiên cứu
Tìm hiểu một số thuật toán tìm đường đi ngắn nhất.

2.2. Phạm vi nghiên cứu


- Đề tài tập trung nghiên cứu một số thuật toán tìm đường đi ngắn nhất
như: Thuật toán tìm kiếm theo chiều sâu, thuật toán tìm kiếm theo chiều rộng,
thuật toán tìm kiếm sâu dần, thuật toán Dijkstra.
- Game Pikachu sử dụng thuật toán: Thuật toán tìm kiếm theo chiều rộng.
3. Nhiệm vụ nghiên cứu
Tập trung tìm hiểu các vấn đề sau:
- Tìm hiểu về trí tuệ nhân tạo.
- Tìm hiểu về lý thuyết đồ thị.
- Tìm hiểu bài toán tìm đường đi ngắn nhất.
- Tìm hiểu một số thuật toán tìm đường đi ngắn nhất.
- Tìm hiểu đường đi ngắn nhất xuất phát từ một đỉnh.
- Tìm hiểu ngôn ngữ lập trình C#.
- Xây dựng ứng dụng dựa trên ngôn ngữ lập trình C# để mô phỏng.
4. Phương pháp nghiên cứu
4.1. Phương pháp nghiên cứu lý luận
Nghiên cứu qua việc đọc sách, báo và các tài liệu liên quan nhằm xây
dựng cơ sở lý thuyết của đề tài và các biện pháp cần thiết để giải quyết các
vấn đề của đề tài.
4.2. Phương pháp chuyên gia
Tham khảo ý kiến các chuyên gia Tin học để có thể thiết kế chương
trình phù hợp với yêu cầu thực tiễn, đáp ứng được yêu cầu của người sử dụng.
4.3. Phương pháp thực nghiệm
Thông qua quan sát thực tế, yêu cầu của cơ sở, những lý luận được
nghiên cứu và kết quả đạt được qua những phương pháp trên, chương trình sẽ
được đưa vào chạy thử để từ đó có những điều chỉnh phù hợp.

5. Ý nghĩa khoa học và thực tiễn của đề tài


Bài toán tìm đường đi ngắn nhất là bài toán quan trọng của lý thuyết đồ
thị, bài toán tìm được lời giải tối ưu nhất và giải quyết các vấn đề một cách
nhanh nhất.
Trong các ứng dụng thực tế, bài toán tìm đường đi ngắn nhất có ý nghĩa
to lớn như: Bài toán chọn hành trình tiết kiệm nhất theo tiêu chuẩn khoảng
cách, thời gian hoặc chi phí trên một mạng giao thông đường bộ. Bài toán
chọn một phương pháp tiết kiệm nhất để đưa một hệ thống động lực từ trạng
thái xuất phát đến một trạng thái đích. Bài toán lập lịch thi công các công
đoạn trong một công trình thi công lớn. Bài toán lựa chọn đường truyền tin
với chi phí nhỏ nhất trong mạng thông tin…
6. Cấu trúc khóa luận
Ngoài phần mở đầu, kết luận và phương hướng phát triển. Nội dung
của khóa luận bao gồm 3 chương:
Chương 1: Cơ sở lý thuyết
Chương 2: Lý thuyết đồ thị và một số thuật toán tìm đường đi ngắn nhất
Chương 3: Xây dựng ứng dụng game Pikachu

7
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Giới thiệu về ngôn ngữ Visual C#
Ngôn ngữ C# khá đơn giản, chỉ khoảng 80 từ khóa và hơn mười mấy
kiểu dữ liệu được xây dựng sẵn. Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi
nó thực thi những khái niệm lập trình hiện đại. C# bao gồm tất cả những hỗ
trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng. Những
tính chất đó hiện diện trong một ngôn ngữ lập trình hiện đại. Và ngôn ngữ
C# hội đủ những điều kiện như vậy, hơn nữa nó được xây dựng trên nền
tảng của hai ngôn ngữ mạnh nhất là C++ và Java.
Ngôn ngữ C# được phát triển bởi đội ngũ kỹ sư của Microsoft, trong
đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth. Cả hai người này
đều là những người nổi tiếng, trong đó Anders Hejlsberg được biết đến là
tác giả của Turbo Pascal, một ngôn ngữ lập trình PC phổ biến. Và ông đứng
đầu nhóm thiết kế Borland Delphi, một trong những thành công đầu tiên của
việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server.
Phần cốt lõi hay của bất cứ ngôn ngữ lập trình hướng đối tượng là sự hỗ
trợ của nó cho việc định nghĩa và làm việc với những lớp. Những lớp thì
định nghĩa những kiểu dữ liệu mới, cho phép người phát triển mở rộng ngôn
ngữ để tạo mô hình tốt hơn để giải quyết vấn đề. Ngôn ngữ C# chứa những
từ khóa cho việc khai báo những kiểu lớp đối tượng mới và những phương
thức hay thuộc tính của lớp, và cho việc thực thi đóng gói, kế thừa, và đa hình,
ba thuộc tính cơ bản của bất cứ ngôn ngữ lập trình hướng đối tượng.
Trong ngôn ngữ C# mọi thứ liên quan đến khai báo lớp đều được
tìm thấy trong phần khai báo của nó. Định nghĩa một lớp trong ngôn ngữ
C# không đòi hỏi phải chia ra tập tin header và tập tin nguồn giống như
trong ngôn ngữ C++. Hơn thế nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho
phép chèn các tag XML để phát sinh tự động các document cho lớp.
8

C# cũng hỗ trợ giao diện interface, nó được xem như một cam kết với một
lớp cho những dịch vụ mà giao diện quy định. Trong ngôn ngữ C#, một lớp chỉ
có thể kế thừa từ duy nhất một lớp cha, tức là không cho đa kế thừa như trong
ngôn ngữ C++, tuy nhiên một lớp có thể thực thi nhiều giao diện. Khi một lớp
thực thi một giao diện thì nó sẽ hứa là nó sẽ cung cấp chức năng thực thi giao
diện.
Trong ngôn ngữ C#, những cấu trúc cũng được hỗ trợ, nhưng khái niệm
về ngữ nghĩa của nó thay đổi khác với C++. Trong C#, một cấu trúc được giới
hạn, là kiểu dữ liệu nhỏ gọn, và khi tạo thể hiện thì nó yêu cầu ít hơn về hệ
điều hành và bộ nhớ so với một lớp. Một cấu trúc thì không thể kế thừa từ
một lớp hay được kế thừa nhưng một cấu trúc có thể thực thi một giao diện.
Ngôn ngữ C# cung cấp những đặc tính hướng thành phần
(component-oriented), như là những thuộc tính, những sự kiện. Lập trình
hướng thành phần được hỗ trợ bởi CLR cho phép lưu trữ metadata với mã
nguồn cho một lớp. Metadata mô tả cho một lớp, bao gồm những phương
thức và những thuộc tính của nó, cũng như những sự bảo mật cần thiết và
những thuộc tính khác. Mã nguồn chứa đựng những logic cần thiết để thực
hiện những chức năng của nó. Do vậy, một lớp được biên dịch như là một
khối self-contained, nên môi trường hosting biết được cách đọc metadata của
một lớp và mã nguồn cần thiết mà không cần những thông tin khác để sử
dụng nó.
Ngôn ngữ C# cũng hỗ trợ việc truy cập bộ nhớ trực tiếp sử dụng kiểu
con trỏ của C++ và từ khóa cho dấu ngoặc [] trong toán tử. Các mã nguồn
này là không an toàn (unsafe). Và bộ giải phóng bộ nhớ tự động của CLR
sẽ không thực hiện việc giải phóng những đối tượng được tham chiếu bằng sử
dụng con trỏ cho đến khi chúng được giải phóng.
9

1.2. Lịch sử phát triển của trí tuệ nhân tạo


Lịch sử của trí tuệ nhân tạo cho thấy ngành khoa học này có nhiều kết
quả đáng ghi nhận. Theo các mốc phát triển, người ta thấy trí tuệ nhân tạo
được sinh ra từ những năm 50 với các sự kiện sau:
- Turing được coi là người khai sinh ngành trí tuệ nhân tạo bởi phát
hiện của ông về máy tính có thể lưu trữ chương trình và dữ liệu.
- Tháng 8/1956 J. Mc Carthy, M. Minsky, A. Newell, Shannon. Simon
,… đưa ra khái niệm “trí tuệ nhân tạo”.
- Vào khoảng năm 1960 tại Đại học MIT (Massachussets Institure of
Technology) ngôn ngữ LISP ra đời, phù hợp với các nhu cầu xử lý đặc trưng
của trí tuệ nhân tạo - đó là ngôn ngữ lập trình đầu tiên dùng cho trí tuệ nhân
tạo.
- Thuật ngữ trí tuệ nhân tạo được dùng đầu tiên vào năm 1961 cũng tại MIT.
- Những năm 60 là giai đoạn lạc quan cao độ về khả năng làm cho máy
tính biết suy nghĩ. Trong giai đoạn này người ta đã được chứng kiến máy chơi
cờ đầu tiên và các chương trình chứng minh định lý tự động. Cụ thể:
+ 1961: Chương trình tính tích phân bất định
+ 1963: Các chương trình Heuristics: Chương trình chứng minh các
định lý hình học không gian có tên là “tương tự”, chương trình chơi cờ của
Samuel, tìm kiếm đường đi có giá thành cực tiểu.
+1964: Chương trình giải phương trình đại số sơ cấp, chương trình trợ
giúp ELIZA (có khả năng làm việc giống như một chuyên gia phân tích tâm lý).
+ 1966: Chương trình phân tích và tổng hợp tiếng nói.
+ 1968: Chương trình điều khiển người máy (Robot) theo đồ án “Mát –
tay”, chương trình học nói.
- Vào những năm 60, do giới hạn khả năng của các thiết bị, bộ nhớ và
đặc biệt là yếu tố thời gian thực hiện nên có sự khó khăn trong việc tổng quát
hoá các kết quả cụ thể vào trong một chương trình mềm dẻo thông minh.

10

- Vào những năm 70, máy tính với bộ nhớ lớn và tốc độ tính toán nhanh
nhưng các phương pháp tiếp cận trí tuệ nhân tạo cũ vẫn thất bại (do sự bùng
nổ tổ hợp trong quá trình tìm kiếm lời giải các bài toán đặt ra).
- Vào cuối những năm 70 một vài kết quả như xử lý ngôn ngữ tự nhiên,
biểu diễn tri thức và giải quyết vấn đề. Những kết quả đó đã tạo điều kiện cho
sản phẩm thương mại đầu tiên của trí tuệ nhân tạo ra đời đó là hệ chuyên gia,
được đem áp dụng trong các lĩnh vực khác nhau (hệ chuyên gia là một phần
mềm máy tính chứa các thông tin và tri thức về một lĩnh vực cụ thể nào đó, có
khả năng giải quyết những yêu cầu của người sử dụng trong một mức độ nào đó,
ở một trình độ như một chuyên gia con người có kinh nghiệm khá lâu năm).
- Một sự kiện quan trọng vào những năm 70 là sự ra đời ngôn ngữ
Prolog, tương tự LISP nhưng nó có cơ sở dữ liệu đi kèm.
- Vào những năm 80, thị trường các sản phẩm dân dụng đã có khá
nhiều sản phẩm ở trình đô cao như: máy giặt, máy ảnh,... sử dụng trí tuệ nhân
tạo. Các hệ thống nhận dạng và xử lý ảnh, tiếng nói.
- Những năm 90, các nghiên cứu nhằm vào cài đặt thành phần thông minh
trong các hệ thống thông tin, gọi chung là cài đặt trí tuệ nhân tạo, làm rõ hơn các
ngành của khoa học trí tuệ nhân tạo và tiến hành các nghiên cứu mới, đặc biệt là
nghiên cứu về cơ chế suy lý, về trí tuệ nhân tạo phân tạo, về các mô hình tương tác.
1.3. Tổng quan về khoa học trí tuệ nhân tạo
Trong công nghệ thông tin, trí tuệ nhân tạo (Artificial Intelligence) là
một ngành mới, nhưng phát triển rất mạnh mẽ và đem lại nhiều kết quả to lớn.
Con người thường tự cho mình là sinh vật thông minh vì khả năng trí tuệ
đóng vai trò quan trọng trong cuộc sống. Trong văn học cũng đã từng có
những câu chuyện đề cao về trí thông minh của con người.
Trí tuệ nhân tạo chỉ mới hình thành từ năm 1956. Tuy nhiên, việc
nghiên cứu trí tuệ đã có từ lâu. Trên 2000 năm trước, các nhà triết học đã tìm
hiểu về cách thức nhìn nhận, học tập, nhớ và suy lý. Việc ra đời của máy tính

11

điện tử vào những năm 50 của thế kỷ 20 đã sinh ra khuynh hướng đưa các
lĩnh vực nghiên cứu trí tuệ về các vấn đề lý thuyết và thực nghiệm trên máy.
1.4. Các khái niệm cơ bản
Trí tuệ con người (Human Intelligence): Cho đến nay chưa có một
định nghĩa chính xác về trí tuệ con người và đã có rất nhiều quan điểm khác
nhau. Sau đây là một số quan điểm:
- Năm 1950, Alan Turing đã đưa ra các “trắc nghiệm thông minh” để nhận
biết máy tính có thông minh hay không. Tuy vậy, theo ông tuy máy tính có thể
thất bại trong các trắc nghiệm thông minh nhưng nó vẫn có thể thông minh.
- Theo quan điểm của Minsky, trí tuệ nhân tạo là một ngành khoa học
nhằm nghiên cứu, mô phỏng trên máy tính các hành vi và tư duy thông minh
tương tự như con người. Nó giúp máy tính có khả năng nhận thức, suy luận và
phản ứng. Có hai hướng tiếp cận trí tuệ nhân tạo:
+ Dùng máy tính để làm theo quá trình xử lý của con người.
+ Thiết kế những máy tính thông minh độc lập với cách suy nghĩ của
con người.
- Khái niệm trí tuệ theo quan điểm của Turing: Trí tuệ là những gì có
thể đánh giá được thông qua các trắc nghiệm thông minh.
- Theo từ điển bách khoa toàn thư Webstes định nghĩa. Trí tuệ là khả năng:
+ Phản ứng một cách thích hợp những tình huống mới thông qua hiệu
chỉnh hành vi một cách thích đáng.
+ Hiểu rõ những mối liên hệ qua lại của các sự kiện của thế giới bên
ngoài nhằm đưa ra những hành động phù hợp đạt tới một mục đích nào đó.
- Theo nhữngnhà tâm lý học nhận thức thì quá trình hoạt động trí tuệ
của con người bao gồm 4 thao tác cơ bản:
+ Xác định tập đích (goals) cần đạt tới.
+ Thu thập các sự kiện (facts) và các luật suy diễn (inference rules) để
đạt tới tập đích đặt ra.

12

+ Thu gọn (pruning) quá trình suy luận nhằm xác định một cách nhanh
chóng tập các suy diễn có thể sử dụng được để đạt tới một đích chung nào đó.
+ Áp dụng các cơ chế suy diễn (tiến hoặc lùi) cụ thể (inference
mechanisms) dựa trên các thao tác thu gọn quá trình suy luận và những sự
kiện trung gian mới được tạo ra, để dẫn dắt từ những sự kiện ban đầu đến
những đích đã đặt ra.
Trí tuệ máy: Cho đến nay cũng không có một định nghĩa chính xác nào
được đưa ra để định nghĩa về trí tuệ máy, chỉ có một vài dấu hiệu quan trọng
của trí tuệ máy:
- Trí tuệ máy là khả năng học.
- Khả năng mô phỏng các hành vi sáng tạo của con người.
- Khả năng trừu tượng hoá, tổng quát hoá và suy diễn .
- Khả năng tự giải thích hành vi.
- Khả năng thích nghi tình huống mới gồm khả năng thu nạp dữ liệu
tích hợp, rút tri thức từ dữ liệu.
- Khả năng xử lý các biểu diễn hình thức như (các kí hiệu tượng trưng,
danh sách).
- Khả năng vận dụng các tri thức heuristic sẵn có.
- Khả năng xử lý các thông tin bất định, không đầy đủ, không chính xác...
Như vậy trí tuệ máy khác trí tuệ người ở chỗ nó không thể nhìn được
một phần hay toàn thể quá trình giải bài toán trong những tình huống mới và
không tự sinh ra được các heuristics.
1.5. Vai trò của trí tuệ nhân tạo
Trí tuệ nhân tạo bao quát rất nhiều lĩnh vực nghiên cứu hẹp. Nó nghiên
cứu từ các lĩnh vực tổng quát như máy nhận biết, suy luận logic, đến các bài
toán như chơi cờ, chứng minh định lý, tìm kếm đường đi. Thường thì các nhà
khoa học ở các lĩnh vực khác tìm đến với trí tuệ nhân tạo ở các kỹ thuật hệ

13

thống hoá và tự động hoá các xử lý tri thức cũng như các phương pháp thuộc
lĩnh vực mang tính người.
Trí tuệ nhân tạo nghiên cứu kỹ thuật làm cho máy tính có thể “suy nghĩ
một cách thông minh” và mô phỏng quá trình suy nghĩ của con người khi đưa
ra những quyết định, lời giải. Trên cơ sở đó, thiết kế các chương trình cho
máy tính để giải quyết bài toán.
Sự ra đời và phát triển của trí tuệ nhân tạo đã tạo ra một bước nhảy vọt về
chất trong kỹ thuật và kỹ nghệ xử lý thông tin. Trí tuệ nhân tạo chính là cơ sở
của công nghệ xử lý thông tin mới, độc lập với công nghệ xử lý thông tin truyền
thống dựa trên văn bản giấy tờ. Điều này được thể hiện qua các mặt sau:
- Nhờ những công cụ hình thức hoá (các mô hình logic ngôn ngữ, logic
mờ,...), các tri thức thủ tục và tri thức mô tả có thể biểu diễn được trong máy.
Do vậy quá trình giải bài toán được tiến hành hữu hiệu hơn.
- Mô hình logic ngôn ngữ đã mở rộng khả năng ứng dụng của máy tính
trong lĩnh vực đòi hỏi tri thức chuyên gia ở trình độ cao, rất khó như: Y học,
sinh học, địa lý, tự động hóa.
- Một số phần mềm trí tuệ nhân tạo thể hiện tính thích nghi và tính
mềm dẻo đối với các lớp bài toán thuộc nhiều lĩnh vực khác nhau.
- Khi máy tính được trang bị các phần mềm trí tuệ nhân tạo ghép mạng
sẽ cho phép giải quyết những bài toán cỡ lớn và phân tán.
1.6. Các kỹ thuật trí tuệ nhân tạo
Có nhiều kỹ thuật nghiên cứu, phát triển ngành khoa học trí tuệ nhân
tạo. Tuy vậy, các kỹ thuật trí tuệ nhân tạo thường khá phức tạp khi cài đặt cụ
thể, lý do là các kỹ thuật này thiên về xử lý các ký hiệu tượng trưng và đòi hỏi
phải sử dụng những tri thức chuyên môn thuộc nhiều lĩnh vực khác nhau.
Do vậy, các kỹ thuật trí tuệ nhân tạo hướng tới khai thác những tri thức
về lĩnh vực đang quan tâm được mã hoá trong máy sao cho đạt được mức độ
tổng quát, dễ hiểu, dễ diễn đạt thông qua ngôn ngữ chuyên môn gần gũi với

14

ngôn ngữ tự nhiên, dễ sửa đổi, hiệu chỉnh, dễ sử dụng, khai thác nhằm thu hẹp
các khả năng cần xét để đi tới lời giải cuối cùng.
Các kỹ thuật trí tuệ nhân tạo cơ bản bao gồm:
- Lý thuyết giải bài toán và suy diễn thông minh: Lý thuyết giải bài
toán cho phép viết các chương trình giải câu đố, chơi các trò chơi thông qua
các suy luận mang tính người, các hệ thống chứng minh định lý. Ngoài ra các
hệ thống hỏi đáp thông minh còn cho phép lưu trữ và xử lý khối lượng lớn các
thông tin.
- Lý thuyết tìm kiếm may rủi: Lý thuyết này bao gồm các phương
pháp và kỹ thuật tìm kiếm với sự hỗ trợ của thông tin phụ để giải bài toán một
cách có hiệu quả.
- Các ngôn ngữ về trí tuệ nhân tạo: Để xử lý các tri thức không chỉ sử
dụng các ngôn ngữ lập trình dùng cho các xử lý dữ liệu số, mà cần có ngôn
ngữ khác. Các ngôn ngữ chuyên dụng này cho phép lưu trữ và xử lý thông tin
ký hiệu. Một số ngôn ngữ được nhiều người biết đến là IPL.V,LISP,
PROLOG.
- Lý thuyết thể hiện tri thức và hệ chuyên gia: Trí tuệ nhân tạo là
khoa học về thể hiện và sử dụng tri thức. Mạng ngữ nghĩa, lược đồ, logic vị
từ, khung là các phương pháp thể hiện tri thức thông dụng. Việc gắn liền cách
thể hiện và sử dụng tri thức là cơ sở hình thành hệ chuyên gia.
- Lý thuyết nhận dạng và xử lý tiếng nói: Giai đoạn phát triển đầu
của trí tuệ nhân tạo gắn với lý thuyết nhận dạng. Các phương pháp nhận dạng
chính gồm: nhận dạng hình học, nhận dạng dùng tâm lý học, nhận dạng theo
phương pháp hàm thế, dùng máy nhận dạng. Ứng dụng của phương pháp này
trong việc nhận dạng chữ viết, âm thanh.
- Người máy: Cuối những năm 70, người máy trong công nghiệp đã
đạt được nhiều tiến bộ. Người máy có bộ phận cảm nhận và các cơ chế hoạt

15

động được nối ghép theo sự điều khiển thông minh. Khoa học về cơ học và trí
tuệ nhân tạo được tích hợp trong khoa học người máy.
- Tâm lý học xử lý thông tin: Các kết quả nghiên cứu của tâm lý học
giúp Trí tuệ nhân tạo xây dựng các cơ chế trả lời theo hành vi, có ý thức. Giúp
cho việc thực hiện các suy diễn mang tính người.
- Ngoài ra, xử lý danh sách, kỹ thuật đệ quy, kỹ thuật quay lui và
xử lý cú pháp hình thức là những kỹ thuật cơ bản của tin học truyền thống
có liên quan trực tiếp đến trí tuệ nhân tạo.
1.7. Một số vấn đề trí tuệ nhân tạo quan tâm
Khoa học trí tuệ nhân tạo liên quan đến cảm giác, tri giác và cả quá
trình tư duy thông qua các hành vi, giao tiếp. Trí tuệ nhân tạo có các định
hướng nghiên cứu, ứng dụng sau:
- Tìm và nghiên cứu các thủ tục giúp con người tiến hành các hoạt động
sáng tạo. Công việc sáng tạo được thực hiện trên mô hình theo cấu trúc, chức
năng và sử dụng công nghệ thông tin.
- Dùng ngôn ngữ tự nhiên. Trước hết là ngôn ngữ được dùng để thể
hiện tri thức, tiếp thu và chuyển hoá sang dạng có thể xử lý được.
- Hình thức hoá các khía cạnh, các hành vi liên quan đến trí tuệ nhân
tạo. Do vậy có thể xây dựng các bài toán mang tính người và thông minh.
Các hoạt động lớn trong trí tuệ nhân tạo bao gồm: chứng minh định lý,
xử lý ngôn ngữ tự nhiên, hiểu tiếng nói, phân tích ảnh và hình, người máy và
hệ chuyên gia. Về cài đặt hệ thống, khuynh hướng hiện tại của trí tuệ nhân tạo
là cài đặt các hệ trí tuệ nhân tạo trong các hệ thống khác, đặc biệt là trong các
hệ thống tin học.
Những vấn đề chưa được giải quyết trong trí tuệ nhân tạo
Những thành tựu nghiên cứu và ứng dụng các kỹ thuật trí tuệ nhân tạo
đã khẳng định tính thực tiễn của các dự án xây dựng máy tính có khả năng

16

suy nghĩ. Tuy vậy trong một số phạm vi, máy tính còn thua xa so với hoạt
động của hệ thần kinh con người.
Sự khác nhau trong hoạt động giữa máy tính và bộ não con người, điều
này thể hiện ưu thế của máy tính so với bộ não người vì khả năng tính toán rất
lớn (nhất là trong các chương trình xử lý dữ liệu lớn).
Xử lý song song: Mặc dù công nghệ điện tử hiện đại cho phép xây
dựng các bộ đa xử lý, song máy tính không thể hoạt động song song như bộ
não con người được.
Khả năng diễn giải: Con người có thể xem xét cùng một vấn đề theo
những phương pháp khác nhau, từ đó diễn giải theo cách dễ hiểu nhất. Ngược lại,
sự linh hoạt này không thể mô phỏng được trong các hệ thống trí tuệ nhân tạo.
Lôgic rời rạc và tính liên tục: Một thách đố lớn với các hệ thống trí tuệ
nhân tạo là khả năng kết hợp các phương pháp xử lý thông tin trong môi
trường liên tục với các thao tác xử lý thông tin rời rạc.
Khả năng học: Mặc dù hiện nay máy tính có nhiều tính năng cao
nhưng cũng không thể mô phỏng được hoàn toàn khả năng học giống bộ não
con người.
Khả năng tự tổ chức: Cho tới nay, người ta chưa thể tạo lập được các
hệ thống trí tuệ nhân tạo có khả năng tự tổ chức, tự điều khiển hoạt động của
nó để thích nghi với môi trường.
Những vấn đề đặt ra trong tương lai của trí tuệ nhân tạo.
Trong tương lai, những nghiên cứu và ứng dụng của trí tuệ nhân tạo tập
trung vào các vấn đề lớn sau:
- Nghiên cứu và thử nghiệm các mạng Neuron, các hệ thống trí tuệ
nhân tạo mô phỏng chức năng hoạt động của bộ não với các khả năng học, tự
tổ chức, tự thích nghi, tổng quát hoá, xử lý song song, có khả năng diễn giải,
xử lý thông tin liên tục và rời rạc.

17

- Nghiên cứu và tạo lập các hệ thống có giao tiếp thân thiện giữa người
và máy trên cơ sở nghiên cứu nhận thức máy, thu thập và xử lý tri thức, xử lý
thông tin hình ảnh, tiếng nói.
- Nghiên cứu các phương pháp biểu diễn tri thức và các phương pháp
suy diễn thông minh, các phương pháp giải quyết vấn đề đối với những bài
toán phụ thuộc không gian, thời gian.
Ngày nay, thế giới đang chuyển mình trong những nghiên cứu về trí tuệ
nhân tạo. Chắc chắn rằng máy tính với trí tuệ như con người sẽ tác động mạnh
đến cuộc sống xã hội.

18

CHƯƠNG 2: LÝ THUYẾT ĐỒ THỊ VÀ MỘT SỐ


THUẬT TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
2.1. Lý thuyết đồ thị
2.1.1. Định nghĩa đồ thị
Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các
đỉnh này. Phân biệt các loại đồ thị khác nhau bởi kiểu và số lượng cạnh nối
hai đỉnh nào đó của đồ thị. Để có thể hình dung được tại sao lại cần đến các
loại đồ thị khác nhau, ví dụ sử dụng chúng để mô tả một mạng máy tính. Giả
sử có một mạng gồm các máy tính và các kênh điện thoại (gọi tắt là tên thoại)
nối các máy tính này, có thể biểu diễn các vị trí đặt máy tính bởi các điểm và
các kênh thoại nối chúng bởi các đoạn nối, xem hình 1

Hà Tây

Đồng Nai

Hà Nội

Quãng Ngãi

Huế
An Giang

TPHCM

Phú Yên

Bình Định

Khánh Hòa

Hình 2.1: Sơ đồ mạng máy tính


Nhận thấy rằng trong mạng hình 1, giữa hai máy tính bất kỳ chỉ cho
phép nhiều nhất là một kênh thoại nối chúng, kênh thoại này cho phép liên lạc
cả hai chiều và không có máy tính nào lại được nối với chính nó. Sơ đồ mạng
máy tính cho trong hình 1 được gọi là đơn đồ thị vô hướng => đi đến định
nghĩa sau:
Định nghĩa 1. Đơn đồ thị vô hướng G=(V,E) bao gồm V là tập đỉnh, và E
là tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh.
19

Trong trường hợp giữa hai máy tính nào đó thường xuyên phải truyền
tải nhiều thông tin, phải nối hai máy này bởi nhiều kênh thoại. Mạng với đa
kênh thoại giữa các máy tính được cho trong hình 2.
Hà Tây

Đồng Nai
Hà Nội

Huế

HCM

An Giang

Bình Định

Quãng Ngãi
Phú Yên
Khánh Hòa
Hình 2.2: Sơ đồ mạng máy tính với đa kênh thoại
Định nghĩa 2. Đa đồ thị vô hướng G= (V, E) bao gồm V là tập các
đỉnh, và E là họ các cặp không có thứ tự gồm hai phần tử khác nhau của V
gọi là các cạnh. Hai cạnh e1 và e2 được gọi là cạnh lặp nếu chúng cùng tương
ứng với một cặp đỉnh.
Hà Tây

Đồng Nai

Hà Nội

Quãng Ngãi

Huế
An Giang

TPHCM

Bình Định

Phú Yên

Khánh Hòa

Hình 2.3: Sơ đồ mạng máy tính với kênh thông báo


Rõ ràng mỗi đơn đồ thị đều là đa đồ thị, nhưng không phải đa đồ thị
nào cũng là đơn đồ thị, vì trong đa đồ thị có hai hay nhiều hơn cạnh nối một
cặp đỉnh nào đó.
20

You might also like