Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Комп'ютерна алгебра.Навчально-методичний посібн...doc
Скачиваний:
17
Добавлен:
24.08.2019
Размер:
683.01 Кб
Скачать

4 Операції над групами і їх елементами

4.1 Завдання групи підстановок

Даний розділ присвячений операціям над групами і їх елементами. Визначення і необхідні теоретичні відомості можуть бути знайдені в [2, 3, 5, 6, 8]. Приведені нижче приклади використовують групи підстановок, але більшість використовуваних в них функцій (в т.ч. Group, Size, Sylowsubgroup ) застосовуються і до інших використовуваних в GAP видам груп, для кожного з яких обчислення проводяться по спеціальному алгоритму.

Задамо групу підстановок, яка породжується (записаними у вигляді твору незалежних циклів) підстановками (1 2) і (1 2 3 4 5 6 7 8). Ця група є не що інше, як симетрична група S8:

gap> s8:= Group( (1,2), (1,2,3,4,5,6,7,8) ); Group( (1,2), (1,2,3,4,5,6,7,8) )

4.2 Завдання підгрупи групи підстановок

Група S8 містить знакозмінну групу A8, яка може бути задана як підгрупа, що складається з парних підстановок, або як її коммутант:

gap> a8 := Derivedsubgroup( s8 ); Group([ (1,2,3), (2,3,4), (2,4)(3,5), (2,6,4), (2,4)(5,7), (2,8,6,4)(3,5) ])

Якщо звернення до об'єкту відбувається часто, зручно привласнити йому ім'я. В цьому випадку при наступних зверненнях до об'єкту замість його уявлення виводитиметься на друк його ім'я:

gap> Setname(a8,"a8"); gap> a8; A8

Не дивлячись на відсутність зв'язку між ім'ям і ідентифікатором, їх бажано вибирати погоджено.

4.3 Прості властивості групи. Силовськие підгрупи.

Вивчимо групу a8. Вона є об'єктом, список відомих властивостей і атрибутів якого можна отримати таким чином:

gap> Knownpropertiesofobject(a8); [ "Isfinite", "Caneasilycompareelements", "Caneasilysortelements", "Isduplicatefree", "Isgeneratorsofmagmawithinverses", "Isassociative", "Isfinitelygeneratedgroup", "Issubsetlocallyfinitegroup", "Knowshowtodecompose", "Ischaintypegroup", "Isstabchainviachainsubgroup" ] gap> Knownattributesofobject(a8); [ "Name", "Oneimmutable", "Largestmovedpoint", "Parentattr", "Generatorsofmagmawithinverses", "Multiplicativeneutralelement", "Stabchainmutable", "Stabchainoptions" ]

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

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

gap> Size( a8 ); 20160 gap> time; 63 gap> Size( a8 ); 20160 gap> time; 4

Тепер перевіримо, чи є група абельовой і досконалою:

gap> Isabelian( a8 ); Isperfect( a8 ); false true

Порівняємо тепер список відомих властивостей і атрибутів з первинним і побачимо, що додалися до них нові:

gap> Knownpropertiesofobject(a8); [ "Isempty", "Istrivial", "Isnontrivial", "Isfinite", "Caneasilycompareelements", "Caneasilysortelements", "Isduplicatefree", "Isgeneratorsofmagmawithinverses", "Isassociative", "Iscommutative", "Isfinitelygeneratedgroup", "Issubsetlocallyfinitegroup", "Knowshowtodecompose", "Isperfectgroup", "Ischaintypegroup", "Isstabchainviachainsubgroup" ] gap> Knownattributesofobject(a8); [ "Name", "Size", "Oneimmutable", "Largestmovedpoint", "Parentattr", "Generatorsofmagmawithinverses", "Trivialsubmagmawithone", "Multiplicativeneutralelement", "Derivedsubgroup", "Stabchainmutable", "Stabchainoptions" ]

Тепер отримаємо список простих дільників порядку групи:

gap> Set( Factors( Size( a8 ))); [ 2, 3, 5, 7 ]

Для кожного з простих дільників p обчислимо силовськую p-подгруппу і надрукуємо її порядок:

gap> for p in last do > Print(p " - ", Size(Sylowsubgroup(a8,p)),"\n"); > od; 2 - 64 3 - 9 5 - 5 7 - 7

Досліджуємо силовськую 2-подгруппу. Позначимо її syl2:

gap> syl2:=sylowsubgroup(a8,2); Group([ (1,8)(5,7), (2,6)(5,7), (3,4)(5,7), (3,5)(4,7), (1,2)(6,8), (1,3)(2,5)(4,8)(6,7) ])

Тепер обчислимо її нормалізатор в a8:

gap> Normalizer( a8, syl2 ); Group([ (1,8)(3,4), (2,6)(3,4), (3,4)(5,7), (3,7)(4,5), (1,6)(2,8), (1,7)(2,4)(3,6)(5,8) ])

Перевіримо, що він збігається з нею самою:

gap> last = syl2; true

Обчислимо центр підгрупи syl2:

gap> Centre(syl2); Group([ (1,8)(2,6)(3,4)(5,7) ])

Знайдемо централізатор cent останньої підгрупи в a8, тобто підгрупу елементів а8, перестановочних з кожним елементом центру групи syl2:

gap> cent:= Centralizer( a8, last ); Group([ (3,4)(5,7), (3,5)(4,7), (2,3)(4,6), (1,2)(6,8) ])

Знайдемо його порядок:

gap> Size( cent ); 192

Обчислимо ряд коммутантов cent:

gap> Derivedseries(cent); [ Group([ (3,5)(4,7), (2,5,3)(4,6,7), (1,3)(2,5)(4,8)(6,7), (1,2)(3,5)(4,7)(6,8), (3,4)(5,7), (2,6)(3,4), (1,8)(2,6)(3,4)(5,7) ]), Group([ (2,5,3)(4,6,7), (1,3)(2,5)(4,8)(6,7), (1,2)(3,5)(4,7)(6,8), (3,4)(5,7), (2,6)(3,4), (1,8)(2,6)(3,4)(5,7) ]), Group([ (1,3)(2,5)(4,8)(6,7), (1,2)(3,5)(4,7)(6,8), (3,4)(5,7), (2,6)(3,4), (1,8)(2,6)(3,4)(5,7) ]), Group([ (1,8)(2,6)(3,4)(5,7) ]), Group(())]

Останній елемент отриманого списку - тривіальна підгрупа, тому cent - вирішувана група.

Порядки підгруп, що входять в ряд коммутантов (похідний ряд) зручно отримати таким чином:

gap> List( last, Size ); [ 192, 96, 32, 2, 1 ]

Обчислимо тепер нижній центральний ряд групи cent:

gap> Lowercentralseries(cent); [ Group([ (3,4)(5,7), (3,5)(4,7), (2,3)(4,6), (1,2)(6,8) ]), Group([ (2,5,3)(4,6,7), (1,3)(2,5)(4,8)(6,7), (1,2)(3,5)(4,7)(6,8), (3,4)(5,7), (2,6)(3,4), (1,8)(2,6)(3,4)(5,7) ])]