편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
{{ | {{학술}} | ||
== | == 개요 == | ||
필승 전략 게임을 | '''필승 전략 게임'''이란, 이름 그대로 어느 한 쪽이 반드시 이길 수 있는 전략을 가진 게임을 말한다. 중요한 것은, 운이나 실력이 아닌 철저한 '''수학적 계산'''만을 사용하여 이기는 게임만을 다룬다. 이 때문에 확률 놀음인 [[포커]]나 실력이 중요한 [[바둑]]은 이 범위에서 제외된다. 또한, 무수히 많은 [[경우의 수]]를 사용한 승리 전략이나 승패가 결졍되지 않는 게임 역시 제외된다. 전자의 예로는 [[오목]]이 있으며,<ref>아무런 규칙도 택하지 않을 경우, 먼저 두는 흑에게 필승 전략이 있기는 하지만 경우의 수가 너무 많다.</ref> 후자의 예는 [[틱택토]]가 있다.<ref>두 사람이 모두 전략적으로만 플레이하면 비기게 된다.</ref> 마지막으로, 여러명이 하는 게임이 아닌 일대일 대결 게임만을 다룬다. | ||
어떤 게임의 필승 전략을 찾는 것은 소위 말하는 창의력 수학의 단골 소재. [[수학 경시대회]]에 나오는 경우도 간혹 있다. 대부분의 경우는 방법을 찾는 것만으로 끝나게 되지만, 게임에 따라서는 그 방법이 왜 필승 전략인지 [[증명]]을 해야하는 경우도 있다. 하지만 문제 유형이 거기서 거기라 몇 가지 유형을 풀어봤다면 "아, 이거는 이 방법이구나"하고 감이 온다. | 어떤 게임의 필승 전략을 찾는 것은 소위 말하는 창의력 수학의 단골 소재. [[수학 경시대회]]에 나오는 경우도 간혹 있다. 대부분의 경우는 방법을 찾는 것만으로 끝나게 되지만, 게임에 따라서는 그 방법이 왜 필승 전략인지 [[증명]]을 해야하는 경우도 있다. 하지만 문제 유형이 거기서 거기라 몇 가지 유형을 풀어봤다면 "아, 이거는 이 방법이구나"하고 감이 온다. | ||
가장 많이 알려진 필승 전략 게임은 배스킨 라빈스 | 가장 많이 알려진 필승 전략 게임은 "배스킨 라빈스 31"이라는 게임일 것이다. 31을 부르면 지는<ref>규칙에 따라서는 이기는</ref> 게임으로, 초등학교 수준의 필승 전략이 존재하지만 이 사실을 모르는 사람이 매우 많다. 그러나 필승 전략을 사용하여 상대방을 농락하는 짓은 착한 위키러라면 하지 말자. 더욱이 게임에 '''돈'''을 건다면... {{ㅊ|사기죄}} | ||
== 목록 == | == 목록 == | ||
=== NIM 게임 === | === NIM 게임 === | ||
가장 대표적인 유형으로, 개요에서 예시로 들은 배스킨 라빈스 31도 님 게임의 일종이다. 이름의 NIM의 어원은 알려지지 않았으며, 훔치다라는 뜻의 영어 동사 nim에서 왔다는 설,<ref>nim은 | 가장 대표적인 유형으로, 개요에서 예시로 들은 배스킨 라빈스 31도 님 게임의 일종이다. 이름의 NIM의 어원은 알려지지 않았으며, 훔치다라는 뜻의 영어 동사 nim에서 왔다는 설,<ref>nim은 현재는 사어(死語)다.</ref> 가지고 가다라는 뜻의 독일어 nimm에서 왔다는 설, NIM을 뒤집으면 WIN이기 때문에 NIM이라는 설 등이 있다. 이름 뿐만 아니라 게임 자체의 기원도 명확하지 않은데, 고대 중국의 돌 줍기 게임에서 왔다는 설,<ref>Yaglom, I. M. (2001), "Two games with matchsticks", in Tabachnikov, Serge, Kvant Selecta: Combinatorics, I, Volume 1, Mathematical world 17, American Mathematical Society, p. 1–8</ref> 유럽의 선술집에서 하던 성냥개비 게임에서 왔다는 설 등이 있다. 어느 쪽이든 확실한 증거는 없다. {{ㅊ|그럼 도대체 뭐야 이 게임}} | ||
기본적인 룰은 | 기본적인 룰은 여러개의 돌 더미 중 하나를 골라 그 더미 안의 돌을 가져가는 것이며, 가장 마지막 돌을 가져가는 사람이 지는 게임이다. 규칙에 따라서는 마지막 돌을 가져가는 사람이 이기게 만들 수도 있으며, 수학적인 필승 전략과 그 원리는 동일하다. 아래 내용은 특별한 말이 없는한 마지막 돌을 가져가는 사람이 패배하는 규칙을 따른다. | ||
==== 한 더미 ==== | ==== 한 더미 ==== | ||
22번째 줄: | 21번째 줄: | ||
위 문제를 해결했으면, 일반적인 경우에 도전해 보자. | 위 문제를 해결했으면, 일반적인 경우에 도전해 보자. | ||
{{인용문2|두 사람이 1부터 번갈아 숫자를 부른다. 한 번에 x개의 숫자를 부를 수 있으며, n을 부르면 진다. 필승 전략은 무엇일까?}} | {{인용문2|두 사람이 1부터 번갈아 숫자를 부른다. 한 번에 x개의 숫자를 부를 수 있으며, n을 부르면 진다. 필승 전략은 무엇일까?}} | ||
{{숨기기|풀이|n-1을 부르면 | {{숨기기|풀이|n-1을 부르면 이긴다. n-1을 부르기 위해서는 n-1-(x+1)<nowiki>=</nowiki>n-x-2을 부르면 된다. 이 과정을 계속 반복하여 최초에 불러야 하는 수를 부르면 된다.}} | ||
마지막으로, n을 부르면 '''이기는''' 경우의 필승 전략도 생각해 보자. | 마지막으로, n을 부르면 '''이기는''' 경우의 필승 전략도 생각해 보자. | ||
{{숨기기|풀이|상대방이 n을 부를 수 없게 할려면, 자신이 n-(x+1)<nowiki>=</nowiki>n-x-1을 부르면 | {{숨기기|풀이|상대방이 n을 부를 수 없게 할려면, 자신이 n-(x+1)<nowiki>=</nowiki>n-x-1을 부르면 된다. 그러면 상대방이 몇 개의 수를 부르든, n은 x개의 안에 있으므로 당신은 항상 n을 부를 수 있다. 이 과정을 반복하면 된다.}} | ||
==== 두 더미 ==== | ==== 두 더미 ==== | ||
30번째 줄: | 29번째 줄: | ||
{{인용문2|두 줄의 돌 더미가 있습니다. 첫 번째 줄에는 돌이 10개, 두 번째 줄에는 돌이 7개. 당신이 이기기 위해서는 먼저 해야할까요 나중에 해야할까요? 당신의 필승 전략은?}} | {{인용문2|두 줄의 돌 더미가 있습니다. 첫 번째 줄에는 돌이 10개, 두 번째 줄에는 돌이 7개. 당신이 이기기 위해서는 먼저 해야할까요 나중에 해야할까요? 당신의 필승 전략은?}} | ||
{{숨기기|힌트|2, 2를 만들면 당신의 승리가 보장됩니다. 왜 일까요?}} | {{숨기기|힌트|2, 2를 만들면 당신의 승리가 보장됩니다. 왜 일까요?}} | ||
{{숨기기|풀이|당신이 먼저 해야합니다. 첫 번째 줄에서 돌 3개를 빼 7, 7을 만듭니다. 상대방이 바보가 아닌 이상 한 줄 전체를 빼거나 한 줄에 돌을 하나만 남겨 놓을리는 없습니다. 만약 상대방이 그러면 비웃어 주세요. 그렇지 않으면, 두 줄의 돌의 개수를 똑같이 맞춰 주면 됩니다. 2, 2 상태가 된 후, 상대방이 한 줄을 지우면 당신은 남은 줄에서 돌 하나를 | {{숨기기|풀이|당신이 먼저 해야합니다. 첫 번째 줄에서 돌 3개를 빼 7, 7을 만듭니다. 상대방이 바보가 아닌 이상 한 줄 전체를 빼거나 한 줄에 돌을 하나만 남겨 놓을리는 없습니다. 만약 상대방이 그러면 비웃어 주세요. 그렇지 않으면, 두 줄의 돌의 개수를 똑같이 맞춰 주면 됩니다. 2, 2 상태가 된 후, 상대방이 한 줄을 지우면 당신은 남은 줄에서 돌 하나를, 상대방이 돌 하나만 빼면 당신은 다른 줄을 지우면 당신의 승리입니다.}} | ||
마지막 돌을 가져가면 승리하는 경우의 전략도 한번 생각해 보자. | 마지막 돌을 가져가면 승리하는 경우의 전략도 한번 생각해 보자. | ||
{{숨기기|풀이|똑같은 방법으로, 두 줄의 돌의 개수를 같게 맞춰주면 됩니다. 2, 2가 아닌 1, 1을 만드는 것을 목표로 하면 됩니다. 상대방이 한 줄 전체를 비우면 비웃어 주세요.}} | {{숨기기|풀이|똑같은 방법으로, 두 줄의 돌의 개수를 같게 맞춰주면 됩니다. 2, 2가 아닌 1, 1을 만드는 것을 목표로 하면 됩니다. 상대방이 한 줄 전체를 비우면 비웃어 주세요.}} | ||
64번째 줄: | 63번째 줄: | ||
{|width=250 | {|width=250 | ||
|- | |- | ||
|rowspan="4"|<br /><br /><math>\oplus</math><br />= | |rowspan="4"|<br/><br/><math>\oplus</math><br/>= | ||
|001||001||001||000 | |001||001||001||000 | ||
|- | |- | ||
83번째 줄: | 82번째 줄: | ||
==== 증명<ref>Bouton, C. L. (1901–1902), "Nim, a game with a complete mathematical theory", Annals of Mathematics 3 (14): 35–39을 참조.</ref> ==== | ==== 증명<ref>Bouton, C. L. (1901–1902), "Nim, a game with a complete mathematical theory", Annals of Mathematics 3 (14): 35–39을 참조.</ref> ==== | ||
먼저 님 합은 일반적인 [[결합법칙]]과 [[교환법칙]]을 만족함을 쉽게 보일 수 있다. 또한, <math>x\oplus x=0</math>이고, <math>0\oplus x=x</math>이다. 이제 <math>x_1,x_2,\cdots,x_n</math>을 수를 두기 전의 각 더미의 돌의 개수, <math>y_1,y_2,\cdots,y_n</math>을 수를 둔 후의 각 더미의 돌의 개수라 하자. 또한, <math>s=x_1\oplus x_2\oplus\cdots\oplus x_n,\,t=y_1\oplus y_2\oplus\cdots\oplus y_n</math>라 하자. <math>k</math>번째 더미에서 돌을 가져가면, <math>i\neq k</math>일 때 <math>x_i=y_i</math>이고, <math>i=k</math>일 때는 <math>x_i> y_i</math>이다. 그러면, | 먼저 님 합은 일반적인 [[결합법칙]]과 [[교환법칙]]을 만족함을 쉽게 보일 수 있다. 또한, <math>x\oplus x=0</math>이고, <math>0\oplus x=x</math>이다. 이제 <math>x_1,x_2,\cdots,x_n</math>을 수를 두기 전의 각 더미의 돌의 개수, <math>y_1,y_2,\cdots,y_n</math>을 수를 둔 후의 각 더미의 돌의 개수라 하자. 또한, <math>s=x_1\oplus x_2\oplus\cdots\oplus x_n,\,t=y_1\oplus y_2\oplus\cdots\oplus y_n</math>라 하자. <math>k</math>번째 더미에서 돌을 가져가면, <math>i\neq k</math>일 때 <math>x_i=y_i</math>이고, <math>i=k</math>일 때는 <math>x_i> y_i</math>이다. 그러면, | ||
:<math>\begin{align*}t&=0\oplus t\\&=s\oplus s\oplus t\\&=s\oplus\left(x_1\oplus x_2\oplus\cdots\oplus x_n\right)\oplus\left(y_1\oplus y_2\oplus\cdots\oplus y_n\right)\\&=s\oplus\left(x_1\oplus y_1\right)\oplus\left(x_2\oplus y_2\right)\oplus\cdots\oplus\left(x_n\oplus y_n\right)\\&=s\oplus0\oplus\cdots\oplus\left(x_k\oplus y_k\right)\oplus0\oplus\cdots\oplus0\\&=s\oplus x_k\oplus y_k\end{align*}</math><br /><math>\therefore t=s\oplus x_k\oplus y_k\quad\cdots\left(*\right)</math> | :<math>\begin{align*}t&=0\oplus t\\&=s\oplus s\oplus t\\&=s\oplus\left(x_1\oplus x_2\oplus\cdots\oplus x_n\right)\oplus\left(y_1\oplus y_2\oplus\cdots\oplus y_n\right)\\&=s\oplus\left(x_1\oplus y_1\right)\oplus\left(x_2\oplus y_2\right)\oplus\cdots\oplus\left(x_n\oplus y_n\right)\\&=s\oplus0\oplus\cdots\oplus\left(x_k\oplus y_k\right)\oplus0\oplus\cdots\oplus0\\&=s\oplus x_k\oplus y_k\end{align*}</math><br/><math>\therefore t=s\oplus x_k\oplus y_k\quad\cdots\left(*\right)</math> | ||
이다. | 이다. | ||
이제, 우리가 보이고자 하는 것은 아래의 두 명제이다. | 이제, 우리가 보이고자 하는 것은 아래의 두 명제이다. | ||
{{인용문2|<math>s=0</math>이면, 어떤 수를 둬도 <math>t\neq0</math>이다.<br /><math>s\neq0</math>이면, <math>t=0</math>으로 만들 수 있는 수가 존재한다.}} | {{인용문2|<math>s=0</math>이면, 어떤 수를 둬도 <math>t\neq0</math>이다.<br/><math>s\neq0</math>이면, <math>t=0</math>으로 만들 수 있는 수가 존재한다.}} | ||
#먼저, <math>s=0</math>이라 가정하자. 돌이 아예 없는 경우에는 승패가 명확하게 결정 된 상태이므로 의미가 없다. 따라서 수를 둘 수 있다 가정하자. 그러면 (*)에서, <math>t=0\oplus x_k\oplus y_k=x_k\oplus y_k</math>이고, <math>x_k\neq y_k</math>이므로 <math>t=x_k\oplus y_k\neq0</math>이다. | #먼저, <math>s=0</math>이라 가정하자. 돌이 아예 없는 경우에는 승패가 명확하게 결정 된 상태이므로 의미가 없다. 따라서 수를 둘 수 있다 가정하자. 그러면 (*)에서, <math>t=0\oplus x_k\oplus y_k=x_k\oplus y_k</math>이고, <math>x_k\neq y_k</math>이므로 <math>t=x_k\oplus y_k\neq0</math>이다. | ||
#이제 <math>s\neq0</math>이라 가정하자. <math>s</math>를 2진법으로 나타내었을 때, 제일 왼쪽에 존재하는 1의 자리를 <math>d</math>라 하자.<ref>만약 | #이제 <math>s\neq0</math>이라 가정하자. <math>s</math>를 2진법으로 나타내었을 때, 제일 왼쪽에 존재하는 1의 자리를 <math>d</math>라 하자.<ref>만약 00101101이란 수가 있으면, <math>d=6</math>이다.</ref> 이제 2진법으로 나타냈을 때, <math>d</math>번째 자리의 수가 0이 아닌 <math>x_k</math>를 고른다. 만약 이런 <math>x_k</math>가 존재하지 않는다면, 모든 <math>x_i</math>의 <math>d</math>번째 자리는 0이고, 님 합을 구하면 <math>s</math>의 <math>d</math>번째 자리는 0이 되어 모순이다. 이제 <math>y_k=s\oplus x_k</math>라 하자. 즉, <math>x_k</math>와 <math>y_k</math>의 <math>d</math>자리 왼쪽은 전부 똑같고,<ref><math>d</math>의 정의에 의해 필연적으로 전부 0이다.</ref> <math>d</math>자리의 수는 1에서 0으로 줄어든 것이다. 다른 말로 하면, <math>x_k-y_k</math>개의 돌을 <math>k</math>번째 더미에서 가져간 것이다. 그러면, (*)에서, <math>t=s\oplus x_k\oplus y_k=s\oplus x_k\oplus\left(s\oplus x_k\right)=0</math>이다. | ||
==== 변형 NIM ==== | ==== 변형 NIM ==== | ||
역사가 오래된 게임인 만큼, | 역사가 오래된 게임인 만큼, 여러가지 변형된 님 게임이 존재한다. 사실 엄밀하게 따지면, 돌 더미가 한 개인 경우의 님 게임은 이쪽에 속한다. | ||
*원형 님 (Circular Nim) | *원형 님 (Circular Nim) | ||
돌 더미가 한 개인 경우의 님 게임과 비슷하지만, 돌들이 '''원형'''으로 놓여있는 경우. 한 번에 가져갈 수 있는 돌의 개수에 제한이 있는 것 까지는 같지만, 가져가는 돌들은 서로 '''인접'''해야 한다. 원조 님 게임과 비슷한 이론을 쓰긴 하지만 이 게임 만의 독특한 수학 이론이 많이 필요하다.<ref>[http://web.calstatela.edu/faculty/sheubac/presentations/SLOtalk.pdf 1], [http://arxiv.org/pdf/1211.0091.pdf 2] 참조</ref> | 돌 더미가 한 개인 경우의 님 게임과 비슷하지만, 돌들이 '''원형'''으로 놓여있는 경우. 한 번에 가져갈 수 있는 돌의 개수에 제한이 있는 것 까지는 같지만, 가져가는 돌들은 서로 '''인접'''해야 한다. 원조 님 게임과 비슷한 이론을 쓰긴 하지만 이 게임 만의 독특한 수학 이론이 많이 필요하다.<ref>[http://web.calstatela.edu/faculty/sheubac/presentations/SLOtalk.pdf 1], [http://arxiv.org/pdf/1211.0091.pdf 2] 참조</ref> | ||
103번째 줄: | 102번째 줄: | ||
위키백과에서는 님 게임의 일종으로 보고 있지만, 실제로 해보면 님 게임과는 이질적이다. 기본적인 규칙은 아래와 같다. | 위키백과에서는 님 게임의 일종으로 보고 있지만, 실제로 해보면 님 게임과는 이질적이다. 기본적인 규칙은 아래와 같다. | ||
#숫자 하나가 있다. 예로 10이 있다 하자. | #숫자 하나가 있다. 예로 10이 있다 하자. | ||
#번갈아가면서 숫자를 두 개의 '''다른''' 숫자로 쪼갠다. 즉, 10→7, 3은 되지만, 10→5, 5는 | #번갈아가면서 숫자를 두 개의 '''다른''' 숫자로 쪼갠다. 즉, 10→7, 3은 되지만, 10→5, 5는 안된다. | ||
#자기 차례에 더이상 쪼갤 숫자가 없다면 패배. 즉, 모든 숫자가 1 또는 2면 진다. | #자기 차례에 더이상 쪼갤 숫자가 없다면 패배. 즉, 모든 숫자가 1 또는 2면 진다. | ||
이 게임의 필승 전략은 [[Wikipedia:Sprague-Grundy theorem|스프라그-그룬디 정리]]를 | 이 게임의 필승 전략은 [[Wikipedia:Sprague-Grundy theorem|스프라그-그룬디 정리]]를 사용하여 해결할 수 있다. 영포자나 수포자를 위해 아주 정말 단순하게 설명하자면, 각 숫자에는 수학적으로 계산된 님 더미 숫자(nim heap size, 님 값)가 있는데, 수를 쪼갠 뒤의 님 합이 0이 되도록 해주면 이긴다. 참고로 위 에서는 님 합이 2진법에서만 정의된다 하였는데, 10진법에서도 특별한 오류없이 잘 정의된다. 10진법에서의 님 합의 정의는 다음과 같다. | ||
#더하는 두 수(님 값이 아니라 원 수)가 같으면 0. | #더하는 두 수(님 값이 아니라 원 수)가 같으면 0. | ||
#더하는 두 수가 다르면 평범하게 더해준다. | #더하는 두 수가 다르면 평범하게 더해준다. | ||
128번째 줄: | 127번째 줄: | ||
=== 숫자 지우기 === | === 숫자 지우기 === | ||
=== 기타 === | === 기타 === | ||
== | == 관련 항목 == | ||
{{각주}} | {{각주}} | ||
[[분류:수학]] | [[분류:수학]] | ||