Anda di halaman 1dari 19

Coding Theory

KODE SIKLIK
(CYCLIC CODES)

Muhamad Zaki Riyanto


NIM: 02/156792/PA/08944
E-mail: zaki@mail.ugm.ac.id
http://zaki.math.web.id
Dosen Pembimbing: Drs. Al. Sutjiana, M.Sc.

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

( a1 , a2 ,..., an −1 , an ) ∈ S , maka ( an , a1 , a2 ,..., an −1 ) ∈ S .

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.

Copyright © 2006 http://zaki.math.web.id


1
Karena cyclic code merupakan linear code, maka suatu cyclic code mempunyai
codeword 0 dan tertutup terhadap operasi penjumlahan.

Contoh 1.
1) S = {( 0000 )} ⊆ V4 ( Z 2 ) merupakan cyclic subspace.

2) S = {( 0000 ) , (1111)} ⊆ V4 ( Z 2 ) merupakan cyclic subspace.

3) S = {( 0000000 ) , (1011100 ) , ( 0101110 ) , ( 0010111) , (1110010 ) , ( 0111001) ,

(1001011) , (1100101)} merupakan cyclic subspace pada V7 ( Z 2 ) .


4) Subset di bawah ini bukan merupakan cyclic subspace atas V4 ( Z 2 ) .

S = {( 0000 ) , (1001) , (1100 ) , ( 0110 ) , ( 0011) , ( 0111) , (1011) , (1101)}.

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.

1.2 Rings dan Ideals

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.

1) ( R, + ) merupakan grup abelian dengan elemen identitas e.


2) ( a * b) * c = a * (b * c) .
3) (a + b) *c = a * c + b * c dan c * ( a + b ) = c * a + c * b.

4) Terdapat suatu elemen 1 ∈ R sehingga a *1 = 1* a = a.


5) a * b = b * a.

Copyright © 2006 http://zaki.math.web.id


2
Contoh 2.
1) Himpunan semua bilangan bulat terhadap operasi penjumlahan dan perkalian
membentuk suatu ring ( Z , +,*) , dinotasikan dengan Z.

2) Himpuan semua bilangan bulat positif modulo n merupakan ring, dinotasikan


dengan Z n .
3) Himpunan semua polynomial dengan koefisiennya adalah elemen suatu field
(lapangan) F atas ring R. Ring ini dinotasikan dengan F[x]. Dua operasinya
adalah penjumlahan dan perkalian polynomial.

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))} .

Diberikan R = F [ x]/( f ( x)) = {[ g ( x)] : g ( x) ∈ F [ x]} .

Didefinisikan operasi penjumlahan dan perkalian pada klas-klas ekuivalensi sebagai


berikut
[ g ( x)] + [h( x)] = [ g ( x) + h( x)]
dan
[ g ( x)]*[h( x)] = [ g ( x)* h( x)].

Maka ( R, +,*) merupakan ring dan disebut dengan ring polynomial atas F modulo

f(x).

Copyright © 2006 http://zaki.math.web.id


3
Definisi
Diberikan ring ( R, +,*) . Suatu subset tak kosong I ⊆ R disebut ideal dari ring R

jika
1) ( I, +) merupakan grup, dan

2) i * r ∈ I untuk setiap i ∈ I dan setiap r ∈ R.

Ideal memainkan peran yang penting di dalam mempelajari cyclic subspace


atas Vn ( F ) . Pada subbahasan 1.3 akan dipelajari pembentukan korespondensi 1-1 antara

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

disebut dengan principal ideal ring.

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 } .

Copyright © 2006 http://zaki.math.web.id


4
I merupakan suatu ideal dari R. Mudah untuk membuktikan bahwa ( I , + ) merupakan

grup. Ideal I tersebut dibangun oleh g ( x) = 1 + x 2 + x 4 .

1.3 Ideal dan Cyclic Subspace


Telah kita ketahui bahwa Vn ( F ) merupakan grup abelian terhadap operasi
penjumlahan vektor. Akan kita pelajari sifat-sifat dari suatu ring dengan mendefinisikan
suatu operasi perkalian antara dua vektor. Cara yang paling mudah adalah dengan
mengasiosikan suatu polynomial pada F[x] dengan setiap vektor pada Vn ( F ) . Jika

