1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Sáng kiến kinh nghiệm) chuyên đề môn tin học lí thuyết trò chơi

14 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 87,92 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Output Có ba trường h p: ợ • A thắng: ghi trạng thái sau khi A đi nước đi đầu tiên dẫn đến trạng thái thắng đó.. • A thua: ghi ra xâu “No winning move Losing”.. No winning move Losing Ph

Trang 1

LÍ THUY T TRÒ CH I Ế Ơ

Chuyên đề DHBB 2017 – Tin học

Trang 2

Impartial Combinatorial Games

Các trò ch i đ i kháng gi a hai ngơ ố ữ ười đã được hình thành t lâu trong đó nh ngừ ữ

người ch i luôn c g ng tìm m i cách đ mình giành đơ ố ắ ọ ể ược ph n th ng V líầ ắ ề

thuy t kh năng th ng thua c a các trò ch i là hoàn toàn ti n đ nh Chính xácế ả ắ ủ ơ ề ị

h n, n u m t trò ch i cho trơ ế ộ ơ ước v trí ban đ u thì k t qu t t nh t mà ngị ầ ế ả ố ấ ười

ch i đ u tiên đ t đơ ầ ạ ược là có th tính toán để ược (gi thi t c hai ngả ế ả ười ch i đ uơ ề

ch i t i u) Tuy nhiên do kh i lơ ố ư ố ượng tính toán quá l n nên kh năng th c hi nớ ả ự ệ

nước đi t i u đ i v i m t s trò ch i là không tố ư ố ớ ộ ố ơ ưởng Do v y cho đ n nay, chậ ế ỉ

m t s lộ ố ượng nh trò ch i đ i kháng đỏ ơ ố ược gi i quy t tr n v n Bài vi t này gi iả ế ọ ẹ ế ớ

thi u hai cách ti p c n trò ch i đ i kháng hai ngệ ế ậ ơ ố ười: tìm ki m mini-max và hàmế

grundy

1 Mô hình đ th c a trò ch i đ i kháng ồ ị ủ ơ ố

Cho đ th đ nh hồ ị ị ướng (đ th có t p đ nh , t p c nh ), ta đ nh nghĩa t c là t p đ nh đ nồ ị ậ ỉ ậ ạ ị ứ ậ ỉ ế

đượ ừc t

M t trò ch i hai ngộ ơ ườ ươi t ng ng v i m t đ th đ nh hứ ớ ộ ồ ị ị ướng trong đó m i tr ng thái ch iỗ ạ ơ

tương ng v i m t đ nh c a đ th , hàm là qui t c ch i theo nghĩa ch a các đ nh hay tr ngứ ớ ộ ỉ ủ ồ ị ắ ơ ứ ỉ ạ thái ch i mà t có th đi đ n Hai ngơ ừ ể ế ười luân phiên nhau th c hi n lự ệ ượt đi, th ch i ngở ế ơ ười

ch i ch có th đi sao cho nơ ỉ ể ước nh n đậ ược tho mãn Trò ch i k t thúc khi không th đi ti pả ơ ế ể ế

được n a (Thông thữ ường thì người không th đi ti p là ngể ế ười thua cu c).ộ

Ta phân chia các trò ch i thành hai lo i: trò ch i l a ch n m t đ i tơ ạ ơ ự ọ ộ ố ượng và trò ch i l a ch nơ ự ọ nhi u đ i tề ố ượng tùy theo kh năng phân rã đ th tả ồ ị ương ng c a trò ch i thành các đ thứ ủ ơ ồ ị con đ c l p.ộ ậ

2 Trò ch i l a ch n m t đ i t ơ ự ọ ộ ố ượ ng

Lo i trò ch i l a ch n m t đ i tạ ơ ự ọ ộ ố ượng có th hi u tr c quan là các nể ể ự ước đi th c hi n trênự ệ cùng m t đ i tộ ố ượng (nên không phân rã thành các đ th con đ c l p đồ ị ộ ậ ược)

Ví d 1 Trò ch i t ng chính ph ụ ơ ổ ươ ng

B t đ u b ng m t s nguyên dắ ầ ằ ộ ố ương , hai đ u th A, B l n lấ ủ ầ ượt tr b t s đó đi m t s chínhừ ớ ố ộ ố

phương dương sao cho ph n còn l i không âm Đ u th thua n u không th c hi n đầ ạ ấ ủ ế ự ệ ược

nước đi trong lượ ủt c a mình N u m i ngế ỗ ườ ềi đ u ch i t i u thì li u ngơ ố ư ệ ười th nh t có khứ ấ ả năng th ng?ắ

Phân tích

Lượt ch i có hi n nhiên là thua.ơ ể

Lượt ch i có sẽ chi n th ng ngay sau lơ ế ắ ượt đi đ u tiên.ầ

