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

Giới thiệu về lý thuyết trò chơi, thuật toán min max và ứng dụng cho trò chơi cờ vua

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 (875.54 KB, 58 trang )

HỌC VIỆN CÔNG
THÔNG

NGHỆ BƯU CHÍNH VIỄN

KHOA CÔNG NGHỆ THÔNG TIN 1

ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Đề tài : “ Giới thiệu về lý thuyết trò chơi, thuật
toán min max và ứng dụng cho trò chơi cờ vua “

Giảng viên hướng dẫn :
PGS TS ĐỖ TRUNG TUẤN – DH KHTN
Sinh viên thực hiện:
PHẠM NGỌC ANH
Lớp :
D10CNPM3
Khoá: 2010
Hệ
:
ĐẠI HỌC CHÍNH QUY

Hà Nội, tháng 11 / 2014


LỜI CẢM ƠN
Để hoàn thành đồ án tốt nghiệp này , lời đầu tiên em xin chân thành cảm ơn các
thầy cô Trường Học viện Công Nghệ Bưu Chính Viễn Thông,đặc biệt là các thầy cô
trong khoa công nghệ thông tin đã dạy dỗ, trang bị cho em những kiến thức bổ ích
trong suốt 4,5 năm học vừa qua.


Em xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy Đỗ Trung Tuấn, giảng viên
trường Đại Học Khoa Học Tự Nhiên đã tạo điều kiện tốt nhất và đã hướng dẫn em
trong quá trình làm đồ án tốt nghiệp .
Nhân dịp này , em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè, những
người thân đã cổ vũ, động viên tiếp thêm cho em nghị lực để có thể hoàn thành đồ án
một cách tốt nhất
Em xin chân thành cảm ơn !
Hà nội, ngày tháng năm 2014
Sinh viên
Phạm Ngọc Anh

Sinh viên: Phạm Ngọc Anh – D10CNPM3


NHẬN XÉT , ĐÁNH GIÁ , CHO ĐIỂM
(Của người hướng dẫn)
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

………………………………………………………………………………………..
Điểm : .………………………………………….……(bằng chữ :…….………………)
Đồng ý/ Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp ?
.........., ngày

tháng năm 20

CÁN BỘ - GIẢNG VIÊN HƯỚNG DẪN
(ký, họ tên)

Sinh viên: Phạm Ngọc Anh – D10CNPM3


NHẬN XÉT , ĐÁNH GIÁ , CHO ĐIỂM
(Của người phản biện)
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
………………………………………………………………………………………..

Điểm : .…………………………………………(bằng chữ :.………….……………)
Đồng ý/ Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp ?
.........., ngày

tháng năm 20

CÁN BỘ - GIẢNG VIÊN PHẢN BIỆN
(ký, họ tên)

Sinh viên: Phạm Ngọc Anh – D10CNPM3


MỤC LỤC

DANH MỤC CÁC BẢNG , SƠ ĐỒ, HÌNH

Sinh viên: Phạm Ngọc Anh – D10CNPM3


MỞ ĐẦU
Lý thuyết trò chơi (game theory) thường được coi là một nhánh của toán học ứng
dụng và kinh tế học ứng dụng nhằm nghiên cứu về các tình huống trong đó các bên
tham gia trò chơi áp dụng những chiến lược ra quyết định nhằm tối ưu hóa kết quả
mình nhận được.Ban đầu Lý thuyết trò chơi được phát triển như một công cụ để
nghiên cứu hành vi kinh tế học, ngày nay Lý thuyết này được sử dụng trong nhiều
ngành khoa học như Sinh học, Triết học, Chính trị học… Đặc biệt Lý thuyết trò chơi
đã thu hút được sự chú ý của các nhà Khoa học máy tính do ứng dụng của nó trong Trí
tuệ nhân tạo và Điều khiển học.
Trong báo cáo này,em xin được trình bày đề tài : “Giới thiệu về lý thuyết trò
chơi, thuật toán min max và ứng dụng cho trò chơi cờ vua “.

Nội dung đồ án gồm 4 chương :
Chương 1 : Giới thiệu về lý thuyết trò chơi
Chương 2 : Tổng quan về các vấn đề tìm kiếm
Chương 3 : Giới thiệu thuật toán Minimax
Chương 4 : Ứng dụng vào trò chơi cờ vua.

Sinh viên: Phạm Ngọc Anh – D10CNPM3


CHƯƠNG 1 : GIỚI THIỆU VỀ LÝ THUYẾT TRÒ CHƠI
Trong chương 1 này , đồ án sẽ giới thiệu về lý thuyết trò chơi, các loại trò chơi
trong lý thuyết trò chơi cũng như ứng dụng trọng các ngành khoa học trong thực tế.

1.1. Giới thiệu về lý thuyết trò chơi
Lý thuyết trò chơi là một nhánh của Toán học ứng dụng . Ngành này sử dụng các
mô hình để nghiên cứu các tình huống chiến thuật , trong đó các đối thủ lựa chọn các
hành động khác nhau để cố gắng làm tối đa kết quả thu được cho mình.
Ban đầu, lý thuyết trò chơi được phát triển như là một công cũ để nghiên cứu
hành vi kinh tế học. Ngày nay , nó được sử dụng trong nhiều ngành khoa học, từ Sinh
học tới Triết học. Lý thuyết trò chơi đã có sự phát triển lớn từ khi John von Neumann
là người đầu tiên hình thức hóa nó trong thời kỳ trước và trong Chiến tranh Lạnh, chủ
yếu do áp dụng nó trong chiến lược quân sự, nổi tiếng nhất là khải niệm “đảm bảo phá
hủy lẫn nhau” (mutual assured destruction). Bắt đầu từ những năm 1970, lý thuyết trò
chơi bắt đầu được áp dụng cho nghiên cứu về hành vi động vật, trong đó có sự phát
triển của các loài qua chọn lọc tự nhiên. Do các trò chơi hay như Song đề tù
nhân(prisoner’s dilemma), trong đó lợi ích cá nhân làm hại cho tất cả mọi người, lý
thuyết trò chơi đã bắt đầu được dùng trong Chính trị học, Đạo đức học và Triết học.
Cuối cùng, lý thuyết trò chơi đã thu hút được sự chú ý của các nhà Khoa học máy tính
do ứng dụng của nó trong Trí tuệ nhân tạo và Điều khiển học.
Bên cạnh các mối quan tâm có tính chất hàn lâm, lý thuyết trò chơi đã nhận được

