Kode Siklik (Cyclic Codes)
Kode Siklik (Cyclic Codes)
KODE SIKLIK
(CYCLIC CODES)
1.1 Pendahuluan
Salah satu bahasan yang paling penting pada linear codes adalah cyclic codes
(kode siklik). Secara umum kode ini lebih mudah untuk diimplementasikan dan
mempunyai aplikasi yang luas. Dilihat dari sudut pandang teori aljabar, kode ini sangat
menarik untuk dipelajari. Banyak dari kode-kode yang diturunkan dari cyclic code. Kita
mulai dengan membahas tentang pendefinisian suatu cyclic subspace.
Definisi
Suatu subruang S atas Vn ( F ) disebut cyclic subspace (subruang siklik) jika
Dengan kata lain, S merupakan suatu subspace dan untuk setiap vektor a ∈ S ,
setiap cyclic shift (pergeseran siklik) juga berada di dalam S.
Definisi
Suatu linear code C disebut cyclic codes (kode siklik) jika C merupakan cyclic
subspace.
Contoh 1.
1) S = {( 0000 )} ⊆ V4 ( Z 2 ) merupakan cyclic subspace.
Setiap cyclic shift (pergeseran siklik) dari codeword (0111) tidak berada di
dalam S. S juga bukan merupakan subspace, sebab di dalam S tidak tertutup terhadap
penjumlahan.
Definisi
Suatu ring komutatif dengan unity ( R, +, ∗) adalah suatu struktur aljabar yang
terdiri dari suatu himpunan R dan dua operasi biner yang dinotasikan dengan + dan *
yang memenuhi sifat-sifat untuk semua a, b, c ∈ R.
Dari 3) dapat dikonstruksikan suatu ring dengan elemen yang berhingga sebagai
berikut. Diberikan sebarang polynomial tidak nol f ( x) ∈ F [ x], didefinisikan dua
polynomial h( x), g ( x) ∈ F [ x] , h(x) dan g(x) disebut kongruen atas polynomial modulo
f(x) jika dan hanya jika f(x) membagi h(x) – g(x), yaitu h(x) dan g(x) mempunyai sisa
yang sama apabila dibagi dengan f(x). Kongruensi ini membentuk relasi ekuivalensi dan
membentuk partisi-partisi, dengan klas-klas ekuivalensi memuat g(x) yang dinotasikan
dangan [g(x)] kemudian didefinisikan sebagai
[ g ( x)] = {h( x) : h( x) ≡ g ( x) (mod f ( x))} .
Maka ( R, +,*) merupakan ring dan disebut dengan ring polynomial atas F modulo
f(x).
jika
1) ( I, +) merupakan grup, dan
ideals dari ring polynomial atas F modulo x n − 1 dan cyclic subspace atas Vn ( F ) .
Salah satu cara untuk mengkonstruksi suatu ideal adalah sebagai berikut. Ambil
sebarang g ∈ R, g ≠ 0 dan bentuk
I = { g * r : r ∈ R} .
Mudah untuk menunjukkan bahwa I adalah ideal. I dsebut dengan ideal yang
dibangun oleh g. Tetapi tidak selalu mungkin untuk mengkonstruksi semua ideal dari
suatu ring dengan cara seperti itu. Apabila ring R mempunyai sifat bahwa untuk
sebarang ideal I atas R terdapat suatu elemen g ∈ I sehingga I = { g * r : r ∈ R} , maka R
Teorema 1.1
F[x] merupakan suatu principal ideal ring.
Teorema 1.2
F[x]/(f(x)) merupakan suatu principal ideal ring.
Contoh 3.
Diberikan R = Z 2 [ x] /( f ( x)) dengan f ( x) = x 6 − 1 dan himpunan
I = {0,1 + x 2 + x 4 , x + x 3 + x5 ,1 + x + x 2 + x3 + x 4 + x 5 } .
v( x) = a0 + a1 x + ... + an −1 x n −1.
Selanjutnya, untuk mendefinisikan suatu operasi perkalian vektor, kita pilih polynomial
f ( x) = x n − 1∈ F [ x] . Kemudian, untuk v1 , v2 ∈ Vn ( F ) , diberikan
dari klas-klas ekuivalensi [v1 ( x)v2 ( x)] atas F [ x]/( f ( x)) . Dengan kata lain, v( x ) adalah
v( x) = a0 + a1 x + ... + an −1 x n −1
xv( x) = a0 x + a1 x 2 + ... + an −1 x n .
Teorema 1.3
Suatu subset tak kosong S atas Vn ( F ) merupakan suatu cyclic subspace jika dan
hanya jika himpunan polynomial I yang diasosiasikan dengan S merupakan suatu ideal
dari ring R atas polynomial yang diasosiasikan dengan Vn ( F ) .
Teorema 1.4
Diberikan ideal I tak nol pada Vn ( F ) dan diberikan monic polynomial g ( x)
dengan derajad yang merepresentasikan suatu klas-klas dari I, maka [ g ( x)] (sering
Teorema 1.5
Terdapat dengan tunggal suatu monic polynomial dengan derajad lebih kecil
yang membangun suatu ideal tak nol I atas Vn ( F ) .
Teorema 1.6
Diberikan monic polynomial h( x) yang membagi f ( x) = x n − 1 . Maka h( x)
merupakan generator polynomial (polynomial pembangun) dari ideal
I = {a( x)h( x) : a( x) ∈ R} atas R = F [ x] /( x n − 1).
Teorema 1.7
Terdapat suatu korespondensi 1-1 antara cyclic subspace dari Vn ( F ) dan monic
g1 ( x) = 1
g 2 ( x) = x + 1
g3 ( x) = x 3 + x 2 + 1
g 4 ( x) = x3 + x + 1
g5 ( x) = ( x + 1)( x 3 + x 2 + 1)
g 6 ( x) = ( x + 1)( x3 + x + 1)
g 7 ( x) = ( x 3 + x 2 + 1)( x3 + x + 1)
g8 ( x) = f ( x).
(1110010 ) , ( 0111001)}.
g 7 ( x) membangun cyclic subspace
S= {( 0000000 ) , (1111111)}.
V7 ( Z 2 ) mempunyai tepat 8 cyclic subspace.
Teorema 1.8
Diberikan f ( x) = x n − 1 dengan f ( x) = p1a1 ( x) p2 a2 ( x)... pt at ( x) dengan
Contoh 5.
Misalkan akan kita konstruksikan suatu binary cyclic (7,4)-code. Karena
g ( x) = x 3 + x + 1 adalah monic yang membagi x 7 − 1 , g ( x ) membangun suatu cyclic
subspace pada V7 ( Z 2 ) yang mempunyai dimensi 4.
Contoh 6.
Misalkan kita akan mengkonstruksi suatu binary cyclic (15,9)-code. Karena
g ( x) = (1 + x + x 2 )(1 + x + x 4 ) adalah monic yang membagi x15 − 1 atas Z 2 dan g ( x )
Contoh 7.
Diketahui f ( x) = x 7 − 1. g ( x) = 1 + x + x3 membangun suatu (7,4)-cyclic code atas Z 2 .
Message space yang terdiri dari semua polynomial atas Z 2 dengan derajad terbesar
mempunyai inner product 0 atas F. Akan kita tunjukkan bahwa kode C ' dan C ⊥ saling
berhubungan yaitu keduanya merupakan kode yang ekuivalen.
Misal diberikan dua vektor
a = (a0 a1...an −1 ) ∈ C
dan
b = (b0b1...bn −1 ) ∈ C ',
dan hasil perkalian
n −1 n −1 n −1
a ( x)b( x) = ∑ ai x i ∑ ai x i ≡ ∑ ci xi ( mod x n − 1)
i =0 i =0 i =0
untuk suatu ci ∈ F . Konstanta dari hasil perkalian adalah
c0 = a ⋅ b ,
dimana b adalah n-tuple yang diperoleh dari b dengan cyclically shifting (menggeser
secara siklik) b satu posisi ke arah kiri dan kemudian menukar urutan komponen-
n −1
komponen dari b. Dengan memperhatikan perkalian ∑c x
i =0
i
i
dengan x n −t akan
a ( x)( x n −t b( x)) .
Akibatnya
ct = a ⋅ b ,
Melihat bentuk dari b( x), b merupakan vektor yang diperoleh dengan menggeser
secara siklik vektor b sebanyak t+1 posisi ke arah kiri dan menukar urutan komponen-
komponennya.
Contoh 8.
Misal diberikan n = 3, dan vektor a = (a0 a1a2 ), b = (b0b1b2 ). Kemudian dengan modulo
x3 − 1 ,
a ( x)b( x) = (a0 + a1 x + a2 x 2 )(b0 + b1 x + b2 x 2 )
h( x )
1
x h( x )
G' =
:
n − k −1
x h( x)
adalah matriks generator untuk C ' . Akibatnya G ' membangun kode C ' , dengan
dimensi C ' adalah n-k yang juga sama dengan dimensi dari C ⊥ . Dengan menggunakan
b( x) di atas menjadi h( x) , akan kita lihat bahwa dengan menukar kolom terakhir dari
G ' ke kolom pertama, kita akan memperoleh suatu matriks H yang membangun C ⊥ ,
dan matriks ini merupakan matriks parity-check untuk C.
g ( x) 1 1 0 1 0 0 0
1
x g ( x) 0 1 1 0 1 0 0
G= 2 = .
x g ( x) 0 0 1 1 0 1 0
x g ( x) 0 0 0 1 1 0 1
3
h( x) 1 1 1 0 1 0 0
1
G ' = x h( x) = 0 1 1 1 0 1 0 .
x 2 h( x) 0 0 1 1 1 0 1
Dengan menukar kolom terakhir ke kolom pertama dari G ' , diperoleh matriks generator
untuk C ⊥ yaitu
0 1 1 0 1 0 1
H = 0 1 1 1 0 1 0 .
1 0 1 1 1 0 0
Karena C ' dan C ⊥ dapat diperoleh dengan menukar komponen-komponen pada semua
vektor, maka C ' dan C ⊥ merupakan kode yang ekuivalen. Jadi C ⊥ merupakan dual
code dari C . h( x) dikatakan membangun dual code yang juga membangun dari kode
Definisi
k
Diberikan polynomial h( x) = ∑ ai xi dengan derajad k (ak ≠ 0) . Didefinisikan
i=0
Teorema 1.10
Diberikan g ( x) polynomial monic yang membagi f ( x) = x n − 1 (atas F)
dengan derajad n-k yang menjadi generator untuk cyclic (n,k)-code. Diberikan
h( x) = f ( x) g ( x) . Maka hR ( x) adalah reciprocal polynomial dari h( x) yang
membangun C ⊥ .
x n − k +i = qi ( x) g ( x) + ri ( x)
x n − k +i − ri ( x ) = qi ( x ) g ( x ) ∈ C .
dengan − ri ( x), 0 ≤ i ≤ k − 1.
Contoh 10.
Misal diberikan binary cyclic (7,4)-code seperti contoh 9, yang dibangun oleh
g ( x) = 1 + x + x3 . Dengan algoritma pembagian, diperoleh
x3 = (1)( x3 + x + 1) + (1 + x)
x 4 = ( x)( x 3 + x + 1) + ( x + x 2 )
x5 = ( x 2 + 1)( x3 + x + 1) + (1 + x + x 2 )
x 6 = ( x 3 + x + 1)( x 3 + x + 1) + (1 + x 2 ).
1 1 0 1 0 0 0 1 1 0
0
1 1 0 1 0 0 0 1 1
G= = [ R I 4 ] dengan R = .
1 1 1 0 0 1 0 1 1 1
1 0 1 0 0 0 1 1 0 1
generator untuk C, maka message symbols (a0 a1...ak −1 ) ternyata berada di k posisi
x n − k a ( x ) = q ( x ) g ( x ) + t ( x)
atau
q ( x ) g ( x ) = −t ( x ) + x n − k a ( x ) ,
Contoh 11.
Diberikan g ( x) = 1 + x + x3 yang membangun suatu binary cyclic (7,4)-code. Misalkan
kita ingin mencari suatu codeword c yang mempunyai information symbols (1011) pada
4 posisi terakhir. Ambil a ( x) = 1 + x 2 + x3 . Kemudian x3 a ( x) dibagi dengan g ( x ) ,
x3 a ( x) = ( x 3 + x 2 + x + 1) g ( x) + 1
dan
( x 3 + x 2 + x + 1) g ( x) = 1 + x3 + x 5 + x 6 .
Oleh karena itu c = (100 1011) merupakan codeword dengan information symbols
(1011) dengan posisi teratas.
x n − k + i = qi ( x) g ( x) + ri ( x) ,
∑ a r ( x) .
i =0
i i
Pada kasus biner, kita dapat mengkodekan dengan suatu algoritma yang sederhana dan
efisien, dan mudah untuk diimplementasikan pada hardware (perangkat keras).
Algoritma ini digunakan untuk mengkodekan suatu pesan m = (a0 a1...ak −1 ) menjadi
(1) Set s j = 0, 0 ≤ j ≤ n − k − 1.
(2) Set i = 1.
(3) If ak −i = sn − k −1 then
s0 = 0 .
Otherwise
For j from n – k – 1 to 1, set s j = s j −1 + g j .
s0 = g 0 .
(4) i=i+1
(5) If i > k , stop. Otherwise, go to (3).
x n −k a( x) = q ( x) g ( x) + t ( x) .
a ( x) = a0 + a1 x + ... + ak −1 x k −1 .
diperoleh
x n − k a ( x) = a0 x n − k + a1 x n − k +1 + ... + ak −1 x n −1 .
Dengan memperhatikan proses perkaliannya, hal ini sama halnya dengan menghitung
(...((( a k −1 ) ) )
x n − k ) x + ak − 2 x n − k x + ak −3 x n − k x + ... + a0 x n − k .
Setiap ekspresi dalam kurung, mulai dari yang paling dalam, berkorespondensi dengan
suatu iterasi sesuai dengan algoritma. Reduksi dengan modulo g ( x) pada setiap iterasi
akan diambil dan pada penjumlahan pada tiap iterasi tersebut yang berkorespondensi
dengan s, yaitu suatu polynomial dengan derajad terbesar adalah n – k – 1.
Contoh 12.
Pada contoh 11, g ( x) = 1 + x + x3 membangun suatu binary cyclic (7,4)-code. Kita akan
mengkodekan message m = (1011) sabagai berikut. Kita mempunyai
gˆ = ( g 0 g1 g 2 ) = (110) , (a0 a1a2 a3 ) = (1011) , dan kita mulai dengan ( s0 s1s2 ) = (000) .
i s ak − i
0 000
1 110 1
2 101 1
3 100 0
4 100 1
i s ak − i
0 0000 0000
1 1000 1011 1
2 0100 0101 1
3 1010 1001 0
4 0101 0100 1
5 1010 0001 1
6 1101 1011 0
7 0110 1101 1
Jadi, message m = (1011011) dikodekan menjadi codeword c = (0110 1101 1011 011).
DAFTAR PUSTAKA
Fraleigh, John B., 2000, A First Course in Abstract Algebra, Sixth Edition, Addison-
Wesley Publishing Company, Inc., USA.
Vanstone, Scott A. and van Oorschot, Paul C., 1989, An Introduction to Error
Correcting Codes with Applications, Kluwer Academic Publishers,
Massachusetts, USA.