Trang 3

Lượt ch i ch có th trao cho đ i th nên ch c ch n thua.ơ ỉ ể ố ủ ắ ắ

Lượt ch i có th trao cho đ i th nên ch c ch n th ng.ơ ể ố ủ ắ ắ ắ

Lượt ch i ch có th trao cho đ i th (ch c ch n th ng) nên ch c ch n thuaơ ỉ ể ố ủ ắ ắ ắ ắ ắ

B ng cách phân tích tằ ương t ta tìm đự ược kh ng đ nh ch c ch n cho b t kì (mi n là có đẳ ị ắ ắ ấ ễ ủ

th i gian tính toán).ờ

Đ t ng quát hóa cách làm trên, ta đ a ra các khái ni m th th ng, th thuaể ổ ư ệ ế ắ ế

• Khi đ n lế ượt ch i mà không còn nơ ước đi nào n a là ta đang th thua (g i là th thuaữ ở ế ọ ế

c s )ơ ở

• N u lế ở ượt ch i có th th c hi n m t nơ ể ự ệ ộ ước đi đ a đ i phư ố ương vào th thua thì taế đang th th ngở ế ắ

• N u m i nế ọ ước đi trong lượt ch i đ u đ a đ i phơ ề ư ố ương vào th th ng thì ta đang thế ắ ở ế thua

Đ nh nghĩa truy h i trên cho phép ta áp d ng phép tìm nị ồ ụ ước đi theo chi n lế ược vét c n v iạ ớ các trò ch i có s tr ng thái đ nh (dĩ nhiên)ơ ố ạ ủ ỏ

Ngoài ra, do gi thi t hai đ u th đ u ch i t i u nên tính th ng/thua c a m i tr ng thái làả ế ấ ủ ề ơ ố ư ắ ủ ỗ ạ

ti n đ nh, v y có th th c hi n phề ị ậ ể ự ệ ương pháp loang thông thường đ tô màu các tr ng tháiể ạ (quy t đ nh th th ng/thua)ế ị ế ắ

N u trò ch i không ch là quy t đ nh th ng/thua mà còn tính đi m các nế ơ ỉ ế ị ắ ể ước đi thì m iở ỗ

nước đi, đ u th luôn mong mu n mình giành đấ ủ ố ược đi m s cao nh t khi k t thúc trò ch i.ể ố ấ ế ơ

Tương t nh trên có th th y chi n lự ư ể ấ ế ược th c hi n nự ệ ước đi sẽ là: ch n nọ ước đi sao cho sau

đó v i cách đi t t nh t c a đ i phớ ố ấ ủ ố ương, đi m giành để ược là l n nh t có th Chính xác h n,ớ ấ ể ơ

đ i phố ương sẽ c g ng c c ti u hóa đi m s c a ta, do đó ta c n th c hi n nố ắ ự ể ể ố ủ ầ ự ệ ước đi sao cho

đi m s c c ti u đó l n nh t có th Đây là lí do vì sao cách ti p c n này có tên là tìm ki mể ố ự ể ớ ấ ể ế ậ ế mini-max

Ta xét m t s bài toán ví d ộ ố ụ

Ví d 2 GAME ụ

M t trò ch i đ i kháng gi a hai ngộ ơ ố ữ ười A và B di n ra nh sau: Hai ngễ ư ười luân phiên nhau

đi u khi n m t con t t theo m t s con đề ể ộ ố ộ ố ường cho trước M t ngộ ười có th di chuy n conể ể

t t t v trí đ n n u có m t đố ừ ị ế ế ộ ường n i tr c ti p đ nh hố ự ế ị ướng t đ n Trò ch i k t thúc khiừ ế ơ ế không th ti p t c di chuy n Đ u th không th th c hi n nể ế ụ ể ấ ủ ể ự ệ ước đi là người thua cu c H iộ ỏ

n u cho trế ước v trí ban đ u và danh sách các đị ầ ường n i thì ngố ười đi trước th ng, thua hayắ hoà? Gi hai ngả ười này luôn ch i t i u ơ ố ư

Input: GAME.IN

- Dòng đ u ghi s N là s v trí con t t có th đ ng, và s M là s đầ ố ố ị ố ể ứ ố ố ường đi (đ nh hị ướng)

mà con t t có th đi (1≤ N ≤ 200, 1 ≤ M ≤ N*(N-1)).ố ể

- Dòng th hai ghi u là tr ng thái b t đ u.ứ ạ ắ ầ

- M dòng ti p theo m i dòng ghi hai s u, v mô t m t đế ỗ ố ả ộ ường đi t u đ n v ừ ế

Trang 4

Output: GAME.OUT

