Чи існує ефективний алгоритм еквівалентності виразів?


14

наприклад, xy+x+y=x+y(x+1) ?

Вирази походять із звичайної алгебри середньої школи, але обмежуються арифметичним складанням і множенням (наприклад, ), без обертів, віднімання чи ділення. Букви є змінними.2+2=4;2.3=6

Якщо це допомагає, ми можемо заборонити будь-який вираз, представлений із числовими значеннями, відмінними від ; тобто не ані ані :x 2 3 x 41x23x4

  • багатолінійні , ніякі повноваження, окрім : в порядку, але не , і не все, що могло бути представлене як таке, як у повне розширення на суму продуктів, наприклад, не ; x + x y x 1 + x 1 y 1 x 2 + x 3 y 4 x ( x + y ) x 2 + y1x+xyx1+x1y1x2+x3y4x(x+y)x2+y
  • все одне , ніяких коефіцієнтів, окрім : є нормальним, але не , і не що-небудь, що могло б бути представлене таким чином, як у повному розширенні на суму- продукти, наприклад, не ; і x + x y 1. x + 1. x y 2 x + 3 x y a ( x + y ) + x ( a + b ) 2 a x + a y + b x1x+xy1.x+1.xy2x+3xya(x+y)+x(a+b)2ax+ay+bx
  • немає констант, окрім : знову ж таки, у повністю розширеній кількості продуктів, наприклад, не( a + 1 ) + ( b + 1 ) a + 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
Питання тут потребує певного уточнення. Над яким полем ви працюєте? Чи є об'єкти типу " " і " " у ваших виразах елементами поля чи змінних? Це насправді поле (тобто чи додавання та множення мають обертання)? Зауважте, що сума продуктів не допомагає, оскільки експоненційно багато термінів. ab(a1+b1)(a2+b2)(an+bn)
Девід Річербі

4
Якщо об'єкти є змінними, і віднімання дозволено, то ви, по суті, запитуєте про тестування поліноміальної ідентичності, що має алгоритм рандомизованого поліноміального часу за леммою Шварца-Зіппеля . ifff(x)=g(x) і основна ідея полягає в тому, що многочлен, який не є однаково нульовим, не має багатьох коренів, тому якщо ви починаєте відгадувати коріння навмання і знайдіть багато коренів, велика ймовірність того, що ваш многочлен був однаково нульовим. f(x)g(x)=0
Девід Річербі

2
Я здивований, що ніхто ще не згадав про це, але "якщо він знаходиться в НП, мені не потрібно турбуватися про пошук поліноміального алгоритму" не має сенсу. Кожна проблема в Р також в NP. Ви, мабуть, хотіли запитати, чи проблема неповна (або -тверда).
Том ван дер Занден

2
Якщо ви боретеся з основами, наші довідкові запитання можуть бути корисними для вас.
Рафаель

2
@hyperpallium Перш ніж запитати, чи є мова (тобто проблема вирішення) в NP, краще, якщо ви зрозуміли, що це означає. Можливо, допоможуть відповідні запитання, з якими пов’язаний Рафаель.
Yuval Filmus

Відповіді:


9

Ваша проблема зводиться до нульового тестування багатоваріантних многочленів, для яких існують ефективні рандомізовані алгоритми.

Ваші вирази - це багатовимірні многочлени. Мабуть, ваші вирази побудовані за такими правилами: (а) якщо - змінна, то x - вираз; (b) якщо c - константа, то c - вираз; (c) якщо e 1 , e 2 - вирази, то e 1 + e 2 і e 1 e 2 - вирази. Якщо це дійсно те, що ви задумали, кожен вираз є багатовимірним многочленом над змінними.xxcce1,e2e1+e2e1e2

Тепер ви хочете знати, чи є два вирази рівнозначними. Це означає тестування того, чи є два багатофакторні многочлени еквівалентними: задані і p 2 ( x 1 , ... , x n ) , ви хочете знати, чи ці два поліноми рівнозначні. Ви можете перевірити це, віднімаючи їх і перевіряючи, чи результат однаковий нуль: визначтеp1(x1,,xn)p2(x1,,xn)

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

