兴起于英国的益智类小游戏 猜数字


兴起于英国的益智类小游戏 猜数字

文章插图
猜数字(兴起于英国的益智类小游戏)【兴起于英国的益智类小游戏 猜数字】猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩 。
基本介绍中文名:猜数字
外文名:Bulls and Cows
游戏类型:益智
起源时间:20世纪中期
起源国家:英国
平台:电脑、纸上、网上
游戏规则先解释标準规则,再介绍几种变体 。通常由两个人玩,一方出数字,一方猜 。出数字的人要想好一个没有重複数字的4个数,不能让猜的人知道 。猜的人就可以开始猜 。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数 。如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B 。接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止 。猜数字游戏通常设有猜测次数的上限 。根据计算机测算,如果採用严谨的猜测策略,任何数字最多7次就可猜出(即达到 4A0B) 。值得注意的是,在有些地方把次数上限定义为最多几次猜测以后就可以肯定数字是几,但这时或还需要再猜一次才能得到 4A0B 的结果 。标準的猜数字游戏由10个数码(0-9)和4个数位组成 。可以通过变化数码或数位来丰富游戏 。例如,可以使用9个数码玩4个数位的游戏 。猜数字游戏的一种变体允许重複的数码 。这种规则的游戏被称为 Mastermind 。其规则大致为:除了上面的规则外,如果有出现重複的数字,则重複的数字每个也只能算一次,且以最优的结果为準 。例如,如正确答案为5543,猜的人猜5255,则在这里不能认为猜测的第一个5对正确答案第二个,根据最优结果为準的原理和每个数字只能有一次的规则,两个比较后应该为1A1B,第一个5位子正确,记为1A;猜测数字中的第三个5或第四个5和答案的第二个5匹配,只能记为1B 。当然,如果有猜5267中的第一个5不能与答案中的第二个5匹配,因此只能记作1A0B 。解法求解猜数字游戏的策略通常有两个目标:一是保证在猜测次数限制下赢得游戏,二是使用儘量少的猜测次数 。第一个目标追求的是最坏情况下的猜测次数最少,第二个目标追求的是平均情况下猜测次数最少 。对于某些数码和数位的规则组合,这两个目标不能同时实现 。例如,对于4个数位、6个数码的 Mastermind 游戏,平均猜测次数最少的策略需要平均 4.340 次,但最坏需要6次猜测;如果限制猜测次数最多为5次,则平均猜测次数最少的策略需要平均 4.341 次 。目前解法最少需要7次猜测,平均次数最少的解法由田中哲朗与1996年提出,平均次数为5.213次 。系统的猜测策略可分为三类:简单策略、启发式策略和最优策略 。下面以标準规则(10个数码,4个数位,不含重複数字)为例,介绍这几类策略 。这些策略也适用于其它规则变体 。这种策略非常直接——每次都猜可能答案中的第一个 。例如,首先猜测1234,如果得到的反馈是 2A0B,那幺可能的答案包括1256,1257,5236,等等 。根据简单策略,下一次就猜1256,因为1256是所有可能答案中最小的数字 。简单策略的优点是速度非常快,缺点是所需猜测次数很多 。对于标準规则,简单策略最多需要9次猜测,而平均需要5.560次 。这类策略是猜数字游戏最常用的解法 。其算法步骤如下:a. 首先猜 1234,得到第一个反馈(xAyB) 。b. 从所有数字中,筛选出满足已知反馈的所有可能数字,称之为“可能集” 。c. 对于所有数字(而不仅限于筛选出来的可能集),逐一评估每个数字的“好坏”,并给其打分 。选取得分最高的那个数字猜 。如果有多个数字的评分一样高,则优先选取可能集中的数字 。d. 重複步骤 b-c,直到猜出 4A0B 为止 。显然,启发式策略的重点在于如何评估一个数字的“好坏”?人们提出了多种直观的评价指标 。简介如下:最坏情况指标(Knuth, 1977):给定一个数字,考虑这个数字所带来的不同反馈分区内元素的个数,并选择最大反馈分区内元素个数最少的数字作为下一个猜测 。对于标準规则,这一评价指标最多需要7次猜测,平均需要5.385次 。平均情况指标(Irving, 1978):这是一个相当直观的指标,在各种规则变体下均有较好的效果 。给定一个数字,如果猜这个数字,那幺接下来我的“可能集”平均会缩小到多大?选取使可能集的预期大小最小的那个猜测 。对于标準规则,这一评价指标最多需要7次猜测,平均需要 5.268 次 。预期步数指标(Neuwirth, 1982):又称“熵”指标 。给定一个数字,这个指标计算如果猜测这个数字,那幺接下来估计还需要多少步才能猜到答案 。当然,这个步数只是一个粗略的估计,它假设每次猜测可以将可能集缩小一半(或缩小某一个常数倍k),于是估计步数就是可能集大小的对数函式,即估计步数=log(可能集中元素的个数) 。对于标準规则,这一评价指标最多需要7次猜测,平均需要 5.265 次 。反馈个数指标(Kooi, 2005):给定一个数字,这个指标计算该数字所可能带来的不同反馈的个数 。反馈越多的越好 。对于标準规则,这一评价指标最多需要8次猜测,平均需要 5.308 次 。此外,值得注意的是,启发式策略的效果也经常取决于所有数字的排列 。不过影响一般不大 。猜数字游戏的最优策略需要由计算机用穷举法获得 。其思路是,由于每次猜测的选择是有限的(因为总共的数字组合个数有限),并且我们知道一定可以在有限次数内猜出所有答案,那幺计算机可以穷举所有猜法,从中找出最佳的策略 。此外,也有一些文献採用遗传算法等求解猜数字问题,在此不详述 。以下列出上述几种解法套用于不用规则时的猜测效果,供参考 。这些结果由电脑程式算出 。标準规则对于标準规则(4 数位、10 数码、不含重複数字),下表列出了各种策略的最多猜测次数、平均猜测次数、以及每个猜测次数所对应的答案个数 。例如,採用“平均情况指标”最多需要7次猜测,平均需要 5.268 次猜测,有 1885 个数字需要用6次猜出 。算法平均次数1次2次3次4次5次6次7次8次9次简单策略5.560113108596166817687521295最坏情况指标5.385134451521242151202--平均情况指标5.26814595742430188587--预期步数指标5.265145356025151796111--反馈个数指标5.30811180556227719291833-Mastermind规则 下表列出各种算法套用于Mastermind规则(4数位、6数码、可重複)时的效果 。算法平均次数1次2次3次4次5次6次7次8次9次简单策略5.7651425108305602196496最坏情况指标4.4761662533694----平均情况指标4.395110546455833---预期步数指标4.424147061159020---反馈个数指标4.373112726355697---