- Ghi m t s duy nh t 1, 2, ho c 0 tộ ố ấ ặ ương ng v i ngứ ớ ười th ng, thua hay hoà ắ

Phân tích

- Nh ng v trí không có đữ ị ường ra thì ch c ch n sẽ thua.ắ ắ

- Nh ng v trí nào có m t đữ ị ộ ường ra n i v i v trí ch c ch n thua thì ch c ch n th ng.ố ớ ị ắ ắ ắ ắ ắ

- Nh ng v trí nào t t c các đữ ị ấ ả ường ra đ u n i v i các v trí ch c ch n th ng thì ch cề ố ớ ị ắ ắ ắ ắ

ch n thua ắ

- Nh ng v trí nào mà tr ng thái th ng thua không th xác đ nh thì là v trí hoàữ ị ạ ắ ể ị ị

Thu t toán ậ

- Ban đ u coi t t c các v trí đ u hoà gán giá tr đ nh ầ ấ ả ị ề ị ỉ

- Tìm các v trí không có đị ường ra thì gán l i (v trí thua) ạ ị

- Khi thay tr ng thái m t v trí t hoà sang th ng ho c thua thì ki m tra các v trí cóạ ộ ị ừ ắ ặ ể ị

đường đi đ n nó: Nh ng v trí nào có m t đế ữ ị ộ ường ra n i v i v trí ch c ch n thua () sẽố ớ ị ắ ắ

là ch c ch n th ng (thay ); Nh ng v trí u nào t t c đắ ắ ắ ữ ị ấ ả ường ra n i v i đ u n i v i cácố ớ ề ố ớ

v trí có (ch c ch n th ng) thì ch c ch n thua (thay ).ị ắ ắ ắ ắ ắ

- Quá trình này ng ng khi không có s chuy n tr ng nào n a ừ ự ể ạ ữ

- Trò ch i có th hòa vì s xu t hi n c a chu trình.ơ ể ự ấ ệ ủ

Ví d 3 LGAME ụ

Cho m t b ng kích thộ ả ước 4*4 ô vuông, trên đó đ t hai thanh thặ ước th hình L kích thợ ước 4 ô vuông và hai hình tròn nh hình vẽ, các hình này n m trên b ng và không đư ằ ả ược đè lên nhau Hình k ca rô là c a ngẻ ủ ười ch i A, hình k s c c a ngơ ẻ ọ ủ ười ch i B Hai ngơ ười sẽ ch i luân phiên,ơ

t i m i nạ ỗ ước đi, m t ngộ ười sẽ ph i nh c thanh hình L c a mình lên, xoay, l t tuỳ ít và diả ấ ủ ậ chuy n đ n v trí m i (khác ít nh t m t ô so v i v trí ban đ u), nh v y hình đ u tiên có haiể ế ị ớ ấ ộ ớ ị ầ ư ậ ầ cách di chuy n Và ngể ười ch i có th th c hi n thêm m t bơ ể ự ệ ộ ước đi không b t bu c là diắ ộ chuy n m t ô tròn đ n m t ô m i.ể ộ ế ộ ớ

Trò ch i k t thúc khi không th di chuy n đơ ế ể ể ược n a, ngữ ười không th di chuy n để ể ược sẽ thua cu c Tuy nhiên, trò ch i v n có th hoà vì trong tr ng thái đó c hai ngộ ơ ẫ ể ạ ả ườ ềi đ u không

mu n thua (chính xác h n là không d n đố ơ ồ ược đ i th vào th thua) ố ủ ế

Yêu c u: Cho m t tr ng thái trò ch i, h i trò ch i đó sẽ k t thúc nh th , (hoà, A th ng hay Bầ ộ ạ ơ ỏ ơ ế ư ế ắ

th ng, đây A là ngắ ở ười đi trước)

Input

• Gồm 4 dòng mỗi dòng ghi 4 kí tự, ‘.’ thể hiện ô trống(có 6 ô), ‘x’ là ô chứa miếng hình tròn (2 ô), ‘#’ biều thị ô bị miếng hình L của người chơi A đặt lên (có 4 ô), còn lại bốn ô biểu thị ô bị miếng hình L của người chơi B đặt lên

Trang 5

Output

Có ba trường h p: ợ

• A thắng: ghi trạng thái sau khi A đi nước đi đầu tiên dẫn đến trạng thái thắng đó

• A thua: ghi ra xâu “No winning move Losing”

• Hoà: ghi ra xâu “No winning move Draw”

Ví dụ

LGAME.IN LGAME.OUT

.***

#*.x

###.

x

.***

x*#x

###.

x

###.

#***

x *

No winning move Draw

.###

x#*x

***.

No winning move Losing

Phân tích

