Тест асоціативності

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Тест асоціативності — перевірка бінарної операції на асоціативність. Наївна процедура перевірки, яка полягає у переборі всіх можливих трійок аргументів операції, вимагає часу, де  — розмір множини, над яким визначено операцію. Ранні тести асоціативності не давали асимптотичних покращень порівняно з наївним алгоритмом, проте дозволяли покращити час роботи в окремих випадках. Наприклад, Роберт Тарджан 1972 року виявив, що запропонований 1949 року тест Лайта дозволяє виконати перевірку за , якщо досліджувана бінарна операція оборотна (задає квазігрупу). Перший імовірнісний тест, що покращує час роботи з до , був запропонований 1996 року Шрідхаром Раджаґопаланом і Леонардом Шульманом[en]. 2015 року було запропоновано квантовий алгоритм[en], що перевіряє операцію на асоціативність за час , що є поліпшенням у порівнянні з пошуком Ґровера, що працює за [1].

Постановлення задачі[ред. | ред. код]

Наведена таблиця розміру , що описує замкнуту операцію на множині розміру , тобто операція задана своєю таблицею Келі, а разом з цією операцією утворює магму. Необхідно перевірити, що для будь-яких виконано (іншими словами, операція асоціативна). Будь-який детермінований алгоритм, який вирішує це завдання, вимагатиме не менше часу, бо кожна чарунка таблиці Келі має бути лічена хоча б раз. Повний перебір всіх трійок з перевіркою того, що рівність виконується для кожної трійки, потребує часу[2].

Мотивація[ред. | ред. код]

Перевірка асоціативності — одне з природних завдань, що виникають при роботі з таблицями Келі різних операцій[3]. Зокрема, така перевірка вбудована в системах комп'ютерної алгебри GAP[4] і Maple[5]. У найзагальнішому випадку існують операції, для яких усі трійки, крім однієї, є асоціативними — прикладом такої операції на елементах служить операція , така що , а для всіх інших елементів . Її єдиною неасоціативною трійкою є , оскільки [6]. Через існування таких операцій може скластися враження, що перевірка асоціативності вимагатиме обробки всіх можливих трійок і тому асимптотичне покращення часу роботи алгоритму неможливе[7]. З цієї ж причини наївний імовірнісний алгоритм, що перевіряє асоціативність випадковим чином обраних трійок, вимагатиме перевірок, щоб убезпечити досить низьку ймовірність помилки[8]. Однак запропонований Раджаґопаланом і Шульманом алгоритм показує, що цю оцінку можна покращити, і служить наочним прикладом того, як імовірнісні алгоритми можуть справлятися із завданнями, які виглядають складними для детермінованих алгоритмів — станом на 2020 рік детерміновані алгоритми, що вирішують це завдання за субкубічний час, невідомі[9].

Тест Лайта[ред. | ред. код]

1961 року Альфред Кліффорд[en] і Ґордон Престон[en] опублікували у книзі «Алгебраїчна теорія напівгруп» (англ. The Algebraic Theory of Semigroups) тест асоціативності, повідомлений одному з авторів доктором Лайтом 1949 року. Алгоритм полягає у розгляді для кожного операцій і . За визначенням, операція асоціативна якщо і тільки якщо (таблиці Келі операцій збігаються) для всіх [10]. Лайт звернув увагу, що якщо , тобто має породжувальну множину , то перевірку достатньо провести лише для [11][12].

Якщо у визначеннях вище і , то .

У гіршому випадку (наприклад, для операції максимуму) найменша породжувальна множина магми може складатися з елементів, тому тест доведеться провести для всіх елементів , що займе часу. 1972 року Роберт Тарджан звернув увагу на те, що тест Лайта може бути дієвим для перевірки того, чи задає задана операція групу[2]. Це пов'язано з тим, що для деяких спеціальних операцій, зокрема операцій, що задовольняють груповій аксіомі наявності зворотного елемента, завжди можна виділити породжувальну множину невеликого розміру[12].

Нехай у будь-яке рівняння виду має єдине рішення (тобто квазігрупа). Тоді в можна виділити породжувальну множину розміром не більше .

За визначенням, є квазігрупою якщо і тільки якщо її таблиця Келі є латинським квадратом, що може бути перевірено за час . Застосування до квазігрупи описаної вище процедури дозволяє своєю чергою детерміновано перевірити, чи є групою, за [13].

Тест Раджаґопалана — Шульмана[ред. | ред. код]

Першим субкубічним тестом став алгоритм типу Монте-Карло, запропонований 1996 року[14] Шрідхаром Раджагопаланом з Принстонського університету та Леонардом Шульманом[en] з Технологічного інституту Джорджії. Запропонована ними процедура вимагає часу, де  — найбільша припустима ймовірність помилки[3][7].