sự chú ý trong văn hóa đại chúng. John Nash, một nhà lý thuyết trò chơi, người đã
nhận được giải thưởng Nobel , đã là chủ đề trong cuốn hồi ký năm 1998 của tác giả
Sylvia Nasar và trong bộ phim Một tâm hồn đẹp (A Beautyful Mind) năm 2001. Một
số trò chơi truyền hình đã sử dụng các tình huốn của lý thuyết trò chơi , trong đó có
Friend of Foe ? và Survivor .
Tuy tương tự với lý thuyết quyết định, nhưng lý thuyết trò chơi nghiên cứu các
quyết định đưa ra trong một môi trường trong đó các đối thủ tương tác với nhau. Nói
cách khác, Lý thuyết trò chơi nghiên cứu cách lựa chọn hành vi tối ưu khi chi phí và
lợi ích của mỗi lựa chọn là không cố định mà phụ thuộc vào lựa chọn của cá nhân
khác.

1.2. Biểu diễn trò chơi
Các trò chơi được nghiên cứu trong lý thuyết trò chơi là các đối tượng toán học
được định nghĩa rõ ràng. Một trò chơi bao gồm một tập các người chơi / đấu thủ, một
tập các nước đi (hoặc chiến lược) mà người chơi có thể chọn, và một đặc tả về cơ chế
Sinh viên: Phạm Ngọc Anh – D10CNPM3


thưởng phạt cho mỗi tổ hợp của các chiến lược. Có hai dạng biểu diễn trò chơi thường
thấy đó là dạng chuẩn tắc và dạng mở rộng
1.2.1. Dạng chuẩn tắc
Trò chơi chuẩn tắc (hoặc dạng chiến lược (strategic form)) là một ma trận cho
biết các thông tin về các đấu thủ, chiến lược và cơ chế thưởng phạt. Như ví dụ dưới
đây , có hai đấu thủ , một người chọn hàng , người kia chọn cột. Mỗi đấu thủ có hai
chiến lược, mỗi chiến lược được biểu diễn bởi một ô được xác định bởi số hiệu hàng
và số hiệu cột của nó. Mức thưởng phạt được ghi trong ô đó. Giá trị thứ nhất là mức
thưởng phạt cho đấu thủ chơi theo hàng, giá trị thứ hai là mức thưởng phạt cho đấu thủ
chơi theo cột. Giả sử đấu thủ 1 chơi hàng trên và đấu thủ 2 chơi cột trái. Khi đó, đấu
thủ 1 nhận 4 điểm và đấu thủ 2 nhận 3 điểm.


Hình 1. 1. Ví dụ về trò chơi đối kháng
Khi một trò chơi được biểu diễn bằng dạng chuẩn tắc, người ta coi rằng mỗi đấu
thủ hành động một cách đồng thời, hoặc ít nhất không biết về hành động của người
kia. Nếu các đấu thủ có thông tin về lựa chọn của các đấu thủ khác, trò chơi thường
được biểu diễn bằng dạng mở rộng.
1.2.2. Dạng mở rộng
Các trò chơi dạng mở rộng cố gắng mô tả các trò chơi có thứ tự quan trọng. Ở
đây, các trò chơi được biểu diễn bằng cây (như trong hình bên trái). Mỗi đỉnh (hoặc
nút) biểu diễn một điểm mà người chơi có thể lựa chọn. Người chơi được chỉ rõ bằng
một số ghi cạnh đỉnh. Các đoạn thẳng đi ra từ đỉnh đó biểu diễn các hành động có thể
cho người chơi đó. Mức thưởng phạt được ghi rõ tại đáy cây.

Sinh viên: Phạm Ngọc Anh – D10CNPM3


Hình 1. 2. Ví dụ về một trò chơi dạng mở rộng
Trong trò chơi trong hình, có hai người chơi. Đấu thủ 1 đi trước và
chọn F hoặc U. Đấu thủ 2 nhìn thấy nước đi của Đấu thủ 1 và chọn Ahoặc R. Giả
sử Đấu thủ 1 chọn U và sau đó Đấu thủ 2 chọn A. Khi đó, Đấu thủ 1 được 8 điểm
và Đấu thủ 2 được 2 điểm.
Các trò chơi mở rộng còn có thể mô tả các trò chơi đi-đồng-thời. Hoặc có một
đường chấm chấm hoặc một đường tròn vẽ quanh hai đỉnh khác nhau để biểu diễn
rằng chúng đều thuộc cùng một tập hợp thông tin (nghĩa là, người chơi không biết họ
đang ở điểm nào).

1.3. Các loại trò chơi trong lý thuyết trò chơi
1.3.1. Trò chơi đối xứng và bất đối xứng
Trò chơi đối xứng là một trò chơi mà phần lợi cho việc chơi một chiến thuật nào
đó chỉ phụ thuộc vào chiến thuật được sử dụng, chứ không phụ thuộc vào người nào
đang chơi. Nếu như tính danh của những người chơi có thể thay đổi mà không làm

thay đổi phần lợi thế đối với chiến thuật chơi, thì một trò chơi là đối xứng. Nhiều trò
chơi 2x2 thường được nghiên cứu là đối xứng. Những biểu diễn chuẩn của trò chơi
con gà, song đề tù nhân, đi săn nai là những trò chơi đối xứng.

Hình 1. 3. Một trò chơi bất đối xứng
Đa số những trò chơi bất đối xứng được nghiên cứu là những trò chơi mà các tập
hợp chiến thuật khác nhau được sử dụng bởi hai người chơi. Chẳng hạn, trò chơi tối
Sinh viên: Phạm Ngọc Anh – D10CNPM3


