Seu problema parece reduzir a seguinte pergunta mais simples:
Dadas duas funções na classe de funções, temos F ( x ) = G ( x ) para todo x ? (Em outras palavras, eles têm o mesmo valor em todos os lugares?)F,GF(x)=G(x)x
Não sei se isso é decidível, para essa classe de funções. Se for, seu problema também deve ser decidido.
Para o seu problema, uma abordagem geral é: diferencie simbolicamente para obter F ′ ( x ) e verifique se temos F ′ ( x ) =F(x)F′(x) para todos os x .F′(x)=G(x)x
Portanto, o passo principal é a diferenciação simbólica. Vamos descobrir como fazer isso com mais detalhes. Podemos definir a classe de funções permitidas recursivamente:
F(x)::=c|x|ex|log(x)|sin(x)|cos(x)|tan(x)|F1(x)+F2(x)|F1(x)×F2(x)|F1(x)/F2(x)|F1(F2(x))
onde varia sobre constantes e F , F 1 , F 2 sobre funções.cF,F1,F2
É então possível criar um algoritmo recursivo para diferenciar simbolicamente essa classe de funções, usando as regras padrão de cálculo (por exemplo, a regra da cadeia, etc.). Em particular, podemos lidar com todos os casos acima e mostrar recursivamente que a derivada pode ser expressa simbolicamente como uma função dentro dessa classe. Por exemplo:
Se , F ′ ( x ) = 0 .F(x)=cF′(x)=0
Se , F ′ ( x ) = 1 .F(x)=xF′(x)=1
Se , F ′ ( x ) = e xF(x)=exF′(x)=ex .
Se , F ′ ( x ) = 1 / x .F(x)=log(x)F′(x)=1/x
Se , F ′ ( x ) = cos ( x ) .F(x)=sin(x)F′(x)=cos(x)
Se , F ′ ( x ) = 1 + ( tan ( x ) ) 2F(x)=tan(x)F′(x)=1+(tan(x))2 .
Se , F ′ ( x ) = F ′ 1 ( x ) + F ′ 2 ( x ) .F(x)=F1(x)+F2(x)F′(x)=F′1(x)+F′2(x)
Se , F ′ ( x ) = F ′ 1 ( x ) F 2 ( x ) + F 1 ( x ) F ′ 2 ( x ) .F(x)=F1(x)×F2(x)F′(x)=F′1(x)F2(x)+F1(x)F′2(x)
Se , F ′ ( x ) = F ′ 1 ( F 2 ( x ) ) F ′ 2 ( x )F(x)=F1(F2(x))F′(x)=F′1(F2(x))F′2(x) (regra da cadeia).
And so on. In each case, if F(x) is in the class of allowable functions, then so is F′(x), and you can recursively work out a symbolic expression for F′(x) -- this is known as symbolic differentiation.
Finally, all that remains is to check whether F′(x)=G(x) for all x. That's the problem I mention at the top of my answer.
xF(x)=G(x)xxxF(x)≠G(x), then output "they are different".
There is no guarantee that this will work, but for many classes of functions, the output of this procedure will be correct with high probability. In particular, suppose we have some distribution on x represented by the random variable X and some ϵ>0 such that Pr[F(X)=0]≥ϵ holds for all F in the class. Suppose moreover that the class of allowable functions is closed under subtraction (as your class is). Then it follows that r rounds of the above procedure gives the wrong answer with probability at most (1−ϵ)r.
Also, if there is a randomized procedure for polynomial equality testing, then the problem is decidable.
It remains to ask whether such a result holds for your particular class of functions. The statement above probably won't hold. However, if we lucky, perhaps we might be able to prove something like the following:
For all s∈N, maybe we can find a distribution on real numbers, i.e., a random variable Xs, and a constant ϵs>0, such that such that Pr[F(X)=0] holds for all functions F that are in your class and have "size" at most s.
If this is true, then it will follow that there is a randomized algorithm for polynomial equality testing and thus your problem is decidable.