Алгоритм[ред. | ред. код]

Алгоритм використовує групоїдну алгебру[en]  — лінійний простір (алгебру) над двохелементним полем розмірності , базисні вектори якого відповідають усім різним елементам магми . Вектори такого простору мають вигляд

, де

Для них визначено операцію суми

, де позначає додавання і в

а також операція добутку

, де позначає добуток і у

Добуток векторів у такій алгебрі стає інтуїтивнішим, якщо вважати, що для будь-якої пари базисних векторів він визначений як , а твір будь-якої іншої пари векторів виходить «розкриттям дужок» та перегрупуванням доданків. Наприклад, для добуток має вигляд

а при підстановці виходить вираз, що відповідає загальному визначенню[8]. Для визначеної таким чином алгебри має місце наступна лема[15]:

Операція вихідної магми є асоціативною якщо і тільки якщо для будь-яких . Якщо операція не асоціативна, то ймовірність того, що вказана рівність буде виконана для випадкової рівномірно обраної трійки , не перевершує .

Для перевірки асоціативності вибираються випадкові , для котрих перевіряється . Така перевірка може бути здійснена за час , а для досягнення ймовірності помилки, яка не перевищує , достатньо зробити перевірок, що дає загальний час роботи [15].

Довільні операції[ред. | ред. код]

Підхід Раджаґопалана і Шульмана може бути узагальнений для перевірки тотожностей загального виду за умови, що кожна змінна зустрічається рівно один раз у лівій та правій частині тотожності[16].

Наприклад можна розглянути множину , на елементах якого задано три операції: «об'єднання» , «перетин» і «доповнення» . Необхідно перевірити, що . Для цього можна розглянути індуковані на операції

, і

і перевірити, що для цих операцій у вірно . У найзагальнішому вигляді процедуру можна охарактеризовати наступною теоремою[16]:

Нехай — кінцеві множини, а — набір операцій, визначених над кінцевими декартовими добутками цих множин, таких як операція визначена на множині , де арність операції . Тоді перевірка на істинність складеної з цих операцій тотожності, такої, що кожна змінна зустрічається в лівій та правій його частинах рівно один раз, може бути виконана за час , де — найбільший можливий розмір області визначення , — сумарна кількість використаних у тотожності операцій, — сумарна кількість змінних, — найбільша припустима ймовірність помилки.

У випадку операція має область визначення розміру , у зв'язку з чим і обчислювальна складність процедури набуває вигляду , тоді як наївна перевірка вимагала би операцій[16].

Даний результат може бути поліпшено, якщо замість розглядати алгебру для простого числа . У такому разі, за лемою Шварца — Зіппеля[en], ймовірність спростування невірної тотожності за одну ітерацію може бути поліпшено з до , що при відповідає константній імовірності і дозволяє покращити час роботи до [6].

Пошук свідка нетотожності[ред. | ред. код]

Алгоритм може бути модифікований для знаходження конкретного набору змінних, на яких не виконується тотожність. Наприклад, можна розглянути пошук неасоціативної трійки за час . Нехай для деяких відомо, що . Цим елементам можна порівняти трійку , таку що якщо , то також дорівнює , а якщо , то вибирається випадковим чином між и (так само для и ). Для ймовірності того, що , буде все ще правильна оцінка знизу , тому процедуру можна повторювати доти, доки кожен із елементів не матиме одиницю лише в одній з позицій, що відповідатиме шуканій неасоціативній трійці в [17].

Примітки[ред. | ред. код]

  1. Lee, Magniez, Santha, 2015
  2. а б Tarjan, 1972, p. 120
  3. а б Lipton, Regan, 2013
  4. IsAssociative. GAP - Reference Manual (англ.). The GAP Group. Архів оригіналу за 17 квітня 2021. Процитовано 1 вересня 2021.
  5. IsAssociative. Maple Help (англ.). Maplesoft. Архів оригіналу за 14 квітня 2021. Процитовано 14 серпня 2022.
  6. а б Rajagopalan, Schulman, 2000, p. 1162
  7. а б Sinclair, 2020
  8. а б Matoušek, Nešetřil, 2008
  9. Schulman, 2020
  10. Premchand, 1984, p. 257
  11. Clifford, Preston, 1961, pp. 7—8
  12. а б Rajagopalan, Schulman, 2000, pp. 1155—1156
  13. Rajagopalan, Schulman, 2000, pp. 1160—1161
  14. Rajagopalan, Schulman, 1996
  15. а б Rajagopalan, Schulman, 2000, pp. 1156—1157
  16. а б в Rajagopalan, Schulman, 2000, pp. 1158—1159
  17. Rajagopalan, Schulman, 2000, pp. 1159—1160

Література[ред. | ред. код]