hậu thư và tương tự như vậy trò nhà độc tài có chiến thuật khác nhau cho mỗi người
chơi. Tuy vậy, có thể xảy ra trường hợp một trò chơi có những chiến thuật giống nhau
cho cả hai người chơi, nhưng vẫn bất đối xứng. Chẳng hạn, trò chơi được minh họa
bên trên là bất đối xứng mặc dù cho có cùng tập các chiến thuật cho cả 2 người chơi.
1.3.2. Trò chơi có tổng bằng không và có tổng khác không

Hình 1. 4. Một trò chơi có tổng bằng 0
Trong trò chơi tổng bằng không, với mọi tổ hợp của các chiến lược chơi, tổng
điểm của tất cả các người chơi trong ván chơi luôn bằng 0. Nói một cách không chính
thức, đấu thủ này hưởng lợi trên thiệt hại của các đấu thủ khác. Một ví dụ là trò Poker,
trong đó người này thắng số điểm bằng đúng số điểm mà người kia thua. Các loại cờ
cổ điển như cờ vây, cờ vua và cờ tướng cũng là các trò chơi tổng bằng không Nhiều
trò chơi mà các nhà lý thuyết trò chơi nghiên cứu, trong đó có song đề tù nhân nổi
tiếng, là các trò chơi tổng khác không, do có một số kết cục có tổng kết quả lớn hơn
hoặc nhỏ hơn không. Nói một cách không chính thức, trong các trò chơi tổng khác
không, một thu hoạch của đấu thủ này không nhất thiết tương ứng với một thiệt hại
của một đấu thủ khác. Có thể biến đổi một trò chơi bất kỳ thành một trò chơi tổng
bằng không bằng cách bổ sung một đấu thủ "bù nhìn" sao cho các thiệt hại của đấu thủ
này bù lại tổng thu hoạch của các đấu thủ khác.
1.3.3. Trò chơi đồng thời và trò chơi tuần tự

Trong các trò chơi đồng thời (simultaneous game), cả hai đấu thủ thực hiện các
nước đi một cách đồng thời, hoặc nếu không thì đấu thủ này sẽ không biết về các hành
động trước đó của các đối thủ khác (và như vậy cũng tạo "hiệu ứng" đồng thời). Trong
các trò chơi tuần tự (sequential game), người đi sau có biết một số (nhưng không nhất
thiết toàn bộ) thông tin về các nước đi trước.
Biểu diễn dạng chuẩn tắc được dùng để biểu diễn các trò chơi đồng thời,
còn Biểu diễn dạng mở rộng được dùng cho các trò chơi tuần tự.

Sinh viên: Phạm Ngọc Anh – D10CNPM3


1.3.4. Trò chơi thông tin hoàn hảo và không hoàn hảo
Các trò chơi thông tin hoàn hảo (games of perfect information) lập thành một tập
con quan trọng của các trò chơi tuần tự. Một trò chơi được gọi là có thông tin hoàn hảo
nếu mọi đấu thủ biết tất cả các nước đi mà tất cả các đấu thủ khác đã thực hiện. Do vậy
chỉ có các trò chơi tuần tự mới có thể là các trò chơi thông tin hoàn hảo. Hầu hết các
trò chơi được nghiên cứu trong lý thuyết trò chơi là các trò chơi thông tin không hoàn
hảo, tuy một số trò chơi hay như cờ vây, cờ vua lại là trò chơi thông tin hoàn hảo.
Tính chất thông tin hoàn hảo thường bị nhầm lẫn với khái niệm thông tin đầy đủ.
Tính chất thông tin đầy đủ đòi hỏi rằng mỗi người chơi biết về các chiến lược và thành
quả thu được của các người chơi khác, nhưng không nhất thiết biết về các hành động
của họ.
1.3.5. Trò chơi dài vô tận
Bởi các lý do hiển nhiên, các trò chơi được nghiên cứu bởi các kinh tế gia và
những người chơi trong thế giới thực nhìn chung là kết thúc trò chơi trong hữu hạn các
bước đi. Các nhà toán học lý thuyết không bị cản trở bởi điều đó, và lý thuyết gia về
tập hợp đặc biệt nghiên cứu về các trò chơi kết thúc sau vô hạn các bước đi, bới người
thắng (hay là phần lợi) là không biết được cho đến sau khi các bước đi đó đã hoàn
thành.
Sự chú ý thường không phải là quá nhiều về cách nào tốt nhất để chơi trò chơi,

mà đơn giản là chỉ phụ thuộc vào người chơi hay người kia có hay không một chiến
thuật chiến thắng. (Có thể chứng minh rằng, sử dụng tiên đề chọn lựa,là có những trò
chơi với—ngay cả là đầy đủ thông tin hoàn toàn, và chỉ có kết quả là "thắng" hay
"thua"— và khôngngười chơi nào có chiến thuật để chiến thắng.) Sự tồn tại của những
chiến thuật như vậy, cho những trò chơi được thiết kế một cách thông minh, có những
kết quả quan trọng trong lý thuyết miêu tả tập hợp.

1.4. Ứng dụng của lý thuyết trò chơi
1.4.1. Kinh tế và kinh doanh
Các nhà kinh tế học đã sử dụng lý thuyết trò chơi để phân tích một diện rộng các
hiện tượng kinh tế, trong đó có đấu giá, mặc cả, duopoly và oligopoly, các tổ
chức mạng lưới xã hội và các hệ thống bầu cử. Nghiên cứu này thường tập trung vào
một tập cụ thể các chiến lược được biết với tên các trạng thái cân bằng trong trò chơi.
Nổi tiếng nhất là cân bằng Nash của nhà toán học John Nash, người đã được giải
thưởng Nobel cho công trình nghiên cứu của ông về lý thuyết trò chơi.
Sinh viên: Phạm Ngọc Anh – D10CNPM3