• Do kích thước bảng là nhỏ nên có thể tính toán được số trạng thái là vào khoảng 18,000 Từ đó có thể xây dựng một hàm băm hợp lí và tiến hành loang để tô màu các trạng thái.

Đôi khi không ph i lúc nào cũng có th l u đả ể ư ượ ấ ảc t t c các tr ng thái vì trong m t s bài toánạ ộ ố

s tr ng thái r t l n Khi đó, thay vì xét th th ng/thua cho tr ng thái hi n th i ta tính thố ạ ấ ớ ế ắ ạ ệ ờ ế

th ng/thua cho tr ng thái tắ ạ ương đương

Ví d 4 Stones ụ

M t trò ch i b c s i di n ra trên m t b ng ngang kích thộ ơ ố ỏ ễ ộ ả ước 1*N ô vuông Trên m t s ô cóộ ố

đ t m t s viên s i T i m t bặ ộ ố ỏ ạ ộ ước đi người ch i c m m t viên s i m t ô và di chuy n viênơ ầ ộ ỏ ở ộ ể

s i sang bên trái m t ho c hai ô v i đi u ki n là ô di chuy n t i ph i không có s i và đỏ ộ ặ ớ ề ệ ể ớ ả ỏ ường

di chuy n không để ược qua ô có s i Ngỏ ười nào không di chuy n để ược sẽ là người thua cu c.ộ Cho trước tr ng thái ban đ u h i ngạ ầ ỏ ười đi trước có bao nhiêu nước đi đ u tiên mà ngầ ười thứ hai luôn thua, gi thi t c hai ngả ế ả ườ ềi đ u ch i t i u ơ ố ư

Input

• Dòng đầu ghi số N(1 ≤ N ≤ 50).

• Dòng thứ hai ghi một xâu gồm N kí tự thể hiện trạng thái lúc bắt đầu trò chơi, ‘.’ thể hiện ô trống, ‘X’ thể hiện có sỏi (số viên sỏi không vượt quá 10).

Output

• Ghi một số là số nước đi mà có thể thắng

Trang 6

Ví dụ

STONES.IN STONES.OUT

3

X.X

1 4

Phân tích

N u coi m i tr ng thái là m t đ nh đ th thì rõ ràng bài toán theo lý thuy t có th tính đế ỗ ạ ộ ỉ ồ ị ế ể ược

k t qu Nh ng trên th c t s tr ng thái r t l n (có th lên đ n ) ế ả ư ự ế ố ạ ấ ớ ể ế

Vì v y trậ ước h t c n làm gi m s lế ầ ả ố ượng tr ng thái c n xét Đ u tiên ta th y tr ng thái c aạ ầ ầ ấ ạ ủ

người ch i đơ ược đ c tr ng b i dãy các s nguyên không âm là s ô t do phía trặ ư ở ố ố ự ở ước m iỗ viên s i, ví d : xâu “ XX.X” thay b i dãy {3, 0, 1} Tuy nhiên đó m i ch là cách mã hóa tr ngỏ ụ ở ớ ỉ ạ thái, ta sẽ xét s th ng thua c a dãy khi l y đ ng d modul 3 c a t t c các ph n t trongự ắ ủ ấ ồ ư ủ ấ ả ầ ử dãy, ch ng h n thay vì dãy {3,0,1} ta xét dãy {0,0,1}ẳ ạ

Ch ng minh đứ ược hai dãy này là tương đương th ng/thua, th t v y:ắ ậ ậ

G i dãy ban đ u là , dãy sau khi ọ ầ ướ ược l c là ( là hàm rút g n) ọ

Vì là dãy ướ ược l c c a nên v i cách đi m t nủ ớ ộ ước b t kì t đ n thì cũng đi có th đi m tấ ừ ế ể ộ

nước đ n (cùng v trí và s ô) sao cho (I)ế ị ố

Ch ng h n v i dãy trên sau m t nẳ ạ ớ ở ộ ước đi v trí 3 v i s ô đi b ng 1 đ n thì v i cũng đi t iị ớ ố ằ ế ớ ạ

3 v i s ô b ng 1 đ n Lúc đó ta v n có: ớ ố ằ ế ẫ

Vì m i bọ ước ch i c a đ i th đ u nh m có l i cho mình nên n u ngơ ủ ố ủ ề ằ ợ ế ười ch i th nh t th cơ ứ ấ ự

hi n m t nệ ộ ước đi t đ n hòng thay đ i s thua thành th ng (v n theo lý thuy t là xác đ nh),ừ ế ổ ự ắ ố ế ị

t c thua, thua mà , suy ra không đi đứ ược đ n (vì suy ra thua, cũng thua) suy ra ngế ười ch iơ

đã th c hi n trên m t ô có s ô t do đ ng trự ệ ộ ố ự ở ằ ướ ớc l n h n b ng 3, suy ti p ra ngơ ằ ế ười th haiứ

