Suponha que Mario esteja andando na superfície de um planeta. Se ele começar a andar de um local conhecido, em uma direção fixa, por uma distância predeterminada, com que rapidez podemos determinar onde ele irá parar?
Mais formalmente, suponha que recebamos um pólipo convexo no espaço 3, um ponto de partida s na superfície de P , um vetor de direção v (no plano de alguma faceta que contém p ) e uma distância ℓ . Com que rapidez podemos determinar qual faceta de P Mario vai parar lá dentro? (Como ponto técnico, suponha que, se Mario entra em um vértice de P , ele explode imediatamente; felizmente, isso quase nunca acontece.)
Ou, se preferir: suponha que recebamos o politopo , o ponto de origem s e o vetor de direção v com antecedência. Após o pré-processamento, com que rapidez podemos responder à pergunta para uma determinada distância ℓ ?
É fácil simplesmente seguir os passos de Mario, especialmente se tiver apenas facetas triangulares. Sempre que Mario entra em uma faceta através de uma de suas arestas, podemos determinar em O ( 1 ) tempo em que das outras duas arestas ele deve sair. Embora o tempo de execução deste algoritmo só é linear no número de cruzamentos de borda, é ilimitada como uma função do tamanho da entrada, porque a distância ℓ poderia ser arbitrariamente maior do que o diâmetro de P . Podemos fazer melhor?
(Na prática, o comprimento do caminho não é realmente ilimitado; existe um limite superior global em termos do número de bits necessários para representar a entrada. Mas insistir em entradas inteiras levanta alguns problemas numéricos bastante desagradáveis - Como calculamos exatamente onde parar? - então, vamos nos ater às entradas reais e à aritmética exata real.)
Há algo não trivial conhecido sobre a complexidade desse problema?
Atualização: À luz do comentário de julkiewicz, parece claro que um tempo de execução na RAM real é limitado exclusivamente em termos de (a complexidade do polítopo) é impossível. Consideremos o caso especial de uma unidade quadrada de dois lados [ 0 , 1 ] 2 , com Mario a partir de ( 0 , 1 / 2 ) e caminhando em direcção ( 1 , 0 ) . Mario para na frente ou atrás do quadrado, dependendo da paridade do número inteiro ⌊ ℓ ⌋ . Não podemos calcular a função de piso em tempo constante na RAM real, a menos que estejamos felizesigualando PSPACE e P . Mas podemos calcular no tempo O ( log ℓ ) por pesquisa exponencial, que é uma melhoria exponencial em relação ao algoritmo ingênuo. Polinomial vez em é n e log ℓ sempre alcançável?