式の等価性のための効率的なアルゴリズムはありますか?


14

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

式は普通の高校の代数からのものですが、逆数、減算、除算のない算術加算と乗算(例)に制限されています。文字は変数です。2+2=4;2.3=6

役立つ場合は、以外の数値で表現可能な式を禁止できます。すなわち、でもでもでもない:1x23x4

  • multilinear、以外の累乗:はOKですが、ではなく、aのように表現できるものではありません積和への完全展開。 1x+xyx1+x1y1x2+x3y4x(x+y)x2+y
  • all one、以外の係数はありません:はOKですが、ではなく、そのように表現できるものはありません -of-製品例 ; そして X + X Y 1 、X + 1 、X 、Y 2 、X + 3 、X 、Y 、A X + Y + X +のB 2 A X + Y + 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. 2つの式が同等かどうかを判断する効率的なアルゴリズムはありますか?


例として、指数関数的な時間を使用した非効率的なブルートフォースアルゴリズムを次に示します。

両方の式をsum-of-productsに完全に展開します。これは等価性を簡単に確認できます(通勤/関連付けは順序を変更できるため、順序を無視してください)。

例:
(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 nab(a1+b1)(a2+b2)(an+bn)
デビッドリチャービー

4
オブジェクトが変数であり、減算が許可されている場合、本質的には、Schwartz–Zippel lemmaによるランダム化された多項式時間アルゴリズムを備えた多項式同一性テストについて尋ねています。 iffあり、基本的な考え方は、まったくゼロではない多項式には多くの根がないため、根をランダムに推測し始める場合そして多くの根を見つけると、多項式がまったくゼロである可能性が高くなります。f x g x = 0f(x)=g(x)f(x)g(x)=0
デビッドリチャービー

2
誰もまだこれについて言及していないことに驚いていますが、「NPにある場合、多項式アルゴリズムを見つけることを心配する必要はありません」は意味がありません。Pの問題はすべてNPにもあります。おそらく、問題がNP完全(または-hard)であるかどうかを尋ねるつもりでした。
トム・ファン・デル・ザンデン

2
基本に苦労している場合は、参考質問が役立つかもしれません。
ラファエル

2
@hyperpallium言語(つまり、意思決定の問題)がNPにあるかどうかを尋ねる前に、これが何を意味するかを理解しておくことが最善です。おそらく、Raphaelがリンクした参考質問が役立つでしょう。
ユヴァルフィルマス14年

回答:


9

問題は、効率的なランダム化アルゴリズムがある多変量多項式のゼロテストになります。

式はすべて多変量多項式です。どうやら、あなたの式は次のルールによって構築されます:(a)が変数の場合、は式です。(b)が定数の場合、は式です。(c)が式の場合、およびは式です。それが本当にあなたが意図したものである場合、すべての式は変数の多変量多項式です。x c c e 1e 2 e 1 + e 2 e 1 e 2xxcce1,e2e1+e2e1e2

ここで、2つの式が同等かどうかを知りたいと思います。これは、2つの多変量多項式が同等かどうかをテストすることになりますおよび与えられた場合、これら2つの多項式が同等かどうかを知りたいです。これらを減算し、結果がまったくゼロであるかどうかを確認することで、これをテストできます。p 2x 1x np1(x1,,xn)p2(x1,,xn)

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

今あれば等価であり、場合にのみ、多項式はゼロです。 qp1,p2q

がゼロであるかどうかのテストは、多変量多項式のゼロテスト問題です。そのための効率的なアルゴリズムがあります。例えば、一つの例アルゴリズムは、評価することである、多くのランダムな値で。ような値を見つけた場合、がまったくゼロではないことがわかります。つまり、は同等ではありません。多くの試行の後、それらがすべてゼロである場合、はまったくゼロであると結論付けることができます(q x 1x nx 1x n x 1x n q x 1x nq p 1p 2 q q qqq(x1,,xn)x1,,xnx1,,xnq(x1,,xn)qp1,p2qqこれらの試行のすべてがゼロになる確率は、指数関数的に低くすることができます)。行う必要のある反復回数は、の次数に関連しています。詳細については、多項式同一性テストに関する文献を参照してください。q

たとえば、https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemmaおよびhttp://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the-を参照してくださいschwartz-zippel-lemma /

これらのアルゴリズムは、有限体で作業している場合に適用されます。どのフィールド/リングで作業しているか、およびこれらの式を形式的な式(たとえば、多項式を抽象オブジェクトとして)として扱っているのか、関数として扱っているのか。有限体で作業している場合、上記の方法はすぐに適用されます。FnF

式を正式なオブジェクトとして扱う場合、式は整数係数を持つ多変量多項式と同等です。あなたは、大規模なランダムプライム選択することで、これらの等価性をテストすることができ剰余同値とテスト、すなわち、フィールド内の。異なるランダム値を使用して、この多項式を何度も繰り返します。これらの式の等価性をテストするための効率的なランダム化アルゴリズムを取得する必要があります。r Z / r Z rrrZ/rZr


1
一方、同一のゼロ式ごとに、その式がゼロであるという長すぎない証拠があることを証明するの難しいでしょう。

@RickyDemer、素晴らしい点!素敵な観察。私はこの質問を、同等性を証明するのではなく、テストすることを求めていると解釈しましたが、それは非常に良い観察です。(実際に等価性の証明を提示したい場合、「証明」の定義のために、暗号化の仮定をする意思がある場合、そのような証明を提示することは可能だと思います。例えば、ランダムオラクルモデル。)
DW

1
ありがとう!私はそれらを逆、除算または減算なしの正式なオブジェクトとして扱っています(ただし、この質問には高校の代数を使用しています。すでに解決されている可能性が高いようです)。つまり、大きなランダム素数選択し続けると、式は整数の基集合上の有限体であるかのようにますか?そのwikiリンクは、このゼロテストのための既知のサブ指数決定論的アルゴリズムはないことを示しています。それが私の問題に当てはまるかどうか知っていますか?[ 0 .. r 1 ]r[0..r1]
hyperpallium

1
@hyperpallium、はい、まさにそれが私の言いたいことです。はい、それはあなたの問題にも当てはまると思います。それが、私がランダム化アルゴリズムを提案した理由です。効率的な決定論的アルゴリズムは知られていませんが、効率的なランダム化アルゴリズムがあります。
DW

上記のコメントで指摘したように、OPは有限体ではなく、可換半環で動作しています。これは、加法逆数の存在が保証されていないことを意味します。そのため、式を「減算」してゼロとの等価性をチェックすることは有効な操作ではありません。
アプノートン14年

0

問題の1乗1係数1定数の制約をフォローアップするには:

これらは、多項式同一性テストの問題のサブセットを定義します。明らかに、それらは一般的な問題を解決する手法で解決できます。問題は、それらがより簡単に解決されるサブセットを形成するかどうかです。

1係数:これがない問題では、用語が組み合わされて問題が簡単になる場合があります。の二項定理/パスカルの三角形を考えます。これは、重複注文と用語などを生産、一度に一つの要因を拡張することができます少ないという用語は、それが簡単に拡大することにします次の要因:そして再び用語が結合され、より単純な問題が作成されます。この用語の組み合わせは、動的プログラミングの形式です。+のB +のB = A 、A + A 、B + B + B 、B = A + 2 、B + BのB A + 2 B + B B a + b = a a a + 2 a(a+b)n(a+b)(a+b)=aa+ab+ab+bb=aa+2ab+bb(aa+2ab+bb)(a+b)=aaa+2aab+abb+aab+2abb+bbb=aaa+3aab+3abb+bbb

つまり、項を結合し、1以外の係数を作成する可能性があるため、問題が難しくなることはありません。

(ただし、1以外の係数を乗算する計算には、より多くの作業があります)

定数を指数ゼロの変数とみなすことにより、上記の引数に1でない定数が含まれます。

ワンパワーこれが違いを生むとは思いません。1以外の指数は複数の方法で作成できますが(たとえば)、これによりオーバーラップと結合が発生する可能性があります(上記の二項定理/パスカルの三角形のように) )、実際の組み合わせは、1以外の係数が許可されている場合にのみ可能です。a4=a2a2=a1a3

上記は正式なまたは厳密な議論ではありません。何が問題を難しくしているのかという前提に基づいています。しかし、用語を結合することは簡単な問題にしかならないように思えます。したがって、1つの係数制約によってこれを防止しても、サブセットが容易になるわけではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.