Công dụng đầu tiên là để cung cấp thông tin cho chúng ta về việc là toàn bộ dân
số sẽ thực sự hành xử như thế nào. Một số học giả tin rằng bằng cách tìm ra những
điểm cân bằng của những trò chơi họ có thể dự đoán được dân số sẽ hành xử như thế
nào khi đối phó với những tình huống giống như trò chơi đang được nghiên cứu. Quan
điểm đặc biệt này về lý thuyết trò chơi đã bị chỉ trích gần đây. Thứ nhất, nó bị chỉ trích
bởi vì những giả sử được ra bởi các lý thuyết gia trò chơi thường bị vi phạm. Một số lý
thuyết gia trò chơi có thể giả sử rằng những người chơi luôn hành xử hợp lý để làm tối
ưu hóa phần thắng của anh ta (mô hình Homo economicus), nhưng người thật thường
hành động hoặc là không hợp lý, hoặc là hành động hợp lý để là tối ưu phần thắng của
một nhóm người lớn hơn (hành động vị tha). Những lý thuyết gia trò chơi trả lời bằng
cách so sánh những giả sử của họ với những giả sử được sử dụng trong vật lý. Do vậy
trong khi những giả sử của họ không phải luôn luôn đúng, họ có thể xem lý thuyết trò

chơi như là một lý tưởng khoa học hợp lý giống như là các mô hình được sử dụng bởi
các nhà vật lý. Tuy nhiên, những chỉ trích thêm của việc sử dụng này của lý thuyết trò
chơi đã được giảm đi bởi vì một số thí nghiêm cho thấy rằng các cá nhân không chơi
những chiến lược cân bằng. Ví dụ, trong trò chơi Centipede, Đoán 2/3 trung bình,
và trò Nhà độc tài, người ta thường không chơi với cân bằng Nash. Sự tranh cãi vẫn
tiếp diễn liên quan đến sự quan trọng của những thí nghiệm này.
Thay vào đó, một số tác giả cho rằng cân bằng Nash không đưa ra những dự
đoán cho toàn dân số con người, nhưng thiên về cung cấp một lời giải thích tại sao
những dân số chơi theo cân bằng Nash vẫn duy trì ở trong trạng thái đó. Tuy nhiên,
câu hỏi tại sao dân số đạt đến những điểm đó vẫn là bài toán mở.
Một số lý thuyết gia trò chơi đã xoay qua lý thuyết tiến hóa trò chơi để lý giải
những lo lắng này. Những mô hình này giả sử hoặc là không có sự hợp lý nào hoặc
là hợp lý bị chặntrên phần của các người chơi. Mặc cho tên gọi, lý thuyết tiến hóa trò
chơi không cần thiết giả sử chọn lọc tự nhiên theo nghĩa của sinh học. Lý thuyết tiến
hóa trò chơi bao gồm cả sinh học cũng như là tiến hóa văn hóa và cũng như các mô
hình học tập cá nhân (ví dụ, biến động của trò chơi giả).
1.4.2. Sinh học
Không giống như trong kinh tế, phần lợi cho những trò chơi trong sinh
học thường được diễn dịch như là tương ứng với sự thích nghi. Thêm vào đó, chú ý đã
ít hơn về các cân bằng có liên quan đến khái niệm của sự hợp lý, nhưng là thiên về
những thứ có thể duy trì được bởi các lực tiến hóa. Cân bằng được biết đến nhiều nhất
trong sinh học được biết đến như là chiến lược tiến hóa bền vững (viết tắt ESS
cho Evolutionary Stable Strategy), là được giới thiệu lần đầu bởi John Maynard
Smith (mô tả trong cuốn sách năm 1982 của ông). Mặc đu động lực ban đầu của nó
Sinh viên: Phạm Ngọc Anh – D10CNPM3


không liên quan đến bất cứ yêu cầu về tinh thần nào của cân bằng Nash, mỗi ESS là
một cân bằng Nash.
Trong sinh học, lý thuyết trò chơi đã được sử dụng để hiểu được nhiều hiện

tượng khác nhau. Nó được sử dụng lần đầu để giải thích sự tiến hóa (và bền vững)
của tỷ lệ giới tính khoảng 1:1.Ronald Fisher (1930) đề nghị rằng tỉ lệ giới tính 1:1 là
kết quả của những lực tiến hóa tác động lên những cá nhân là những người có thể được
xem như là cố gắng làm tối đa số cháu chắt của mình.
Thêm vào đó, những nhà sinh vật đã sử dụng lý thuyết trò chơi tiến hóa và ESS
để giải thích sự nổi lên của liên lạc giữa muông thú (Maynard Smith & Harper, 2003).
Sự phân tích của các trò chơi tín hiệu và các trò chơi liên lạc khác đã cung cấp một số
trực giác vào trong sự tiến hóa của việc liên lạc giữa muôn thú.
Cuối cùng, các nhà sinh vật đã sử dụng trò chơi diều hâu-bồ câu (cũng được biết
đến như là con gà) để phân tích những hành vi đánh nhau và tranh giành lãnh thổ.
1.4.3. Khoa học máy tính và logic
Lý thuyết trò chơi đã đóng một vai trò ngày càng quan trọng trong logic và
trong khoa học máy tính. Một số lý thuyết logic có cơ sở trong ngữ nghĩa trò chơi.
Thêm vào đó, những khoa học gia máy tính đã sử dụng trò chơi để mô phỏng
những tính toán tương tác với nhau.
1.4.4. Chính trị học
Các nghiên cứu trong khoa học chính trị cũng có sử dụng lý thuyết trò chơi. Một
thuyết trò chơi giải thích cho lý thuyết dân chủ hòa bình rằng tính công khai và tranh
luận cởi mở trong các nền dân chủ sẽ gởi một thông điệp rõ ràng và khả tín về các mục
tiêu đến những chế độ khác. Ngược lại, khó mà biết được những chủ đích của của các
lãnh đạo phi dân chủ (độc tài), rằng sẽ có sự nhượng bộ chung hiệu quả nào, và các lời
hứa hẹn có được tôn trọng hay không. Do đó, sẽ tồn tại sự việc không tin tưởng và
không mong muốn nhằm tạo ra sự nhượng bộ chung nếu ít nhất một trong các thành
phần của sự bàn cãi này là thành phần phi dân chủ.
1.4.5. Triết học
Lý thuyết trò chơi đã được đưa vào một vài sử dụng trong triết học. Hai bài báo
bởi W.V.O. Quine (1960, 1967), David Lewis (1969) sử dụng lý thuyết trò chơi để
phát triển một triết lý của hội nghị. Khi làm việc đó, ông đã cung cấp những phân tích
đầu tiên của kiến thức chung và sử dụng nó trong việc phân tích những cách chơi
trong những trò chơi được quản lý. Thêm vào đó, ông lần đầu tiên đề nghị rằng người

