Ihr Problem scheint die folgende einfachere Frage zu reduzieren:
Haben wir bei zwei Funktionen in der Funktionsklasse F ( x ) = G ( x ) für alle x ? (Mit anderen Worten, haben sie überall den gleichen Wert?)F,GF(x)=G(x)x
Ich weiß nicht, ob dies für diese Funktionsklasse entscheidbar ist. Wenn ja, sollte auch Ihr Problem entscheidbar sein.
Für Ihr Problem lautet ein allgemeiner Ansatz: Differenzieren Sie symbolisch , um F ' ( x ) zu erhalten , und prüfen Sie dann, ob für alle x F ' ( x ) = G ( x ) gilt .F(x)F′(x)F′(x)=G(x)x
Der Schlüsselschritt ist also die symbolische Differenzierung. Lassen Sie uns genauer herausfinden, wie das geht. Wir können die Klasse der zulässigen Funktionen rekursiv definieren:
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))
Dabei liegt über Konstanten und über Funktionen.F , F 1 , F 2cF,F1,F2
Es ist dann möglich, einen rekursiven Algorithmus zur symbolischen Differenzierung dieser Funktionsklasse unter Verwendung der Standardregeln der Analysis (z. B. der Kettenregel usw.) zu entwickeln. Insbesondere können wir jeden obigen Fall behandeln und rekursiv zeigen, dass die Ableitung symbolisch als Funktion innerhalb dieser Klasse ausgedrückt werden kann. Zum Beispiel:
Wenn , ist .F ' ( x ) = 0F(x)=cF′(x)=0
Wenn , ist .F ' ( x ) = 1F(x)=xF′(x)=1
Wenn , ist .F ' ( x ) = e xF(x)=exF′(x)=ex
Wenn , ist .F ' ( x ) = 1 / xF(x)=log(x)F′(x)=1/x
Wenn , ist .F ' ( x ) = cos ( x )F(x)=sin(x)F′(x)=cos(x)
Wenn , ist .F ' ( x ) = 1 + ( tan ( x ) ) 2F(x)=tan(x)F′(x)=1+(tan(x))2
Wenn , ist .F ' ( x ) = F ' 1 ( x ) + F ' 2 ( x )F(x)=F1(x)+F2(x)F′(x)=F′1(x)+F′2(x)
Wenn , ist .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)
Wenn , ist (Kettenregel).F ' ( x ) = F ' 1 ( F 2 ( x ) ) F ' 2 ( x )F(x)=F1(F2(x))F′(x)=F′1(F2(x))F′2(x)
Und so weiter. Wenn in jedem Fall zur Klasse der zulässigen Funktionen gehört, gilt dies auch für , und Sie können rekursiv einen symbolischen Ausdruck für - dies wird als symbolische Differenzierung bezeichnet .F ' ( x ) F ' ( x )F(x)F′(x)F′(x)
Schließlich muss nur noch geprüft werden, ob für alle . Das ist das Problem, das ich oben in meiner Antwort erwähne.xF′(x)=G(x)x
Es gibt eine einfache Methode, um zu überprüfen, ob zwei Funktionen identisch sind, von der ich erwarten würde, dass sie in der Praxis ziemlich gut funktioniert. Der Algorithmus lautet wie folgt: Wählen Sie wiederholt einen Zufallswert von und prüfen Sie, ob für diesen Wert von . Wenn es für viele zufällig ausgewählte , geben Sie "sie sind identisch gleich" aus. Wenn Sie ein für das , geben Sie "sie sind unterschiedlich" aus.F ( x ) = G ( x ) x x x F ( x ) ≤ G ( x )xF(x)=G(x)xxxF(x)≠G(x)
Es gibt keine Garantie dafür, dass dies funktioniert, aber für viele Funktionsklassen ist die Ausgabe dieser Prozedur mit hoher Wahrscheinlichkeit korrekt. Nehmen wir insbesondere an, wir haben eine Verteilung auf die durch die Zufallsvariable und eine so dass für alle in der Klasse gilt. Angenommen, die Klasse der zulässigen Funktionen wird unter Subtraktion geschlossen (wie Ihre Klasse). Daraus folgt, dass Runden des obigen Verfahrens mit höchstens einer Wahrscheinlichkeit die falsche Antwort geben .X ϵ > 0 Pr [ F ( X ) = 0 ] ≥ ϵ F r ( 1 - ϵ ) rxXϵ>0Pr[F(X)=0]≥ϵFr(1−ϵ)r
Wenn es ein randomisiertes Verfahren für die Prüfung der Polynomgleichheit gibt, ist das Problem entscheidbar.
Es bleibt zu fragen, ob ein solches Ergebnis für Ihre spezielle Funktionsklasse gilt. Die obige Aussage wird wahrscheinlich nicht gelten. Wenn wir jedoch Glück haben, können wir möglicherweise Folgendes beweisen:
Für alle können wir vielleicht eine Verteilung auf reelle Zahlen finden, dh eine Zufallsvariable und eine Konstante , so dass gilt für alle Funktionen , die in Ihrer Klasse sind und höchstens "Größe" haben .X s ϵ s > 0 Pr [ F ( X ) = 0 ] F ss∈NXsϵs>0Pr[F(X)=0]Fs
Wenn dies zutrifft, folgt daraus, dass es einen randomisierten Algorithmus für die Prüfung der Polynomgleichheit gibt und Ihr Problem daher entscheidbar ist.