Existe-t-il un algorithme efficace pour l'équivalence d'expression?

14

par exemple xy+x+y=X+y(X+1) ?

Les expressions proviennent de l'algèbre ordinaire du secondaire, mais se limitent à l'addition et à la multiplication arithmétiques (par exemple 2+2=4;2.3=6 ), sans inverses, soustraction ou division. Les lettres sont des variables.

Si cela aide, nous pouvons interdire toute expression représentable avec des valeurs numériques autres que ; c'est-à-dire pas x 2 ni 3 x ni 4 :1x23x4

  • multilinéaire , pas de puissances autres que : x + x y x 1 + x 1 y 1 est OK, mais pas x 2 + x 3 y 4 , et rien de ce qui pourrait être représenté comme cela, comme dans une expansion complète pour résumer -des produits, par exemple pas x ( x + y ) x 2 + y ; 1x+xyx1+x1y1x2+x3y4x(x+y)x2+y
  • tout un , pas de coefficients autres que : x + x y 1. x + 1. x y est OK, mais pas 2 x + 3 x y , et rien de ce qui pourrait être représenté comme cela, comme dans une expansion complète à somme des produits, par exemple pas a ( x + y ) + x ( a + b ) 2 a x + a y + b x ; et 1x+xy1.x+1.xy2x+3xya(x+y)+x(a+b)2ax+ay+bx
  • pas de constantes autres que : encore une fois, dans la somme des produits entièrement développée, par exemple pas ( a + 1 ) + ( b + 1 ) a + b + 21(a+1)+(b+1)a+b+2

Existe-t-il un algorithme efficace pour déterminer si deux expressions sont équivalentes?Q.


Pour illustrer, voici un algorithme de force brute inefficace avec un temps exponentiel:

étendre complètement les deux expressions à la somme des produits , dont l'équivalence peut facilement être vérifiée (il suffit d'ignorer l'ordre, car les déplacements / associés peuvent être réorganisés).

ex.
a ( x + y ) + b ( x + y ) a x + a y + b x + b y(a+b)(x+y)ax+ay+bx+by
a(x+y)+b(x+y)ax+ay+bx+by


Cela semble un problème bien connu - même les élèves du secondaire apprennent des moyens manuels de le résoudre. Il est également résolu par des vérificateurs / vérificateurs de théorèmes automatisés, mais ils se concentrent sur des aspects plus sophistiqués.

Voici un prouveur de théorème automatisé en ligne: http://tryacl2.org/ , qui montre l'équivalence en trouvant une séquence de trajet / associer / distribuer etc:

? --- 188 étapes xy+x+y=x+y(x+1)
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))

? --- 325 étapesy+x(y+1)=x+y(x+1)
(thm (= (+ y (* x (+ y 1))) (+ x (* y (+ x 1))) ))

Ceci est ma première question ici, alors faites-moi savoir si j'ai choisi le mauvais endroit, les mauvaises balises, la mauvaise façon de décrire / demander, etc. Merci!
NB: cette question a été réécrite en réponse aux commentaires
Merci à tous les répondants! J'ai beaucoup appris.