Sinh viên: Phạm Ngọc Anh – D10CNPM3


ta có thể hiểu được ý nghĩa dưới các điều kiện của trò chơi đánh tín hiệu. Đề nghị sau
đã được theo đuổi bởi một vài triết gia tính từ Lewis (Skyrms 1996, Grim et al. 2004).
Trong đạo đức, một số tác giả đã cố gắng theo đuổi dự án này, bắt đầu
bởi Thomas Hobbes, bằng cách suy diễn ra đạo đức từ những lợi ích cá nhân. Bởi vì
những trò chơi giống như Prisoner's Dilemma đưa ra những mâu thuẫn rõ ràng giữa
đạo đức và lợi ích cá nhân, giải thích tại sao hợp tác là cần thiết bởi lợi ích cá nhân là
một phần quan trọng của dự án này. Chiến lược chung này là một phần của quan
điểm hợp đồng xã hội tổng quát trong triết học chính trị(chẳng hạn, xem Gauthier
1987 và Kavka 1986).
Cuối cùng, một số tác giả khác đã cố gắng sử dụng lý thuyết tiến hóa trò chơi để
giải thích sự phát triển trong quan điểm con người về đạo đức và những hành xử tương
ứng của muông thú. Những tác giả này đã xem xét một số trò chơi bao gồm Song đề tù
nhân, săn nai, và trò mặc cả của Nash như để cung cấp một lời giải thích về sự phát
triển của các quan điểm về đạo đức(xem, e.g., Skyrms 1996, 2004; Sober và Wilson
1999).

1.5. Kết luận
Như vậy, qua chương 1, đồ án đã đưa ra được các khái niệm về lý thuyết trò
chơi, các vấn đề có liên quan cũng như ứng dụng của lý thuyết trò chơi vào thực tế.
Đây sẽ là tiền đề giúp việc áp dụng vào trò chơi cờ vua được chính xác và hiệu quả.

Sinh viên: Phạm Ngọc Anh – D10CNPM3


CHƯƠNG 2 : TỔNG QUAN VỀ CÁC VẤN ĐỀ TÌM KIẾM

Trong rất nhiều các thao tác tính toán, tìm kiếm luôn là thao tác nền móng. Các

bài toán tìm kiếm bao gồm việc tìm cách tốt nhất để thu được thông tin cần cho một
quyết định.Trong chương 2 này , đồ án sẽ giới thiệu một cách tổng quan về các vấn đề
tìm kiếm và một số thuật toán tìm kiếm phổ biến.

2.1. Bài toán tìm kiếm
Hiện nay, có một lớp các bài toán có thể phát biểu và giải quyết dưới dạng tìm
kiếm. Sau đây là một số ví dụ với các bài toán như vậy :
-

Trò chơi: nhiều trò chơi, ví dụ cờ vua , thực chất là quá trình tìm kiếm nước đi của các
bên trong số những nước mà luật chơi cho phép, để giành lấy ưu thế cho bên mình

-

Lập thời khóa biểu : lập thời khóa biểu là lựa chọn thú tự, thời gian, tài nguyên (máy
móc, địa điểm, con người) thỏa mãn một số tiêu chí nào đó. Như vậy, lập thời khóa
biểu có thể coi như quá trình tìm kiếm một trong số tổ hợp phương án sắp xếp phương
án đáp ứng yêu cầu đề ra

-

Tìm đường đi: trong số những đường đi, lựa chọn đường đi tới đích, có thể thỏa mãn
tiêu chí nào đó như tiêu chí tối ưu về độ dài, thời gian, giá thành ,…

-

Lập kế hoạch: là lựa chọn chuỗi hành động cơ sở cho phép đạt mục tiêu đề ra đồng
thời thỏa mãn các yêu cầu phụ.

2.2. Bài toán tìm kiếm trong không gian trạng thái

2.2.1. Phát biểu bài toán
Một cách tổng quát, một vấn đề có thể giải quyết thông qua tím kiếm bằng cách
xác định tập hợp tất cả các phương án, đối tượng, hay trạng thái liên quan, gọi chung
là không gian trạng thái. Thủ tục tìm kiếm sau đó sẽ khảo sát không gian trạng thái
theo một cách nào đó để tìm ra lời giải cho vấn đề. Tùy vào cách thức khảo sát không
gian trạng thái cụ thể, ta sẽ có những phương pháp tìm kiếm khác nhau.
Để có thể khảo sát không gian trạng thái, thuật toán tìm kiếm bắt đầu từ một trạng
thái xuất phát nào đó, sau đó sử dụng những phép biến đổi trạng thái để nhận biết và

Sinh viên: Phạm Ngọc Anh – D10CNPM3


chuyển sang trạng thái khác. Quá trình tìm kiếm kết thúc khi tìm ra lời giải, tức là khi
đạt tới trạng thái đích.
Bài toán tìm kiểm cơ bản có thể phát biểu thông qua các thành phần chính sau:


Tập các trạng thái Q. Đây chính là không gian trạng thái của bài toán.



Tập (không rỗng) các trạng thái xuất phát S (S ⊆ Q). Thuật toán tìm kiếm sẽ
xuất phát từ một trong những trạng thái này để khảo sát không gian tìm kiếm.



Tập (không rỗng) các trạng thái đích G (G ⊆ Q). Trạng thái đích có thể được
cho một cách tường minh, tức là chỉ ra cụ thể đó là trạng thái nào, hoặc không
tường minh. Trong trường hợp sau, thay vì trạng thái cụ thể, bài toán sẽ quy
định một số điều kiện mà trạng thái đích cần thỏa mãn. Ví dụ, khi chơi cờ vua,

thay vì chỉ ra vị trí cụ thể quân cờ, ta chỉ có quy tắc cho biết trạng thái chiếu
hết.



Các toán tử, còn gọi là hành động hay chuyển động. Thực chất đây là một ánh
xạ P: Q→Q, cho phép chuyển từ trạng thái hiện thời sang các trạng thái khác.
Với mỗi trạng thái n, P (n) là tập các trạng thái được sinh ra khi áp dụng toán tử
hay chuyển động P.



