下载 App
基于穷举法的最优首次猜测求解
09/1722 浏览攻略
叠甲:抛砖引玉,受限于本人代码水平与电脑配置,仅实际计算出5、6、7长的最优解。可以依照整体思路自行尝试更长等式。
计算基于所有可能出现的等式都有均等可能被选中作为答案的前提假设,即先验熵为log2(n),n为总可能答案数。进行一次猜测后,基于猜测给出的黑黄绿排布得到剩余可能答案数为c,对一个给定的猜测,对所有可能得正确答案求c,则后验熵的期望为sum(c/n*log2(c))。因此这个猜测提供的期望信息增益为log2(n)-sum(c/n*log2(c))。对所有可能的猜测进行计算后根据提供的信息量排序即可得数学最优解。
首先要穷举出所有可能的答案。假设所有可被接受为猜测的等式都有可能成为答案,则可以得到几条规则:
1、等号的一侧只能有0或1个运算符,可以两侧都有、两侧都没有或只有一侧有,不能在等号的一侧同时存在两个运算符,即使它们是相同的两个。
2、减法结果不能为负,除法结果不能不为整数,即使最终等式相等。例如,1-2=2-3、1/2=2/4是不被接受的。
3、除非这个数就是0,否则0不能在数的首位。
对于长度为5的等式,共有458种可能,需要的信息为8.8392bits,最优的5个首次猜测为3=1+2;3=2+1;3-2=1;2=3-1;3-1=2,分别期望提供4.9162、4.9146、4.8978、4.8975、4.8942bits信息。
对于长度为6的等式,共有952种可能,需要的信息为9.8948bits,最优的5个首次猜测为16/2=8;2=16/8;16/8=2;12/3=4;12/4=3,分别期望提供6.1061、6.0948、6.0878、6.0775、6.0727bits信息。
对于长度为7的等式,共有19181种可能,需要的信息为14.2274bits,最优的5个首次猜测为2*3=6-0;3*2=6-0;2*15=30;4*1=6-2;2*3=7-1,分别期望提供7.6036、7.6024、7.5863、7.5836、7.5806bits信息。
对于更长的等式,8长有102946种可能,9长有1120752种可能,10长有1153926种可能(存疑,受限于计算时间我被迫分情况穷举再拼接,可能有遗漏)。鉴于求最优解需要的调用次数约为O(n²),(我尽力优化了判断函数然后并行化了但依旧不够),实在无力穷举最优解。各位可以根据思路自行尝试。

