Supongamos que Mario camina sobre la superficie de un planeta. Si comienza a caminar desde un lugar conocido, en una dirección fija, por una distancia predeterminada, ¿qué tan rápido podemos determinar dónde se detendrá?
Más formalmente, supongamos que se nos da un politopo convexo en 3 espacios, un punto de partida en la superficie de , un vector de dirección (en el plano de alguna faceta que contiene ) y una distancia . ¿Qué tan rápido podemos determinar qué faceta de Mario se detendrá adentro? (Como punto técnico, suponga que si Mario entra en un vértice de , explota de inmediato; afortunadamente, esto casi nunca sucede).
O si lo prefiere: suponga que se nos proporciona el politopo , el punto fuente y el vector de dirección de antemano. Después del preprocesamiento, ¿con qué rapidez podemos responder la pregunta para una distancia dada ?
Es fácil seguir los pasos de Mario, especialmente si solo tiene facetas triangulares. Cada vez que Mario ingresa a una faceta a través de uno de sus bordes, podemos determinar en tiempo cuál de los otros dos bordes debe dejar pasar. Aunque el tiempo de ejecución de este algoritmo es solamente lineal en el número de cruces por borde, es sin límites en función del tamaño de entrada, ya que la distancia podría ser arbitrariamente grande que el diámetro de . ¿Podemos hacerlo mejor?
(En la práctica, la longitud de la ruta no es realmente ilimitada; hay un límite superior global en términos de la cantidad de bits necesarios para representar la entrada. Pero insistir en entradas enteras plantea algunos problemas numéricos bastante desagradables: ¿cómo calculamos exactamente dónde detener? - así que ceñámonos a las entradas reales y a la aritmética real exacta).
¿Se sabe algo no trivial sobre la complejidad de este problema?
Actualización: a la luz del comentario de julkiewicz, parece claro que un tiempo de ejecución de RAM real limitado únicamente en términos de (la complejidad del politopo) es imposible. Considere el caso especial de una unidad cuadrada de dos lados , con Mario comenzando en y caminando en dirección . Mario se detendrá en el frente o en la parte posterior de la plaza dependiendo de la paridad del número entero . No podemos calcular la función de piso en un tiempo constante en la memoria RAM real, a menos que estemos contentos equiparar PSPACE y P . Pero podemos calcular entiempo por búsqueda exponencial, que es una mejora exponencial sobre el algoritmo ingenuo. ¿Es el tiempo polinomio en y siempre se puede lograr?