Giá thành c: Q x Q → R. Trong một số trường hợp, quá trình tìm kiếm cần quan
tâm tới giá thành đường đi. Giá thành để di chuyển từ nút x tới nút hàng xóm y
được cho dưới dạng số dương c (x, y).

2.2.2. Một số ví dụ :
Bài toán đố 8 ô :
Cho hình chữ nhật được chia thành chín ô như trên hình dưới, trong đó tám ô
được đánh số từ 1 đến 8 và một ô trống. Có thể thay đổi vị trí các số bằng cách di
chuyển ô trống. Mỗi lần di chuyển, ô trống có thể đổi chỗ với một ô số ở ngay phía
trên, phía dưới, bên phải hoặc bên trái.

Hình 2. 1 Trò đó 8 ô
Sinh viên: Phạm Ngọc Anh – D10CNPM3


Yêu cầu của bài toán là thực hiện các di chuyển để chuyển từ một sắp xếp các ô
(ví dụ trên hình bên trái) sang một cách sắp xếp khác (hình bên phải). Ngoài ra có thể
có yêu cầu phụ, ví dụ cần di chuyển sao cho số lần đổi chỗ ô trống là tối thiểu .

Trò đố 8 ô có thể phát biểu như bài toán tìm kiếm với các thành phần sau :
-

Trạng thái (state): mỗi trạng thái là một sắp xếp cụ thể vị trí các ô.

-

Hành động (action): mỗi hành động tương ứng với một di chuyển ô trống trái, phải,
lên, xuống.

-

Mục tiêu và kiểm tra (goal & test): so sánh với trạng thái đích.

-

Giá thành (cost): bằng tổng số lần dịch chuyển ô trống.
Bài toán n con hậu
Cho một bàn cờ vua kích thước n x n. Cần xếp n con hậu lên bàn cờ sao cho
không có đôihậu nào đe dọa nhau.
Đây cũng là bài toán tìm kiếm với các thành phần cụ thể như sau:

-

Trạng thái: sắp xếp của cả n con hậu trên bàn cờ, hoặc sắp xếp của 0 đến n con hậu
trênbàn cờ.

-

Trạng thái xuất phát:


-

Trạng thái đích: sắp xếp n con hậu trên bàn cờ sao cho không có đôi hậu nào đe
dọanhau.

-

Chuyển động: Có nhiều cách khác nhau: đổi chỗ 2 con hậu, di chuyển một con hậu
sang ô khác (cùng cột, khác cột).
2.2.3. Các tiêu chuẩn đánh giá thuật toán tìm kiếm
Với bài toán tìm kiếm được phát biểu như trên, nhiều thuật toán tìm kiếm có thể
sử dụng để khảo sát không gian và tìm ra lời giải. Thuật toán tìm kiếm được đánh giá
theo bốn tiêu chuẩn sau:



Độ phức tạp tính toán: được xác định bằng khối lượng tính toán cần thực hiện để tìm
ra lời giải. Thông thường, khối lượng tính toán được xác định bằng số lượng trạng thái
cần xem xét trước khi tìm ra lời giải.
Sinh viên: Phạm Ngọc Anh – D10CNPM3




Yêu cầu bộ nhớ: được xác định bằng số lượng trạng thái cần lưu trữ đồng thời trong bộ
nhớ khi thực hiện thuật toán.




Tính đầy đủ: nếu bài toán có lời giải thì thuật toán có khả năng tìm ra lời giải đó
không? Nếu có, ta nói rằng thuật toán có tính đầy đủ, trong trường hợp ngược lại ta nói
thuật toán không có tính đầy đủ.



Tính tối ưu: nếu bài toán có nhiều lời giải thì thuật toán có cho phép tìm ra lời giải tốt
nhất không?
2.2.4. Thuật toán tìm kiếm tổng quát và cây tìm kiếm
Thuật toán tổng quát dựa trên nguyên lý chung như sau:
Ý tưởng chung : xem xét trạng thái, sử dụng các hàm biến đổi trạng thái để di
chuyển trong không gian trạng thái cho tới khi đạt đến trạng thái mong muốn.

Hình 2. 2Thuật toán tìm kiếm tổng quát.
Thuật toán tìm kiếm tổng quát sinh ra một cây tìm kiếm, trong đó mỗi trạng thái
tương ứngvới một nút trên cây. Trạng thái xuất phát tương ứng với gốc cây, những
trạng thái được mở rộngtạo thành các nút thế hệ tiếp theo.

Sinh viên: Phạm Ngọc Anh – D10CNPM3


Hình 2. 3cây tìm kiếm cho bài 8 ô

2.3. Tìm kiếm không có thông tin (tìm kiếm mù)
2.3.1. Định nghĩa
Tìm kiếm không có thông tin, còn gọi là tìm kiếm mù (blind, uninformed search)
là phương pháp duyệt không gian trạng thái chỉ sử dụng các thông tin theo phát biểu
của bài toán tìm kiếm tổng quát trong quá trình tìm kiếm.
Tìm kiếm không có thông tin bao gồm một số thuật toán khác nhau. Điểm khác
nhau căn bản của các thuật toán là ở thứ tự mở rộng các nút biên. Sau đây ta sẽ xem

xét các thuật toán tìm theo chiều rộng, tìm theo chiều sâu và tìm kiếm sâu dần .
2.3.2. Tìm kiếm theo chiều rộng (Breadth-first search – BFS)
Nguyên tắc của tìm kiếm theo chiều rộng là trong số những nút biên lựa chọn nút
nông nhất (gần nút gốc nhất) để mở rộng.
Khi mở rộng một nút ta cần sử dụng con trỏ ngược để ghi lại nút cha của nút vừa
được mở ra. Con trỏ này được sử dụng để tìm ngược lại đường đi về trạng thái xuất
phát khi tìm được trạng thái đích.
Có thể nhận thấy, để thực hiện nguyên tắc tìm kiếm theo chiều rộng, ta cần lựa
chọn nút được thêm vào sớm hơn trong danh sách nút biên O để mở rộng. Điều này có
thể thực hiện dễ dàng bằng cách dùng một hàng đợi để lưu các nút biên.

