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?
fuente
Respuestas:
Este problema es muy muy difícil. Podríamos simplificarlo para que sea más fácil, de la siguiente manera.
Podemos suponer que la suma del ángulo sobre cada vértice del politopo es un múltiplo racional de . Esto elimina la mayoría de los "politopos", pero todavía hay muchas posibilidades interesantes: por ejemplo, los sólidos platónicos.πP π
Podemos suponer que el politopo no es verdaderamente tridimensional, sino que es el "doble" de un polígono; esto se parece un poco a una funda de almohada. Podemos simplificar aún más y suponer que el polígono tiene lados iguales y paralelos; por ejemplo un cuadrado, como en el juego Astroids.
Si hacemos ambas suposiciones, entonces hay una gran teoría. (Encontrar un algoritmo para el cuadrado es un ejercicio difícil que involucra la expansión de fracción continua del ángulo de la trayectoria de Mario. Es posible lograr un resultado similar para el octágono regular pero más difícil. Las soluciones para el cuadrado y el octágono implican pensar en cómo codificar eficientemente "secuencias de corte para una geodésica en una superficie de traducción". La mayoría de los otros polígonos racionales conducirán rápidamente a problemas abiertos.) Una referencia inicial, que incluye una referencia adicional a la discusión de Caroline Series sobre el toro cuadrado, son estas diapositivas de Diana Davis.O(log(ℓ))
Si no asumimos la racionalidad, pero asumimos que el politopo es el doble de un polígono, entonces estamos discutiendo la teoría de "cortar secuencias en billares irracionales". Parece que esencialmente no se sabe nada aquí; por ejemplo, vea la oración final de esta charla de Corinna Ulcigrai.
Si no hacemos ninguna suposición, bueno, no puedo pensar en nada en la literatura.
Finalmente, supongo que hay una solución para el problema de Super Mario Galaxy para los sólidos platónicos. Este es un buen problema para un estudiante graduado que se inicia en el billar racional. Por ejemplo, el caso del dodecaedro "debería" seguir la tesis de Diana Davis. (Pero comience con el tetraedro, que se derivará de un análisis de secuencias de corte para el toro hexagonal).O(log(ℓ))
fuente
Creo que puedes hacerlo mejor que lineal. Soy nuevo en informática teórica, así que perdóname si esto es basura.
Algunas ideas generales (de valor variable):
Esto realmente no constituye una respuesta, pero necesito volver al trabajo. :)
fuente