Công cụ hệ đếm

Một phần của tài liệu Toán trò chơi Phân loại, công cụ và phương pháp giải (Trang 40 - 46)

Hệ đếm là một công cụ đắc lực giải bài toán trò chơi hai người.

Bài 2.14 (Trò chơi Nim) Người Trung Quốc thời xưa có trò chơi gọi là trò chơi

Nim. Nội dung của trò chơi này như sau: Có ba đống sỏi, hai người chơi lần lượt lấy một số sỏi bất kì (tối thiểu một viên cho đến cả đống sỏi) từ một trong ba đống đó (và mỗi lần chơi chỉ lấy sỏi từ một đống). Ai là người nhặt viên sỏi cuối cùng thì người đó thắng. Có hay không một chiến lược chơi để thắng?

Giải Ngày nay các viên sỏi thường được thay thế bởi các đồ vật khác, thí dụ, các

que diêm, vì vậy người ta cũng gọi trò chơi này là trò chơi “ăn diêm”.

Để giải bài toán này ta sẽ sử dụng hệ đếm cơ số 2. Giả sử trong mỗi đống có a, b

c viên sỏi, ta gọi ba đống sỏi là các đống thứ nhất, thứ hai và thứ ba. Trong hệ đếm cơ số 2, các số này được biểu diễn dưới dạng:

  1 1 1 0 1 1 0 2 .2n .2n ... .2 ... n n n n aaa   a  a a aa a ;   1 1 1 0 1 1 0 2 .2n .2n ... .2 ... n n n n bbb   b  b b bbb ;   1 1 1 0 1 1 0 2 .2n .2n ... .2 ... n n n n ccc   c  c c cc c .

Các hệ số ,ai ,bi ,ci i0,...,n có giá trị 0 hoặc 1. Ở đây, để tiện trình bày, ta đã viết biểu diễn của a, bc cùng có bậc cao nhất là 2 .n

Điều này dễ dàng làm được vì nếu cần ta có thể thêm các hệ số bằng 0, tức là ta không đòi hỏi tất cả các hệ số ,an ,bn cn phải khác 0, nhưng vì n là bậc cao nhất nên ít nhất một trong các hệ số đó phải khác 0.

Người chơi đầu tiên sẽ lấy một số sỏi từ một trong ba đống, thí dụ, từ đống thứ nhất. Khi ấy các hệ số ,ai i0,...,n sẽ bị thay đổi. Tương tự, nếu lấy sỏi từ đống thứ hai (hoặc từ đống thứ ba), thì các hệ số bi (hoặc ci), i0,...,n sẽ thay đổi. Xét các tổng an  bn cn, an1 bn1cn1,,a1 b1 c1, a0  b0 c0.

Vì các hệ số ,ai ,bi ,ci i0,...,n chỉ nhận giá trị 0 hoặc 1 nên mỗi tổng này chỉ nhận một trong bốn giá trị 0,1, 2, 3.

Nếu một trong các tổng trên là lẻ (tức là nhận giá trị 1 hoặc 3) thì người chơi thứ nhất có thể thắng nhờ chiến lược sau: Tại mỗi bước đi, người thứ nhất sẽ lấy đi một số sỏi từ một đống để được tất cả các tổng ai  bi ci, i0,...,n là chẵn. Thực hiện được chiến lược này nhờ cách đi như sau:

Giả sử ak  bk ck là tổng đầu tiên (tính từ trái sang phải) là lẻ, tức là có ít nhất một trong ba số , ,a b ck k k bằng 1. Giả sử, thí dụ, ak 1. Khi ấy người chơi thứ nhất lấy một lượng sỏi d từ đống thứ nhất sao cho tất cả các tổng ai  bi ci,

0,...,

in là chẵn. Để làm việc này chỉ cần lấy d viên sỏi sao cho số sỏi còn lại từ đống thứ nhất sẽ là aa an n1...ak10ak1...a a1 0, trong đó ai ai nếu ai  bi ci, 0,..., 1 ik là chẵn và a  i 1 ai nếu ai  bi ci là lẻ. Do các hệ số 1 1 , ,..., n n k

a aa  của aa bằng nhau, còn hệ số ak của a bằng 1, mà hệ số ak

của a bằng 0 nên aa và d   a a 0, tức là người chơi thứ nhất có thể chọn được một chiến lược theo qui tắc nêu trên.

Như vậy, sau khi người thứ nhất đi bước đi đầu tiên, tất cả các tổng ai  bi ci, 0,...,

in là chẵn.

Bây giờ giả sử người chơi thứ hai lấy một số sỏi bất kì, thí dụ, d viên từ một đống nào đó. Vì d khác 0 nên bắt buộc ít nhất một trong các tổng ai  bi ci

phải thay đổi từ chẵn sang lẻ. Tiếp tục cách làm trên, sau một số hữu hạn q bước, tất cả các tổng ai  bi ci, i0,...,n, phải bằng 0 (vì tổng số sỏi giảm thực sự sau mỗi bước), tức là không còn viên sỏi nào sau bước đi thứ q của người thứ nhất, và anh ta thắng.