v = (a0 a1...an −1 ) , kemudian diberikan

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

v1 ( x)v2 ( x) = v( x) dimana v( x) merupakan polynomial dengan derajad yang lebih kecil

dari klas-klas ekuivalensi [v1 ( x)v2 ( x)] atas F [ x]/( f ( x)) . Dengan kata lain, v( x ) adalah

sisa dari polynomial ketika v1 ( x)v2 ( x) dibagi oleh f ( x ) .


Dengan operasi perkalian yang telah didefinisikan di atas, dan dengan bentuk
pengasosiasian antara polynomial-polynomial dan vektor-vektor, dapat kita perhatikan
bentuk dari Vn ( F ) dan F [ x ] /( f ( x )) . Suatu elemen dari Vn ( F ) dapat disajikan sebagai
suatu n-tuple atas F atau suatu polynomial dengan derajad paling besar adalah n-1 atas
F. Komponen-komponen dari n-tuple merepresentasikan koefisien-koefisien dari
polynomial, dari order yang kecil ke order yang lebih besar.
Akan kita pelajari bagaimana memilih polynomial f ( x) = x n − 1 yang digunakan
untuk mendefinisikan operasi perkalian. Diberikan v = (a0 a1...an −1 ) ∈ Vn ( F ) .

v( x) = a0 + a1 x + ... + an −1 x n −1

xv( x) = a0 x + a1 x 2 + ... + an −1 x n .

Kemudian apabila x n − 1 ≡ 0 ( mod f ( x) ) berakibat x n ≡ 1( mod f ( x) ) . Sehingga

Copyright © 2006 http://zaki.math.web.id


5
xv( x) = an −1 + a0 x + a1 x 2 + ... + an − 2 x n −1 = (an −1a0 a1...an − 2 ),
dan dapat kita lihat bahwa mengalikan dengan x dapat membentuk korespondensi pada
suatu cyclic shift dari v. Dengan observasi ini kita dapat membentuk suatu teorema
yang sangat mendasar dan penting dalam mempelajari cyclic code.

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

ditulis g ( x) ) membangun I dan g ( x) membagi f ( x) = x n − 1 .

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

polynomial g ( x ) ∈ F [ x ] yang membagi f ( x) = x n − 1 .

Copyright © 2006 http://zaki.math.web.id


6
Contoh 4.
Diberikan V7 ( Z 2 ) dan f ( x) = x 7 − 1 . Faktorisasi dari f ( x ) adalah

x 7 − 1 = ( x + 1)( x3 + x 2 + 1)( x3 + x + 1).


Monic yang membagi f ( x ) adalah

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).

g5 ( x) membangun cyclic subspace

