更好地为解谜游戏划分困难程度

algebra-1238600__340.jpg

简介

这片文章是Petr Jarusek 和 Radek Pelanek 几篇有关谜题困难程度测量的论文的主要内容。

在这篇文章中,我们主要研究解谜游戏的困难程度划分。是什么让问题变得难以解决?为什么看似相似的两个问题,其困难程度却可能天差地别?我们应该使用怎样的测量方式来测量谜题的难度呢?

使用推箱子游戏收集数据

推箱子,英文名为“sokoban”,是一个规则简单却可以同时拥有很大难度的游戏。为了收集人们玩这款游戏时候的数据,我们使用Javasripts写了这样一个游戏,并将它放在网页上供人们游玩。

捕获.PNG

上图为两个推箱子关卡,分别作为关卡一和关卡二。

在所有35个关卡中,都只有4个箱子,并且地图大小也很相似。人们在这儿共作了21511次尝试,解决了2071次问题,能解决第一关的有294人,解决至少20关的有35人,解决全部35关的有6人。所有人一共花费了785个小时。我们不认识参与者,谜题顺序是随机的,解出谜题也不会得到报酬,所以我们收集到的数据都是有一定意义的。

我们在这些数据中发现,对这款游戏来说:

  1. 尽管73.8%的走法都会让游戏走入死胡同,不可能再胜利,但人类似乎很快就能发现他们的错误走法,并且重新开始游戏。
  2. 人们通常把时间花在离目标还有很远的时候,当离目标越来越近的时候,他的解决速度也会加快。

levle1.PNG

X轴代表的是离目标的距离,而Y轴代表的解决问题所花费时间,蓝色的虚线代表第一张图的关卡一,粉红色的虚线代表第二张图的关卡二,红色实线代表所有关卡的中位数。

测量方式一:用电脑模型模仿人类解决问题

我们的目标只是模仿人类的行为,而不是模仿人类在解决问题中认知的发展。

基本原则

我们首先要研究人类解决问题的方式。我们的模型从初始状态开始,行为是以下两种方式的组合:

  • 随机:随机走出一步
  • 最优:走出能使自己离目标更近的一步

人类并不总是随机行动,也不总是最优行动,因此我们想知道该给以上两种行为的权重分别是多少。

模型公式

我们假定当前状态为(S),而下一个可能的状态为(S′),d(S)为目前状态到终点的距离,而d(S′)为状态(S′)到终点的距离。我们给每一个行为打分,定义向下一个可能的状态行动的分数为score(S′),使用下面的公式计算:

ex.JPG

当不可能到达终点时,分数为0。否则当下一步会使自己离目标更远时,分数为当前状态离目标的距离,而当下一步会使自己离目标更近时,分数为当前状态离目标距离再加上一个参数B。假设选择状态(S′)的概率为P(S′),并使用如下公式计算:

ex2.JPG

即状态(S′)分数越高,选择其的概率也越大。

有了这样的公式和参数B,我们可以方便地调整这个模型。B等于0时,模型所代表的人类玩家就在完全随机行走。当B越大,相当于这个模型所代表的人类玩家技术更好。

分析

我们用这个方法测试推箱子和另外两个解谜游戏:Rush Hour和Replacement puzzle。虽然这三个游戏的规则完全不一样,但我们惊奇地发现,当B大约为25时,模型和人类符合地最好。这可是三个完全不一样的游戏啊!这究竟是偶然还是事实呢?

BBB.JPG

上图左边为人类的行为,而右边为电脑模型解决问题的行为。不同的点代表不同的状态。可以看到模型和人类行为很接近。

测量方式二:问题分解

人类解决问题的另一个重要概念是问题分解。人类不像计算机那样能够系统处理问题(而且他们也不愿意),而更愿意把复杂的问题划分为简单的问题。如果一个问题能够被分解的话,那么困难程度对人类来说也将下降。

ex.JPG

如上图,左边的关卡能被容易地分解为两个子问题,解决时间中位数的3分钟02秒,而右边的难以被分解,只能作为整体解决,解决时间中位数是53分49秒。

我们使用一种算法来尝试分别模拟人类将推箱子作为整体考虑和分解成子问题考虑时的情形。其结果将在后面给出。

我们也尝试将其分解成三个或更多子问题,但在我们的游戏中,其结果和分解成两个子问题差不多。因此我们不再详细列出。

评估比较

除了上面两种难度测量方式外,我们还引入另外两种测量方式。一是利用计算机算出最短路,即解决谜题需要的最少的步数。二是关卡中的总状态数,即关卡中所有可能出现的不同情况。我们首先为不同的难度测量方法绘制了散点图。

勒.PNG

上图中,左上X轴为各个关卡离终点需要最少的步数,右上X轴为各个关卡的状态数,左下X轴为各个关卡可划分为不同简单问题的数量,右下为人类模型行走的步数(B取值25),而Y轴都是人类解决问题的时间中位数。

图中的r为皮尔逊相关系数( Pearson correlation coefficient ),其用来反映两个变量X和Y的线性相关程度,r值介于-1到1之间,绝对值越大表明相关性越强。可以看到,如上图右上,我们尝试用关卡总状态数来测量难度,但它的r的绝对值只有0.11,统计学意义不大。

为了比较结果,我们除了使用了皮尔逊相关系数,还使用了基于排序的斯皮尔曼相关系数( Spearman correlation coefficient )——在困难程度测量的实际应用中,排序往往比绝对的值要好。

在最短路中,除了标准的最短路外,我们还用了一种更符合人类思维方式,但却违反最短路算法的模型。在下面的结果中,绝对值越大,与人类行为符合得越好。其中黑体数据具有统计学意义。

BBB.JPG

可以看到,在使用计算机算法将其分解成成两个子问题后,斯皮尔曼系数达到了0.82。这是很好的结果,我们可以近似地认为,计算机使用这种方法解决某个推箱子关卡时,所使用的时间和空间越多,那这个关卡对人类而言也同样的越难。

在我们另一项对数独难度进行划分的研究中,我们使用专门针对数独进行调整的方法,其相关系数能达到0.95。这证明我们使用计算机划分谜题困难程度的方法是非常有效的。

总结

在这篇文章中我们讨论了给不同关卡划分困难程度的方法。这样我们就能使用计算机预测谜题的难度,并解释为什么它们的难度如此不同。

这些问题和方法在教育学上非常有用——简单的问题让人感到无聊,过分复杂的问题却会令人沮丧,而为不同的学习者找到难度合适他们的问题显得至关重要(这也是 Petr Jarusek 和 Radek Pelanek 这两位大佬研究的问题)。

参考

Petr Jarusek & Radek Pelanek ” Difficulty Rating of Sokoban Puzzle ”  Difficulty Rating of Sokoban Puzzle

Petr Jarusek & Radek Pelanek” What Determines Difficulty of Transport Puzzles? ” What Determines Difficulty of Transport Puzzles

Radek Pelanek “Difficulty Rating of Sudoku Puzzles:An Overview and EvaluationDifficulty Rating of Sudoku Puzzles

 

Leave a Reply