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