S = {( 0000000 ) , (1011100 ) , ( 0101110 ) , ( 0010111) , (1001011) , (1100101) ,

(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

pi ( x) ≠ p j ( x) untuk i ≠ j adalah irreducible (tak dapat difaktorkan) monic polynomial

atas F, dan ai merupakan bilangan bulat positif, 1 ≤ t ≤ i. Maka Vn ( F ) memuat


sebanyak
(a1 + 1)(a2 + 1)...(at + 1)
cyclic subspace.

Copyright © 2006 http://zaki.math.web.id


7
Teorema 1.9
Diberikan monic polynomial g ( x) yang membagi f ( x) = x n − 1 atas F yang
mempunyai derajad n-k. Maka g ( x ) merupakan generator polynomial untuk suatu

cyclic subspace Vn ( F ) yang mempunyai dimensi k.

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 )

mempunyai derajad 6, g ( x ) membangun suatu cyclic subspace yang berdimensi 9.

1.4 Matriks Generator dan Matriks Parity-Check


Diberikan g ( x ) sebagai generator dari suatu cyclic (n,k)-code C atas F. Dari
pembahasan sebelumnya, dapat diketahui bahwa g ( x ) mempunyai derajad n-k, dan
setiap codeword di C mempunyai bentuk a ( x ) g ( x ) . Berdasarkan Teorema 1.9, kita
asumsikan deg a ( x) ≤ k − 1. Kemudian diberikan suatu message space (ruang message)
yang terdiri dari semua polynomial atas F yang mempunyai derajad kurang dari atau
sama dengan k-1. Kemudian message a ( x) dikodekan menjadi codeword a ( x ) g ( x ) .
Karena a ( x ) g ( x ) mempunyai derajad yang paling besar adalah n-1, maka tidak perlu

mereduksi dengan modulo f ( x) = x n − 1 . Suatu matriks generator untuk C diberikan


sebagai berikut

Copyright © 2006 http://zaki.math.web.id


8
 g ( x) 
 1 
 x g ( x) 
G =  x 2 g ( x) 
 
 : 
 x k −1 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

adalah 3. Misalkan kita mempunyai polynomial a ( x) = 1 + x 2 + x3 , maka a ( x)

dikodekan menjadi codeword polynomial a ( x) g ( x) = 1 + x + x 2 + x3 + x 4 + x 5 + x 6 . Pada


vektor biner, message 4-tuple (1011) dikodekan menjadi codeword (1111111). Matriks
generatornya adalah
 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 3 g ( x)  0 0 0 1 1 0 1

Untuk menkodekan a = (1011) , hitung aG = (1111111).

Setelah kita megetahui polynomial yang membangun suatu cyclic code C,


bagaimana dengan polynomial yang membangun dari dual code C ⊥ dari C. Akan kita
lihat bahwa jika C adalah cyclic code, maka C ⊥ juga merupakan cyclic code.
Misalkan h( x) = f ( x) / g ( x) dengan f ( x) = x n − 1 dan g ( x) merupakan monic
polynomial yang membagi f ( x) , dan g ( x ) membangun C. jika deg g ( x) = n − k ,
maka deg h( x) = k . Karena g ( x ) monic, maka h( x) juga monic. Akibatnya h( x)
membangun suatu cyclic code C ' yang berdimensi n-k. Misalkan c1 ( x) = a1 ( x) g ( x) ∈ C

dan c2 ( x) = a2 ( x)h( x) ∈ C ' . Maka

c1 ( x)c2 ( x) = a1 ( x) g ( x)a2 ( x)h( x) = a1 ( x)a2 ( x) f ( x) ≡ 0 ( mod f ( x) ) .

Copyright © 2006 http://zaki.math.web.id


9
Dengan perkalian polynomial mod f ( x ) , sebarang codeword dari C dikalikan dengan
sebarang codeword dari C ' menghasilkan polynomial 0 yang berkorespondensi dengan
codeword 0. Apakah ini mengakibatkan C ' adalah dual code dari C? Jawabannya
adalah tidak, sebab jika hasil perkalian dua polynomial di dalam F [ x ] /( f ( x )) adalah 0

tidak mengakibatkan vektor yang berkorespondensi di Vn ( F ) orthogonal, yaitu

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 = a0b0 + a1bn −1 + a2bn − 2 + ... + an −1b1 ,

Karena x n ≡ 1( mod f ( x) ) , maka c0 dapat ditulis sebagai inner produk

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

mengakibatkan ct menjadi konstantanya, dan merupakan konstanta dari hasil perkalian

a ( x)( x n −t b( x)) .
Akibatnya
ct = a ⋅ b ,

Copyright © 2006 http://zaki.math.web.id


10
dengan b menjadi suatu n-tuple yang diasosiasikan dengan polynomial x n −t b( x) .

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 )

= (a0b0 + a1b2 + a2b1 ) + (a0b1 + a1b0 + a2b2 ) x + (a0b2 + a1b1 + a2b0 ) x 2 .

Koefisien dari x 0 adalah a ⋅ (b0b2b1 ). (b0b2b1 ) diperoleh dari b dengan menggeser b

secara siklik sebanyak 3 – 0 – 1 = 2 posisi dari (b1b2b0 ) dan menempatkan koefisien

terakhir ke koefisien pertama, sehingga diperoleh (b0b2b1 ) .

Karena a ( x)b( x) ≡ 0 ( mod x n − 1) , koefisien dari setiap xi haruslah 0. Hal ini

