我试着在时间旅行的情况下计算一个轨迹。
在下面的图片中,有一个角色以一条直线向右行进(就像台球)。如果这个角色遇到了另一个角色,他总是会向右转(通常是这样)。还有一个时间门户在底部,它将你传送到出口门户,在过去的2步。
在这个场景中,字符有两个可能的轨迹:

其他一些细节:
我最初的想法是:
时空块表示为三维格图,并根据其方向标记为"X“、"Y”和"Z“类型的边缘。时间用"Z“边表示。使用这种表示方式,时间门户只是不相邻节点之间的附加边缘.该算法将生成一个边列表(顺序可能无关紧要)。
算法规则:
是否有更好的算法自动找到第二个解?如果您的算法不将门户“退出”视为特殊的东西,而是将其视为穿越时空的正常路径,则额外积分。
发布于 2021-05-05 08:23:16
我坚持这个具体的例子(没有用户输入,除了字符之间的冲突,固定的方向移动,一个门户,正好是两个转到过去),使算法更具体一点,更易于解析。
为了进一步概括这一点,这个想法是一样的,但是用语言来实现和解释就更复杂了。
您需要多长时间才能运行此模拟,即最大T值是多少?这是非常主观的。你的例子现在很简单,很容易看到,过去几个回合,游戏重复在无穷大。但是,如果你把角色放在一个有能力从墙壁上弹跳的有界的房间里,这个限制可能就不再存在了。
如果您假设一个无界平面,并且您的“地图”符合一个整洁的矩形形状,那么您可以决定结束模拟,一旦所有字符都在“地图”之外进入空白的宇宙,因为这意味着他们将永远继续不相互作用。
除此之外,还需要运行很长一段时间的模拟,直到遇到以前所见过的状态(所有字符的位置和方向),此时您知道您已经碰到了循环循环(因为重复的状态会产生相同的事件重复。
发布于 2021-05-04 13:42:20
一种可行的算法是:
由于通过门户传递的字符可以与板上的其他字符交互,即使删除了上面提到的所有分支,您可能在任何时间点(即多重宇宙)出现多个可信的游戏状态。
https://softwareengineering.stackexchange.com/questions/426049
复制相似问题