桌游《达芬奇密码》中秘密数字概率分布的高效计算方法问询
高效计算《达芬奇密码》秘密数字概率分布的算法探究
我需要高效计算桌游《达芬奇密码》中,基于对手手牌及自身手牌观测结果的秘密数字概率分布。
问题抽象
给定长度为N的数组A,以及每个索引i对应的有限数字集合Sᵢ,填充数组A需满足以下约束:
- 每个索引i填入Sᵢ中的一个数字;
- 数组A中所有数字互不重复;
- 数组A可拆分为3个不相交子数组A₁、A₂、A₃(满足
concat(A₁,A₂,A₃)=A),每个子数组内的数字需严格递增。
目标是求出满足所有约束时,每个索引位置上各数字的概率分布。
示例说明
假设存在长度为5的数组,各索引对应的Sᵢ集合如下(列对应A₁、A₂、A₃):
| 6 6 | 6 6 | 6 | | 5 | 5 | | | 4 4 | | 4 | | | 3 3 | | | 2 | 2 2 | | | 1 1 | | | | ___ | __ | _ | | A1 | A2 | A3|
所有符合约束的数组为:
14236、14256、14356、15234、15236、15264、15364、16234、16254、16354、24356、25364、26354、45236
对应的各索引位置数字[1-6]的概率分布为:
6 0 4/14 0 3/14 6/14 5 0 6/14 0 6/14 0 4 1/14 4/14 0 0 8/14 3 0 0 6/14 5/14 0 2 3/14 0 8/14 0 0 1 10/14 0 0 0 0 ___________ __________ ______ A1 A2 A3
需求说明
暴力枚举(如数独式约束传播枚举所有可能)可解决此问题,但我认为存在更高效的算法:概率分布包含的信息少于所有可能解,因此无需生成所有解即可得到结果。
我希望了解是否可借助矩阵运算、不动点迭代/密度演化来近似最终概率分布,或其他无需枚举所有可能的高效准确/近似方法(要求性能优于约束传播,近似效果优于普通蒙特卡洛)。
内容的提问来源于stack exchange,提问作者Jingjin Wang
相关产品推荐
相关产品推荐