Nếu ban đầu tất cả các tổng ai  bi ci, i0,...,n là chẵn, thì sau lần đi đầu tiên của người thứ nhất, cho dù anh ta lấy đi bao nhiêu sỏi từ một đống bất kì nào đó, thì có ít nhất một tổng ai  bi ci bắt buộc phải lẻ, vì vậy, đến lượt người chơi thứ hai, anh ta sẽ sử dụng chiến lược như người chơi thứ nhất thực hiện khi số sỏi ban đầu là lẻ (như chiến lược đã trình bày ở trên) và anh ta sẽ thắng.

Tùy theo số sỏi cụ thể trong từng đống, mỗi người chơi có thể chọn số lượng sỏi trong mỗi bước đi để đảm bảo thắng nhanh nhất hoặc lâu thua nhất.

Thí dụ: Giả sử người chơi thứ nhất biết chiến lược để thắng. Hãy thực hiện chiến lược trong trò chơi Nim với a13, b20, c23.

Giải Ta có   3 2 2 2 4 3 2 1 0 2 13 2 2 1 1101 01101 a       a a a a a ;   4 2 2 4 3 2 1 0 2 20 2 2 10100 b     b b b bb ;     4 2 4 3 2 1 0 2 2 23 2 2 2 1 10111 c       c c c c c . Tổng các hệ số: 4 4 4 2 a  b c  ; a3   b3 c3 1; a2  b2 c2 3; a1   b1 c1 1; a0   b0 c0 2.

Lần 1: Ta có a3   b3 c3 1, a2  b2 c2 3, a1  b1 c1 1 là các số lẻ, trong đó

3 3 3 1

a   b c là số lẻ đầu tiên. Vì a3 1, b3  c3 0 và a 011012 và các tổng

i i i

a  b c có tính chẵn lẻ như trên nên người chơi thứ nhất sẽ lấy d viên sỏi từ đống thứ nhất sao cho số sỏi còn lại là a 000112 3 (tức là (adsbygoogle = window.adsbygoogle || []).push({});

1 011012 000112 010102 10

d   a a    ), là cách duy nhất (trong thí dụ này) đảm bảo cho người chơi thứ nhất đi đến thắng lợi. Số sỏi còn lại ở các đống là:

 2 13 10 3 00011 a    , b20 10100 2; c23101112. Bây giờ ta có 4 4 4 2 a  b c  ; a3   b3 c3 0; a2   b2 c2 2; a1  b1 c1 2; a0   b0 c0 2. Người chơi thứ hai, dù biết hay không biết chiến lược, cũng phải chọn một số sỏi từ một đống nào đó, thí dụ 1'  

2

12 01100

d   từ đống thứ hai. Khi ấy số sỏi còn lại ở ba đống là:  2 3 2 1 00011 a    ; b 8 010002, 4 2   2 23 2 2 2 1 10111 c      .

Tổng các hệ số sau khi người chơi thứ hai đã đi là:

4 4 4 1

a   b c ; a3   b3 c3 1; a2   b2 c2 1; a1  b1 c1 2; a0   b0 c0 2.

Lần 2: Do a4   b4 c4 1, a4 b4 0, c4 1, c101112 và tổng các hệ số như trên nên người thứ nhất lấy từ đống thứ ba d2 viên sỏi sao cho số sỏi còn lại ở đống thứ ba là c 010112 11, tức là chọn     2 10111 2 01011 2 011002 12 d   c c    viên. Số sỏi còn lại ở các đống là:  2 3 00011 a  , b 8 010002,c23 12 11  010112. Bây giờ ta lại có

4 4 4 0

Người chơi thứ hai lấy ra số sỏi bất kì, thí dụ, 10 viên từ đống thứ ba, số sỏi còn lại ở ba đống là: a   3 2 1 000112, b 8 010002, c 1 000012. Tổng các hệ số sau khi người chơi thứ hai đã đi là:

4 4 4 0

a  b c  ; a3   b3 c3 1; a2   b2 c2 0; a1   b1 c1 1; a0   b0 c0 2.

Lần 3: Vì a3   b3 c3 1, b3 1, b 8 010002 và tổng các hệ số có tính chẵn lẻ như trên nên người chơi thứ nhất lấy ra từ đống thứ hai một số sỏi d3 sao cho số viên sỏi còn lại là b 000102 2, tức là lấy ra

   

3 01000 2 00010 2 001102 6

d   b b   

viên sỏi từ đống thứ hai. Số sỏi còn lại ở các đống bây giờ là:

 2

3 00011

a  , b 2 000102, c 1 000012. Bây giờ ta lại có

4 4 4 0

a  b c  ; a3   b3 c3 0; a2   b2 c2 0; a1  b1 c1 2; a0   b0 c0 2. Người thứ hai chọn số sỏi bất kì, thí dụ, 1 viên từ đống thứ hai, số sỏi còn ở ba đống là: a 3 000112, b 1 000012, c 1 000012.