Тепер еквівалентні тоді і тільки тоді, коли q - нульовий многочлен.p1,p2q

Тестування того, чи однаково дорівнює нулю, є проблемою нульового тестування для багатофакторних многочленів. Для цього існують ефективні алгоритми. Наприклад, одним із прикладних алгоритмів є оцінка q ( x 1 , , x n ) за багатьма випадковими значеннями x 1 , , x n . Якщо ви знайдете значення x 1 , , x n таке, що q ( x 1 , , x n ) , то ви знаєте, що qqq(x1,,xn)x1,,xnx1,,xnq(x1,,xn)qне ідентично дорівнює нулю, тобто не є еквівалентом. Якщо після багатьох випробувань всі вони дорівнюють нулю, то можна зробити висновок, що q однаково нульовий (якщо q не однаково нульовий, ймовірність того, що всі ці випробування дають нуль, можуть бути експоненціально низькими). Кількість ітерацій, які потрібно зробити, пов'язана зі ступенем q ; Детальну інформацію див. у літературі щодо тестування поліноміальної ідентичності.p1,p2qqq

Наприклад, див. Https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma та http://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the- schwartz-zippel-lema /

Ці алгоритми застосовуються, якщо ви працюєте над обмеженим полем. Ви не стан , яке поле / кільце ви працюєте, і ви лікуєте ці вирази як формальні вирази чи (наприклад, поліноми як абстрактні об'єкти) або як функції від . Якщо ви працюєте над обмеженим полем, наведені вище методи застосовуються негайно.FnF

Якщо ви розглядаєте вирази як формальні об'єкти, то ваші вирази еквівалентні багатоваріантним многочленам з цілими коефіцієнтами. Ви можете перевірити еквівалентність цих вибираючи великий випадковий простий і тестування еквівалентності по модулю р , тобто в поле Z / г Z . Повторіть це многочлена багато разів, з різними випадковими значеннями r , і ви повинні отримати ефективний рандомізований алгоритм для перевірки еквівалентності цих формальних виразів.rrZ/rZr


1
З іншого боку, важко буде довести, що для кожного однаково-нульового виразу існує не надто довгий доказ того, що вираз однаково дорівнює нулю.

@RickyDemer, чудовий момент! Приємне спостереження. Я трактував питання як запитання про тестування на еквівалентність, а не про доведення цього, але це дуже приємне спостереження. (Якщо ви хотіли показати доказ еквівалентності на практиці, я підозрюю, що доцільно виставити такий доказ, якщо ви готові робити криптографічні припущення, для деякого визначення поняття "доказ" - наприклад, схеми, яка досягає надійності в випадкова модель оракула.)
DW

1
Спасибі! Я розглядаю їх як формальні об'єкти, без зворотів, ділення чи віднімання (але використання алгебри середньої школи для цього питання; швидше за все, здається, це вже вирішено). Ви маєте на увазі, продовжуйте вибирати великі випадкові прості числа , і це трактує вирази так, ніби вони були скінченними полями над базовим набором цілих чисел [ 0 .. r - 1 ] ? Це посилання на вікі говорить, що для цього нульового тестування не існує відомого субекспоненціального детермінованого алгоритму. Чи знаєте ви, чи це стосується моєї проблеми? r[0..r1]
гіперпалій

1
@hyperpallium, так саме це я маю на увазі. Так, я вважаю, що це стосується і вашої проблеми. Ось чому я запропонував рандомізований алгоритм - є ефективні рандомізовані алгоритми, навіть невідомі ефективні детерміновані алгоритми.
DW

Як було зазначено в коментарі вище, ОП працює не в обмеженому полі, а скоріше в комутативному семирингу. Це означає, що додаткові інверси не гарантовано існують, тому "віднімання" виразів для перевірки рівності з нулем не є дійсною операцією.
apnorton

0

Для того, щоб стежити на один потужності , один-Коефіцієнт і один-постійних обмежень в питанні:

Вони визначають підмножину проблеми тестування поліноміальної ідентичності. Зрозуміло, що їх можна вирішити технікою, яка вирішує загальну проблему. Питання полягає в тому, чи утворюють вони підмножину, яку легше вирішити.

(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 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.