นิม

นิม () คือ เกมวางแผนทางคณิตศาสตร์เกมหนึ่ง ซึ่งมีผู้เล่น 2 คน และมีกติกาในการเล่นดังนี้มีการเล่นนิมมาตั้งแต่สมัยโบราณแล้ว บางคนกล่าวว่านิมมีต้นกำเนิดจากจีน แต่ความจริงแล้ว ยังไม่มีใครรู้ได้ จากหลักฐานของชาวยุโรป พบว่า นิมมีมาตั้งแต่คริสต์ศตวรรษที่ 16 Charles L. Bouton แห่งมหาวิทยาลัยฮาร์วาร์ดเป็นผู้ตั้งชื่อเกมนี้ว่า นิม และได้พัฒนาทฤษฎีเกี่ยวกับเกมนี้ตั้งแต่ปี ค.ศ. 1901 แต่ชื่อเดิมของเกมนี้ยังไม่มีใครรู้ บางทีมันอาจมาจากภาษาเยอรมันคำว่า "nimm!" ซึ่งแปลว่า "take!" หรืออาจจะมาจากภาษาอังกฤษเก่า ซึ่งก็แปลว่า take เหมือนกัน มีการตั้งข้อสังเกตว่าเมื่อเราหมุนคำว่า "NIM" เราจะได้คำว่า "WIN" ซึ่งอาจเป็นเพียงความบังเอิญ

นอกจากนี้ ยังมีผู้นิยมเล่นเกมนิมในแบบตรงกันข้ามคือ ผู้เล่นที่หยิบก้อนหินก้อนสุดท้าย จะเป็นผู้แพ้ แต่โดยทั่วไป เรานิยมเล่นโดยใช้กติกาแบบแรกมากกว่า

ตัวอย่างการเล่นนิมด้วยกติกาปกติ สมมติว่าเริ่มต้นด้วยกองหิน 3 กอง แต่ละกองมีก้อนหินอยู่ 3, 4, 5 ก้อน ตามลำดับ

นิมเป็นเกมที่แก้ด้วยคณิตศาสตร์ได้ และสามารถคำนวณได้ง่ายว่าผู้เล่นคนใดจะชนะ,ต้องหยิบอย่างไรถึงจะชนะ ตัวอย่างเช่น เกมที่เริ่มต้นด้วยกองหินที่มีก้อนหินอยู่ 3, 4, 5 ก้อน ผู้เล่นที่เล่นคนแรกจะชนะเสมอ ถ้าเขาเล่นด้วยกลยุทธ์ที่ถูกต้อง
และไม่ขึ้นกับว่ากติกาจะเป็นแบบปกติหรือแบบที่สองก็ตาม

หัวใจของทฤษฎีของเกมนี้ก็คือ ผลบวกเลขโดดฐานสอง (binary digital sum) ซึ่งเป็นผลบวกในเลขฐานสองที่ไม่มีการทด การดำเนินการนี้เรียกว่าการ exclusive or (xor) ในทฤษฎีเกมเชิงการจัดจะเรียกว่า ผลบวกนิม (nim-sum) ผลบวกนิมของ x และ y เขียนแทนด้วย "x" ⊕ "y" ซึ่งต่างจากผลบวกธรรมดาที่เขียนแทนด้วย "x" + "y" ตัวอย่างการคำนวณของกองหินที่มีก้อนหินอยู่ 3, 4, 5 ก้อน มีดังนี้

หรือจะคำนวณแบบนี้ก็ได้ ให้เขียนจำนวนก้อนหินในแต่ละกองให้อยู่ในรูปผลบวกของเลขกำลังสอง จากนั้นให้ตัดคู่ที่เท่ากันออกไป ถ้าตัดไม่ได้แล้ว ให้บวกเลขที่เหลือเข้าด้วยกัน ก็จะได้ผลลัพธ์ เช่น

กลยุทธ์ในการเล่นให้ชนะคือ ทำผลบวกนิมให้เท่ากับ 0 เสมอ. ซึ่งถ้าผลบวกนิมก่อนที่คุณจะหยิบไม่เท่ากับ 0 แล้ว จะมีวิธีที่ทำให้ผลบวกนิมเท่ากับ 0 ได้เสมอ. ถ้าคุณไม่เล่นพลาดเลยสักตา ผู้เล่นอีกฝ่ายจะเป็นฝ่ายแพ้. เพื่อหาว่าจะต้องหยิบก้อนหินจากกองใดจำนวนเท่าไร เราจะให้ X คือผลบวกนิมของจำนวนก้อนหินทุกกอง ให้หาผลบวกนิมของจำนวนก้อนหินในแต่ละกอง กับ X. กลยุทธ์คือ คุณจะต้องทำให้จำนวนก้อนหินในกองใดกองหนึ่ง เหลือเท่ากับผลบวกนิมของจำนวนหินเดิมในกองนั้นกับ X. จากตัวอย่างข้างบน ผลบวกนิมของทุกกองเท่ากับ X = 3 ⊕ 4 ⊕ 5 = 2 ผลบวกนิมของจำนวนก้อนหินในกอง A=3, B=4, C=5 กับ X เท่ากับ
มีเพียงกองเดียวที่สามารถลดจำนวนก้อนหินให้เท่ากับค่าที่ต้องการได้ คือ กอง A (เราสามารถลดก้อนหินในกอง A จาก 3 ก้อนเป็น 1 ก้อนได้ แต่ไม่สามารถลดกอง B จาก 4 ก้อนเป็น 6 ก้อนได้ และไม่สามารถลดกอง C จาก 5 ก้อนเป็น 7 ก้อนได้) ดังนั้น การเล่นที่ถูกคือต้องลดจำนวนก้อนหินในกอง A ให้เท่ากับ 1 (หยิบหินออกจากกอง A ออกไป 2 ก้อน)

