超级马里奥银河问题


140

假设马里奥(Mario)在行星表面行走。如果他从已知的位置开始沿固定的方向行走了预定的距离,我们将如何快速确定他将在哪里停下来?

在此处输入图片说明

更正式地说,假设我们在3空间中得到了凸多面体P的表面上的起点s,方向矢量v(在包含p的某些小平面中),并且距离。我们多快可以确定P Mario的哪一面停在内部?(作为技术要点,假设如果Mario进入P的顶点,他会立即爆炸;所幸,这种情况几乎不会发生。)PsPvpPP

或者,如果您愿意:假设我们预先获得了多面体,源点s和方向向量v。预处理之后,我们能够多快地回答了一定距离的问题Psv

简单地跟踪Mario的足迹很容易,尤其是当仅具有三角形小平面时。每当Mario通过其边缘之一进入构面时,我们可以在O 1 时间中确定他必须穿过其他两个边缘中的哪一个。尽管该算法的运行时间仅在边缘交叉数量上是线性的,但它不受输入大小的限制,因为距离可以任意大于P的直径。我们可以做得更好吗?PO(1)P

(在实践中,路径长度实际上不是无限的;还有一个全球性的上界表示输入所需要的比特数的条件,但坚持整数投入提出了一些相当恶劣的数值问题-我们如何计算。正是在那里停止吗?—因此,我们坚持使用实际输入和精确的实际算术。)

关于这个问题的复杂性,有什么重要的知识吗?

更新:根据julkiewicz的评论,很明显,纯RAM的运行时间仅以(多位点的复杂性)为界是不可能的。考虑双面单元方的特殊情况下[ 0 1 ] 2,与马里奥开始0 1 / 2 和在行走方向1 0 。马里奥将停止在前面或取决于整数的奇偶平方的背面。除非我们很高兴,否则我们无法在真实RAM上恒定时间计算下限函数n[0,1]2(0,1/2)(1,0)等同PSPACE和P。但是,我们可以计算Ø 日志通过指数检索,这是在天真的算法的指数调整时间。 在时间多项式ñ日志总能实现?O(log)nlog


5
我想到了一个更简单的问题,那就是:我们有一个普通的多边形和一束从给定点传播的光束。当到达边缘时,它会被镜像。我们想知道在给定距离之后光束将在何处结束其行进。可以(几乎)将其简化为一个多面体,该多面体是高度非常小的棱镜,其顶部和底部的侧面均为给定的多边形形状。也许首先解决这个问题可能会有所帮助。
julkiewicz 2011年

3
“ n和log 1中的[T] ime多项式”对我来说没有意义。如果依赖于l,则它还必须依赖于P的坐标,并且如果在输入中添加所有数字的对数,则当输入坐标限制为整数时,这恰好是表示输入所需的位数。我认为您正在查看输入为位字符串时实际RAM上的时间复杂度。
伊藤刚(Tsuyoshi Ito)

4
即使确定Mario 是否触及一个顶点(与无关)也似乎很困难。我认为这里我们遇到了台球动力学领域的许多未知数。
约瑟夫·奥洛克

2
并没有真正的关联,但是有关超级马里奥赛车
Lamine

10
一位完全不了解复杂性理论的人说:“也许这就是为什么它获得如此高的评价。”
Jeffε

Answers:


7

这个问题非常非常困难。我们可以简化它,使其变得更容易,如下所示。

  1. Pπ

  2. 我们可以假设多面体不是真正的三维,而是多边形的“双”。这看起来有点像枕套。我们可以进一步简化,并假设多边形的边相等且平行。例如正方形,例如Astroids游戏。

O(log())

如果我们不假设合理性,但假设多边形是多边形的两倍,那么我们正在讨论“在非理性台球中切割序列”的理论。似乎这里基本上什么都不知道。例如,请参见Corinna Ulcigrai 演讲的最后一句话。

如果我们不做任何假设,那我在文献中就什么也想不到。

O(log())


0

我认为您可以做得比线性更好。我是理论计算机科学的新手,如果这很垃圾,请原谅我。

一些一般性的想法(价值不一):

  • 如果我们给每个构面一个符号,则马里奥绕它们的轨道可以描述为一个字符串,其中字符串中的最后一个符号就是答案。
  • 我们可以不失一般性地假设马里奥(Mario)从边缘开始(只需向后走并将l延伸到边缘)
  • 起始位置和角度的2D空间可以由下一个边缘进行划分。因此,从边缘a开始,从底部开始x个单位,角度为a,我们经过一个小平面后在边缘V中结束。
  • 那时我们处于另一个方向的另一个边缘,因此我们可以递归调用该函数,以将空间细分为2个符号字符串的分区,依此类推。
  • 至此,如果我们说必须离散空间以便在TM上实现问题,那么我们就结束了。这意味着每个轨道都必须是周期性的,因为离散地球上只有有限的许多点。我们可以计算上述函数,直到我们对所有起点都有轨道并存储此信息为止。然后问题变成O(1)。
  • 也许那是个警察。一些谷歌搜索告诉我,有理凸多边形内的几乎所有台球轨道都是周期性的(即,周期性轨道是密集的)。因此,对于(例如)正方形行星,相同的方法可能有效。
  • 另一种方法是将系统视为字符串的生成器/识别器(再次通过为每个构面分配自己的符号)。如果该语言具有已知的复杂度类,那就是您的答案。如果将多面族的范围扩展到非凸面和任何维度,则可能会捕获非常广泛的一类语言。

这并不是真正的答案,但是我需要重新工作。:)


10
“在这一点上,如果我们说必须将空间离散化以便在TM上实现问题,那么我们就结束了。这意味着每个轨道都必须是周期性的,因为离散化星球上只有有限的许多点。” 您刚刚销毁了问题的有趣部分。我希望承担的输入是离散的; 我想解决实际的连续问题,尽管这需要一台理想的计算机,该计算机可以在恒定时间内执行精确的实数运算。特别是,马里奥(Mario)的路径无需接触顶点。
Jeffε

我觉得这太容易了。只要可以有限地描述起点和行星,就可以在有限的机器上执行连续版本。您可以仅象征性地表示路径(mathematica风格)。您只需要评估某些边界以找到最终到达的构面。如果您可以证明路径几乎可以肯定是周期性的(就像有理凸多边形上的台球一样),您仍然可以应用相同的技巧,但是结果不太实用。
彼得

12
generic,通用多面体上的通用测地线不是周期性的。(特别是通用多边形不是有理的。)
Jeffε2012年

我认为您(彼得)指的是“周期性台球轨道在有理多边形中密集”。但这并不意味着周期性的路径是通用在合理的多边形。实际上,只有许多周期性的路径(直到并行性),因此它们没有被泛化的机会。
Sam Nead

实际上,在“ Veech”多边形中,“ unique遍历”路径是完整的度量。因此,如果我们发送Mario是一个随机方向,他(a)永远不会碰到一个顶点(正如Jeffe在问题陈述中所说的那样),(b)他的路径永远不会关闭,并且(c)在大范围内,被访问的面孔看起来会是随机的(由于“弱混合”属性)。这并不意味着问题的答案是否定的-例如,pi的数字也看起来是随机的……
Sam Nead
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.