có th đi ti p m t nể ế ộ ước trên cùng ô đó v i s ô b ng (3 - s ô ngớ ố ằ ố ười th nh t đã đi) Suy raứ ấ

người th nh t v n v trí thua (II) ứ ấ ẫ ở ị

(I)(II) hai dãy là tương đương theo k t qu th ng thua ế ả ắ

Ví d 5 Trò ch i chuy n đá ụ ơ ể

Vào m t ngày đ p tr i, A nghĩ ra m t trò ch i và r B cùng tham gia Có ô, m i ô ch a m t sộ ẹ ờ ộ ơ ủ ỗ ứ ộ ố viên đá Các ô được đánh s t 0 đ n Đ th c hi n m t nố ừ ế ể ự ệ ộ ước đi, A/B ch n 3 ô v i ch sọ ớ ỉ ố tho mãn và ô ch a ít nh t 1 viên đá, sau đó b đi 1 viên đá ô đ ng th i thêm hai viên đáả ứ ấ ỏ ở ồ ờ vào ô và ô (m i ô m t viên) Chú ý là có th b ng , và sau m i bỗ ộ ể ằ ỗ ướ ổc t ng s viên đá luônố tăng lên 1 Ai không th th c hi n nể ự ệ ước đi coi nh b thua A đi trư ị ước

Nhi m v c a b n là xác đ nh xem A có th chi n th ng hay không? (gi s B ch i t i u).ệ ụ ủ ạ ị ể ế ắ ả ử ơ ố ư

N u có th hãy in ra 3 s mô t nế ể ố ả ước đi đ u tiên c a A N u có nhi u k t qu hãy in ra k tầ ủ ế ề ế ả ế

qu có nh nh t, n u v n có h n m t k t qu ch n k t qu có nh nh t, n u v n có h nả ỏ ấ ế ẫ ơ ộ ế ả ọ ế ả ỏ ấ ế ẫ ơ

m t k t qu ch n k t qu có nh nh t.ộ ế ả ọ ế ả ỏ ấ

Input

• Dòng đầu gồm số nguyên là số ô

Trang 7

• Dòng thứ hai gồm số, số thứ thể hiện số viên đá ở ô

Output

• Nếu A thắng thì in ra 3 số trên một dòng duy nhất

• Nếu A thua thì in ra một số –1 duy nhất.

Gi i h n ớ ạ

• Số viên đá ở một ô không vượt quá 1000

Ví dụ

INCSTONE.IN INCSTONE.OUT

5

Phân tích

Tr ng thái tạ ương đương là tr ng thái l y s s i m i ô mod 2, nh v y có nhi u nh t là tr ngạ ấ ố ỏ ỗ ư ậ ề ấ ạ thái V y có th áp d ng kĩ thu t tìm mini-max ậ ể ụ ậ

3 Trò ch i l a ch n nhi u đ i t ơ ự ọ ề ố ượ ng

Qua cách ti p c n trên ta nh n th y r ng n u m i tr ng thái ch i g m nhi u đ nh trênế ậ ậ ấ ằ ế ỗ ạ ơ ồ ề ỉ ở

m t đ th thì chúng ta không th th c hi n tìm ki m mini-max đ n thu n độ ồ ị ể ự ệ ế ơ ầ ược do s tr ngố ạ thái r t l n, phấ ớ ương pháp gi i quy t v n đ này là dùng hàm grundy ả ế ấ ề

Ví d 6 Trò ch i b c s i ụ ơ ố ỏ

Hai người ch i b c s i trên m t đ ng s i có viên, m i ngơ ố ỏ ộ ố ỏ ỗ ườ ế ượi đ n l t mình ch đỉ ược b cố không quá viên Xác đ nh kh năng th ng c a ngị ả ắ ủ ười đi trước n u c hai đ u ch i t i uế ả ề ơ ố ư

Phân tích

Ta kh o sát v i ả ớ

Ta đ c tr ng cho s s i đ i lặ ư ố ỏ ạ ượng 0 đ ch th thua c s ể ỉ ế ơ ở

V i m i s có nhi u nh t 3 nớ ỗ ố ề ấ ước đi có th th c hi n đ a đ n các giá tr , đ c tr ng cho b iể ự ệ ư ế ị ặ ư ở giá tr nguyên không âm nh nh t ch a xu t hi n trong các giá tr đ c tr ng c a V i cáchị ỏ ấ ư ấ ệ ị ặ ư ủ ớ làm này ta thu được b ng:ả

D nh n th y r ng n u có tr đ c tr ng khác 0 thì ta luôn có nễ ậ ấ ằ ế ị ặ ư ước đi đ trao cho đ i th sể ố ủ ố

