Vereinfachung der algebraischen Ausdrücke [duplizieren]

8

Ich habe einen mathematischen Ausdrucksparser, der einen Baum erstellt, um den Ausdruck darzustellen. Angenommen, ich gebe zum Beispiel 2+y+3+y ein, die interne Darstellung wäre:

Nun können wir als Menschen sofort sehen, dass 2+y+3+y = 2y + 5 . Der schwierige Teil für den Computer, den ich sehe, ist, dass wenn ich auf der linken Seite + stehen würde, würde ich keine Ahnung haben, dass ich eine weitere Ergänzung auf der rechten Seite in der anderen Branche habe - das ist aber bei der Auswertung nicht wichtig Wenn ich vereinfache, sehe ich nicht, wie das schön gemacht werden kann.

So passen die Klassen zusammen:

Ich habe versucht, das zu googeln, habe aber nichts gefunden, was mir hier helfen könnte. Nur ein allgemeiner Wegpunkt, oder eine URL oder etwas überhaupt würde geschätzt werden

BEARBEITEN: Beachten Sie, dass ich für das Beispiel nur Zusatz hinzugefügt habe. Der Parser unterstützt Ausdrücke wie: 1 + 2 * (3 ^ 4-4 / 5 * (1 + 2))

    
ErikTJ 09.05.2012, 20:23
quelle

1 Antwort

0

Da die Menge der Ausdrücke, die mit Ihrer Klassenstruktur ausgedrückt werden kann, ziemlich begrenzt ist, können Sie einfach zählen, wie oft jede Variable auftritt und alle Konstanten summieren.

%Vor%     
dtb 09.05.2012 20:34
quelle

Tags und Links