Лінійна програма

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

Шаблон:Не плутати В інформатиці лінійна програма — неформально, програма, яка не містить жодного циклу чи будь-яких перевірок та складається з послідовності кроків, на яких кожна операція виконується над попередньо обчисленими значеннями.

У цій статті розглянуто випадок, коли дозволеними операціями є операції групи, тобто множення та інверсія. Конкретніше, лінійна програма (ЛП) для скінченної групи G=S — це скінченна послідовність L елементів G, така що кожен елемент L або належить S, є оберненим до попереднього елемента або є добутком двох попередніх елементів. Кажуть, що ЛП L обчислює груповий елемент gG якщо gL, де g закодовано словом із S та оберненими до нього.

Інтуїтивно зрозуміло, що лінійне обчислення деякого gG — ефективний спосіб збереження g як слова групи над S; зауважте, що якщо g побудовано за i кроків, довжина слова g може бути експоненційною за i, але довжина відповідної ЛП є лінійною за i. Це має важливе застосування в теорії обчислювальних груп, у вигляді використання ЛП для ефективного кодування елементів групи як слів над даною твірною множиною.

Лінійні програми представили 1984 року Бабай та Семереді[1] як засіб для вивчення обчислювальної складності певних властивостей матричних груп. Вони довели, що кожен елемент скінченної групи G має ЛП довжини O(log2|G|) в кожній твірній множині.

Ефективне розв'язання конструктивної задачі належності має вирішальне значення для багатьох теоретико-групових алгоритмів. З погляду ЛП це можна викласти так. Дано скінченну групу G=S і gG, потрібно знайти ЛП, що обчислює g над S. Конструктивну задачу належності часто вивчають у групі чорної скриньки. Елементи кодують бітовими рядками фіксованої довжини. Для теоретико-групових функцій множення, інверсії та перевірки рівності з тотожністю надаються три оракули. Алгоритм чорної скриньки використовує лише ці оракули. Отже, лінійні програми для груп чорної скриньки є алгоритмами чорної скриньки.

Явні лінійні програми для багатьох скінченних простих груп подано в онлайновому Шаблон:Нп .

Визначення

Неформальне визначення

Нехай G — скінченна група і S — підмножина G. Послідовність L=(g1,...,gm) елементів G є лінійною програмою над S, якщо кожне gi можна отримати за одним із таких трьох правил:

  1. giS
  2. gi=gjgk для деяких j,k<i
  3. gi=gj1 для деякого j<i.

Лінійна вартість c(g|S) елемента gG — це довжина найкоротшої лінійної програми над S, що обчислює g. Вартість нескінченна, якщо g не входить до підгрупи, породженої S.

Лінійна програма схожа на виведення в логіці предикатів. Елементи S відповідають аксіомам, а групові операції — правилам виведення.

Формальне визначення

Нехай G — скінченна група і S — підмножина G. Лінійна програма довжини m над S, яка обчислює деяке gG, це послідовність виразів (w1,...,wm), де для кожного i wi є символом деякого елемента S, або wi=(wj,1) для деякого j<i, або wi=(wj,wk) для деякого j,k<i, така, що wm набуває значення g при оціненні в G в очевидний спосіб.

Оригінальне визначення, наведене в[2], вимагає, щоб G=S. Наведене вище визначення є його узагальненням.

З погляду обчислень, формальне визначення лінійної програми має деякі переваги. По-перше, послідовність абстрактних виразів потребує менше пам'яті, ніж Шаблон:Прояснити. По-друге, це дозволяє будувати лінійні програми в одному представленні G і обчислювати в іншому. Це важлива особливість деяких алгоритмів[2].

Приклади

Діедрична група D12 є групою симетрій шестикутника. Її можна створити поворотом ρ на 60 градусів і одним відбиттям λ. Крайній лівий стовпець наведеного нижче є лінійною програмою для λρ3:  Шаблон:Col-begin Шаблон:Col-break

  1. λ
  2. ρ
  3. ρ2
  4. ρ3
  5. λρ3

Шаблон:Col-break

  1. λ — твірна.
  2. ρ — твірна.
  3. Друге правило: (2).(2)
  4. Друге правило: (3).(2)
  5. Друге правило: (1).(4)

Шаблон:Col-end У групі перестановок із шести літер S6твірними можна взяти α=(1 2 3 4 5 6) і β=(1 2). Крайній лівий стовпець тут є прикладом лінійної програми для обчислень (1 2 3)(4 5 6):Шаблон:Col-begin Шаблон:Col-break

  1. a
  2. b
  3. ab
  4. abb
  5. ababb
  6. ababbb
  7. (abb)18
  8. (abb)−18
  9. (abb)−18b
  10. (abb)−18b(abb)18
  11. (ababb)14
  12. (ababb)−14
  13. (ababb)−14ababbb
  14. (ababb)−14ababbb(ababb)14

Шаблон:Col-break

  1. a — твірна.
  2. b — твірна.
  3. Друге правило: (1).(2)
  4. Друге правило: (3).(2)
  5. Друге правило: (3).(4)
  6. Друге правило: (5).(2)
  7. Друге правило ітеровано: (4) повторено 18 разів
  8. Третє правило: (7) обернення
  9. Друге правило: (8).(2)
  10. Друге правило: (9).(7)
  11. Друге правило ітеровано: (5) повторено 14 разів
  12. Третє правило: (11) обернення
  13. Друге правило: (12).(6)
  14. Друге правило: (13).(11)

