我一直在努力制作游戏求解器大约一个月,尝试各种策略,但大多数都是围绕蛮力。这适用于游戏的简单情况,但是对于更复杂的情况(更高的游戏树深度)则失败。这是游戏的抽象表述:
1)有一系列可能的行动,A。
2)将动作应用于状态会产生可能状态的概率分布。 apply(A,s)= [[s1,p1],[s2,p2],[s3,p3]]
3)当达到目标状态时游戏结束。
4)每个州都有与之相关的分数。
3)有两种类型的目标状态,“成功”状态,其中状态的得分是其前任状态的得分,“失败”指出得分为0的位置。
5)目标是制定一种策略,在游戏结束时最大化平均分数。
6)没有周期。所有路径都有有限的长度。
我以最抽象的意义制定了游戏,因为它是我认为人们最熟悉的游戏。我目前的策略是一个简单的深度优先搜索,它缓存独特的状态以防止工作重复。这种情况一直持续到大约2亿个独特状态,这就是我内存不足的时候。在开始拆分较低级别的细节以找到优化之前,我想知道对于游戏的一般情况是否有任何聪明的算法。如果有人对如何生成状态转换的细节感兴趣,我可以提供它们。以下是我将问题简化为已知问题的一些方法。
1)随机马尔可夫决策过程,其中状态奖励函数对于任何非目标状态为0,否则为目标状态的得分。我知道MDP的通用算法不是很有效,但是某些类别的MDP具有有效的解决方案。这个问题是否适合某些特定的类?
2)具有负边权重的有向无环图中的随机最长路径问题。