是否有一种有效的表达式等效算法?


14

例如?xy+x+y=x+y(x+1)

这些表达式来自普通的高中代数,但仅限于算术加法和乘法(例如),没有逆,减法或除法运算。字母是变量。2+2=4;2.3=6

如果有帮助,我们可以禁止使用非数字表示的任何表达式;即不是也不是也不是:x 2 3 x 41x23x4

  • multilinear,除了以外没有其他:可以,但是不能,并且没有任何可以这样表示的东西完全扩展为乘积之和,例如,不是; X + X ý X 1 + X 1 Ÿ 1 X 2 + X 3 Ý 4 X X + Ý X 2 + ÿ1x+xyx1+x1y1x2+x3y4x(x+y)x2+y
  • 所有一个,除以外没有其他系数:可以,但,并且没有任何可以表示为的值,例如对乘积例如不是 ; 和 X + X ý 1 X + 1,X ý 2 X + 3 X ý 一个X + Ý + X + b 2 一个X + 一个ý + b X1x+xy1.x+1.xy2x+3xya(x+y)+x(a+b)2ax+ay+bx
  • 除了以外,没有常数:同样,在完全展开的乘积和中,例如,不是一个+ 1 + b + 1 一个+ b + 21(a+1)+(b+1)a+b+2

Q.是否有一种有效的算法来确定两个表达式是否相等?


为了说明这一点,这是一个效率低下的具有指数时间的蛮力算法:

将两个表达式完全展开为乘积和,可以很容易地检查它们的等效性(忽略顺序,因为通勤/关联可以重新排序)。

例如
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


这似乎是一个众所周知的问题-即使是高中生也要学会手动解决问题的方法。自动定理证明者/检验者也可以解决该问题,但是他们专注于更复杂的方面。

这是一个正在运行的在线自动定理证明器:http : //tryacl2.org/,它通过查找通勤/关联/分配等序列来显示等价关系:

xy+x+y=x+y(x+1)
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))--- 188步

y+x(y+1)=x+y(x+1)吗?
(thm (= (+ y (* x (+ y 1))) (+ x (* y (+ x 1))) ))-325步

这是我的第一个问题,所以请让我知道我是否选择了错误的位置,错误的标签,错误的描述/询问方式等。谢谢!
注意:此问题已根据评论进行了重写,
感谢所有响应者!我学到了很多。


3
这里的问题需要澄清。您在哪个领域作业?您的表达式元素或字段中的变量“ ”和“ b ” 是对象吗?它实际上是一个字段吗(即加法和乘法有反函数)?请注意,乘积之和无济于事,因为a 1 + b 1a 2 + b 2a n + b n具有指数级的项。ab(a1+b1)(a2+b2)(an+bn)
David Richerby 2014年

4
如果对象是变量,并且允许减法,那么您实质上是在询问多项式恒等式检验,该检验具有Schwartz-Zippel引理的随机多项式时间算法。 iff f x g x = 0并且基本思想是,多项式不相同为零不会有很多根,因此,如果您开始随机猜测根的话并找到很多根,则您的多项式很可能为零。f(x)=g(x)f(x)g(x)=0
David Richerby

2
令我惊讶的是,现在还没有人提到它,但是“如果是NP,我就不必担心寻找多项式算法”是没有意义的。P中的每个问题也在NP中。您可能想问问题是否是NP完全问题(或-hard问题)。
Tom van der Zanden 2014年

2
如果您在基础方面有所挣扎,我们的参考问题可能对您有所帮助。
拉斐尔

2
@hyperpallium在询问NP是否使用某种语言(即决策问题)之前,最好了解一下这是什么意思。拉斐尔链接到的参考问题也许会有所帮助。
Yuval Filmus 2014年

Answers:


9

您的问题减少了对多元多项式的零检验,为此有了有效的随机算法。

您的表达式都是多元多项式。显然,您的表达式是由以下规则构建的:(a)如果是变量,则x是表达式;(b)如果c是一个常数,则c是一个表达式;(c)如果e 1e 2是表达式,则e 1 + e 2e 1 e 2是表达式。如果这确实是您想要的,则每个表达式都是变量的多元多项式。xxcce1,e2e1+e2e1e2

现在,您想知道两个表达式是否相等。这相当于测试两个多元多项式是否相等:给定p 2x 1x n,您想知道这两个多项式是否相等。您可以通过减去它们并检查结果是否相同为零来进行测试:p1(x1,,xn)p2(x1,,xn)

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

现在当且仅当q是零多项式时等价。p1,p2q

测试是否相等为零是多元多项式的零测试问题。有有效的算法可以做到这一点。例如,一种示例算法是在许多x 1x n随机值上评估q x 1x n。如果找到x 1x n的值使得q x 1x n,则您知道qqq(x1,,xn)x1,,xnx1,,xnq(x1,,xn)q不等于零,即不相等。如果在多次试验后它们都为零,那么您可以得出结论:q等于零(如果q不等于零,则可以使所有这些试验得出零的概率呈指数降低)。您需要执行的迭代次数与q的次数有关;有关详细信息,请参见有关多项式身份测试的文献。p1,p2qqq

例如,请参阅https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemmahttp://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the- schwartz-zippel-lemma /

如果您在有限域上工作,则适用这些算法。您没有说明正在使用的字段/环,也没有说明将这些表达式视为形式表达式(例如,多项式作为抽象对象)还是函数。如果您在有限域上工作,上述方法将立即适用。FnF

如果将表达式视为形式对象,则表达式等效于具有整数系数的多元多项式。您可以通过选择一个较大的随机质数并测试等价模r来测试它们的等效性,即在字段Z / r Z中。使用不同的r随机值多次重复此多项式,您将获得一种有效的随机算法来测试这些形式表达式的等效性。rrZ/rZr


1
另一方面,很难证明对于每个相同的零表达式,没有一个太长的证据证明该表达式完全为零。

@RickyDemer,要点!很好的观察。我把这个问题解释为询问测试等效性而不是证明它,但这是一个很好的观察。(如果您想在实践中展示等价证明,我怀疑如果您愿意为“证明”的某些定义做出加密假设,那么展示这样的证明是可行的,例如,在随机预言模型。)
DW

1
谢谢!我将它们视为形式对象,没有求逆,除法或减法(但对这个问题使用高中代数;似乎更可能已经解决了)。您是说继续选择大的随机质数,这会将表达式视为是基础整数[ 0 .. r 1 ]上的有限字段吗?该Wiki链接说,没有用于这种零测试的次指数确定性算法。您知道这是否适用于我的问题吗?r[0..r1]
palpalium 2014年

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

跟踪问题中的一幂一系数一常数约束:

这些定义了多项式身份测试问题的一个子集。显然,可以使用解决一般问题的技术来解决它们。问题是它们是否形成更容易解决的子集。

(a+b)n(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.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.