首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >偶然性博弈问题的算法

偶然性博弈问题的算法
EN

Stack Overflow用户
提问于 2016-11-23 15:08:46
回答 1查看 101关注 0票数 0

我开始根据以下规则开发一个偶然性游戏的算法:

  • 在游戏开始时,玩家从开始的S(开始)开始。
  • 他从掷骰子开始,并增加上面显示的空格数。
  • 骰子的可能值从1到6。
  • 然后,玩家执行当前情况下指示的动作(前进,返回,保留骰子(如果当前的情况是R: Relance))。
  • 每个动作花费1圈。
  • 当玩家到达终点E(End)时,游戏就赢了。运动员必须完全落在终点线上,不能超过终点线。
  • 开始和结束案例S和E不一定在托盘的开始和结尾。
  • 从板子里出来的一个转身输掉了比赛。

下面是一个示例:

(S,S,2,2,2,4,2,2,2,000,000,000,000,000,000,000,000,000,000),2,2,000,000,000,000,000,000,000,000,000,000,000,000,666,442,4O -4 -2,2-2,2-4,E,,2,2,2,2,2,2,4,2,4,4,4,4,4,0-2,4,2,4,4,2,2,2,2,2,2,2,0-4,2,2,4,0,0,1,2,4,4,000,4x2,2,4,0,0,639)的2,2,2,0-2,2,4

玩家从S开始。最快的获胜方式是:

  • 掷骰子,做一个3,到达R平方(转1)。
  • 重新掷骰子,做一个6,到第二轮(转2).
  • 玩家有义务向前推进2箱,并到达情况E(转3)。

预期的结果是3,因为至少需要3次发射才能完成游戏。

我的解决方案是基于一种算法,该算法从最终案例开始,并检查是什么情况驱动到最后一个案例。然后,我会检查哪些病例可以到达我已经找到的病例。这样的话,我就不必检查那些不会导致最终结果的案件。

问题是,我更倾向于重视代码的质量及其有效性,因为我认为我找到的算法是不够的。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-23 15:34:52

你可以把你的棋盘看作有向图。每个案例都是一个节点,编号的案例有边缘连接到他们指向的案例,而S和R案例有六条边连接到接下来的六种情况。边缘的重量是一样的。

在这种情况下,您的问题变成了沿着最短路径找到起始节点和结束节点之间的距离,这是一个已经在许多不同的变体中得到了广泛的研究问题。

作为参考,您可以查看一个标准的广度优先搜索,您的算法应该与此算法相当(您可以在找到目的地后立即返回,但是完整的算法会计算从一个节点到所有其他节点的距离)。

我不认为决定是从最终情况还是从一开始就突出的决定是重要的,在这两种情况下,你将有一些董事会结构将是更慢或更快的分析,但平均复杂性应该是相同的。(正如您所说,从结束开始,您将避免检查不会导致它的情况,但从一开始,您将避免检查无法从它到达的情况)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40767950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档