hyperpallium
la source
3
La question ici nécessite quelques éclaircissements. Dans quel domaine travaillez-vous? Les objets tels que " " et " b " dans vos expressions sont-ils des éléments du champ ou des variables? S'agit-il en fait d'un champ (c.-à-d. L'addition et la multiplication ont-elles des inverses)? Notez que la somme des produits n'aide pas car ( a 1 + b 1 ) ( a 2 + b 2 ) ( a n + b n ) a exponentiellement beaucoup de termes. ab(a1+b1)(a2+b2)(an+bn)
David Richerby
4
Si les objets sont des variables et que la soustraction est autorisée, vous posez essentiellement des questions sur les tests d'identité polynomiale, qui ont un algorithme de temps polynomial randomisé par le lemme Schwartz – Zippel . ssi f ( x ) - g ( x ) = 0 et l'idée de base est qu'un polynôme qui n'est pas identique à zéro n'a pas beaucoup de racines donc, si vous commencez à deviner des racines au hasard et trouver beaucoup de racines, il y a une forte probabilité que votre polynôme soit identique à zéro. f(x)=g(x)f(x)g(x)=0
David Richerby
2
Je suis surpris que personne ne l'ait encore mentionné, mais "si c'est dans NP, je n'ai pas besoin de m'inquiéter de trouver un algorithme polynomial" n'a pas de sens. Chaque problème dans P est également dans NP. Vous vouliez probablement demander si le problème est NP-complet (ou -hard).
Tom van der Zanden
2
Si vous avez du mal avec les bases, nos questions de référence peuvent vous être utiles.
Raphael
2
@hyperpallium Avant de demander si une langue (c'est-à-dire un problème de décision) est en NP, il vaut mieux que vous compreniez ce que cela signifie. Peut-être que les questions de référence auxquelles Raphaël a lié pourraient aider.
Yuval Filmus

Réponses:

9

Votre problème se réduit à zéro test de polynômes multivariés, pour lesquels il existe des algorithmes randomisés efficaces.

Vos expressions sont toutes des polynômes multivariés. Apparemment, vos expressions sont construites selon les règles suivantes: (a) si est une variable, alors x est une expression; (b) si c est une constante, alors c est une expression; (c) si e 1 , e 2 sont des expressions, alors e 1 + e 2 et e 1 e 2 sont des expressions. Si c'est bien ce que vous vouliez, chaque expression est un polynôme multivarié sur les variables.xxcce1,e2e1+e2e1e2

Maintenant, vous voulez savoir si deux expressions sont équivalentes. Cela revient à tester si deux polynômes multivariés sont équivalents: étant donné et p 2 ( x 1 , , x n ) , vous voulez savoir si ces deux polynômes sont équivalents. Vous pouvez tester cela en les soustrayant et en vérifiant si le résultat est identique à zéro: définirp1(x1,,xn)p2(x1,,xn)

q(x1,,xn)=p1(x1,,xn)p2(x1,,xn).

p1,p2q

qq(x1,,xn)x1,,xnx1,,xnq(x1,,xn)qp1,p2q est identique à zéro (si qn'est pas identique à zéro, la probabilité que tous ces essais donnent zéro peut être rendue exponentiellement faible). Le nombre d'itérations que vous devez effectuer est lié au degré deq; voir la littérature sur les tests d'identité polynomiale pour plus de détails.

Par exemple, voir https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma et http://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the- schwartz-zippel-lemma /

These algorithms apply if you are working over a finite field. You didn't state what field/ring you are working in, and whether you are are treating these expressions as formal expressions (e.g., polynomials as abstract objects) or as functions from FnF. If you are working over a finite field, the methods above apply immediately.

If you're treating the expressions as formal objects, then your expressions are equivalent to multivariate polynomials with integer coefficients. You can test equivalence of these by choosing a large random prime r and testing equivalence modulo r, i.e., in the field Z/rZ. Repeat this polynomially many times, with different random values of r, and you should get an efficient randomized algorithm for testing equivalence of these formal expressions.

D.W.
la source
1
On the other hand, it would be hard to prove that for each identically-zero expression, there is a not-too-long proof that the expression is identically zero.
@RickyDemer, grand point! Belle observation. J'ai interprété la question comme demandant de tester l'équivalence plutôt que de la prouver, mais c'est une très belle observation. (Si vous vouliez présenter une preuve d'équivalence dans la pratique, je soupçonne qu'il est possible d'exposer une telle preuve si vous êtes prêt à faire des hypothèses cryptographiques, pour une définition de la "preuve" - ​​par exemple, un schéma qui permet de modèle d'oracle aléatoire.)
DW
1
Merci! Je les traite comme des objets formels, sans inverses, division ou soustraction (mais en utilisant l'algèbre du secondaire pour cette question; semble plus susceptible d'être déjà résolu). Voulez-vous dire, continuez à choisir de grands nombres premiers aléatoiresr, and this is treating the expressions as if they were finite fields over the underlying set of integers [0..r1]? That wiki link says there's no known sub-exponential deterministic algorithm for this zero-testing. Do you know if that applies to my problem?
hyperpallium
1
@hyperpallium, yes exactly that's what I mean. Yes, I believe that applies to your problem, too. That's why I suggested a randomized algorithm -- there are efficient randomized algorithms, even though there are no known efficient deterministic algorithms.
D.W.
As pointed out in a comment above, the OP is not working in a finite field, but rather a commutative semiring. This means that additive inverses are not guaranteed to exist, so "subtracting" the expressions to check equality with zero is not a valid operation.
apnorton
0

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.

Ce qui précède n'est pas un argument formel ou rigoureux. Elle repose sur une hypothèse sur ce qui rend le problème difficile. Mais il ne me semble que la combinaison de termes fait que pour un problème plus facile - empêchant ainsi ce par le un coefficient de contrainte ne va pas rendre le sous - ensemble plus facile.

hyperpallium
la source