s i có đ c tr ng b ng 0 Ngỏ ặ ư ằ ượ ạc l i, n u đ c tr ng cho b ng 0 thì ho c ta không có nế ặ ư ằ ặ ước đi ()

ho c m i nặ ọ ước đi c a ta đ u d n đ n s s i có đ c tr ng không b ng 0.ủ ề ẫ ế ố ỏ ặ ư ằ

T đó rút ra th thua là các tr ng thái có s đ c tr ng b ng 0 là s đ c tr ng cho th thua cừ ế ạ ố ặ ư ằ ố ặ ư ế ơ

s (*).ở

Trang 8

V i các trò ch i tớ ơ ương t cũng có th tìm s đ c tr ng cho các tr ng thái theo cách trên vàự ể ố ặ ư ạ cũng thu được k t lu n (*) Đây chính là c s v hàm grundy.ế ậ ơ ở ề

3.1 Khái ni m ệ

Cho đ th đ nh hồ ị ị ướng và không có chu trình trong đó là t p đ nh, là t p c nh ậ ỉ ậ ạ

- V i m i đ nh , ta đ nh nghĩa ớ ỗ ỉ ị

- M t trò ch i hai ngộ ơ ườ ượi đ c đ nh nghĩa là m t đ th đ nh hị ộ ồ ị ị ướng trong đó m i thỗ ế

ch i tơ ương ng v i m t đ nh c a đ th t ng (có th g m m t hay nhi u đ th thànhứ ớ ộ ỉ ủ ồ ị ổ ể ồ ộ ề ồ ị

ph n), hàm là qui t c ch i, m i m t đ nh đầ ắ ơ ỗ ộ ỉ ược gán v i m t s th c là giá tr mà m iớ ộ ố ự ị ỗ

đ u th nh n đấ ủ ậ ược trên m i nỗ ước đi

- Hai người luân phiên nhau đi, th ch i ngở ế ơ ười ch i ch có th đi sao cho nơ ỉ ể ước nh nậ

được tho mãn , và khi đó ngả ười đi nh n đậ ựơc giá tr tị ương ng Trò ch i k t thúc khiứ ơ ế

đ n lế ượt ch i mà không th th c hi n nơ ể ự ệ ước đi

- N u trò ch i k t thúc, tuỳ theo t ng giá tr mà m i đ u th nh n đế ơ ế ổ ị ỗ ấ ủ ậ ược ta có k t qu làế ả

có người th ng hay ván đ u hoà.ắ ấ

Trước h t, ta đ nh nghĩa hàm grundy nh sau: Cho đ th , hàm grundy trên là cách gán choế ị ư ồ ị

m i đ nh m t s t nhiên , sao cho là s t nhiên nh nh t không có trong t p các giá trỗ ỉ ộ ố ự ố ự ỏ ấ ậ ị hàm grundy c a các đ nh k v i ủ ỉ ề ớ

3.2 Các đ nh lý ị

Ta xét m t l p bài toán trò ch i tho mãn các tính ch t: Đ th tộ ớ ơ ả ấ ồ ị ương ng là đ th đ nhứ ồ ị ị

hướng không có chu trình và đây ngở ười th ng cu c là ngắ ộ ười th c hi n nự ệ ước đi cu i cùngố

trước khi k t thúc trò ch i T đây, nói đ n đ th , ta ch nói đ n đ th th a mãn tính ch tế ơ ừ ế ồ ị ỉ ế ồ ị ỏ ấ trên

Đ nh lý 1 ị

Đ th DAG có và có duy nh t m t hàm grundy ồ ị ấ ộ

Ch ng minh:ứ

Ta xác đ nh hàm grundy nh sau:ị ư

• Ban đ u t t c các đ nh đ u ch a tính hàm grundy ầ ấ ả ỉ ề ư

• L n lầ ượt th c hi n ch ng nào v n còn đ nh ch a tính hàm: Xét đ th con c a sinh raự ệ ừ ẫ ỉ ư ồ ị ủ

b i t p h p các đ nh ch a tính hàm, l y t t c các đ nh trong mà tở ậ ợ ỉ ư ấ ấ ả ỉ ương ng b ng , taứ ằ xác đ nh hàm grundy cho m i đ nh đó theo đúng đ nh nghĩa hàm grundy: ị ỗ ỉ ị

Chú ý r ng vì đ nh hằ ị ướng và không có chu trình nên m i đ th con c a nó cũng tho mãnọ ồ ị ủ ả không có chu trình M t khác m t đ th đ nh hặ ộ ồ ị ị ướng không có chu trình thì luôn luôn tìm

được đ nh không có cung đi ra t c là , nh v y t i m i bỉ ứ ư ậ ạ ỗ ước luôn xác đ nh hàm grundy cho ítị

