Existe um algoritmo de tempo polinomial para descobrir que a soma das raízes quadradas é menor que um número inteiro?

7

Dado: Uma lista de números inteiros e um número inteiro .nx1,x2,,xnk

Determine: Is ?x1+x2xnk

Pergunta: Existe algum algoritmo de tempo polinomial para o problema acima? Se sim, dê um algoritmo; caso contrário, prove.

Shiv
fonte

Respostas:

11

Caso a resposta de David não seja clara: digamos que você tenha 10.000 números inteiros ek = 1.000.000. Você pode adicionar facilmente as raízes quadradas de n inteiros usando operações de ponto flutuante em . E se o resultado for 999.999.537 ou 1.000.000.214, você terá a resposta. Se o resultado for próximo de 1.000.000, você poderá fazer uma análise muito cuidadosa dos erros de arredondamento de ponto flutuante e, se a soma for 999,999.999999999, provavelmente obterá sua resposta. Se a soma estiver muito próxima de k, você poderá fazer aritmética com maior precisão. Portanto, haverá uma constante c, dependendo da implementação exata, para que você possa encontrar a resposta correta emxiO(n)cntempo para a grande maioria de todos os casos (se n for realmente grande, levará um pouco mais porque os números envolvidos serão enormes, mas o tempo será mais longo do que a sua vida).

O problema é que existem somas de raízes quadradas que podem ficar muito, muito próximas de k. Por exemplo, você pode definir f (x) = número de opções para modo que a soma das raízes quadradas seja ≤ x, então você espera 2f '(k) * eps opções de para que a soma das raízes quadradas esteja dentro de eps longe de k. Você espera uma combinação em que a soma das raízes quadradas esteja dentro de eps longe de k se eps ≥ 1 / 2f '(k). Você pode calcular uma estimativa desse eps, descobrir qual precisão seus cálculos precisariam para obter a resposta certa e quanto tempo levaria para obter o resultado com essa precisão. Isso pode ou não ser polinomial, dependendo do tamanho do eps.xixi

Mas é pior: o que eu disse acima é o quão perto você espera que uma soma seja de k. Mas pode ser muito mais perto por coincidência. Seria muito, muito difícil provar que não é possível chegar muito mais perto. Portanto, pode ser que você encontre a resposta em tempo linear na maioria dos casos (> 99.9999999999%), que espere encontrar a resposta em tempo polinomial em todos os casos (ou não), mas, em qualquer caso, você não pode (facilmente) provar isso, e ninguém o fez ainda.

Ele pode ser que você poderia responder a pergunta sem calcular a soma, mas de acordo com o que David diz, ninguém tem mostrado uma maneira de fazer isso em tempo polinomial quer.

Se alguém fez um cálculo de quão perto esperamos que somas de raízes quadradas cheguem perto de quaisquer números inteiros, ficaria feliz em saber. Entre. Penso que a soma das raízes quadradas dos números inteiros é igual a um inteiro se todas as raízes quadradas forem números inteiros, o que é facilmente excluído.

PS. Uma estimativa aproximada: digamos que adicionamos 10.000 raízes quadradas de números inteiros, cada uma menor que 1.000.000. São raízes quadradas de números inteiros e, como a ordem deles não é relevante, existem cerca desomas. São mais de somas. Portanto, esperamos que uma dessas somas esteja a uma distância de de um número inteiro, exigindo cálculos com mais de 80.000 dígitos de precisão.1012(1012)10,000/10,000!1080,0001080,000

PS. Dados os números a, b, c, d, k e usando a aritmética de dupla precisão IEEE 754, o primeiro caso em que sqrt (a) + sqrt (b) + sqrt (c) + sqrt (d) <k fornece um resultado diferente de o matematicamente correto é para a, b, c, d = 4640, 5397, 3001, 3322 ek = 254. Nesse caso, a soma é calculada exatamente como 254, quando o resultado matemático é menor que 254. Obviamente quando o Como o resultado em ponto flutuante é igual ao número inteiro, não podemos saber se ele foi arredondado para cima ou para baixo; portanto, nesse caso, o resultado nunca deve ser confiável.

Com a, b, c, d = 6222, 8801, 14431, 8132 ek = 383, a soma calculada é maior que k, enquanto o resultado matemático é menor. A ordem dos números não importa, exceto que 14431 deve ser o terceiro número.

Se alterarmos a ordem das operações adicionando (sqrt (a) + sqrt (b)) + (sqrt (c) + sqrt (d)) (observe os parênteses adicionados), o que alterará os erros de arredondamento e tenderá a diminuí-los , então a, b, c, d = 12558, 407, 16501, 18308 ek = 396 é o primeiro caso em que a soma calculada é maior que k, enquanto o resultado matemático é menor.

gnasher729
fonte
19

A complexidade do problema da soma da raiz quadrada é uma questão em aberto de longa data . O obstáculo é que, apesar de sabermos calcular raízes quadradas com eficiência, não sabemos se é possível determinar se avaliando apenas um número polinomial de bits de cada raiz quadrada.ixik

O problema específico com o algoritmo que você propõe na pergunta é que a frase "calcular a raiz quadrada de cada valor" está subespecificada. Qualquer raiz quadrada irracional (por exemplo, ) requer a computação de um número infinito de bits, portanto, você precisa indicar qual precisão está usando.2

David Richerby
fonte
Um teórico dos números apropriado olhou seriamente para esse problema? (Acho que sim.) Há uma longa linha de pesquisa no que é chamado de aproximação diofantina, que comprova resultados dizendo que | x - (p / q) | > f (q) para uma função específica f e qualquer número algébrico não racional x e qualquer número racional p / q, com resultados mais fortes se você souber o grau do polinômio de que x é a raiz. A expansão contínua da fração do número (que é fácil para raízes quadradas) geralmente é importante. (NB: Eu não sou um teórico dos números.)
Alexander Woo
@AlexanderWoo É um problema aberto significativo no que se poderia chamar de teoria dos números computacionais. Seria surpreendente se o pessoal da aproximação diofantina não tivesse olhado para isso.
David Richerby
Este site cs.smith.edu/~jorourke/TOPP/P33.html possui muitas informações sobre um problema relacionado: se uma soma de raízes quadradas é maior ou maior que outra. Tem resultados para limites superior e inferior sobre as menores diferenças entre somas de raízes quadradas.
precisa saber é o seguinte