# Tic-Tac-Toe (井字棋) | A | B | A | | ----- | ----- | ----- | | B | C | B | | A | B | A | ## Question 請問先手的勝率/後手的勝率? ## Answer 面談當下沒有得出明確的解答 其實不應往第一手下在哪個位置(A/B/C)去思考 應該先從計算棋局的所有可能性去著手 ### 計算出分母後,再從中找出先手勝利的棋局個數 便可求出先手的勝率 ### 1. 棋局的所有可能性 設先手為叉叉(X),後手為圈圈(O) 當任一方勝出後,若玩家仍然會將棋盤填滿(5個X和4個O),勝出的機率不會因此改變 這C9取5種可能性發生的機率都會一樣: ``` $1 = C(9, 5) = 9! / (4! * 5!) = 126 ``` ### 2. 先手(X)必勝? 如果直接計算先手(X)勝出的棋局排列,會把先手(X)和後手(O)皆勝出的棋局算入,如下釋例 該類棋局的真實勝負取決於**誰先完成一條線**,需要另外計算 因此需先分別算出:**合局數**、**後手(O)必勝數**、**雙方皆勝數**,才能推出先手必勝(X)的數量 | O | . | X | | ----- | ----- | ----- | | O | . | X | | O | . | X | ### 3. 後手(O)必勝 後手只有4顆棋子 水平/垂直的勝出棋局,剩餘的格子填上先手(X)後,會導致雙方皆勝 斜角的勝出棋局,剩餘的格子填上先手(X)後,仍然只有後手必勝 因此這裡只有斜角勝出棋局為後手(O)必勝: | O | . | . | | ----- | ----- | ----- | | . | O | . | | . | . | O | ``` $3 = 2 (斜角的兩種可能:正斜角/反斜角) * 6 (後手的第四顆棋子可以填於剩餘的6個位置) = 12 ``` ### 4. 合局 由於後手(O)棋數較少,易於對排放位置進行列舉 為了方便列舉,依中心位置區分為兩種狀況: 1. C位有後手(O) 先手有四條可勝出的路線(水平*2, 垂直*2) 剩餘的三顆棋子有兩種方式可以堵住先手: a. 三顆在A位/三顆在B位->後手必勝/雙方皆勝 | O | | | | ----- | ----- | -----| | | O | | | O | | O | b. 兩顆放在A位,一顆放在B位->合局 (0度、90度、180度、270度) | O | | | | ----- | ----- | -----| | | O | O | | O | | | c. 兩顆放在B位,一顆放在A位->合局 (0度、90度、180度、270度) | | O | | | ----- | ----- | -----| | O | O | | | | | O | 2. C位無後手(O) a. 四顆在A位/四顆在B位->先手直線勝利/先手斜線勝利 | X | O | | | ----- | ----- | -----| | O | X | O | | | O | X | b. 三顆在A位,一顆在B位->先手勝利/雙方皆勝 | O | | O | | ----- | ----- | -----| | X | X | X | | O | O | | c. 三顆在B位,一顆在A位 (0度、90度、180度、270度) | | O | O | | ----- | ----- | -----| | O | | | | | O | | d. 兩顆在A位,兩顆在B位 (0度、90度、180度、270度) | | O | O | | ----- | ----- | -----| | O | | | | | | O | ``` $4 = 4 (4種合局狀況) * 4(四種方位) = 16 ``` ``` 合局的機率 = 16/126 = 8/63 ``` ### 5. 雙方皆勝 斜角不可能雙方皆勝 因此只有直線勝出局,會造成雙方皆勝 1. 水平 | O | O | O | | ----- | ----- | -----| | . | . | . | | . | . | . | ``` 3 (3條水平線) * 6 (第四顆棋有六種可能擺放的位置) = 18 ``` 2. 垂直 | O | . | . | | ----- | ----- | -----| | O | . | . | | O | . | . | ``` 3 (3條垂直線) * 6 (第四顆棋有六種可能擺放的位置) = 18 ``` ``` $5 = 18 + 18 = 36 (雙方皆勝的棋局數量) ``` 雙方皆勝的棋局中,**勝利取決於誰先完成一條線** 以步數來計算不同scenario下的可能性 1. 先手(X) 第3步先勝利->此線必由先手的第(1,2,3)步組成 後手有可能在第3或第4(最後一步)步連成一條線: 後手(O) 第3步連成一線->此線必由後手的第(1,2,3)步組成 | X | X | X | | ----- | ----- | ----- | | O | O | O | | . | . | . | 後手(O) 第4步連成一線->此線可能由後手的第(1,2,4) or (1,3,4) or (2,3,4)步組成 | X | X | X | | ----- | ----- | ----- | | O | O | O | | . | O | . | ``` 1(先手連線的可能性) * (1+3)(後手連線的可能性) = 4 ``` 2. 先手(X) 第4步先勝利->此線可能由先手的第(1,2,4) or (1,3,4) or (2,3,4)步組成 代表後手(O) 第4步才會連成一條直線->此線可能由後手的第(1,2,4) or (1,3,4) or (2,3,4)步組成 ``` 3(先手連線的可能性) * 3(後手連線的可能性) = 9 ``` 3. 後手(O) 第3步先勝利->此線必由後手的第(1,2,3)步組成 先手有可能在第4或第5(最後一步)步連成一條線: 先手(X) 第4步連成一線->此線可能由先手的第(1,2,4) or (1,3,4) or (2,3,4)步組成 | O | O | O | | ----- | ----- | ----- | | X | X | X | | X | . | . | 先手(X) 第5步連成一線->此線可能由先手的第(1,2,5) or (1,3,5)... (3,4,5)步組成 | O | O | O | | ----- | ----- | ----- | | X | X | X | | X | X | . | ``` (3+6)(先手連線的可能性) * 1(後手連線的可能性) = 9 ``` 4. 後手(O) 第4步先勝利->此線可能由後手的第(1,2,4) or (1,3,4) or (2,3,4)步組成 代表先手(X) 第5步才會連成一條直線->此線可能由先手的第(1,2,5) or (1,3,5)... (3,4,5)步組成 ``` 6(先手連線的可能性) * 3(後手連線的可能性) = 18 ``` ``` 3+9+9+18 = 40(所有雙方皆勝的可能性) 3+9 = 13(雙方皆勝下,先手勝利) 9+18 = 27(雙方皆勝下,後手勝利) Q:為何40比36大? A:因為這裡多考慮了生成直線的下棋順序 ``` ``` $5a = 36(真實棋盤數量) * 13/40 = 雙方皆勝下,先手勝利的盤數 $5b = 36(真實棋盤數量) * 27/40 = 雙方皆勝下,後手勝利的盤數 ``` ### 6. 先手(X)必勝的棋局數 ``` $6 = $1 - $3 - $4 - $5 = 126 - 12 - 16 - 36 = 62 ``` ### 7. 勝率 先手勝率 = (先手必勝數+雙方皆勝下先手勝利)/所有棋局 ``` $7a = ($6 + $5a)/($1) = (62 + 36*(13/40))/(126) = 737/1260 = 58.49% ``` 後手勝率 = (後手必勝數+雙方皆勝下後手勝利)/所有棋局 ``` $7b = ($6 + $5b)/($1) = (12 + 36*(27/40))/(126) = 363/1260 = 28.81% ``` ## Reference [American Mathematical Monthly, June-July 1958, p. 447](https://http://people.missouristate.edu/lesreid/sol10_04.html)