ในกรณีที่มีกองหินอยู่ 2 กอง จะมีกลยุทธ์ที่ง่ายกว่าคือ ให้ลดก้อนหินของกองที่ใหญ่กว่า ให้เท่ากับอีกกองหนึ่ง หลังจากนั้น ไม่ว่าผู้เล่นอีกฝ่ายจะหยิบจำนวนก้อนหินเท่าใด คุณก็หยิบก้อนหินจำนวนเท่ากันจากอีกกอง วิธีนี้จะรับประกันว่าคุณจะเป็นผู้หยิบก้อนหินก้อนสุดท้ายเสมอ

ถ้าเล่นกติกาแบบที่สอง กลยุทธ์ในการเล่นยังคงเหมือนกัน ยกเว้น ในกรณีที่การหยิบจะทำให้กองหินทุกกองมีก้อนหินน้อยกว่า 2 ก้อน ในกรณีนี้ การหยิบที่ถูกต้องคือหยิบให้เหลือจำนวนกองที่มีก้อนหิน 1 ก้อน อยู่เป็นจำนวนคี่ (ซึ่งถ้าเล่นกติกาปกติ การหยิบที่ถูกต้องคือหยิบให้เหลือจำนวนกองที่มีก้อนหิน 1 ก้อน อยู่เป็นจำนวนคู่)

ในการเล่นกติกาแบบที่สอง ซึ่งเริ่มต้นด้วยกองหินที่มีก้อนหินอยู่ 3, 4, 5 ก้อน จะมีกลยุทธ์ในการเล่นเป็นดังนี้

C. Bouton เป็นผู้อธิบายกลยุทธ์ในการเล่นให้ชนะเสมอ และให้บทพิสูจน์ดังนี้

ทฤษฎีบท. ในเกมนิมแบบปกติ ผู้เล่นคนแรกจะมีกลยุทธ์ในการเล่นให้ชนะเสมอ ก็ต่อเมื่อ ผลบวกนิมของจำนวนก้อนหินทุกกองไม่เท่ากับ 0. มิฉะนั้นแล้ว ผู้เล่นคนที่สองจะมีกลยุทธ์ในการเล่นให้ชนะเสมอ

"พิสูจน์:" ผลบวกนิม (⊕) มีสมบัติการเปลี่ยนหมู่ และการสลับที่ และยังมีสมบัติ "x" = 0 ด้วย

ให้ "x", ..., "x" คือ จำนวนก้อนหินในแต่ละกองก่อนการหยิบ และ "y", ..., "y" คือ จำนวนก้อนหินในแต่ละกองหลังการหยิบ ให้ "s" = "x" ⊕ ... ⊕ "x" และ "t" = "y" ⊕ ... ⊕ "y". ถ้าเราหยิบกองที่ "k", เราจะได้ "x" = "y" สำหรับ "i" ≠ "k", และ "x" > "y". จากสมบัติของ ⊕ เราจะได้

เราจะพิสูจน์ทฤษฎีบทนี้ ด้วยการอุปนัยจากบทตั้งทั้ง 2 ข้อต่อไปนี้

บทตั้งที่ 1. ถ้า "s" = 0 แล้ว "t" ≠ 0 เสมอ ไม่ขึ้นอยู่กับว่าจะหยิบแบบใด

"พิสูจน์:" ถ้าไม่มีก้อนหินเหลืออยู่ บทตั้งนี้จะถือว่าเป็นจริง (และผู้เล่นคนแรกก็จะเป็นผู้แพ้ตามนิยามของเกม)
แต่ถ้ามีก้อนหินเหลืออยู่ การหยิบก้อนหินออกจากกองที่ "k" จะทำให้ "t" = "x" ⊕ "y" จาก (*) ซึ่งค่านี้จะไม่เท่ากับศูนย์เพราะ "x" ≠ "y"

บทตั้งที่ 2. ถ้า "s" ≠ 0 แล้ว จะมีวิธีหยิบที่ทำให้ "t" = 0 เสมอ

"พิสูจน์:" ให้ "d" เป็นบิตที่ไม่เป็นศูนย์ที่อยู่ซ้ายสุดของ "s", เลือก "k" ที่ "x" บิตที่ "d" ไม่เป็นศูนย์ (ต้องมี "k" อยู่ มิฉะนั้นแล้ว "s" บิตที่ "d" จะเป็น 0)
ให้ "y" = "s" ⊕ "x"
เรารับประกันได้ว่า "y" เกมการลบ "S" (1,2...,"k") มากกว่า) โดยทั่วไป เกมนี้จะเล่นแค่กองหินกองเดียว

กลยุทธ์ในการเล่นจะไม่แตกต่างจากการเล่นแบบเดิม ยกเว้น ก่อนที่เราจะหาค่าผลบวกนิม เราจะต้องลดขนาดของกองหิน ด้วยการมอดุโลกับ "k" + 1 ก่อน. ถ้าทุกกองมอดุโลแล้วได้ 0 (สำหรับกติกาแบบที่สอง) ให้หยิบก้อนหิน "k" ก้อน ออกจากกองใดกองหนึ่งก็ได้ ถ้าเล่นจนเหลือกองเดียวและมีก้อนหินเหลือ "n" ก้อน ผู้เล่นคนที่สองจะชนะได้ ก็ต่อเมื่อ