Bagian 9.5 Sage
Dukungan Sage untuk membuat isomorfisma secara langsung masih terbatas, meskipun hal itu dapat dilakukan. Namun, Sage menyediakan dukungan yang sangat baik untuk menentukan apakah dua grup permutasi isomorfik. Hal ini memungkinkan kita memulai proyek kecil untuk menemukan semua grup berorde kurang dari \(16\) di antara grup-grup permutasi Sage.
Subbagian 9.5.1 Pengujian Isomorfisma
Jika
G dan H adalah dua grup permutasi, maka perintah G.is_isomorphic(H) akan mengembalikan True atau False sesuai dengan apakah kedua grup tersebut isomorfik atau tidak. Karena “isomorfik dengan” merupakan relasi ekuivalensi berdasarkan Teorema 9.1.10, tidak menjadi masalah grup mana yang berperan sebagai G dan mana yang berperan sebagai H.
Agar kita memiliki beberapa contoh tambahan untuk dikerjakan, mari kita perkenalkan perintah Sage yang membuat hasil kali langsung eksternal. Jika
G dan H adalah dua grup permutasi, maka perintah direct_product_permgroups([G,H]) akan mengembalikan hasil kali langsung eksternal sebagai grup permutasi baru. Perhatikan bahwa perintah ini merupakan suatu fungsi (bukan metode) dan masukannya berupa daftar. Bukan hanya dua grup dalam daftar yang dapat digabungkan; berapa pun jumlah grup dapat diberikan. Kita mengilustrasikan pengujian isomorfisma dan hasil kali langsung dalam konteks Teorema 9.2.9, yang merupakan suatu ekuivalensi, sehingga memberi tahu kita secara tepat kapan grup-grup tersebut isomorfik. Kita menggunakan grup permutasi siklik sebagai pengganti \({\mathbb Z}_n\) berdasarkan Teorema 9.1.8.
Pertama, dua grup isomorfik.
Kode Sage (cadangan statis)
m = 12 n = 7 gcd(m, n)
Keluaran referensi (cadangan statis)
1
Kode Sage (cadangan statis)
G = CyclicPermutationGroup(m) H = CyclicPermutationGroup(n) dp = direct_product_permgroups([G, H]) K = CyclicPermutationGroup(m*n) K.is_isomorphic(dp)
Keluaran referensi (cadangan statis)
True
Sekarang, dua grup takisomorfik.
Kode Sage (cadangan statis)
m = 15 n = 21 gcd(m, n)
Keluaran referensi (cadangan statis)
3
Kode Sage (cadangan statis)
G = CyclicPermutationGroup(m) H = CyclicPermutationGroup(n) dp = direct_product_permgroups([G, H]) K = CyclicPermutationGroup(m*n) K.is_isomorphic(dp)
Keluaran referensi (cadangan statis)
False
Perhatikan bagaimana perhitungan sederhana faktor persekutuan terbesar dapat memprediksi perhitungan luar biasa rumit untuk menentukan apakah dua grup isomorfik. Ini merupakan ilustrasi yang bagus mengenai kekuatan matematika, yang menggantikan masalah sulit (isomorfisma grup) dengan masalah sederhana (faktorisasi dan keterbagian bilangan bulat). Mari kita bentuk satu lagi hasil kali langsung grup-grup siklik, kali ini dengan tiga grup, yang orde-ordenya relatif prima secara berpasangan.
Jika Anda mencoba perintah berikut dengan parameter yang lebih besar, Anda mungkin mendapatkan galat (
database_gap).
Kode Sage (cadangan statis)
m = 6 n = 5 r = 7 G = CyclicPermutationGroup(m) H = CyclicPermutationGroup(n) L = CyclicPermutationGroup(r) dp = direct_product_permgroups([G, H, L]) K = CyclicPermutationGroup(m*n*r) K.is_isomorphic(dp)
Keluaran referensi (cadangan statis)
True
Subbagian 9.5.2 Mengklasifikasikan Grup Hingga
Setelah kita memahami grup-grup isomorfik sebagai grup yang “sama”, atau “pada dasarnya tidak berbeda,” atau “identik secara struktural,” wajar untuk menanyakan berapa banyak grup hingga yang “benar-benar berbeda”. Korolari 9.1.9 memberikan jawaban parsial: untuk setiap bilangan prima hanya ada satu grup hingga, dengan \({\mathbb Z}_p\) sebagai perwujudan konkretnya.
Mari kita memulai pencarian semua grup berorde kurang dari \(16\) dalam Sage sebagai grup permutasi. Untuk orde prima \(1,2,3,5,7,11\) dan \(13\text{,}\) kita mengetahui bahwa masing-masing hanya memiliki satu grup, dan kita dapat merealisasikan semuanya:
Kode Sage (cadangan statis)
[CyclicPermutationGroup(p) for p in [1, 2, 3, 5, 7, 11, 13]]
Keluaran referensi (cadangan statis)
[Cyclic group of order 1 as a permutation group, Cyclic group of order 2 as a permutation group, Cyclic group of order 3 as a permutation group, Cyclic group of order 5 as a permutation group, Cyclic group of order 7 as a permutation group, Cyclic group of order 11 as a permutation group, Cyclic group of order 13 as a permutation group]
Jadi, kasus terkecil yang belum kita ketahui sekarang adalah orde \(4\text{.}\) Sage mengenal setidaknya tiga grup semacam itu, dan kita dapat menggunakan Sage untuk memeriksa apakah sebarang pasangan grup tersebut isomorfik. Perhatikan bahwa karena “isomorfik dengan” merupakan relasi ekuivalensi, dan dengan demikian relasi transitif, dua pengujian di bawah ini sudah cukup.
Kode Sage (cadangan statis)
G = CyclicPermutationGroup(4) H = KleinFourGroup() T1 = CyclicPermutationGroup(2) T2 = CyclicPermutationGroup(2) K = direct_product_permgroups([T1, T2]) G.is_isomorphic(H)
Keluaran referensi (cadangan statis)
False
Kode Sage (cadangan statis)
H.is_isomorphic(K)
Keluaran referensi (cadangan statis)
True
Jadi, kita memiliki setidaknya dua grup berbeda: \({\mathbb Z}_4\) dan \({\mathbb Z}_2\times{\mathbb Z}_2\text{,}\) dengan grup yang terakhir juga dikenal sebagai grup empat Klein. Sage tidak akan dapat memberi tahu kita apakah daftar yang kita miliki sudah lengkap — hal ini akan selalu memerlukan hasil teoretis seperti Teorema 9.1.10. Tidak lama lagi kita akan memperoleh hasil yang lebih umum untuk menangani kasus orde \(4\text{,}\) tetapi untuk saat ini, analisis cermat (secara manual) atas kemungkinan tabel Cayley suatu grup berorde \(4\) seharusnya mengantar Anda pada dua kemungkinan di atas sebagai satu-satunya kemungkinan. Cobalah menyimpulkan seperti apa seharusnya tabel Cayley dari grup berorde \(4\text{,}\) karena Anda telah mengetahui elemen identitas, invers, dan kanselasi.
Kita telah melihat setidaknya dua grup berorde \(6\) (orde takprima berikutnya dalam daftar kita). Yang satu abelian dan yang lain tidak, sehingga kita tidak memerlukan Sage untuk memberi tahu bahwa keduanya berbeda secara struktural. Namun, mari kita tetap melakukannya.
Kode Sage (cadangan statis)
G = CyclicPermutationGroup(6) H = SymmetricGroup(3) G.is_isomorphic(H)
Keluaran referensi (cadangan statis)
False
Apakah hanya itu? Ada \({\mathbb Z}_3\times{\mathbb Z}_2\text{,}\) tetapi grup ini hanyalah \({\mathbb Z}_6\) karena \(2\) dan \(3\) relatif prima. Grup dihedral \(D_3\text{,}\) yakni semua simetri suatu segitiga, hanyalah \(S_3\text{,}\) grup simetris pada \(3\) simbol.
Kode Sage (cadangan statis)
G = DihedralGroup(3) H = SymmetricGroup(3) G.is_isomorphic(H)
Keluaran referensi (cadangan statis)
True
Latihan 9.4.55 dari bagian ini mengklasifikasikan semua grup berorde \(2p\text{,}\) dengan \(p\) suatu bilangan prima. Grup semacam itu bersifat siklik atau merupakan grup dihedral. Jadi, kedua grup di atas, \({\mathbb Z}_6\) dan \(D_3\text{,}\) merupakan daftar lengkap grup berorde \(6\text{.}\)
Berdasarkan hasil umum ini, selain untuk orde \(6\text{,}\) kita juga mengetahui daftar lengkap grup berorde \(10\) dan \(14\text{.}\) Bersambung.
Subbagian 9.5.3 Hasil Kali Langsung Internal
Hasil kali langsung internal merupakan pernyataan tentang subgrup-subgrup dari satu grup, beserta suatu teorema yang menghubungkan subgrup-subgrup tersebut dengan hasil kali langsung eksternal. Di sini kita akan mengerjakan contoh yang mengilustrasikan sifat hasil kali langsung internal.
Untuk suatu bilangan bulat \(n\text{,}\) himpunan bilangan bulat positif yang kurang dari \(n\) dan relatif prima terhadap \(n\) membentuk grup terhadap perkalian modulo \(n\text{.}\) Kita akan bekerja dalam himpunan
Integers(n), tempat kita dapat menjumlahkan dan mengalikan, tetapi kita hanya ingin menggunakan perkalian.
Pertama-tama kita bentuk subgrupnya. Perhatikan bahwa kita harus mengonversi
x menjadi bilangan bulat (elemen dari ZZ) agar perhitungan faktor persekutuan terbesar berjalan dengan benar.
Kode Sage (cadangan statis)
Z36 = Integers(36) U = [x for x in Z36 if gcd(ZZ(x), 36) == 1] U
Keluaran referensi (cadangan statis)
[1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35]
Jadi, kita memiliki grup berorde \(12\text{.}\) Kita akan mencoba menemukan subgrup berorde \(6\) dan subgrup berorde \(2\) untuk membentuk hasil kali langsung internal, dan pada awalnya kita akan membatasi pencarian pada subgrup siklik berorde \(6\text{.}\) Sage memiliki metode yang akan memberikan orde setiap elemen ini terhadap perkalian, jadi mari kita periksa hasilnya.
Kode Sage (cadangan statis)
[x.multiplicative_order() for x in U]
Keluaran referensi (cadangan statis)
[1, 6, 6, 6, 3, 2, 2, 6, 3, 6, 6, 2]
Kita memiliki banyak pilihan pembangkit untuk subgrup siklik berorde \(6\) dan subgrup siklik berorde \(2\text{.}\) Tentu saja, beberapa pilihan pembangkit subgrup berorde \(6\) akan membangkitkan subgrup yang sama. Dapatkah Anda menentukan, hanya dengan menghitung, ada berapa banyak subgrup berorde \(6\text{?}\) Tanpa alasan khusus, kita akan memilih elemen pertama yang berorde \(6\) dan elemen terakhir yang berorde \(2\text{.}\) Setelah Anda mengerjakan ini sekali, kami menganjurkan Anda mencoba pilihan lain untuk memahami mengapa beberapa pilihan menghasilkan hasil kali langsung internal sedangkan pilihan lain tidak. Perhatikan bahwa kita memilih elemen dari daftar
U untuk memastikan bahwa elemen-elemen tersebut merupakan anggota Z36 dan berperilaku sebagaimana mestinya ketika dikalikan.
Kode Sage (cadangan statis)
a = U[1] A = [a^i for i in srange(6)] A
Keluaran referensi (cadangan statis)
[1, 5, 25, 17, 13, 29]
Kode Sage (cadangan statis)
b = U[11] B = [b^i for i in srange(2)] B
Keluaran referensi (cadangan statis)
[1, 35]
Jadi,
A dan B merupakan dua subgrup siklik. Perhatikan bahwa irisan keduanya adalah elemen identitas, yang merupakan salah satu syarat hasil kali langsung internal. Jadi, ini merupakan awal yang baik.
Kode Sage (cadangan statis)
[x for x in A if x in B]
Keluaran referensi (cadangan statis)
[1]
Z36 merupakan grup abelian, sehingga syarat komutatif bagi semua hasil kali akan terpenuhi, tetapi kita mengilustrasikan perintah Sage yang akan memeriksa syarat ini dalam situasi nonabelian.
Kode Sage (cadangan statis)
all([x*y == y*x for x in A for y in B])
Keluaran referensi (cadangan statis)
True
Terakhir, kita perlu memeriksa bahwa dengan membentuk hasil kali elemen-elemen dari
A dan B, kita memperoleh seluruh grup. Mengurutkan daftar yang dihasilkan akan memudahkan pemeriksaan secara visual, dan langkah ini diperlukan jika kita ingin Sage melakukan pemeriksaan tersebut.
Kode Sage (cadangan statis)
T = sorted([x*y for x in A for y in B]) T
Keluaran referensi (cadangan statis)
[1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35]
Kode Sage (cadangan statis)
T == U
Keluaran referensi (cadangan statis)
True
Selesai. Sekarang kita padatkan semua informasi ini menjadi pernyataan bahwa “
U merupakan hasil kali langsung internal dari A dan B.” Berdasarkan Teorema 9.2.15, kita melihat bahwa U isomorfik dengan hasil kali suatu grup siklik berorde \(6\) dan suatu grup siklik berorde \(2\text{.}\) Jadi, dalam arti yang sangat nyata, U tidak lebih ataupun kurang rumit daripada \({\mathbb Z}_6\times{\mathbb Z}_2\text{,}\) yang selanjutnya isomorfik dengan \({\mathbb Z}_3\times{\mathbb Z}_2\times{\mathbb Z}_2\text{.}\) Dengan demikian, kita memahami sepenuhnya “struktur” U. Sebagai contoh, kita dapat melihat bahwa U tidak siklik, karena ketika ditulis sebagai hasil kali grup-grup siklik, kedua ordenya tidak relatif prima. Bentuk akhir U menunjukkan bahwa Anda dapat menemukan tiga subgrup siklik dari U, yang berorde \(3\text{,}\) \(2\text{,}\) dan \(2\text{,}\) sedemikian sehingga U merupakan hasil kali langsung internal dari ketiga subgrup tersebut.

