2
超级马里奥银河问题
假设马里奥(Mario)在行星表面行走。如果他从已知的位置开始沿固定的方向行走了预定的距离,我们将如何快速确定他将在哪里停下来? 更正式地说,假设我们在3空间中得到了凸多面体,P的表面上的起点s,方向矢量v(在包含p的某些小平面中),并且距离ℓ。我们多快可以确定P Mario的哪一面停在内部?(作为技术要点,假设如果Mario进入P的顶点,他会立即爆炸;所幸,这种情况几乎不会发生。)PPPsssPPPvvvpppℓℓ\ellPPPPPP 或者,如果您愿意:假设我们预先获得了多面体,源点s和方向向量v。预处理之后,我们能够多快地回答了一定距离的问题ℓ?PPPsssvvvℓℓ\ell 简单地跟踪Mario的足迹很容易,尤其是当仅具有三角形小平面时。每当Mario通过其边缘之一进入构面时,我们可以在O (1 )时间中确定他必须穿过其他两个边缘中的哪一个。尽管该算法的运行时间仅在边缘交叉数量上是线性的,但它不受输入大小的限制,因为距离ℓ可以任意大于P的直径。我们可以做得更好吗?PPPO (1 )O(1)O(1)ℓℓ\ellPPP (在实践中,路径长度实际上不是无限的;还有一个全球性的上界表示输入所需要的比特数的条件,但坚持整数投入提出了一些相当恶劣的数值问题-我们如何计算。正是在那里停止吗?—因此,我们坚持使用实际输入和精确的实际算术。) 关于这个问题的复杂性,有什么重要的知识吗? 更新:根据julkiewicz的评论,很明显,纯RAM的运行时间仅以(多位点的复杂性)为界是不可能的。考虑双面单元方的特殊情况下[ 0 ,1 ] 2,与马里奥开始(0 ,1 / 2 )和在行走方向(1 ,0 )。马里奥将停止在前面或取决于整数的奇偶平方的背面⌊ ℓ ⌋。除非我们很高兴,否则我们无法在真实RAM上恒定时间计算下限函数ñnn[ 0 ,1 ]2[0,1]2[0,1]^2(0 ,1 / 2 )(0,1/2)(0,1/2)(1 ,0 )(1,0)(1,0)⌊ ℓ ⌋⌊ℓ⌋\lfloor \ell \rfloor等同PSPACE和P。但是,我们可以计算在Ø (日志ℓ )通过指数检索,这是在天真的算法的指数调整时间。 在时间多项式ñ和日志ℓ总能实现?⌊ ℓ ⌋⌊ℓ⌋\lfloor \ell \rfloorO (对数ℓ )O(logℓ)O(\log \ell)ñnn日志ℓlogℓ\log \ell