mengakibatkan a ⋅ c = 0 (yaitu a dan c saling orthogonal) dimana c adalah sebarang


cyclic shift dari vektor yang diperoleh dari b dengan menukar komponen b. Karena
h( x) membangun C ' , maka {h( x), xh( x),..., x n − k −1h( x)} merupakan basis untuk C ' dan

 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.

Copyright © 2006 http://zaki.math.web.id


11
Contoh 9.
Misalkan kita akan mengkonstruksikan suatu matriks generator dan matriks parity-
check untuk suatu (7,4)-binary cyclic code. Karena g ( x) = 1 + x + x3 membagi

f ( x) = x 7 − 1 , maka g ( x) membangun (7,4)-cyclic code tersebut.

h( x) = f ( x) / g ( x) = 1 + x + x 2 + x 4 membangun suatu (7,3)-cyclic code C ' . Matriks


generator untuk C adalah

 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

Matriks generator untuk C ' adalah

 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 

Dapat ditunjukkan bahwa GH T = 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

Copyright © 2006 http://zaki.math.web.id


12
yang ekuivalen dengan dual codenya. Dengan mudah dapat dilihat dari konstruksi H
bahwa C ⊥ juga merupakan cyclic code.

Definisi
k
Diberikan polynomial h( x) = ∑ ai xi dengan derajad k (ak ≠ 0) . Didefinisikan
i=0

reciprocal polynomial hR ( x) dari h( x) dengan


k
hR ( x) = ∑ ak −i xi
i =0

Dapat dilihat bahwa hR ( x) = x k ⋅ h(1 x) , dengan k = deg h( x) .

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 ⊥ .

Polynomial h(x) sering disebut dengan parity-check polynomial.

1.5 Encoding Cyclic Codes


Diberikan polynomial g ( x) yang membangun suatu cyclic (n,k)-code C atas

F. Suatu matriks generator untuk C dengan bentuk [ R I k ] yang dikonstruksikan sebagai

berikut. Bagilah x n − k +i dengan g ( x ) untuk 0 ≤ i ≤ k − 1. Diperoleh

x n − k +i = qi ( x) g ( x) + ri ( x)

dengan deg ri ( x) < deg g ( x) = n − k atau ri ( x) = 0. Maka

x n − k +i − ri ( x ) = qi ( x ) g ( x ) ∈ C .

Copyright © 2006 http://zaki.math.web.id


13
Jika kita mengambil vektor-vektor koefisien yang berkorespondensi dengan
x n − k +i − ri ( x ) sebagai baris-baris dari suatu matriks, maka kita akan memperoleh suatu

matriks generator dengan bentuk [ R I k ] , dimana baris-baris dari R berkorespondensi

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 ).

Matriks generator untuk kode tersebut adalah

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

Baris-baris dari R berkorespondensi dengan polynomial 1 + x, x + x 2 ,1 + x + x 2 dan 1 + x 2 .


Suatu message m=(1011) dikodekan menjadi c = mG = (100 1011).

Pandang suatu message polynomial


k −1
a ( x) = ∑ ai x i .
i =0

Copyright © 2006 http://zaki.math.web.id


14
Telah kita ketahui bahwa a ( x) g ( x) adalah suatu codeword tetapi dengan menggunakan

a ( x) g ( x) information symbols menjadi tidak jelas. Jika G = [ R I k ] adalah matriks

generator untuk C, maka message symbols (a0 a1...ak −1 ) ternyata berada di k posisi

terakhir dari codeword. Codeword yang berkorespondensi dengan message a ( x) dapat

ditentukan dengan melakukan operasi perhitungan sebagai berikut. Bagilah x n − k a ( x)


dengan g ( x ) untuk mendapatkan

x n − k a ( x ) = q ( x ) g ( x ) + t ( x)
atau
q ( x ) g ( x ) = −t ( x ) + x n − k a ( x ) ,

dengan t ( x) = 0 atau deg t ( x) < deg g ( x) = n − k . Maka q ( x ) g ( x ) adalah suatu


