Se você usar os operadores {+,−,×,/} (ou seja, você não incluiu o operador de energia), todos os seus problemas provavelmente são decidíveis.
Testando igualdade com zero
Por exemplo, vamos considerar L=Z∪{π}. Então você pode tratarπ como um símbolo formal, de modo que cada folha seja um polinômio em Z[π] (por exemplo, o número inteiro 5 é o polinômio constante 5; π é o polinômio π+0do grau 1). Agora você pode expressar a árvore como um polinômio racional sobreZcom π como o desconhecido formal.
Suponha que esse polinômio seja p(π)/q(π). Teste sep(π) é o polinômio zero (grau −∞) Se não for o polinômio zero, a expressão não será igual a zero. E sep(π) é o polinômio zero e q(π)não é o polinômio zero, então a expressão é igual a zero. A correção deste procedimento decorre do fato de queπé transcendental .
Qual é a complexidade deste procedimento? A resposta depende do modelo computacional. Vamos supor que cada operador gaste um tempo constante para avaliar (independentemente do tamanho dos operandos). Então a complexidade depende do tamanho dos polinômios resultantes. O grau do polinômio pode crescer exponencialmente com a profundidade da árvore. Portanto, se você construir o polinômio recursivamente e expressá-lo explicitamente (em forma de coeficiente), o tempo de execução será no máximo exponencial na profundidade da árvore. Felizmente, o grau cresce no máximo linearmente no número de folhas na árvore; portanto, o tempo de execução de um algoritmo determinístico é linear no tamanho da árvore.
Portanto, assumindo uma representação direta da árvore e um modelo computacional simplista, isso fornece um algoritmo de tempo linear para teste zero quando os operadores estão {+,−,×,/}.
Este procedimento não funciona apenas para L=Z∪{π}, mas também para N∪{π} e Q∪{π}.
O mesmo procedimento também funciona para L=Q∪{π,e}, se pudermos assumir uma conjectura razoável: que π e esão algebricamente independentes. Não se sabe se essa conjectura está correta, mas parece provável. Enfim, aqui está a abordagem. Tratamos o polinômio como um polinômio multivariado em duas incógnitasπ,eem vez de um desconhecido, mas tudo continua como antes, dada a independência algébrica deπ e e. Também funciona paraL=Z∪{π,e} e L=N∪{π,e}também, novamente, assumindo a conjectura.
Se você quiser ser extravagante, poderá usar algoritmos aleatórios para teste de identidade polinomial. E seL=Z∪{π}, eles terão o seguinte: escolha um primo aleatório r e um número inteiro aleatório sπ∈{0,…,r−1}; substitua cada instância deπ com sπ; e verifique se a expressão resultante é avaliada como0modr. (Se você possui e , escolhe dois inteiros aleatórios e .) Você pode repetir esse teste várias vezes. Se esse procedimento fornecer algo diferente de zero (módulo ), a expressão original certamente será diferente de zero. Se sempre der zero (módulo ), com alta probabilidade, a expressão original será igual a zero. Isso pode ser mais eficiente em alguns modelos computacionais (por exemplo, onde o tempo para avaliar um único operador depende do tamanho dos operandos).πesπserr
Comparação de sinal
Você também pode encontrar o sinal da expressão usando procedimentos semelhantes (novamente, assumindo que você excluiu o operador ^ e novamente, assumindo que e são algebricamente independentes). Avalie a expressão como um polinômio racional sobre . Suponha que você tenha determinado que e . Você quer saber se ou não.πep(π,e)/q(π,e)Q[π,e]p(π,e)/q(π,e)≠0q(π,e)≠0p(π,e)/q(π,e)>0
Aqui está uma abordagem. Observe que se . Portanto, podemos formar um novo polinômio e reduzi-lo ao problema de avaliar o sinal de . Basicamente, precisamos avaliar o sinal de um polinômio racional em e . Sabemos que isso é avaliado como algo diferente de zero.p(π,e)/q(π,e)>0p(π,e)⋅q(π,e)>0r(π,e)=p(π,e)⋅q(π,e)r(π,e)πe
Uma abordagem é a de calcular e para bits de precisão, e em seguida avaliar em conformidade, ganhando limites inferiores e superiores de . Se 0 for incluído nesse intervalo, duplo , até que o limite inferior seja estritamente positivo ou o limite inferior seja estritamente negativo.πekr(π,e)r(π,e)k
Qual é a complexidade dessa abordagem? Sefor avaliado como um valor , acho que o tempo de execução será polinomial no tamanho da entrada e em .|r(π,e)|ϵlg1/ϵ
Pode haver um algoritmo melhor, mas este é o melhor que posso apresentar agora.
Conclusão
O argumento é que o operador de energia (^) é a verdadeira fonte de dificuldade. Sem o operador de energia, todos os seus problemas podem ser resolvidos sem muita dificuldade (assumindo uma conjectura razoável).