nh t m t đ nh Ta sẽ ch ra r ng thu t toán trên xác đ nh hàm grundy duy nh t, b ng phấ ộ ỉ ỉ ằ ậ ị ấ ằ ương pháp qui n p ạ

• T i bạ ước 0, hi n nhiên các đ nh để ỉ ược ch n có giá tr hàm grundy , vì các đ nh này đ uọ ị ỉ ề

có nên theo đ nh nghĩa hàm grundy, đây là cách cho duy nh t v i các đ nh này ị ấ ớ ỉ

Trang 9

• Gi s t i m t bả ử ạ ộ ước , t t c các đ nh đã tính hàm đ u th a hàm tấ ả ỉ ề ỏ ương ng là xác đ nhứ ị duy nh t ấ

• Khi đó, các đ nh đỉ ược xác đ nh hàm trong bị ước này không có cung n i đ n các đ nhố ế ỉ

ch a có hàm, do đó v i m i đ nh đư ớ ỗ ỉ ược xác đ nh hàm trong bị ước này, t p ch g m cácậ ỉ ồ

đ nh đã có hàm đỉ ược xác đ nh duy nh t, do đó theo đ nh nghĩa hàm grundy, thì hàm sẽị ấ ị

được xác đ nh duy nh t ị ấ

• Nh v y, đ n bư ậ ế ước , t t c nh ng đ nh đă đấ ả ữ ỉ ược xác đ nh hàm grundy thì đ u đị ề ược xác

đ nh m t cách duy nh t Đ nh lý đị ộ ấ ị ược ch ng minh ứ

Đ nh lý 2 ị

Đ th nh n là hàm grundy tồ ị ậ ương ng, khi đó n u đ u th đ n lứ ế ấ ủ ế ượt ch i tr ng thái cóơ ở ạ hàm grundy khác 0 thì đ u th đó luôn luôn có cách ch i đ không thua.ấ ủ ơ ể

Ch ng minh ứ

T i th ch i khác 0, ta luôn có cách đ a v th ch i 0, vì n u không thì th ch i đó ph i là 0ạ ế ơ ư ề ế ơ ế ế ơ ả theo đúng đ nh nghĩa hàm grundy Đ i phị ố ương khi đã th 0 ch có th không đi ti p đở ế ỉ ể ế ược

n a, ho c đi đ n m t th ch i khác 0 cho ta Nh v y, đ n lữ ặ ế ộ ế ơ ư ậ ế ượt ta luôn là th ch i khác 0, t cế ơ ứ

là ta sẽ không thua, trong trường h p đ th h u h n không có chu trình thì ta sẽ ch c th ng.ợ ồ ị ữ ạ ắ ắ

H qu ệ ả: V i đ th h u h n ta luôn có th xác đ nh đớ ồ ị ữ ạ ể ị ược người chi n th ng ế ắ

Nh v y v n đ đây là ph i xác đ nh các hàm grundy C n ph i chú ý r ng n u đ thư ậ ấ ề ở ả ị ầ ả ằ ế ồ ị không là DAG thì có th có nhi u hàm grundy, nên các k t qu trên không đúng ể ề ế ả

Xét đ nh nghĩa phép c ng các đ th : ị ộ ồ ị

Cho hai đ th khi đó, là m t đ th có: và ồ ị ộ ồ ị

T ng quát ta đ nh nghĩa b ng qui n p ổ ị ằ ạ

Đ nh lý 3 ị

Cho l n lầ ượt nh n các hàm grundy tậ ương ng Khi đó: sẽ nh n hàm grundy tho mãn:ứ ậ ả

Ch ng minh:ứ

Vì G cũng tho mãn các tính ch t c a nên nó có hàm grundy duy nh t Đ ch ng minh côngả ấ ủ ấ ể ứ

th c trên là hàm grundy , ta ch ng minh nó đúng v i t ng đ nh theo th t nh trong đ nh lýứ ứ ớ ừ ỉ ứ ự ư ị 1: Khi xét m t đ nh thì các đ nh trong t p đ u đã tho mãn ộ ỉ ỉ ậ ề ả

Ta có hai tính ch t sau: ấ

1 Cách cho hàm tho mãn khác v i m i vì n u ngả ớ ọ ế ượ ạc l i : và ch khác nhau 1 thànhỉ

ph n trong bi u di n , gi s t i thành ph n th , mâu thu n vì ầ ể ễ ả ử ạ ầ ứ ẫ

2 Hàm là nh nh t trong t p giá tr tho mãn tính ch t 1: Gi s th a mãn, khi đó trongỏ ấ ậ ị ả ấ ả ử ỏ

bi u di n nh phân, g i là v trí đ u tiên sai khác gi a và d th y c a là 1 còn là 0 Vìể ễ ị ọ ị ầ ữ ễ ấ ủ

