Mögliche Duplizieren:
Strategies for simplifying math expressionsVereinfachen algebraischer Ausdruck
Ich habe einen mathematischen Ausdruck Parser, der einen Baum um den Ausdruck zu repräsentieren aufbaut. Nehmen wir zum Beispiel I-Eingang 2+y+3+y
, die interne Darstellung hierfür wäre:
Jetzt sind wir als Menschen können 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 +
, ich keine Ahnung haben würde, dass ich eine weitere Ergänzung auf der rechten Seite in der anderen Branche habe - dies spielt keine Rolle bei der Bewertung, sondern bei der Vereinfachung Ich sehe nicht, wie das schön gemacht werden kann.
Dies ist, wie die Klassen zusammen passen:
ich dies zu Google haben es versucht, aber haben nichts gefunden, was mir hier helfen könnte. Nur ein allgemeiner Wegpunkt, oder eine URL oder etwas überhaupt würde geschätzt werden
EDIT: Beachten Sie, dass ich für das Beispiel nur hinzugefügt habe. Der Parser unterstützt Ausdrücke wie: 1 + 2 * (3^4-4/5 * (1 + 2))
Addition ist transitiv. Von der Wurzel +, kann es nicht sehen, dass beide Kinder auch Addition sind: das heißt, es kann die Konstanten und Variablen neu anordnen, wie es passt? –
Ist das Hausaufgaben? –
Können Sie '+' mehr als 2 Kinder haben? Ich glaube, symbolische Mathematiksprachen wie Mathematica würden Ihr Beispiel als eine Liste '[2, y, 3, y]' mit einem Kopf von 'Plus' speichern, der dann automatisch mit einigen Regeln vereinfacht würde. – JohnPS