, di mana q = 2n dan p(x) adalah polinom primitif berderajat n. Jadi dalam bentuk polinom, C adalah kode linear jika hanya jika untuk setiap kata kode c(x) = c0 + c1x + …+ cn-1xn−1 ∈ C maka berlaku xc(x) = cn-1xn + c0x + …+ cn-2xn−1 ∈ C. Agar kode siklik C invariant pada pergeseran siklik sehingga jika c(x) di dalam C, maka xc(x) diberikan dengan perkalian kongruen modulo xn − 1. Ini memberikan kesan bahwa teori yang tepat untuk mempelajari kode siklik adalah teori gelanggang hasil bagi Rn = GF(2)[x] / < xn − 1> Pembahasan di atas menunjukkan bahwa kode siklik adalah ideal dari Rn. Mempelajari kode siklik dalam GF(qn) sama dengan mempelajari kode siklik dalam Rn. Ini bergantung pada faktor xn − 1. Teorema 3.3 Kode linear C’ di dalam GF(qn) adalah siklik jika dan hanya jika C adalah ideal di dalam Rn. F.
Koset Siklotomik
Definisi 3.3 Misalkan n dan p adalah bilangan yang saling prima. Koset siklotomik dari p (p-koset siklotomik) modulo n yang memuat i didefinisikan sebagai berikut Ci = {i·pj mod n) ∈ Zn | j = 0, 1, 2, ..., m − 1} Subhimpunan {i1, i2, ...,it} ⊆ Zn disebut himpunan lengkap yang menyajikan (representasi) koset siklotomik q modulo n jika C i1 , C i2 ,..., C it saling lepas dan
U
t j =1
Ci = Zn. Untuk n = pm − 1, maka j
│Ci│≤ m. Bilangan bulat positif terkecil a sedemikian rupa sehingga qa = 1 mod n disebut order dari q modulo n dan diberi lambang ordn(q). Dalam tulisan ini, q = 2 dan n = 2m − 1 di mana m adalah derajat polinom primitif yang digunakan untuk mengkonstrusi lapangan hingga.
Teorema 3.4 Misalkan n adalah bilangan bulat positif yang relatif prima dengan q. Misalkan t = ordn(q), dan α adalah akar ke-n dari 1 ∈ GF(qt). (i) Untuk setiap bilangan bulat s dengan 0 ≤ s < n, polinom minimal dari αs atas GF(q) ( x − α i ) , dengan Cs adalah koset siklotomik q dari s modulo n. adalah M αs ( x) =
∏ i∈Cs
(ii)
Selanjutnya
( x n − 1) = ∏ M α s ( x ) s
adalah faktorisasi xn − 1 atas GF(q), di mana s berjalan sebagai representasi dari koset siklotomik q modulo n.
Contoh 3.4 Dari koset siklotomik untuk p = 2 dan dengan modulo n = 23− 1 = 7, faktorisasi dari x7 − 1 bisa diperoleh dengan menggunakan α, akar dari polinom primitif x3 + x + 1 sebagai berikut: C0 = {(0⋅2j mod 7) ∈ Zn, j = 0, 1, 2, ...} = {0} ⇒ diperoleh faktor (x − α0) = (x − 1)
C1 = {(1⋅2j mod 7) ∈ Zn, j = 0, 1, 2, ...} = {1, 2, 4} = C2 = C4, ⇒ diperoleh faktor (x − α)(x − α2)(x − α3) = x3 + x + 1 C3 = {(3⋅2j mod 7) ∈ Zn, j = 0, 1, 2, ...} = {3, 5, 6} = C5 = C6 ⇒ diperoleh faktor (x − α3)(x − α5)(x − α6) = x3 + x2 + 1 Himpunan {0, 1, 3} adalah himpunan lengkap dari representasi dari koset siklotomik dari 2 modulo 7. G. Dimensi dan Matriks Paritas Kode Siklik Teorema 3.5 Jika I adalah ideal tak kosong di dalam Rn maka polinom monik tak nol dengan derajat terkecil di di dalam I, namakan g(x); adalah sebuah generator dari I. Dengan kata lain Rn adalah daerah ideal utama. Lebih jauh, g(x) membagi xn - 1. Baris-baris matriks pengecekan paritas dari kode C bisa dinyatakan sebagai
g ( x) xg ( x) H= ... n −k x g ( x) atau jika g(x) = g0 + g1x + … + gn−kxn−k , gi ∈ GF(q); maka g0 0 H= 0
g1 L g n − k g 0 g1 L 0
L
(3.1)
0 gn−k
0 0
g0
g1
0
L g n − k
L L
0 0 M
(3.2).
Teorema 3.6 Misalkan g(x) = g0 + g1x +…+ gn−kxn−k adalah polinom generator dari kode siklik C pada GF(qn) dengan gn−k ≠ 0, maka ekspresi (3.1) dan (3.2) merupakan dua cara penyajian matriks generator kode C ⊆ Rn Contoh 3.5 Diberikan kode siklik biner-[7, 4] dengan polinom generator g(x) = 1 + x + x3. Maka kode ini memiliki matriks generator:
1 0 G= 0 0
1 0 1 0 0 0 g ( x) 1 1 0 1 0 0 xg ( x) ≈ 0 1 1 0 1 0 x 2 g ( x) 0 0 1 1 0 1 x 3 g ( x)
Definisi 3.4 n −1
Misalkan h(x) =
∑h x i=0
i
i
adalah polinom berderajat k (hk ≠0) atas lapangan GF(q), polinom
terbalik (reciprocal polynomial) hR(x) dari h(x) didefinisikan: hR(x) = xkh(x−1) =
n −1
∑h i =0
k −i
xi
Contoh 3.6 Misalkan terdapat polinom h(x) = 1 + 2x + 3x5 + x7 ∈ GF(5)[x], maka hR(x) = x7h(x−1) = x7(1 + 2x−1 + 3x−5 + x−7) = x7 + 2x6 + 3x2 + 1 = 1 + 3x2 + 2x6 + x7
Teorema 3.7 Misalkan C =
hk 0 0
hk −1 hk 0
L h0 0 hk −1 L h0 L
0
hk
0 0 hk −1
0 0 M L h0
L L
Contoh 3.7 Kode-[7, 4, 3] adalah kode yang ekuivalen dengan kode Hamming H3. dengan polinom generator g(x) = 1 + x2 + x3. Jika h(x) = (x7−1)/g(x) = (x7−1)/1 + x2+x3 = 1 + x2+x3 + x4, maka hR = 1 + x +x2 + x4 adalah polinom cek paritas dari kode C sehingga kode ini memiliki matriks cek paritas:
1 1 1 0 1 0 0 H= 0 1 1 1 0 1 0 0 0 1 1 1 0 1 H. Konstruksi Kode Siklik Untuk mengkosntruksi suatu kode siklik, dapat dilihat dari matriks generatornya atau daari penjabaran aljabar polinom generatornya. Teorema 3.8 Kode C ⊆ Rn siklik jika C memenuhi dua kondisi (i) a(x), b(x) ∈ C ⇒ a(x) + b(x) ∈ C (ii) a(x) ∈ C, r(x) ∈ Rn ⇒ r(x)a(x) ∈ C. Contoh 3.8 Misalkan terdapat kode dengan matriks generator yang membangun kode C (7,3) sebagai berikut
1 0 1 1 1 0 0 G= 0 1 0 1 1 1 0 0 0 1 0 1 1 1 memiliki kata kode c1 = 1011100, c2 = 0101110, c3 = 0010111, c1 + c2 = 1110010, c1 + c3 = 1001011 c2 + c3 = 0111001, c1 + c2 + c3 = 1100101. Kode ini siklik karena pergeseran siklik dari baris pertama memberikan semua vektor kode tak nol dari kode linear, c1 → c2 , c2 → c3 , c3 → c1 + c3 , c1 + c3 → c1 + c2 + c3 , c1 + c2 + c3 → c1 + c2 , c1 + c2 → c2 + c3 , c2 + c3 → c1 . Jarak minimum kode adalah 4. Jadi kode ini adalah kode siklik C[7, 3, 4]. Misalkan F2[x] adalah polinom dengan koefisien dari GF(2) dan GF(2)[x]/<x7 − 1> adalah himpunan polinom sisa hasil bagi dari GF(2)[x] oleh x7 − 1. Misalkan g(x) = 1 + x2 + x3 + x4 adalah polinom generator yang membangun kode, yaitu polinom irreduksi berderajat 4 yang membagi x7 − 1. Perhatikan polinom r(x)g(x) = a0 + a1x + a2x2 + a3x3 + a4x4 + a5x5 + a6x6, dengan r(x) adalah polinom yang berderajat kurang dari 3.
Selanjutnya polinom hasil kali r(x)g(x) dinyatakan sebagai vektor kode 0⋅g(x) = 0 ≡ (0000000) 1⋅g(x) = 1 + x2 + x3 + x4 ≡ (1011100) x⋅g(x) = x + x3 + x4 + x5 ≡ (0101110) (1 + x)⋅g(x) = 1 + x + x2 + x5 ≡ (1110010) x2⋅g(x) = x2 + x4 + x5 + x6 ≡ (0010111) (1 + x2)⋅g(x) = 1 + x3 + x5 + x6 ≡ (1001011) (x + x2)⋅g(x) = x + x2 + x3 + x6 ≡ (0111001) (1 + x + x2)⋅g(x) = 1 + x + x4 + x6 ≡ (1100101) Secara umum dapat diambil polinom r(x) berderajat i mod (x7 − 1), sehingga
n −1 n−1 n −1 r ( x ) g ( x ) = ∑ ri xi ∑ gi xi ≡ ∑ ci xi mod (x7 − 1) i =0 i =0 i =0 untuk setiap ci ∈ F. I.
Kode Hamming adalah Kode Siklik Perhatikan matriks H = [1
α
α2
αn−1]
...
Selanjutnya tulis setiap unsur αj dalam bentuk polinom derajat < n = pm − 1 kemudian tulis kembali ke bentuk kolom dengan m komponen. Misalkan C adalah kode biner dengan matriks cek paritas H. 1.
2.
H adalah matriks cek paritas dari C jika baris-baris matriks H bebas linear. Untuk menunjukkan H bebas linear, nyatakan setiap αj dalam bentuk kolom biner panjang m. Jadi H adalah matriks m × n. Perhatikan bahwa kolom m pertama dari H berbentuk matriks identitas (αj = 1.αj untuk 0 ≤ j ≤ m − 1) sehingga H berbentuk matriks kolom tereduksi. Akan ditunjukkan bahwa C adalah kode Hamming Karena {αj : 0 ≤ j ≤ n − 1} = {1, α, α2, ..., α 2 − 2 } = GF(2m)\{0} dapat dilihat bahwa kolom-kolom di H semuanya tak nol dengan panjang m sehingga mewakili semua bilangan tak nol (dalam basis 10) dari 1 sampai dengan 2m − 1. Jadi menurut definisi kode Hamming, maka kode C adalah kode Hamming c ∈ C jika dan hanya jika α adalah akar dari polinom kode c(x) = c0 + c1x + ... + cn−1xn−1 yang bersesuaian dengan vektor kode c. Fakta ini bisa diverifikasi karena c ∈ C ⇔ HcT = 0 ⇔ [1 α α2 ... αn−1][ c0 c1 ... cn−1]T = 0 ⇔ c0·1 + c1·α + ... + cn−1·αn−1 = 0 ⇔ c(α) = 0. C adalah kode siklik. Misalkan c ∈ C disajikan sebagai polinom c(x) = c0 + c1x + ... + cn−1xn−1. Misalkan c’ adalah hasil pergeseran siklik dari c yang disajikan sebagai polinom c'(x) ≡ xc(x) mod (xn − 1). Ini berarti c'(x) = xc(x) + a(x)(xn − 1) untuk suatu polinom a(x) ∈ GF(2)[x]. Jadi c'(α) = αc(α) + a(α)(αn − 1). Karena c ∈ C, maka sesuai pembahasan di bagian 3, c(α) = 0. Juga karena α adalah unsur dengan order n, maka αn = 1 dan αn − 1 = 0. Akibatnya c'(α) = αc(α) + a(α)(αn − 1) =α·0 + a(α)·0 = 0 Menurut hasil di bagian 3, c' ∈ C. Jadi C adalah kode siklik. C adalah ideal utama. Akan dibuktikan bahwa terdapat polinom g(x) ∈ F2(x)/<xn − 1> sedemikian hingga setiap polinom kode c(x) = c0 + c1x + ... + cn−1xn−1 yang bersesuaian dengan vektor kode c ∈ C adalah kelipatan dari polinom g(x) tersebut. m
3.
4.
5.
6.
7.
8.
Pilih polinom g(x) sebagai polinom dengan derajat terkecil yang memenuhi g(α) = 0. Pilih sembarang c ∈ C dan misalkan polinom kode c(x) = c0 + c1x + ... + cn−1xn−1 bersesuaian dengan vektor kode c. Berdasarkan algoritma hasil bagi Euclid (dalil sisa), terdapat polinom q(x) dan r(x) sedemikian sehingga c(x) = q(x)g(x) + r(x) dengan r(x) = 0 atau derajat r(x) < derajat g(x). Seandainya, r(x) ≠ 0 maka derajat r(x) < derajat g(x) dan lebih jauh dari sifat tertutup C (terhadap +) r(x) = c(x) − q(x)g(x) = c(x) + q(x)g(x) ∈ C. Menurut hasil di bagian 3, r(α) = 0. Hasil ini kontradiksi dengan definisi g(x) sebagai polinom dengan derajat terendah yang memenuhi g(α) = 0. Jadi r(x) = 0 dan c(x) = q(x)g(x). Terbukti, untuk setiap polinom kode c(x) = c0 + c1x + ... + cn−1xn−1 yang bersesuaian dengan vektor kode c ∈ C, terdapat polinom q(x) yang memenuhi c(x) = q(x)g(x). Polinom generator g(x) dari kode C adalah polinom minimal Sesuai hasil di bagian 5, setiap unsur di dalam kode linear C adalah kelipatan dari polinom g(x) yang disebut polinom generator dari C. Misalkan M(x) adalah polinom minimal untuk α atas GF(2), sehingga M(x) adalah polinom derajat terkecil yang memiliki akar α dan setiap polinom yang juga memiliki akar α habis dibagi oleh M(x). Karena g(α) = 0 maka dari sifat minimal polinom M(x), maka M(x) membagi g(x). Sebaliknya n = 2m − 1 di mana deg(M(x)) = m < n dan M(α) = 0, disimpulkan M(x) ∈ C. Ini berarti polinom generator g(x) membagi M(x) ∈ C. Dari kedua hasil di atas, bahwa M(x) membagi g(x) dan g(x) membagi M(x) terbukti bahwa g(x) = M(x). Jadi polinom generator dari C adalah polinom minimal dari α atas GF(2) yang berderajat m. Hasil ini juga menegaskan bahwa dimensi dari C adalah n − m = 2m − 1 − m. Misalkan w = (w0, w1, ...,wn−1) ∈ GF(2)n. Akan dibuktikan bahwa w ∈ C jika dan hanya jika w(α) = 0 sebagai berikut w ∈ C ⇔ HwT = 0 ⇔ [1 α α2 ... αn−1][ w0 w1 ... wn−1]T = 0 ⇔ w0 · 1 + w1 · α + ... + wn−1 · αn−1 = 0 ⇔ w(α) = 0 Kesimpulannya bahwa C adalah kode siklik. Misalkan c ∈ C, maka c'(x) ≡ xc(x) mod (xn − 1) jadi c'(x) = xc(x) + a(x) (xn − 1) untuk suatu polinom a(x) ∈ GF(2)[x]. Sehingga c'(α) ≡ αc(α) + a(α) (αn − 1) karena c ∈ C, maka diperoleh c(α) = 0 (sesuai pembahasan di bagian 3). Karena α adalah unsur dengan order n, maka αn = 1 dan αn − 1 = 0. Jadi c'(α) = 0. Sehingga c' ∈ C (oleh (3)). Jadi C adalah kode siklik. Misalkan g(x) adalah polinom generator dari C dan M(x) adalah polinom minimal untuk α atas GF(2). Karena g(x) ∈ C, maka dari bagian 3 diperoleh bahwa g(α) = 0 sehingga M(x) ∈ C sehingga M(α) = 0. Dari sifat minimal polinom M(x), maka M(x) membagi g(x). Juga karena deg(M(x)) = m < n dan M(α) = 0 disimpulkan M(x) ∈ C. Dengan demikian polinom generator g(x) membagi M(x) ∈ C. Jadi M(x) membagi g(x) dan g(x) membagi M(x). Karena M(x) dan g(x) keduanya monik, haruslah g(x) = M(x). Jadi polinom generator dari C adlah polinom minimal dari α atas GF(2) dan berderajat m. Sehingga dimensi dari C adalah n − m = 2m − 1 − m.
4. Penutup Kesimpulan yang dapat diambil dari tulisan ini adalah 1. Konsep ruang vektor atas lapangan F2, khususnya ruang vektor F2n = GF(2n) dan konsep ideal prima adalah konsep terpenting di dalam pembahasan kode linear biner. Konsep perkalian vektor baris dengan matriks digunakan untuk merentang (dalam bahasa pengkodean: encoding) vektorvektor panjang k menjadi vektor-vektor kode yang panjangnya n > k. Konsep sistem persamaan
2.
3. 4.
5.
linear digunakan untuk menentukan matriks paritas H jika matriks generator G diketahui, dan sebaliknya. Kode linear biner [n, k, d] adalah subruang dari F2n berdimensi k dengan panjang kode n dan jarak minimum d. Khususnya, kode Hamming (tak siklik) Hm bisa diperoleh dari matriks paritas kode tersebut yang berukuran m × (2m − 1), di mana kolom-kolom matriks paritas menyajikan bilangan 1, 2, …, 2m − 1 dalam biner. Kesalahan perubahan bit dari vektor kode c ∈ C menjadi vektor v panjang n bisa dideteksi jika v ∉ C. Sindrom dari vektor kode selalu merupakan vektor 0, sindrom dari bukan vektor kode bukan vektor 0. Sindrom dari vektor dengan kesalahan bit menggunakan matriks paritas H yang kolomkolomnya menyajikan bilangan-bilangan 1, 2, ..., 2m−1, m adalah banyak kolom H; menunjukkan posisi bit yang salah. Kode siklik bisa dinyatakan secara aljabar sebagai sebuah ideal di gelanggang GF(2n)[x]/<xn − 1> yang dibangun oleh suatu polinom generator g(x) dimana g(x) membagi xn − 1. Khusus untuk kode Hamming siklik, generatornya adalah salah satu polinom minimal untuk suatu unsur α di dalam GF(2n).
Daftar Pustaka Adams, Sarah Spence. Introduction to Algebraic Coding Theory. Fall. 2006 Blahut, Richard E. Algebraic Codes for Data Transmission. New York: Cambridge Press. 2003 Haryanto, Loeky, Amir Kamal Amir. 2012. Bahan Ajar untuk Pasca Sarjana (S2) Aljabar Linear Lanjut. Makassar: Universitas Hasanuddin Ling, San, Chaoping Xing. 1999. Coding Theory. New York: Cambridge Press. 2004 Lint, J.H. van. Introduction to Coding Theory. Berlin: Springer Purser, Michael. 1995. Introduction to Error-Correcting Codes. London: Artech House Pretzel, Oliver. 1992. Error-Correcting Codes and Finite Fields. London: Clarendon Press Skorobogatov, Alexei. Rings and Fields (Lectures). London Vanstone, Scott A., Paul C. van Oorcshot. 1989. An Introduction to Error Correcting Codes With Applications. London: Kluwer Academic Publisher http://personal.fmipa.itb.ac.id/ebaskoro/files/2008/02/bukukoding.pdf [diakses pada tanggal 2 September 2012 pukul 21.13]