codeword dengan information symbols sebanyak k yaitu (a0 a1...ak −1 ) yang menjadi k

komponen terkahir, dan n – k parity-check symbols, koefisien dari −t ( x) yang


merupakan n – k komponen pertama.

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.

Diberikan suatu cyclic (n,k)-code dengan generator polynomial


g ( x) = g 0 + g1 x + ... + g n − k −1 x n − k −1 + x n − k

Copyright © 2006 http://zaki.math.web.id


15
dan matriks generator G = [ R I k ] . Baris-baris R adalah negated coefficients dari

polynomial sisa yaitu ri ( x), 0 ≤ i ≤ k − 1 dimana

x n − k + i = qi ( x) g ( x) + ri ( x) ,

deg ri ( x) < deg g ( x) atau ri ( x) = 0 . Kemudian n – k parity-check symbols untuk

information symbols (a0 a1...ak −1 ) diberikan sebagai


k −1

∑ 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

codeword c = ( s0 s1...sn − k −1a0 a1...ak −1 ) .

Algoritma: Encoding Algorithm for Binary Cyclic Codes.


Let gˆ = ( g 0 g1...g n − k −1 ).

Let Message symbols (a0 a1...ak −1 ).

Let Parity-check symbols s = ( s0 s1...sn − k −1 ).

(1) Set s j = 0, 0 ≤ j ≤ n − k − 1.

(2) Set i = 1.
(3) If ak −i = sn − k −1 then

For j from n – k – 1 to 1, set s j = s j −1 .

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).

Copyright © 2006 http://zaki.math.web.id


16
Penjelasan singkat tentang algoritma. Dengan menggunakan matriks
generator G = [ R I k ] , kemudian, seperti pada penjelasan sebelumnya, n – k parity-check

symbols berkorespondensi dengan suatu message a ( x) yaitu koefisien-koefisien dari


−t ( x) dimana

x n −k a( x) = q ( x) g ( x) + t ( x) .

Untuk menghitung t ( x) , kita hitung x n − k a ( x) (mod g ( x)) . Karena

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.

Selama iterasi ke-i berlangsung, s dikalikan dengan x, dan dijumlahkan


ak −i x n − k . Maka s akan mempunyai derajad n – k, sebab bentuk x n − k diperoleh dari

proses-proses pergeseran atau penjumlahan. Untuk mengambil sisa dari modulo g ( x) ,

x n−k direduksi dengan menghilangkannya dan menjumlahkan kembali


gˆ ( x) = g ( x) − x n − k (karena x n − k ≡ gˆ( x) (mod g ( x)) ). Jika sn − k −1 = 1 sebelum s digeser,

maka pergeseran menghasilkan suatu x n − k , akan memerlukan perhitungan ulang

Copyright © 2006 http://zaki.math.web.id


17
kembali. Jika ak −i = 1 , maka hal ini memerlukan perhitungan ulang kembali

(necessitates feedback). Jika keduanya sn − k −1 dan ak − i adalah 1, maka

x n − k + x n − k ≡ 0 (mod 2) , dan akan mengakhiri perhitungan yang lainnya.


Oleh karena itu perhitungan ulang (feedback) diperlukan dalam melakukan
iterasi i jika dan hanya jika sn − k −1 ≠ ak −i . Setelah iterasi ke-k, suatu (n,k)-tuple s

berkorespondensi dengan x n − k a ( x) (mod g ( x)) , dan menghasilkan n – k parity-check


symbols.
Untuk menggunakan skema pengkodean ini, matriks generator G = [ R I k ]

tidak harus disajikan secara ekplisit.

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

Diperoleh parity-check symbols adalah (100). Maka message m = (1011) tersebut


dikodekan menjadi codeword c = (100 1011).

Copyright © 2006 http://zaki.math.web.id


18
Contoh 12.
Diberikan g ( x) = 1 + x 4 + x 6 + x 7 + x8 generator untuk suatu binary (15,7)-code C. Akan
kita kodekan suatu message m = (1011011) sebagai berikut. Kita mempunyai
gˆ = (1000 1011) .

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.

Copyright © 2006 http://zaki.math.web.id


19

Anda mungkin juga menyukai