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?
fonte
Respostas:
Este problema é muito, muito difícil. Poderíamos simplificá-lo para facilitar, da seguinte maneira.
Podemos assumir que o politopo não é verdadeiramente tridimensional, mas sim o "duplo" de um polígono; isso parece um pouco com uma fronha. Podemos simplificar ainda mais e supor que o polígono tenha lados iguais e paralelos; por exemplo um quadrado, como no jogo Astroids.
Se não assumimos racionalidade, mas assumimos que o pólipo é o dobro de um polígono, estamos discutindo a teoria de "cortar seqüências em bilhar irracional". Parece que essencialmente nada se sabe aqui; por exemplo, veja a sentença final desta palestra de Corinna Ulcigrai.
Se não fizermos nenhuma suposição, bem, não consigo pensar em nada na literatura.
fonte
Eu acho que você pode fazer melhor do que linear. Eu sou novo na ciência da computação teórica, então me perdoe se isso é lixo.
Algumas idéias gerais (de valor variável):
Isso realmente não constitui uma resposta, mas preciso voltar ao trabalho. :)
fonte