スーパーマリオギャラクシーの問題
マリオが惑星の表面を歩いているとします。既知の場所から一定の方向に所定の距離を歩き始めた場合、彼がどこで止まるかをどれくらい早く決定できますか? より正式に、我々は凸多面体を与えられていると仮定 3空間内で、開始点の表面に、方向ベクトル(いくつかの面を含む面内で)、及び距離。マリオのどのファセットが内部で停止するかをどれくらい早く決定できますか?(技術的なポイントとして、マリオが頂点に入るとすぐに爆発すると仮定します;幸いなことに、これはほとんど起こりません。)S P のV Pのℓ P PPPPsssPPPvvvpppℓℓ\ellPPPPPP または、必要に応じて、ポリトープ、ソースポイント、および方向ベクトルが事前に与えられているとします。前処理の後、与えられた距離質問にどれくらい早く答えることができますか?S のV ℓPPPsssvvvℓℓ\ell 特にに三角形のファセットしかない場合、マリオの足跡を簡単にトレースするのは簡単です。マリオがそのエッジの1つからファセットに入るたびに、時間で他の2つのエッジのどちらから抜けなければならないかを判断できます。このアルゴリズムの実行時間は、エッジ交差の数でのみ線形であるが、それはです無限の距離があるため、入力サイズの関数として直径よりも任意に大きくすることができた。もっと良くできますか?O (1 )ℓのPPPPO(1)O(1)O(1)ℓℓ\ellPPP バインドされたグローバルアッパーは、入力を表現するのに必要なビット数でありしかし、整数入力を主張することは、いくつかのかなり厄介な数値の問題を提起する-どのように計算します。(実際には、パスの長さは、実際には無制限ではありません。正確にどこ停止しますか?—では、実際の入力と正確な実際の演算に固執しましょう。) この問題の複雑さについて重要なことは何ですか? 更新: julkiewiczのコメントを踏まえると、(ポリトープの複雑さ)の点で純粋に制限された実RAMの実行時間は不可能であることは明らかです。マリオがから始まり方向に歩いている、両面単位正方形の特殊なケースを考えてみましょう。マリオは、整数のパリティに応じて、正方形の前面または背面で停止します。PSPACEとPを一致させない限り、実際のRAMで一定時間内にフロア関数を計算することはできません。しかし、を計算でき[ 0 、1 ] 2(0 、1 / 2 )(1 、0 )⌊ ℓ ⌋ ⌊ ℓ ⌋ O (ログℓ )N ログℓをnnn[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⌊ℓ⌋⌊ℓ⌋\lfloor \ell \rfloorO(logℓ)O(logℓ)O(\log \ell)単純なアルゴリズムに対する指数関数的な改善である指数関数検索による時間。 と時間多項式は常に達成可能ですか?nnnlogℓlogℓ\log \ell