Sinh viên: Phạm Ngọc Anh – D10CNPM3


Hình 2. 4Thuật toán tìm kiếm theo chiều rộng
Tính chất của tìm kiếm theo chiều rộng
Đối chiếu với các tiêu chuẩn ở trên, tìm kiếm theo chiều rộng có những tính chất
sau:


Thuật toán có tính đầy đủ, tức là nếu bài toán có lời giải, tìm kiếm theo chiều rộng
đảm bảo tìm ra lời giải.



Có tính tối ưu. Đảm bảo tìm ra lời giải nằm gần nút gốc nhất. Tuy nhiên, trong trường
hợp giá thành đường đi giữa các nút không bằng nhau thì điều này chưa đảm bảo tìm
ra đường đi ngắn nhất.




Độ phức tạp của thuật toán lớn (giả sử mỗi bước có b node được mở rộng trên b nhánh
và có d mức, khi đó độ phức tạp của thuật toán là O(b d)).
2.3.3. Tìm kiếm theo chiều sâu (Depth-First-Search: DFS)
Nguyên tắc của tìm kiếm theo chiều sâu là trong số những nút biên lựa chọn nút
sâu nhất (xa nút gốc nhất) để mở rộng.
Để thực hiện nguyên tắc trên, ta cần lựa chọn nút được thêm vào sau cùng trong
tập nút biên O để mở rộng. Điều này có thể thực hiện dễ dàng bằng cách dùng một
ngăn xếp để lưu các nút biên, các nút được thêm vào và lấy ra theo nguyên lý LIFO
(Last-in-First-out).

Sinh viên: Phạm Ngọc Anh – D10CNPM3


Hình 2. 5Thuật toán tìm kiếm theo chiều sâu
Tính chất thuật toán tìm kiếm theo chiều sâu
-

Thuật toán không đầy đủ trong trường hợp số trạng thái là vô hạn (cứ đi theo
nhánh không đúng mãi mà không chuyển sang nhánh khác được).

-

Thuật toán không tối ưu: thuật toán có thể mở rộng những nhánh dẫn tới lời giải
không tối ưu trước, đặc biệt trong trường hợp có nhiều lời giải.

-

Độ phức tạp của thuật toán ở trường hợp xấu nhất là O(b m) với m là độ sâu tối
đa. Trên thực tế DFS tìm ra lời giải nhanh hơn BFS, đặc biệt nếu tồn tại nhiều

lời giải.

- Bộ nhớ cần nhớ tối đa b*m (mỗi mức chỉ nhớ b node, với m mức). Để đánh giá
độ phức tạp không gian của tìm kiếm theo độ sâu ta có nhận xét rằng, khi ta phát triển
một đỉnh u trên cây tìm kiếm theo độ sâu, ta chỉ cần lưu các đỉnh chưa được phát triển
mà chúng là các đỉnh con của các đỉnh nằm trên đường đi từ gốc tới đỉnh u. Như vậy
đối với cây tìm kiếm có nhân tố nhánh b và độ sâu lớn nhất là m, ta chỉ cần lưu ít hơn
b*m đỉnh. Ưu cầu bộ nhớ so với tìm theo chiều rộng là ưu điểm nổi bật nhất của tìm
theo chiều sâu.
2.3.4. Tìm kiếm sâu dần (Iterative Depending Search - IDS)
Mặc dù có ưu điểm rất lớn là không yêu cầu nhiều bộ nhớ như tìm theo chiều
rộng, tìm theo chiều sâu có thể rất chậm hoặc bế tắc nếu mở rộng những nhánh sâu (vô
tận) không chứa lời giải. Để khắc phục, có thể sử dụng kỹ thuật tìm kiếm với độ sâu
hữu hạn: tìm kiếm theo phương pháp sâu dần nhưng không tiếp tục phát triển một

Sinh viên: Phạm Ngọc Anh – D10CNPM3


nhánh khi đã đạt tới một độ sâu nào đó, thay vào đó, thuật toán chuyển sang phát triển
nhánh khác.
Kỹ thuật này có thể sử dụng trong trường hợp có thể dự đoán được độ sâu của lời
giải bằng cách dựa trên đặc điểm bài toán cụ thể. Chẳng hạn, nếu ta biết rằng đi từ Hà
nội vào Vinh không đi qua quá 4 thành phố khác thì có thể dùng 4 làm giới hạn chiều
sâu khi tìm kiếm đường đi. Một số bài toán khác cũng có thể dự đoán trước giới hạn
độ sâu như vậy.
Tuy nhiên, trong trường hợp chung, ta thường không có trước thông tin về độ sâu
của lời giải. Trong trường hợp như vậy có thể sử dụng phương pháp tìm kiếm sâu dần.
Thực chất tìm kiếm sâu dần là tìm kiếm với độ sâu hữu hạn, trong đó giới hạn độ sâu
được khởi đầu bằng một giá trị nhỏ, sau đó tăng dần cho tới khi tìm được lời giải.
Phương pháp: Tìm theo DFS những không bao giờ mở rộng các node có độ sâu

quá một giới hạn nào đó. Giới hạn độ sâu sẽ được tăng dần cho đến khi tìm được lời
giải (VD: nếu giới hạn là 2 mà không tìm được thì sẽ tăng lên 3).
IDS(Q, S, G, P)
Đầu vào: thuật toán tìm kiếm
Đầu ra: trạng thái đích
Khởi tạo: O←S (O: danh sách các node mở, bước này làm nhiệm vụ gán S
cho O)
C ← 0 (C là giới hạn độ sâu tìm kiếm)
While(O ≠ Ø) do
1. Thực hiện 3 bước

Lấy node n đầu tiên ra khỏi O

If n ∈ G, return (đường đi tới) n

If độ sâu (n) nhỏ hơn hoặc bằng C, then thêm P(n) vào đầu O
2. C++, O←S
Return: Không có lời giải.
Hình 2. 6Tìm kiếm sâu dần

Sinh viên: Phạm Ngọc Anh – D10CNPM3


