z ?
Die Ausdrücke stammen aus der gewöhnlichen High-School-Algebra, beschränken sich jedoch auf arithmetische Addition und Multiplikation (z. B. ), ohne Inverse, Subtraktion oder Division. Buchstaben sind Variablen.
Wenn es hilft, können wir jeden Ausdruck verbieten, der mit anderen numerischen Werten als . dh nicht noch noch :x 2 3 x 4
- Multilinear , keine anderen Potenzen als : x + x y ≡ x 1 + x 1 y 1 ist in Ordnung, aber nicht x 2 + x 3 y 4 , und nichts, was als das dargestellt werden könnte, wie in einer vollständigen Ausdehnung zur Summe -der-Produkte, zB nicht x ( x + y ) ≤ x 2 + y ;
- alle eins , keine anderen Koeffizienten als : x + x y ≡ 1. x + 1. x y ist OK, aber nicht 2 x + 3 x y , und nichts, was als das dargestellt werden könnte, wie bei einer vollen Ausdehnung auf Produktsumme zB nicht a ( x + y ) + x ( a + b ) ≤ 2 a x + a y + b x ; und
- Keine anderen Konstanten als : Wiederum in der vollständig erweiterten Produktsumme, z. B. nicht ( a + 1 ) + ( b + 1 ) ≡ a + b + 2
Gibt es einen effizienten Algorithmus, um festzustellen, ob zwei Ausdrücke äquivalent sind?
Zur Veranschaulichung hier ein ineffizienter Brute-Force-Algorithmus mit exponentieller Zeit:
Erweitern Sie beide Ausdrücke vollständig zu einer Produktsumme , die leicht auf Gleichwertigkeit überprüft werden kann (ignorieren Sie einfach die Reihenfolge, da Commute / Associate die Reihenfolge ändern kann).
zB
a ( x + y ) + b ( x + y ) → a x + a y + b x + b y
Dies scheint ein bekanntes Problem zu sein - selbst Schülern werden manuelle Lösungswege vermittelt. Es wird auch durch automatisierte Theoremprüfer / -prüfer gelöst, die sich jedoch auf komplexere Aspekte konzentrieren.
Hier ist ein funktionierender automatisierter Online-Theorembeweiser: http://tryacl2.org/ , der die Gleichwertigkeit zeigt, indem eine Abfolge von Commute / Associate / Distribute usw. gefunden wird:
? --- 188 Schritte
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))
? --- 325 Schritte
(thm (= (+ y (* x (+ y 1))) (+ x (* y (+ x 1))) ))
Dies ist meine erste Frage, also lass es mich bitte wissen, wenn ich den falschen Ort, die falschen Tags, die falsche Art zu beschreiben / zu fragen usw. gewählt habe. Danke!
NB: Diese Frage wurde als Antwort auf Kommentare umgeschrieben.
Vielen Dank an alle Antwortenden! Ich habe viel gelernt.
quelle
Antworten:
Ihr Problem reduziert sich auf Null beim Testen multivariater Polynome, für die es effiziente randomisierte Algorithmen gibt.
Nun möchten Sie wissen, ob zwei Ausdrücke äquivalent sind. Dies läuft darauf hinaus, zu testen, ob zwei multivariate Polynome äquivalent sind: Wenn und p 2 ( x 1 , … , x n ) gegeben sind , möchten Sie wissen, ob diese beiden Polynome äquivalent sind. Sie können dies testen, indem Sie sie subtrahieren und prüfen, ob das Ergebnis identisch Null ist: definep1(x1,…,xn) p2(x1,…,xn)
Jetzt sind genau dann äquivalent, wenn q das Nullpolynom ist.p1,p2 q
Das Testen, ob identisch Null ist, ist das Nulltestproblem für multivariate Polynome. Dafür gibt es effiziente Algorithmen. Beispielsweise besteht ein beispielhafter Algorithmus darin, q ( x 1 , ... , x n ) bei vielen Zufallswerten von x 1 , ... , x n zu bewerten . Wenn Sie einen Wert von x 1 , … , x n finden, so dass q ( x 1 , … , x n ) , dann wissen Sie, dass qq q(x1,…,xn) x1,…,xn x1,…,xn q(x1,…,xn) q p1,p2 q q q
Siehe zum Beispiel https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma und http://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the- Schwartz-Zippel-Lemma /
quelle
To follow up on the one-power, one-coefficent and one-constants constraints in the question:
These define a subset the problem of polynomial identity testing. Clearly, they can be solved with a technique that solves the general problem. The question is whether they form a subset that is more easily solved.
one-coefficient: in problems without this, terms might be combined, making the problem easier. Consider the Binomial Theorem/Pascal's triangle for(a+b)n . This can be expanded one factor at a time, producing terms with overlapping orders e.g. (a+b)(a+b)=aa+ab+ab+bb=aa+2ab+bb The fewer terms make it easier to expand with the next factor: (aa+2ab+bb)(a+b)=aaa+2aab+abb+aab+2abb+bbb=aaa+3aab+3abb+bbb and again terms are combined, making a smaller simpler problem. This combining of terms is a form of dynamic programming.
That is, the possibility of combining terms, creating a non-one coefficient, makes the problem easier not harder.
(Although there is more work in calculation in multiplying non-one coefficients)
non-one constants are included in the above argument by considering constants as variables with zero exponent.
one-power I don't think this makes any difference. Although non-one exponents can be created in more than one way (e.g.a4=a2a2=a1a3 ), and this can lead to overlap and combination (as in the Binomial Theorm/Pascal's triangle above), actual combination is only possible if non-one coefficients are allowed.
The above is not a formal or rigorous argument. It rests on an assumption about what makes the problem difficult. But it does seem to me that combining terms only makes for an easier problem - so preventing this by the one coefficient constraint is not going to make the subset easier.
quelle