v trí nên t n t i thành ph n, gi s có trong bi u di n nh phân v trí th b ngnênị ồ ạ ầ ả ử ể ễ ị ị ứ ằ

t n t i sao cho Khi đó: có không tho mãn hàm grundy vì ồ ạ ả

Trang 10

Cách khác: Gi s tho mãn suy ra t n t i m t s v trí x y ra s sai khác v cách bi u di nả ử ả ồ ạ ộ ố ị ả ự ề ể ễ

nh phân v trí: Trong đó c a là 1 còn c a là 0 L y sao cho bit th là 1 Bi n đ i thànhị ở ị ủ ủ ấ ứ ế ổ sao cho các v trí đ o ngị ả ược (Luôn bi n đ i đế ổ ược vì ) Lúc đó Đi u vô lý này ch ng t khôngề ứ ỏ

t n t i ồ ạ

T hai tính ch t trên kh ng đ nh đừ ấ ẳ ị ược trên là hàm grundy c a ủ

M t ng d ng r t quan tr ng c a hàm grundy là gi i các đ th h p b ng công th c c ng độ ứ ụ ấ ọ ủ ả ồ ị ợ ằ ứ ộ ồ

th trên Ta xét m t s bài toán c th ị ộ ố ụ ể

Ví d 7 Trò ch i NIM ụ ơ

Hai người ch i trò ch i b c s i v i đ ng s i v i s s i tơ ơ ố ỏ ớ ố ỏ ớ ố ỏ ương ng là M i lứ ỗ ượt đi người ch iơ

ch n m t đ ng s i và b c ra m t s lọ ộ ố ỏ ố ộ ố ượng tùy ý s i trong đ ng đó (có th b c h t) Trò ch iỏ ố ể ố ế ơ

k t thúc khi không còn s i đ b c và ngế ỏ ể ố ười ch i không th c hi n đơ ự ệ ược nước đi thua cu c.ộ Hãy xác đ nh kh năng th ng c a ngị ả ắ ủ ười đi trước và ch ra m t nỉ ộ ước đi đ u tiên c a ngầ ủ ười đó

Phân tích

Rõ ràng đây là trò ch i l a ch n nhi u đ i tơ ự ọ ề ố ượng M i đ i tỗ ố ượng là m t đ ng s i có th táchộ ố ỏ ể thành m t đ th con.ộ ồ ị

K t qu trên m t đ th con hay áp d ng trò ch i v i m t đ ng s i là quá hi n nhiên vìế ả ộ ồ ị ụ ơ ớ ộ ố ỏ ể

người đi trước ch vi c b c t t c s s i trong đ ng.ỉ ệ ố ấ ả ố ỏ ố

Đ có k t qu c a đ th h p ta c n hàm grundy cho m i đ th con D th y chúng đ u là ể ế ả ủ ồ ị ợ ầ ỗ ồ ị ễ ấ ề

V y hàm grundy c a đ th h p là ậ ủ ồ ị ợ

Người đi trước th ng n u ắ ế , nước đi chi n th ng xác đ nh nh sau:ế ắ ị ư

• Nếu bốc ở đống , số sỏi còn lại của đống này phải thỏa:

• Do , số sỏi còn lại của đống phải là

• Vậy nếu thì có cách bốc chiến thắng từ đống

Ví d 8 Staircase-Nim ụ

Trò ch i di n ra trên m t c u thang ơ ễ ộ ầ b c đánh s chân c u thang đậ ố ầ ược coi là b c T i b c cóậ ạ ậ viên s i Hai ngỏ ười ch i luân phiên th c hi n lơ ự ệ ượt ch i, m i lơ ở ỗ ượt người ch i chuy n m tơ ể ộ

s lố ượng nguyên dương s i m t b c nào đó xu ng b c li n dỏ ở ộ ậ ố ậ ề ưới Người không th c hi nự ệ

đượ ược l t ch i c a mình là ngơ ủ ười thua cu c.ộ

Phân tích

• Khả năng chiến thắng chỉ phụ thuộc vào số sỏi ở bậc lẻ, vì nếu người chơi trước thực hiện chuyển sỏi từ bậc xuống bậc , người chơi sau chỉ cần chuyển sỏi đó xuống bậc và dãy số lượng sỏi ở bậc lẻ vẫn giữ nguyên.

• Như vậy có thể bỏ qua số lượng sỏi ở các bậc chẵn, và coi mỗi lượt chơi chỉ là chuyển sỏi từ các bậc

lẻ Khi đó mỗi lượt chơi tương đương với việc bốc bỏ sỏi ở một bậc lẻ.

Ngày đăng: 15/06/2021, 14:27

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w