Hình 2. 7cây tìm kiếm theo thuật toán sâu dần
Tính chất của thuật toán tìm kiếm sâu dần
-

Thuật toán đầy đủ

-


Thuật toán tối ưu (nếu có nhiều lời giải, có thể tìm ra được lời giải gần gốc
nhất)

-

Yêu cầu bộ nhớ nhỏ (b*d) do tại mỗi bước lặp, thuật toán thực hiện tìm kiếm
sâu dần

-

Độ phức tạp tính toán O(b d).Trong tìm kiếm sâu lặp, ta phải phát triển lặp lại
nhiều lầncùng một trạng thái. Điều đó làm cho ta có cảm giác rằng, tìm kiếm
sâu lặp lãng phí nhiềuthời gian. Thực ra thời gian tiêu tốn cho phát triển lặp lại
các trạng thái là không đáng kểso với thời gian tìm kiếm theo bề rộng. Thật vậy,
Sinh viên: Phạm Ngọc Anh – D10CNPM3


mỗi lần gọi thủ tục tìm kiếm sâu hạn chếtới mức d, nếu cây tìm kiếm có nhân tố
nhánh là b, thì số đỉnh cần phát triển là:

Nếu nghiệm ở độ sâu d, thì trong tìm kiếm sâu lặp, ta phải gọi thủ tục tìm kiếm
sâu hạnchế với độ sâu lần lượt là 0, 1, 2, ..., d. Do đó các đỉnh ở mức 1 phải phát triển
lặp d lần,các đỉnh ở mức 2 lặp d-1 lần, ..., các đỉnh ở mức d lặp 1 lần. Như vậy tổng số
đỉnh cầnphát triển trong tìm kiếm sâu lặp là:

Do đó thời gian tìm kiếm sâu dần là O(bd).

2.4. Tìm kiếm có thông tin
Đối với tìm kiếm mù, việc mở rộng các nút thuân theo một quy luật và không

dựa vào thông tin hỗ trợ của bài toán. Kết quả của việc tìm kiếm như vậy là việc di
chuyển trong không gian tìm kiếm không có định hướng, dẫn tới phải xem xét nhiều
trạng thái. Đối với những bài toán thực tế có không gian trạng thái lớn, tìm kiếm mù
thường không thực tế do có độ phức tạp tính toán và yêu cầu bộ nhớ lớn.
Để giải quyết vấn đề trên, chiến lược tìm kiếm có thông tin sử dụng thêm những
thông tin phụ từ bài toán để định hướng tìm kiếm, cụ thể là lựa chọn thứ tự mỏ rộng
nút theo hướng mau dẫn tới đích hơn.
Nguyên tắc chung của tìm kiếm có thông tin là sử dụng một hàm f (n) để đánh
giá độ “tốt” tiềm năng của nút n, từ đó chọn nút n có hàm f tốt nhất để mở rộng trước.
Trên thực tế, việc xây dựng hàm f (n) phản ánh chính xác độ tốt của nút thường
không thực hiện được, thay vào đó ta sử dụng các giá trị ước lượng cho f (n).
Trong phần này ta sẽ xem xét hai chiến lược tìm kiếm có thông tin, đó là tìm
kiếm tham lam và tìm kiếm A*.
2.4.1. Tìm kiếm tham lam (Greedy Search)
Phương pháp: xem xét mở rộng nút có giá thành đường đi tới đích nhỏ nhất trước.
Trong phương pháp này, để đánh giá độ tốt của một nút, ta sử dụng hàm đo giá
thành đường đi từ nút đó tới đích. Tuy nhiên, do không biết được chính xác giá thành
đường đi từ một nút tới đích, ta chỉ có thể ước lượng giá trị này. Hàm ước lượng độ
Sinh viên: Phạm Ngọc Anh – D10CNPM3


tốt, hay giá thành đường đi từ một nút n tới địch gọi là hàm heuristic và ký hiệu h(n).
Như vậy, đối với thuật toán tham lam, ta có f(n) = h(n).
Do hàm h(n) chỉ là hàm ước lượng giá thành đường đi tới đích nên có thể nói
rằng tìm kiếm tham lam mở rộng nút trông có vẻ gần đích nhất trước các nút khác.
Thuật toán được gọi là “tham lam” do thuật toán chỉ quan tâm tới việc lựa chọn nút
trông có vẻ tốt nhất ở mỗi bước mà không quan tâm tới việc trong tương lai việc dùng
nút đó có thể không phải là tối ưu.
Điều kiện của hàm h(n): h(n) ≥0
Nhận xét: tìm kiếm heuristic tương tự DFS nhưng cho phép quay lui khi gặp bế

tắc
Ví dụ hàm heuristic h(n). Khi tìm đường trên bản đồ, hàm heuristic cho một
thành phố cóthể tính bằng khoảng cách theo đường chim bay giữa thành phố đó với
thành phố đích cần đến.
Đặc điểm:
-

Không có tính đầy đủ do có khả năng tạo thành vòng lặp ở một số nút.

-

Độ phức tạp về thời gian: O(b m) (thuật toán nhanh hơn BFS, và có thể cũng
nhanh hơn DFS nếu tồn tại heuristic tốt). Tuy nhiên trong trường hợp heuristic
không tốt thì thuậttoán sẽ đi sai hướng và do vậy gần giống với tìm sâu.

-

Độ phức tạp về không gian lưu trữ: O(bm) (lưu tất cả các nút trong bộ nhớ)

-

Thuật toán không tối ưu.

2.4.2. Thuật toán A*
Một trong những nhược điểm của tìm kiếm tham lam là không cho lời giải ngắn
nhất. Lýdo tìm kiếm tham lam không đảm bảo tìm ra đường đi ngắn nhất là do thuật
toán chỉ quan tâm tớikhoảng cách ước lượng từ một nút tới đích mà không quan tâm
tới đường đi từ nút xuất phát tớinút đó. Trong trường hợp khoảng cách từ nút xuất phát
tới nút đang xét lớn sẽ làm tổng độ dàiđường đi từ xuất phát tới đích qua nút hiện thời
lớn lên.


Sinh viên: Phạm Ngọc Anh – D10CNPM3


×