Шаблон:Col-end

Застосування

Короткі описи скінченних груп. Лінійні програми можна використовувати для вивчення стиснення скінченних груп за допомогою логіки першого порядку. Вони надають засіб для побудови «коротких» речень, що описують G (тобто значно коротших, ніж |G|). Детальніш, ЛП використовують, щоб довести, що кожна скінченна проста група має опис першого порядку довжини O(log|G|), а кожна скінченна група G має опис першого порядку довжини O(log3|G|)[3].

Лінійні програми обчислення твірних для максимальних підгруп скінченних простих груп. Онлайновий АТЛАС представлень скінченних груп[4] містить абстрактні лінійні програми для обчислення твірних наборів максимальних підгруп для багатьох скінченних простих груп.

Приклад: група Sz(32), що належить до нескінченної сім'ї Шаблон:Нп, має ранг 2 через твірні a і b, де a має порядок 2, b має порядок 4, ab має порядок 5, ab2 має порядок 25 і abab2ab3 має порядок 25. Нижче наведено лінійну програму, яка обчислює твірний набір для максимальної підгрупи E32E32C31. Цю лінійну програму можна знайти в онлайновому АТЛАСІ представлень скінченних груп.Шаблон:Col-begin Шаблон:Col-break

  1. α
  2. β
  3. α2
  4. α2β
  5. α2βα
  6. α2βαβ
  7. α2βαβα2βαβ

Шаблон:Col-break

  1. (1 2 3 4 5 6)
  2. (1 2)
  3. (1 3 5)(2 4 6)
  4. (1 3 5 2 4 6)
  5. (1 4)(2 5 3 6)
  6. (1 4 2 5 3 6)
  7. (1 2 3)(4 5 6)

Шаблон:Col-break

  1. α — твірна
  2. β — твірна
  3. Друге правило: (1).(1)
  4. Друге правило: (3).(2)
  5. Друге правило: (4).(1)
  6. Друге правило: (5).(2)
  7. Друге правило: (6).(6)

Шаблон:Col-end

Теорема про досяжність

Теорема про досяжність стверджує, що для скінченної групи G, породженої S, кожна gG має максимальну вартість (1+lg|G|)2. Це можна розуміти як обмеження того, наскільки складно згенерувати елемент групи з генераторів.

Тут функція lg(x) — це цілочисельна версія функції логарифма: нехай для k1 lg(k)=max{r:2rk}.

Ідея доведення полягає в тому, щоб побудувати множину Z={z1,...,zs}, яка працюватиме як нова твірна множина (s буде визначено в процесі). Зазвичай вона більша за S, але будь-який елемент G можна виразити як слово довжини щонайбільше 2|Z| над Z. Множина Z будується індуктивним визначенням зростальної послідовності множин K(i).

Нехай K(i)={z1α1z2α2...zjαj:αi{0,1}}, де zi — елемент групи, доданий до Z на i-му кроці. Нехай c(i) позначає довжину найкоротшої лінійної програми, яка містить Z(i)=z1,...,zi. Нехай K(0)=1G і c(0)=0. Ми визначаємо множину Z рекурсивно:

  • Якщо K(i)1K(i)=G, оголосимо s рівним i, і зупинимося.
  • В іншому випадку виберемо деяке zi+1GK(i)1K(i) (яка непорожня), яке мінімізує «збільшення вартості» c(i+1)c(i).

За допомогою цього процесу Z визначається так, що будь-яке gG можна записати як елемент K(i)1K(i), що фактично полегшує генерування із Z.

Тепер, щоб переконатися, що процес завершується протягом lg(|G|) кроків, потрібно перевірити таке твердження:

Шаблон:Теорема Шаблон:Доведення1  Наступне твердження використовують, щоб показати, що вартість кожного елемента групи міститься в необхідних межах. Шаблон:Теорема Шаблон:Доведення1 Для створення g1K(i)1K(i) потрібно щонайбільше 2i кроків. Немає сенсу генерувати елемент максимальної довжини, оскільки це тотожність. Отже, достатньо 2i1 кроків. Для створення g1g2GK(i)1K(i) достатньо 2i кроків.

Тепер закінчуємо теорему. Оскільки K(s)1K(s)=G, будь-яке gG можна записати у вигляді k11k2, де k11,k2K(s). Згідно з наслідком 2, нам потрібно щонайбільше s2s кроків, щоб згенерувати Z(s)=Z, і не більше 2s1 кроків, щоб згенерувати g із Z(s).

Тому c(g|S)s2+s1lg2|G|+lg|G|1(1+lg|G|)2.

Примітки

Шаблон:Reflist

  1. Babai, László, and Endre Szemerédi. «On the complexity of matrix group problems I.» Foundations of Computer Science, 1984. 25th Annual Symposium on Foundations of Computer Science. IEEE, 1984
  2. 2,0 2,1 Ákos Seress. (2003). Permutation Group Algorithms. [Online]. Cambridge Tracts in Mathematics. (No. 152). Cambridge: Cambridge University Press.
  3. Шаблон:Cite journal
  4. Шаблон:Cite web