Tổng các hệ số:

4 4 4 0

a  b c  ; a3   b3 c3 0; a2   b2 c2 0; a1   b1 c1 1; a0   b0 c0 3.

Lần 4: Do a1  b1 c1 1 và a1 1, a 3 000112 nên người chơi thứ nhất chọn d4 sao cho số sỏi còn lại ở đống thứ nhất là a  0 000002, tức là

4 000012 3

d   . Số sỏi còn lại ở các đống là: (adsbygoogle = window.adsbygoogle || []).push({});

 2

0 00000

a  , b 1 000012, c 1 000012. Bây giờ ta lại có

4 4 4 0

a  b c  ; a3   b3 c3 0; a2   b2 c2 0; a1  b1 c1 0; a0   b0 c0 2. Người chơi thứ hai chỉ có thể chọn 1 viên từ đống thứ hai hoặc đống thứ ba, thí

dụ, từ đống thứ ba, số sỏi còn lại ở ba đống là: a0, b1, c0.

Người thứ nhất chỉ cần lấy nốt viên sỏi cuối cùng ở đống thứ hai và anh ta thắng.

Lời bình Người chơi thứ hai có thể chọn nhiều cách đi. Tuy nhiên, nếu lúc đầu

có ít nhất một tổng ak  bk ck là lẻ thì với mỗi cách đi của người thứ hai, người chơi thứ nhất bao giờ cũng chọn được ít nhất một cách đi tương ứng để sau khi đi thì tất cả các tổng ai  bi ci, i0,...,n là chẵn, và cuối cùng anh ta sẽ thắng. Còn nếu tất cả các tổng ai  bi ci, i0,...,n là chẵn thì người thứ hai sẽ thắng. Người thứ hai chỉ thắng khi tất cả các tổng ai  bi ci, i0,...,n là chẵn. Khả năng thắng của người chơi thứ hai ít hơn nhiều so với người chơi thứ nhất. Thí dụ, với 10 viên sỏi chia làm ba đống a  b c 10 thì có tất cả 8 khả năng viết số 10=(1010)2 dưới dạng tổng của ba số dương khác 0:

1) 10=1+1+8=(0001)2+(0001)2+(1000)2;2) 10=1+2+7=(0001)2+(0010)2+(0111)2; 3) 10=1+3+6=(0001)2+(0011)2+(0110)2;4) 10=1+4+5=(0001)2+(0100)2+(0101)2; 5) 10=2+2+6=(0010)2+(0010)2+(0110)2;6) 10=2+3+5=(0010)2+(0011)2+(0101)2; 7) 10=2+4+4=(0010)2+(0100)2+(0100)2;8) 10=3+3+4=(0011)2+(0011)2+(0100)2. Trong 8 cách này, chỉ có duy nhất một cách trong đó tất cả các tổng ai  bi ci,

0, 2,3, 4

i là chẵn: 10=1+4+5=(0001)2+(0100)2+(0101)2.

Trò chơi chỉ thú vị khi ít nhất một trong hai người chơi không biết toán (không biết suy luận như trên), nói cách khác, biết toán sẽ bảo đảm biết chắc thắng hay chắc thua. Nếu cả hai người chơi đều đã biết thuật toán như trên thì trò chơi mất hứng thú, vì chỉ cần tính các tổng ai  bi ci là biết ai sẽ thắng.

Bài tập Hãy chọn chiến lược tốt nhất (thắng nhanh nhất hoặc thua lâu nhất) trong

các trò chơi ăn diêm với số diêm a, b, c trong các đống diêm như sau: 1) a15, b12, c10; 2) a11, b13, c17.

Bài 2.15 (Đề dự tuyển Vô địch Quốc tế, 1999) Một nhà sinh vật học quan sát một con thạch sùng đang bắt ruồi và nó nghỉ ngơi sau mỗi lần bắt được một con ruồi. Nhà sinh vật học này nhận thấy rằng:

(i) Con ruồi đầu tiên bị bắt sau thời gian nghỉ một phút;

(ii) Thời gian nghỉ trước khi bắt con ruồi thứ 2m bằng thời gian nghỉ trước khi bắt con ruồi thứ m và kém một phút so với thời gian nghỉ trước khi bắt con ruồi thứ 2m1;

(iii) Khi thạch sùng hết nghỉ, nó bắt ruồi ngay lập tức. Hỏi:

a) Có bao nhiêu con ruồi bị bắt trước thời gian nghỉ lần đầu tiên là 9 phút? b) Sau bao nhiêu phút thì thạch sùng bắt được con ruồi thứ 98?

c) Có bao nhiêu con ruồi bị thạch sùng bắt sau 1999 phút trôi qua?

Giải Xem [4], trang 92.

Một phần của tài liệu Toán trò chơi Phân loại, công cụ và phương pháp giải (Trang 40 - 46)