在 3X3 的方格里,两人轮流不重复地填数字 1-9 。填的顺序和位置随意。
填满后,先手算每一个横排三个数相乘然后再把三个数相加为最终得分,后手算每一个数列三个数相乘然后再把三个数相加为最终得分。谁的分数越高谁赢。
请问谁获胜?最优方案是什么?
一个简单的 demo: http://tianshuo.github.io/Matrix-Game
(之后可能做成网络对战+人机对战版)
1
sumhat 2016-01-07 20:13:35 +08:00
感觉先手有优势,但是不是必胜就不知道了。
|
2
txx 2016-01-07 20:29:28 +08:00 via iPhone
9 的阶乘次 枚举 看一下先手胜率 就知道了
|
3
nichijou 2016-01-07 20:58:39 +08:00
直觉看起来先手劣势啊,不要看随机落子的概率,看熟悉规则厚之后的下棋策略,好复杂,好问题,坐等高人
|
5
Bryan0Z 2016-01-07 21:23:26 +08:00 via Android
我觉得后手有优势,每个棋子占一横行和一个纵行。把棋子分为 123 456 789 三组,分别对应小中大,如果先手填的是大数,则后手往同列填大数。如果先手填的是小数,则后手往同列填小数。总之尽量保证 123 456 789 在同一列,并且在行上尽量分散
|
6
Bryan0Z 2016-01-07 23:00:07 +08:00 via Android
写了两个程序试了一下…确实先手占优势
|
8
Bryan0Z 2016-01-07 23:44:43 +08:00 via Android
@nichijou 我现在的算法是:
每次用随机数决定防守还是进攻及位置 当可能出现对手乘积超过中位数 4*5*6 的 1.2 倍时,必然防守 当自己乘积可能超过这个数时,必然进攻 填满 5 个数的时候,双方每次遍历所有可能性,找出最优解 |
9
Bryan0Z 2016-01-07 23:46:36 +08:00 via Android
|
10
tianshuo OP @Bryan0Z 随机不合理吧,这个得靠 minmax(alpha beta 剪枝)来算吧……这不应该是一个概率问题呢
|
11
tianshuo OP 这个知乎大神们给出答案了,先手必胜: https://www.zhihu.com/question/39250173
|