• Tidak ada hasil yang ditemukan

Table of Contents. Table of Contents 1

N/A
N/A
Protected

Academic year: 2021

Membagikan "Table of Contents. Table of Contents 1"

Copied!
89
0
0

Teks penuh

(1)

Table of Contents 1

1 Pendahuluan 2

1.1 Koreksi dan deteksi pola kesalahan . . . 5

1.2 Laju Informasi . . . 6

1.3 Efek dari penambahan paritas . . . 6

1.4 Menaksir katakode yang ditransmisikan . . . 7

1.5 Beberapa konsep Aljabar . . . 9

1.6 Bobot dan Jarak . . . 10

1.7 Decoding ketetanggaan maksimum . . . 11

1.8 Kepercayaan DKM . . . 14

1.9 Kode Pendeteksi Kesalahan . . . 16

1.10 Kode Pengoreksi Kesalahan . . . 18

2 Kode Linier 21 2.1 Kode linier dan kode dual . . . 21

2.2 Basis dan dimensi . . . 25

2.3 Basis kode C = hSi dan C⊥ . . . . 28

2.4 Matriks pembangun dan matriks cek paritas . . . 31

2.5 Jarak kode linier dan Koset . . . 38

2.6 Proses decoding kode linier . . . 41

3 Kode Sempurna dan kode yang berkaitan 48 3.1 Batas kode . . . 48

3.2 Kode Sempurna . . . 52

3.3 Kode Hamming . . . 54

3.4 Kode diperluas . . . 56

3.5 Kode Golay dan Perluasannya . . . 59

3.6 Decoding kode Golay diperluas dan kode Golay . . . 62

(2)

1

4 Kode Linier Siklis 66

4.1 Polinom dan kata . . . 66

4.2 Kode linier siklis . . . 69

4.3 Mencari kode linier siklis . . . 77

4.4 Polinom pembangun kode dual . . . 83

Bibliography 87

(3)

Pendahuluan

Teori Koding (Coding theory) merupakan ilmu yang mempelajari teknik dan metoda trans-misi data/infomasi melalui saluran komunikasi yang tidak bebas gangguan (noisy) secara efisien dan akurat. Teori Koding telah berkembang begitu pesat dan memliki aplikasi yang sangat cukup luas, diantaranya minimisasi gangguan dari perekaman compact disc, trans-fer data dari memori ke CPU komputer atau antar CPU komputer, transaksi ATM, dan komunikasi satelit.

Media fisis yang digunakan untuk melakukan transfer data biasa disebut dengan saluran; Sebagai contoh, kabel telepon dan atmosfir. Gangguan (noisy) didefinisikan sebagai sesuatu yang tidak diinginkan yang dapat menyebabkan informasi yang diterima tidak sama dengan informasi yang dikirimkan. Gangguan dapat terjadi karena adanya petir, goresan, hujan meteor, panas matahari, gangguan radio, dan lain-lain. Teori koding bekerja hanya sebatas pada masalah pendeteksian dan pengoreksian kesalahan transmisi yang disebabkan oleh gangguan tersebut. Perhatikan diagram pada Gambar 1.1 yang mengilustrasikan sistem transmisi informasi secara umum.

Pada sistim ini, adanya gangguan adalah bagian yang paling penting; Karena tanpa gangguan, teori koding tidak begitu diperlukan. Dalam kajian selanjutnya, kita akan mem-berikan asumsi-asumsi berikut ini:

(4)

3

Figure 1.1: Sistem transmisi informasi

Informasi dapat dinyatakan sebagai barisan 0-1. Kita sebut ’0’ dan ’1’ sebagai digit.

Kata merupakan suatu barisan digit. Panjang dari kata adalah banyaknya digit yang

menyusun kata tersebut. Kata 10010 misalnya mempunyai panjang 5. Saluran komu-nikasi yang digunakan pada kajian ini adalah saluran biner. Kode biner merupakan suatu himpunan kata biner (tersusun oleh digit ’0’ dan ’1’). Berikut ini contoh dari dua kode:

C = {00, 1101}, C∗ = {00, 01, 10, 11}.

Kode blok adalah suatu kode yang setiap katanya mempunyai panjang sama. Panjang ini

disebut panjang kode. Semua kata yang termasuk dalam kode C disebut sebagai katakode.

Diskusi 1.0.1.

1. Cacah semua kata dengan panjang 3, 4 dan 5. 2. Tentukan banyaknya kata dengan panjang n.

3. Berikan suatu kode yang berisi semua kata dengan panjang 6 dan mempunyai jumlah angka ’1’ yang genap.

Beberapa asumsi tambahan untuk saluran perlu diberikan. Pertama, panjang katakode yang diterima tidak mengalami perubahan. Ini berarti bahwa katakode yang dikirim

(5)

berpanjang n maka kata yang diterima pasti berpanjang n. Kedua, dalam membaca kode, kita dapat dengan mudah mengetahui awal dari suatu kata. Sebagai contoh, bila kita meng-gunakan katakode panjang 3 dan menerima 100110001, maka dibaca secara berturutan 100, 110 dan 001. Ketiga, gangguan dapat terjadi dimana saja. Ini berarti, kita tahu bahwa setiap digit dalam katakode dapat mengalami gangguan dalam transmisi.

Suatu saluran biner dikatakan simetri bila digit 0 dan 1 ditransmisikan dengan akurasi yang sama. Ini berarti bahwa probabilitas menerima digit yang benar tidak tergantung pada digit yang dikirimnya. Kepercayaan suatu saluran biner simetri (SBS) adalah bilangan real

p, 0 ≤ p ≤ 1, dimana p adalah probabilitas menerima digit sesuai dengan digit yang dikirim.

Diagram di bawah menggambarkan saluran biner simetri:

Figure 1.2: Saluran simetri biner

Dalam banyak hal, sangat sukar menaksir probabilitas p untuk suatu saluran yang diberikan. Namun, nilai eksak p tidak mempengaruhi secara siknifikan pada kerangka teori koding itu sendiri. Bila p = 1 maka saluran komunikasi sangat baik (tidak pernah ada gangguan transmisi data). Sehingga, hal ini tidak menarik. Hal yang serupa berlaku bila p = 0. Setiap saluran dengan 0 < p ≤ 1

2 dapat dengan mudah diubah menjadi

saluran dengan 12 ≤ p < 1. Sehingga, untuk selanjutnya, dapat mengasumsikan bahwa kita

menggunakan saluran biner simetri dengan probabilitas p, 1

(6)

5

p = 12 diberikan dalam latihan.) Diskusi 1.0.2.

1. Kenapa saluran dengan p = 0 tidak menarik ?

2. Terangkan bagaimana merubah saluran dengan 0 < p ≤ 1/2 menjadi suatu saluran dengan 1/2 ≤ p < 1.

3. Apa yang dapat anda katakan untuk saluran dengan p = 1/2?

1.1

Koreksi dan deteksi pola kesalahan

Pada bagian ini akan dikenalkan dua konsep dasar dalam Teori Koding, yakni pengoreksian dan pendeteksian suatu pola kesalahan.

Misal, dalam suatu transmisi data, kata yang diterima ternyata bukan merupakan suatu katakode. Maka, jelas terjadi suatu kesalahan selama proses tranmisi. Hal ini menyatakan bahwa kita telah mendeteksi adanya satu atau lebih kesalahan.

Konsep pengoreksian kesalahan mungkin dapat dikenakan. Dalam, proses pengoreksian biasanya intuisi kita menyarankan bahwa kata yang diterima seharusnya dikoreksi dengan melakukan sedikit mungkin perubahan.

Perhatikan beberapa contoh di bawah ini:

Contoh 1.1.1. Misal Kode C1 = {00, 10, 01, 11}. Maka setiap kata yang diterima

meru-pakan katakode, sehingga C1 tidak dapat mendeteksi adanya kesalahan. Kode C1tidak dapat

mengoreksi karena setiap kata yang diterima tidak perlu perubahan untuk menjadi katakode.

Contoh 1.1.2. Ubah kode C1 dengan mengulang setiap katakodenya 3 kali dan didapat

kode C2= {000000, 101010, 010101, 111111}. Kode ini salah satu contoh kode pengulangan.

Misal kata 111010 yang diterima. Karena kata ini tidak di C2, maka kami dapat mendeteksi sedikitnya ada satu kesalahan. Untuk menjadikan katakode, kata 111010 perlu diubah sedik-itnya pada satu digsedik-itnya menjadi 101010. Sehingga kita mengharap bahwa 101010 memang kata yang ditransmisikan, sehingga kita mengoreksi 111010 menjadi 101010. Kode C2 dapat mengoreksi satu kesalahan.

Contoh 1.1.3. Kode C3 = {000, 101, 011, 110}. Kode C3 ini didapat dengan menambahkan digit ketiga pada setiap katakode di C1 sehingga jumlah digit ’1’ pada setiap katakode genap.

(7)

Digit tambahan ini disebut sebagai digit cek-paritas. Misal 100 adalah kata yang diterima. Karena bukan katakode, maka pasti ada kesalahan. Setiap kata 000, 101 dan 110 dapat diubah satu digitnya untuk menjadi kata yang diterima. Jadi, dalam hal ini, kami akan mengoreksi 100 menjadi salah satu dari 000, 101 atau 110 daripada 011.

Diskusi 1.1.4.

1. Bila C4 kode yang diperoleh dari C1 dengan mengulang setiap katakodenya 4 kali

maka berapa kesalahan yang dapat dikoreksi ? 2. Bagaimana kalau diulang 5 kali ?

1.2

Laju Informasi

Laju informasi r(C) untuk suatu kode C yang mempunyai panjang n didefinisikan sebagai:

1

nlog2|C|.

Karena 1 ≤ |C| ≤ 2n untuk kode biner C maka laju informasi berharga diantara 0 dan

1. Sebagai contoh, laju informasi untuk kode C1, C2 dan C3 berturut-turut adalah 1, 1/3

dan 2/3. Laju infomasi dapat diinterpretasikan sebagai perbandingan antara jumlah digit pembawa pesan dan jumlah selruh digit dalam katakode.

1.3

Efek dari penambahan paritas

Untuk menunjukkan efek dramatis dari penambahan digit cek-paritas pada suatu kode, perhatikan ilustrasi berikut ini. Misal bahwa semua kata panjang 11 merupakan katakode; maka tidak ada kesalahan yang dapat terdeteksi. Misalkan p = 1 − 10−8 dan kecepatan

transmisi dalam saluran tersebut adalah 107 digit per detik. Maka Probabilitas bahwa kata yang diterima tidak sesuai dengan kata yang dikirim adalah kira-kira 11p10(1 − p), yakni

sekitar 11/108. Sehingga jumlah kata yang ditransmisikan secara tidak benar adalah:

11 108 ·

107

(8)

7

Ini berarti bahwa ada kesalahan 1 kata setiap 10 detik, 6 setiap 1 menit atau 360 setiap satu jam.

Bagaimana sekarang bila kode tersebut ditambah dengan satu digit cek-paritas. Se-hingga kode baru mempunyai panjang 12. Karena setiap kesalahan satu dapat terdeteksi, maka Probabilitas terjadinya kesalahan tanpa kita sadari adalah

 12

2 

 p10(1 − p)2, yakni

sekitar 106616. Sehingga jumlah kata yang ditransmisikan secara tidak benar tanpa terdeteksi

adalah 106616·10 7

12 = 5.5 × 10−9kata per detik. Ini berarti bahwa ada 1 kesalahan setiap 2000

hari. Fantastis, bukan! Diskusi 1.3.1.

1. Tentukan jumlah maksimum katakode dalam suatu kode panjang 4 yang dapat mende-teksi satu kesalahan.

2. Ulangi pertanyaan di atas untuk n = 5, 6 dan untuk sebarang n.

1.4

Menaksir katakode yang ditransmisikan

Misalkan v katakode yang ditransmisikan dan w katakode yang diterima. Misal φp(v, w):

Probabilitas bahwa w katakode yang diterima jika v yang dikirimnya melalui saluran biner simetri (SBS) dengan reliabilitas p. Karena noise/gangguan terdistribusi secara random. Sehingga, jika v dan w berbeda pada d posisi maka didapat:

φp(v, w) = pn−d(1 − p)d.

Contoh 1.4.1. Misal C suatu kode dengan panjang 5. Maka untuk setiap v ∈ C,

Probabil-itas bahwa v diterima secara benar adalah:

φp(v, v) = p5. Jika 11010 ∈ C maka

φp(11010, 11101) = p2(1 − p)3, dan jika p= 0.8 maka

(9)

Dalam kenyataan, kita hanya tahu w, katakode yang diterima. Adapun v tidak kita ketahui. Asumsikan bahwa katakode v yang mempunyai banyak kesamaan dengan w adalah katakode yang sebenarnya dikirim ketika w diterima, yakni:

φp(v, w) = max{φp(u, w) : u ∈ C}.

Maka teorema dibawah ini memberikan kriteria untuk menemukan katakode v tersebut. Teorema 1.4.2. Misal kita mempunyai SBS dengan 12 < p < 1. Misal v1 dan v2 katakode

dan w suatu kata, semuanya panjang n. Misal bahwa v1 berbeda dengan w dalam d1 posisi

dan v2 berbeda dengan w dalam d2 posisi. Maka,

φp(v1, w) ≤ φp(v2, w) jdhj d1≥ d2.

Bukti. Ini karena: φp(v1, w) ≤ φp(v2, w) jdhj pn−d1(1 − p)d1 ≤ pn−d2(1 − p)d2 jdhj

(1−pp )d2−d1 ≤ 1 jdhj d

1≥ d2 (karena 1−pp > 1). 2

Contoh 1.4.3. Jika w = 10110 diterima pada saluran SBS dengan p = .98, katakode

manakah dari berikut: 11011, 00111, 01000, 10001 yang kemungkinan besar dikirim ?

Karena 00111 paling mendekati w (tidak terlalu berbeda dengan w) maka 00111 dapat dikatakan katakode yang kemungkinan besar dikirim.

Diskusi 1.4.4.

1. Misal w = 0010110 diterima melalui saluran SBS dengan p = .90. Katakode manakah dibawah ini yang kemungkinan besar telah dikirim?

1001011, 1111100, 0001110, 0011001, 1101001. 2. Diskusikan tentang makna dari Teorema 1.4.2.

3. Apa yang harus diubah dalam Teorema 1.4.2 bila a) 0 < p < 1/2; b) p = 1/2.

(10)

9

1.5

Beberapa konsep Aljabar

Misal K = {0, 1} dan Kn himpunan semua kata biner panjang n. Definisikan penjumlahan

dan perkalian dari elemen K sbb.:

0 + 0 = 0, 0 + 1 = 1 + 0 = 1, 1 + 1 = 0

0 · 0 = 0, 1 · 0 = 0, 0 · 1 = 0, 1 · 1 = 1.

Penjumlahan dua elemen di Kn didefisinikan sebagai penjumlahan per komponen dari

ele-men tersebut. Contoh:

001001 + 101101 = 100100.

Maka operasi penjumlahan di Kn adalah tertutup. Buktikan! Sebut elemen di K sebagai

skalar. Definisikan perkalian skalar di Kn sebagai perkalian per komponen. Karena

satu-satunya skalar adalah 0 dan 1, maka perkalian skalar dari kata w hanya dapat berbentuk 0 · w(= 0) atau 1 · w(= w). Jelas Kntertutup terhadap perkalian skalar.

Dengan operasi penjumlahan dan perkalian diatas, dapat ditunjukkan Kn membentuk

ruang vektor, yakni bahwa untuk setiap kata u, v dan w di Kn dan setiap skalar a dan b

berlaku:

1. u + v ∈ Kn

2. (u + v) + w = u + (v + w)

3. u + 0 = 0 + u = u, dimana 0 kata nol 4. Ada v0 ∈ Kn dimana v + v0 = v0+ v = 0.

5. u + v = v + u 6. av ∈ Kn

(11)

7. a(u + v) = au + av 8. (a + b)u = au + bu 9. (ab)u = a(bu) 10. 1u = u. Diskusi 1.5.1.

1. Tunjukkan bahwa jika v ∈ Kn maka v + v = 0.

2. Tunjukkan bahwa jika v dan w kata di Kn dan v + w = 0 maka v = w.

3. Tunjukkan bahwa jika u, v dan w kata di Kn dan u + v = w maka u + w = v.

Catatan bahwa jika v dikirim pada SBS dan w diterima maka komponen v + w bernilai 0 bila komponen tersebut dari v secara benar ditransmisi, bernilai 1 bila komponen tsb di

v ditransimi secara tidak benar. Jadi, v + w dapat disebut sebagai pola kesalahan atau kesalahan. Sebagai contoh, jika v = 11001 ditransimi dan w = 01111 yang diterima. Maka

kesalahan terjadi pada komponen pertama, ketiga, dan keempat. Pola kesalahan adalah

v + w = 10110.

1.6

Bobot dan Jarak

Misal v ∈ Kn. Bobot Hamming wt(v), atau bobot, dari v adalah banyaknya digit 1 pada v.

Jika v, w ∈ Kn. Jarak Hamming d(v, w), atau jarak, dari v ke w adalah banyaknya posisi di v

yang berbeda dari w. Contoh, d(01101, 11001) = 2. Tunjukkan bahwa d(v, w) = wt(v + w). Maka Probabilitas pada bagian 1.4 menjadi:

φp(v, w) = pn−wt(u)(1 − p)wt(u),

dimana u adalah pola kesalahan u = v + w. Karenanya, φp(v, w) disebut Probabilitas dari pola kesalahan u = v + w.

(12)

11

Diskusi 1.6.1. Misal a skalar dan u, v kata panjang n. Tunjukkan bahwa:

1. wt(v + w) ≤ wt(v) + wt(w). 2. wt(av) = a · d(v, w).

3. d(av, aw) = a · d(v, w).

1.7

Decoding ketetanggaan maksimum

Dua problem dasar dalam koding adalah: proses decoding dan encoding.

Encoding. Untuk mengkonstruksi kode yang akan digunakan dalam mengirim pesan, lakukan berikut ini. Pilih bilangan bulat positif k sehingga suatu kata panjang k dapat menyatakan pesan. Bila |P | menyatakan banyaknya pesan berbeda maka |P | ≤ |Kk| = 2k.

Kemudian, tentukan berapa digit yang perlu ditambahkan kepada setiap kata tersebut un-tuk membenun-tuk kode (mis. panjang n) yang dapat mengoreksi kesalahan seperti yang dipersyaratkan. Untuk mengirim suatu pesan, transmiter mencari lebih dahulu kata pan-jang k yang menyatakan pesan tersebut dan kemudian mengirim katakode panpan-jang n yang bersesuaian dengan kata panjang k tersebut.

Decoding. Misal kata w ∈ Knditerima. Ada dua macam prosedur Decoding Ketetanggaan Maksimum (DKM) untuk menentukan katakode v ∈ C yang dikirim.

1. Decoding Ketetanggaan Maksimum Komplit (DKMK). Jika d(v, w) < d(y, w) untuk semua y ∈ C dan y 6= v, maka decode w menjadi v. Jika ada beberapa kata di C yang terdekat dengan w, maka pilih sebrang kata tersebut dan decode w menjadi kata tersebut.

2. Decoding Ketetanggaan Maksimum Tak-Komplit (DKMTK). Bedanya dengan proses sebelumnya adalah bila terdapat beberapa kata di C yang terdekat dengan w maka

(13)

pengiriman ulang (retransmisi) pesan dilakukan.

Perlu dicatat bahwa proses DKM tidak selalu dapat bekerja baik; Khususnya bila terlalu banyak kesalahan yang terjadi dalam proses pengiriman maka proses DKM tidak akan bekerja baik.

Bila d(v, w) terkecil (atau dengan kata lain bahwa v katakode terdekat dari kata w yang diterima) maka menurut Teorema 1.4.2 v mempunyai Probabilitas φp(v, w) terbesar dibanding dengan katakode lainnya. Maka besar kemungkinan bahwa v katakode yang dikirim. Selanjutnya, karena d(v, w) = wt(v + w) maka Teorema 1.4.2 dapat ditulis sebagai:

φp(v1, w) ≤ φp(v2, w) jdhj wt(v1+ w) ≥ wt(v2+ w).

Ini berarti bahwa katakode yang besar kemungkinan dikirim adalah katakode dengan pola kesalahan dengan bobot terkecil. Dengan demikian, penentuan pola kesalahan dapat dijadikan patokan dalam DKMTK.

Contoh 1.7.1. Misal |M | = 2. Pilih n = 3 dan C = {000, 111}. Jika v = 000 dikirim,

kapan DKMTK men-decode secara benar dan kapan ia men-decode secara salah ?

Untuk menentukan hal tersebut, konstruksi tabel pola kesalahan berikut ini.

w yang Pola Kesalahan Decode

diterima 000+w 111+w v 000 000* 111 000 100 100* 011 000 010 010* 101 000 001 001* 110 000 110 110 001* 111 101 101 010* 111 011 011 100* 111 111 111 000* 111

(14)

13

Tanda ’*’ pada kolom kedua dan ketiga menyatakan pola kesalahan dengan bobot terke-cil. Sehingga DKMTK akan men-decode secara benar bila yang dikirim v = 000 dan yang diterima salah satu dari 000, 100, 010, 001 dan DKMTK men-decode secara salah bila kata yg diterima salah satu dari 111, 110, 101, 011.

Contoh 1.7.2. Misal |M | = 3 dan pilih kode C = {0000, 0001, 1110} dengan n = 4.

Konstruksi tabel DKMTK seperti pada contoh di atas.

w yang Pola Kesalahan Decode

diterima 0000 + w 0001+w 1110+w v 0000 0000* 0001 1110 0000 1000 1000* 1001 0110 0000 0100 0100* 0101 1010 0000 0010 0010* 0011 1100 0000 0001 0001 0000* 1111 0001 1100 1100 1101 0010* 1110 1010 1010 1011 0100* 1110 1001 1001 1000* 0111 0001 0110 0110 0111 1000* 1110 0101 0101 0100* 1010 0001 0011 0011 0010* 1100 0001 1110 1110 1111 0000 1110 1101 1101 1100 0011 -1011 1011 1010 0101 -0111 0111 0110 1001 -1111 1111 1110 0001 1110

Tabel 2. Tabel DKMTK untuk kode C = {0000, 0001, 1110}.

Perlu dicatat bahwa dalam memilih nilai n dan kode C pada proses encoding, tiga kriteria di bawah ini penting untuk diperhatikan dalam menentukan baik-tidaknya pilihan: 1. Kata yang lebih panjang memerlukan waktu transfer dan decoding yang lebih lama;

(15)

Sehingga n sebaiknya tidak terlalu panjang. Dalam kata lain, laju informasi sebaiknya dibuat sedekat mungkin dengan angka 1.

2. Jika |C| besar maka tabel DKMTK akan membesar, sehingga akan memerlukan waktu lebih lama untuk diimplementasikan. Akan tetapi, dengan memilih C yang tepat akan dapat diperoleh metoda DKMTK yang lebih cepat.

3. Jika terdapat banyak kesalahan dalam transmisi maka DKM akan tidak bekerja baik. Maka perlu dipilih kode C sedemikian probabilitas bahwa DKM akan bekerja baik adalah tinggi.

1.8

Kepercayaan DKM

Misal n dan C telah dipilih. Kita akan menentukan probabilitas θp(C, v) bahwa jika v yang

dikirim pada saluran SBS dengan probabilitas p maka DKMTK secara benar menyimpulkan bahwa v yang telah dikirim.

Misal L(v) himpunan semua kata di Knyang ’dekat’ dengan v bila dibandingkan dengan

kata lain di C. Maka θp(C, v) adalah jumlah semua probabilitas φp(v, w) dimana w ∈ L(v).

Jadi,

θp(C, v) =

X

w∈L(v)

φp(v, w).

Catatan: L(v) adalah himpunan semua kata di Kndimana bila diterima, DKMTK akan menyimpulkan secara benar bahwa v yang telah dikirim. θp(C, v) juga dapat dipandang

sebagai hasil tambah dari probabilitas semua pola kesalahan v + w dimana w ∈ L(v). Contoh 1.8.1. Misal p = 0.93, |M | = 2, n = 3 dan C = {000, 111}. Jika kata v = 000

dikirim maka probabilitas DKMTK medecode secara benar setelah satu transmisi adalah sebagai berikut:

(16)

15 Maka, θp(C, 000 = φp(000, 000) + φp(000, 100) + φp(000, 010) + φp(000, 001) = p3+ p2(1 − p) + p2(1 − p) + p2(1 − p) = p3+ 3p2(1 − p) = 0.985986.

Dengan cara yang sama, dapat dihitung bahwa θp(C, 111) = 0.985986.

Contoh 1.8.2. Misal p = 0.93, |M | = 3, n = 4 dan C = {0000, 1010, 1110}. Untuk setiap

v ∈ C hitung θp(C, v). Untuk v = 0000. L(0000) = {0000, 0100, 0001}, θp(C, v) = φp(0000, 0000) + φp(0000, 0100) + φp(0000, 0001) = p4+ p3(1 − p) + p3(1 − p) = 0.8019. Untuk v = 1010. L(0000) = {1010, 1011}, θp(C, v) = φp(1010, 1010) + φp(1010, 1011) = p4+ p3(1 − p) = 0.729. Untuk v = 1110. L(1110) = {1110, 0110, 1100, 1111, 0111, 1101}, dan mudah ditunjukkan bahwa θp(C, v) = 0.9558.

Diskusi 1.8.3.

1. Jika |M | = 2, n = 3 dan C = {001, 101}. Jika v = 001 dikirim, kapan DKMTK menyimpulkan/mendecode secara benar, dan kapan ia mendecode secara salah? 2. Jika |M | = 3 dan n = 3. Untuk setiap kata w ∈ K3 yang diterima, tentukan kata v

di C = {000, 001, 110} dimana DKMTK menyimpulkan secara benar.

3. Konstruksi tabel DKMTK untuk setiap kode dibawah dan hitung θp(C, v) untuk setiap v di C dengan memakai p = 0.90.

a) C = {00000, 11111}

(17)

c) C = {0000, 1001, 0110, 1111} d) C = {00000, 11100, 00111, 11011}.

1.9

Kode Pendeteksi Kesalahan

Kita akan membahas konsep tentang kode C pendeteksi kesalahan. Jika v ∈ C kata yang dikirim dan w ∈ Kn yang diterima, maka u = v + w merupakan pola kesalahan. Karena setiap kata u ∈ Kn dapat menjadi pola kesalahan maka kita ingin tahu pola kesalahan

manakah yang dapat dideteksi oleh C.

Kode C dikatakan dapat mendeteksi pola kesalahan u jika dan hanya jika v + u 6∈ C untuk setiap v ∈ C. Dengan kata lain, u dapat dideteksi oleh C bila setiap katakode v yang ditransmisi, decoder dapat mengenali bahwa katakode yang diterimanya, yakni u + v, bukan merupakan katakode; Sehingga dapat disimpulkan terjadi kesalahan.

Contoh 1.9.1. Misal C = {001, 101, 110}. Untuk pola kesalahan u = 010, tentukan semua

v + 010 untuk semua v ∈ C, yakni:

001 + 010 = 011, 101 + 010 = 111, 110 + 010 = 100.

Karena semua hasilnya bukan merupakan katakode maka C dapat mendeteksi pola kesalahan

010. Sedangkan bila u = 100 maka didapat:

001 + 100 = 101, 101 + 100 = 001, 110 + 100 = 010.

Karena 001 + 100 = 101 ∈ C maka C tidak dapat mendeteksi pola kesalahan 100.

Tabel DKMTK dapat digunakan untuk menentukan semua pola kesalahan yang dapat dideteksi oleh kode C. Kolom pertama memberikan semua kata di Kn, sehingga kolom

pertama dapat reinterpretasikan sebagai semua pola kesalahan yang mungkin. Jika dalam suatu baris tertentu (dengan kolom pertama mengandung u) semua jumlah u + v bukan merupakan katakode di C, maka C dapat mendeteksi u.

Contoh 1.9.2. Pandang kode C = {000, 111} dengan Tabel DKMTK disajikan pada Tabel

1 di atas. Semua pola kesalahan didaftarkan pada kolom 1. Untuk setiap u ∈ K3, semua

jumlah v + u (dengan v ∈ C) diberikan pada kolom 2 dan 3. Dapat disimpulkan bahwa C dapat mendeteksi pola kesalahan 100, 010, 001, 110, 101 dan 011; tapi ia tidak dapat mendeteksi pola kesalahan 000 atau 111.

(18)

17

Cara lain untuk menentukan semua pola kesalahan yang dapat dideteksi oleh suatu kode

C adalah dengan mencari semua pola kesalahan yang tidak dapat dideteksi oleh C; Maka

pola kesalahan sisanya merupakan yang dapat dideteksi oleh C. Untuk setiap v dan w di

C, jika u = v + w maka u tidak dapat dideteksi oleh C karena v + u = w ∈ C. Jadi, {v + w : v, w ∈ C} merupakan himpunan semua pola kesalahan yang tidak dapat dideteksi

oleh C.

Contoh 1.9.3. Misal C = {1000, 0100, 1111}. Karena, 1000+1000=0000, 1000+0100=

1100, 1000+1111 = 0111 dan 0100+1111=1011, maka himpunan semua pola kesalahan yang tidak dapat dideteksi oleh C adalah {0000, 1100, 0111, 1011}. Jadi semua pola kesala-han yang dapat dideteksi adalah K4\{0000, 1100, 0111, 1011}.

Untuk suatu kode C dengan sedikitnya dua kata, definisikan jarak dari kode C sebagai min{d(v, w) : v, w ∈ C v 6= w}. Karena d(v, w) = wt(v + w), maka jarak kode C adalah min{wt(v + w) : v, w ∈ C, v 6= w}. Sebagai contoh, bila C = {0000, 1010, 0111} maka jarak kode C adalah 2.

Teorema 1.9.4. Suatu kode C dengan jarak d akan dapat mendeteksi sedikitnya semua

pola kesalahan taknol dengan bobot ≤ d−1. Tapi, ada sedikitnya satu pola kesalahan dengan bobot d yang tidak dapat dideteksi oleh C.

Bukti. Misal u ∈ Kn dengan wt(u) ≤ d − 1, dan v ∈ C. Maka d(v, v + u) = wt(v + v + u) = wt(u) < d.

Karena C mempunyai jarak d, maka v + u 6∈ C. Dengan demikian C dapat mendeteksi u. Dari definisi jarak d, maka ada katakode v dan w di C dengan d(v, w) = d. Sebut pola kesalahan u = v +w. Karena w = v +u ∈ C maka C tidak dapat mendeteksi pola kesalahan

u dengan bobot d. 2

Suatu kode dikatakan kode pendeteksi t kesalahan bila ia dapat mendeteksi semua pola kesalahan taknol dengan bobot ≤ t dan tidak dapat mendeteksi sedikitnya satu pola ke-salahan dengan bobot t + 1. Maka berdasar Teorema 1.9.4, setiap kode C dengan jarak kode d sedikitnya merupakan kode pendeteksi d − 1 kesalahan.

(19)

Contoh 1.9.5. Diberikan kode C = {001, 101, 110} dengan jarak kode 1. Karena d − 1 = 1 − 1 = 0, maka Teorema 1.9.4 hanya dapat memberikan kepada kita bahwa sedikitnya ada

satu pola kesalahan bobot 1 yang tidak dapat dideteksi oleh C, misal 100. Mudah diperiksa bahwa pola kesalahan 010 dan 001 (bobot 1), 110 dan 101 (bobot 2) dapat dideteksi oleh C.

Diskusi 1.9.6.

1. Tentukan semua pola kesalahan yang dapat dideteksi oleh kode C = {000, 011, 101, 110}. Berapa kesalahan dapat dideteksi oleh C?

2. Misal C suatu kode yang terdiri dari semua kata panjang 4 dengan bobot genap. Tentukan pola kesalahan yang dapat dideteksi oleh C.

1.10

Kode Pengoreksi Kesalahan

Jika kata v ∈ C yang ditransmisi pada saluran biner simetris (SBS) dan jika w kata yang diterima dengan pola kesalahan u = v+w, maka DKMTK akan menyimpulkan secara benar bahwa v yang dikirim ketika w yang diterima berjarak lebih dekat kepada v daripada kepada kata lain di C. Jika hal ini berlaku ketika pola kesalahan u terjadi tanpa bergantung pada katakode yang ditransmisikan maka C dikatakan dapat mengoreksi kesalahan u. Dengan kata lain, kode C dikatakan dapat mengoreksi pola kesalahan u jika untuk semua v ∈ C,

v + u berjarak lebih dekat ke v dibanding dengan jarak ke katakode lain di C. Kode C

dikatakan mengoreksi t kesalahan bila ia mengoreksi semua pola kesalahan dengan bobot t dan tidak mengoreksi sedikitnya satu pola kesalahan dengan bobot t + 1.

Sebagai contoh, perhatikan kode C = {000, 111}. Kode C dapat mengoreksi pola ke-salahan u = 010, karena d(000 + 010, 000) < d(000 + 010, 111) dan d(111 + 010, 111) <

d(111 + 010, 000). Namun, C tidak dapat mengoreksi pola kesalahan u = 110, karena d(000 + 110, 000) > d(000 + 110, 111). Jadi v + u tidak lebih dekat dengan v = 000 daripada

111.

Tabel DKMTK dapat digunakan untuk menentukan pola kesalahan mana saja yang dapat dikoreksi oleh kode C. Setiap tanda ’*’ yang diberikan pada suatu pola kesalahan u

(20)

19

pada kolom yang bersesuaian dengan katakode v menyatakan bahwa v + u lebih dekat ke v daripada ke katakode yang lain. Jadi pola kesalahan u tersebut dapat dikoreksi oleh C bila diberi tanda ’*’ pada setiap kolom di tabel DKMTK tersebut.

Contoh 1.10.1. Misal C = {001, 101, 110}. ApakahC dapat mengoreksi pola kesalahan

u = 100? KIta konstruksi sebagian tabel DKMTK untuk kode C dimana pola kesalahan 100 muncul. Karena u = v + w dan u serta v tahu maka w dapat dihitung. Jelas bahwa u = 100 tidak mendapatkan tanda ’*’ pada setiap kolomnya, karenanya C tidak dapat mengoreksi 100.

w yang Pola Kesalahan Decode

diterima 001 + w 101+w 110+w v

101 100 000* 011 101

001 000* 100 111 001

010 011 111 100* 110

Tabel 3. Sebagian tabel DKMTK untuk kode C = {001, 101, 110}.

Teorema 1.10.2. Suatu kode C berjarak d akan mengoreksi semua pola kesalahan

den-gan bobot kurang dari atau sama denden-gan b(d − 1)/2c. Namun, C tidak dapat mengoreksi sedikitnya satu pola kesalahan berbobot 1 + b(d − 1)/2c.

Bukti. Misal u suatu pola kesalahan dengan bobot wt(u) ≤ (d − 1)/2. Misal v dan w dua katakode di C dengan w 6= v. Kita akan tunjukkan bahwa d(v, v + u) < d(w, v + u).

d(w, v + u) + d(v + u, v) ≥ d(w, v) ≥ d

d(w, v + u) + wt(u) ≥ 2wt(u) + 1 d(w, v + u) ≥ wt(u) + 1

≥ d(v, v + u) + 1.

Maka C dapat mengoreksi u. Sekarang bila v dan w katakode dengan d(v, w) = d. Bentuk pola kesalahan u dengan dengan menukar d − 1 − b(d − 1)/2c dari d bit ’1’ pada

v + w menjadi bit ’0’. Maka:

d(v, v + u) = wt(u) = 1 + b(d − 1)/2c, dan

d(w, v + u) = wt(w + v + u) = d(v + w, u) = d − (1 + b(d − 1)/2c).

(21)

Jelas bahwa d(v, v + u) ≥ d(w, v + u), sehingga v + u tidak lebih dekat ke v daripada ke

w. Jadi C tidak mengoreksi kesalahan u. 2

Diskusi 1.10.3.

1. Untuk setiap kode C di bawah ini: (i) tentukan pola kesalahan yang dapat dikoreksi oleh C; (ii) tentukan semua pola kesalahan yang menurut Teorema 1.10.2 dijamin dapat dikoreksi oleh C.

(a) C = {101, 111, 011}

(b) C = {00000, 11110, 01111, 10001} (c) C = {0000, 1001, 0110, 1111}

(d) C = {000000, 101010, 010101, 111111}

2. Misal C suatu kode yang terdiri dari semua kata panjang 4 dengan bobot genap. Tentukan pola kesalahan yang dapat dikoreksi oleh C.

3. Misal u1 dan u2 pola kesalahan panjang n, dan misal u2 mempunyai nilai ’1’ pada

setiap posisi ’1’ di u1. Buktikan bahwa jika kode C mengoreksi u2 maka ia juga

(22)

Chapter 2

Kode Linier

2.1

Kode linier dan kode dual

Suatu kode C dikatakan linier bila v+w ∈ C untuk setiap v, w ∈ C. Dengan kata lain, kode linier adalah kode yang tertutup terhadap operasi penjumlahan kata. Contoh sederhana kode linier adalah C = {000, 111}, karena:

000 + 000 = 000 111 + 000 = 111 000 + 111 = 111 111 + 111 = 000

semuanya ada di C. Namun, C1 = {000, 100, 110} bukan kode linier, karena 100 dan 110

ada di C tapi 100 + 110 = 010 6∈ C1.

Jelas, kode linier C pasti memuat kata nol (0). Karena, bila v ∈ C maka per definisi linier: v + v = 0 ada di C. Salah satu keunggulan menggunakan kode linier adalah mudah untuk dihitung jaraknya. Yakni, jarak suatu kode linier C sama dengan bobot terkecil

katakode taknol di C. Kenapa demikian? Perhatikan berikut ini. Misal jarak C adalah k,

dan v dan w dua katakode di C yang memberikan d(v, w) = k. Misal c bobot terkecil di C. Karena C linier maka z = v + w ∈ C, dan wt(z) = wt(v + w) = d(v, w) = k. Jadi c ≤ k. Sebaliknya, jika c bobot terkecil di C dan wt(v) = c maka kelinieran C menjamin adanya 0 ∈ C, jadi d(0, v) = c. Sehingga k ≤ c. Jadi k = c.

(23)

Pada bab ini kita akan melihat bahwa kode linier mempunyai struktur yang menarik dan mempunyai banyak keunggulan dibanding dengan kode lainnya. Diantara beberapa keunggulannya adalah:

1. Untuk kode linier, prosedur DKM akan lebih sederhana dan lebih cepat.

2. Encoding kode linier akan lebih cepat dan memerlukan ruang penyimpanan yang lebih sedikit dibanding dengan kode tak linier sebarang.

3. Probabilitas θp(C, v) dapat dihitung dengan mudah untuk kode linier.

4. Mudah untuk mengetahui semua pola kesalahan yang dapat dideteksi oleh suatu kode linier.

5. Mudah untuk mengetahui semua pola kesalahan yang dapat dikoreksi oleh suatu kode linier.

Pada bab I, kita telah mendefinisikan ruang vektor atas K sebagai suatu sistim yang terdiri dari skalar (K) dan himpunan vektor Kn, dalam hal ini kata-kata, dengan operasi

tambah dua vektor dan perkalian skalar yang memenuhi 10 sifat pada bagaian 1.5. Sub-himpunan U ⊂ V disebut subruang dari ruang vektor V bila U tertutup terhadap operasi penjumlahan dan perkalian skalar, yakni jika v, w ∈ U maka v + w ∈ U dan av ∈ U untuk setiap a ∈ K. Karena satu-satunya skalar adalah 0 dan 1 maka U subruang dari Kn jika

dan hanya jika U tertutup terhadap operasi penjumlahan. Jadi, kode linier adalah suatu subruang dari Kn.

Vektor w dikatakan sebagai kombinasi linier dari vektor-vektor v1, v2, · · · , vk jika

terda-pat skalar a1, a2, · · · ak sedemikian sehingga

w = a1v1+ a2v2+ · · · + akvk.

Himpunan semua kombinasi linier dari vektor-vektor di S = {s1, s2, · · · , sk} disebut sebagai linier span dari S, dan diberi notasi hSi. Dalam hal S = ∅ definisikan hSi = {0}.

Mudah ditunjukkan bahwa untuk setiap subhimpunan S dari ruang vektor V , linier span

(24)

23

oleh S. Karena hSi subruang di Kn maka hSi membentuk kode linier yang dibangun oleh S.

Teorema 2.1.1. Untuk setiap subhimpunan S dari Kn, kode C = hSi yang dibangun oleh S terdiri dari kata-kata berikut ini: kata nol, semua kata di S, dan semua penjumlahan dua atau lebih kata di S.

Contoh 2.1.2. Misal S = {1000, 0011, 1100}. Maka kode C = hSi terdiri dari: 0000, 0011, 1000 + 0011 = 1011, 0011 + 1100 = 1111,

1000, 1100, 1000 + 1100 = 0100, 1000 + 0011 + 1100 = 0111. Dengan demikian C = hSi = {0000, 1000, 0011, 1100, 1111, 1011, 0111, 0100}.

Misal v = (v1, v2, · · · , vn) dan w = (w1, w2, · · · , wn) dua vektor di Kn. Definisikan perkalian skalar atau perkalian titik v · w dari v dan w sebagai

v · w = v1w1+ v2w2+ · · · + vnwn.

Sebagai contoh di K5,

11001 · 01010 = 1 · 0 + 1 · 1 + 0 · 0 + 0 · 1 + 1 · 0 = 0 + 1 + 0 + 0 + 0

= 1.

Vektor v dan w dikatakan saling ortogonal bila v·w = 0. Sebagai contoh 10011 ortogonal dengan 11010 di K5. Untuk himpunan S ⊂ Kn, kita katakan vektor v ortogonal pada S

bila v · s = 0 untuk semua s ∈ S. Himpunan semua vektor yang ortogonal pada S disebut

komplemen ortogonal dari S, dan dinotasikan dengan S⊥.

Mudah ditunjukkan bahwa untuk setiap subhimpunan S dari ruang vektor V , kom-plemen ortogonal S⊥ membentuk suatu subruang di V . Selanjutnya, jika C = hSi maka C⊥ = S⊥ disebut sebagai kode dual dari C. Dalam hal C ⊂ C⊥ maka kode C dikatakan

ortogonal terhadap diri sendiri (self-orthogonal atau self-dual).

Contoh 2.1.3. Untuk S = {1000, 1010}, tentukan kode dual C⊥ = S. Pertanyaan ini sama persis dengan mencari semua kata v = (x, y, z, w) di K4 yang memenuhi persyaratan

(25)

v · 1000 = 0, dan v · 1010 = 0.

Dengan menghitung perkalian skalar diatas didapat x = 0 dan x + z = 0. Ini berarti bahwa x = z = 0 tetapi y dan w dapat salah satu dari 0 atau 1. Sehingga didapat:

C⊥= S⊥= {0000, 0001, 0100, 0101}. Diskusi 2.1.4.

1. Tentukan kode di bawah ini mana yang linier. (a) C = {101, 111, 110}

(b) C = {00000, 01111, 11110, 10001} (c) C = {000, 001, 010, 011}

(d) C = {0000, 1001, 0110, 1111} (e) C = {00000, 11100, 11011, 00111}

2. Tunjukkan bahwa himpunan semua kata panjang 4 dengan bobot genap membentuk kode linier dengan jarak 2.

3. Untuk setiap himpunan S dibawah ini daftarkan semua katakode yang termasuk dalam kode hSi.

(a) S = {001, 010, 011, 111} (b) S = {1100, 1010, 0011} (c) S = {0001, 0010, 0100, 1000}

(c) S = {10101, 11111, 11000, 01010, 10110}

4. Tunjukkan bahwa untuk setiap subhimpunan S dari ruang vektor V , komplemen ortogonal S⊥ membentuk suatu subruang di V .

5. Carilah kode dual C⊥ untuk setiap kode C = hSi pada No.3.

6. Buktikan bahwa himpunan C yang terdiri dari semua kata panjang n dengan bobot genap merupakan suatu kode linier dengan jarak 2.

7. a) Tentukan semua v ∈ Kn yang memenuhi v · v = 0. b) Tentukan v dan w di Kn

yang memenuhi wt(u + v) = wt(u) + wt(v) − 2(u · v).

8. Untuk setiap subhimpunan S di ruang vektor V , tunjukkan (S⊥)⊥= hSi. 9. Berikan contoh kode yang self-dual di K4.

10. Misalkan C suatu kode linier. Tunjukkan bahwa di dalam C semua vektornya berbobot genap atau separuh jumlah vektornya berbobot genap.

11. Apakah mungkin kita mempunyai 8 vektor di K6 dengan d(u, v) ≥ 3 untuk setiap u

dan v.

12. Apakah mungkin kita mempunyai 9 vektor di K6 dengan d(u, v) ≥ 3 untuk setiap u

(26)

25

2.2

Basis dan dimensi

Himpunan S = {v1, v2, · · · , vk} dari vektor-vektor di Kn dikatakan bergantung linier bila

terdapat skalar a1, a2, · · · , ak yang tidak semuanya nol sedemikian sehingga a1v1+ a2v2+ · · · + akvk = 0.

Bila tidak demikian, himpunan S dikatakan bebas linier.

Contoh 2.2.1. Apakah S = {1001, 1101, 0011} bebas linier? Misal ada skalar a, b dan c

sehingga

a(1001) + b(1101) + c(0011) = 0.

Maka diperoleh a + b = 0, b = 0, c = 0 dan a + b + c = 0. Ini berakibat a = b = c = d = 0. Jadi, S bebas linier.

Contoh 2.2.2. Selidiki apakah S = {110, 011, 101, 100} bebas linier. Karena 110 + 011 = 101 maka ini berarti bahwa terdapat skalar a = b = c = 1 dan d = 0 sehingga a(110) +

b(011) + c(101) + d(100) = 0. Jadi S bergantung linier.

Di dalam Aljabar Linier telah ditunjukkan bahwa setiap himpunan vektor S 6= {0}

senantiasa memuat subhimpunan terbesar yang bebas linier. Berikut ini contoh bagaimana

subhimpunan terbesar tersebut ditemukan.

Contoh 2.2.3. Misal S = {110, 011, 101, 100}. Dari contoh 2.2.2 kita tahu bahwa S

bergan-tung linier, dan

1(110) + 1(011) + 1(101) + 0(100) = 000.

Atau dapat dinyatakan bahwa:

101 = 1(110) + 1(011) + 0(100).

Selanjutnya, hilangkan vektor 101 dari S, dan diperoleh S0. Kemudian periksa kembali apakah S0 bebas linier. Bila S0 masih bergantung linier maka hapus vektor yang bergantung linier pada vektor-vektor sebelumnya dan diperoleh subhimpunan baru S00. Proses ini diu-langi terus menerus hingga diperoleh subhimpunan yang bebas linier. Dalam hal contoh ini, S0 sudah bebas linier. Jadi S0= {110, 011, 100} subhimpunan terbesar yang bebas linier dari S.

Subhimpunan takkosong B dari ruang vektor V disebut basis dari V jika memenuhi kedua syarat di bawah ini:

(27)

1. B membangun V (Ini berarti, hBi = V ), dan 2. B bebas linier.

Catatan bahwa setiap himpunan bebas linier B senantiasa merupakan basis dari hBi. Karena setiap himpunan bergantung linier S memuat subhimpunan terbesar yang bebas linier maka kita dapat mengekstrak dari S untuk mendapatkan sebuah basis B untuk hSi. Hal khusus, bila S = {0} maka kita katakan basis S adalah ∅.

Contoh 2.2.4. Misal S = {1001, 1101, 0011}. Dari contoh 2.2.1 S bebas linier. Jadi S

merupakan basis dari kode C = hSi = {0000, 1001, 1101, 0011, 0100, 1010, 1111, 0010} yang merupakan subruang di K4.

Contoh 2.2.5. Misal S = {110, 011, 101, 100}. Dari contoh 2.2.2 didapat bahwa S

bergan-tung linier dan subhimpunan terbesar yang bebas linier adalah S0 = {110, 011, 100}. Maka S0 merupakan basis dari kode C = hSi.

Kedua contoh ini mengilustrasikan bagaimana mencari suatu basis untuk kode C = hSi. Untuk mencari suatu basis dari kode dualnya C⊥, ekstrak subhimpunan terbesar yang bebas

linier dari C⊥ dengan cara seperti pada contoh 2.2.3.

Subhimpunan terbesar yang bebas linier dari suatu himpunan S tidak selalu tunggal. Sebagai contoh S0 = {110, 011, 100} bukan satu-satunya subhimpunan terbesar dari S yang bebas linier, karena S00 = {110, 101, 100} juga bebas linier. Maka S00 juga dapat diambil

sebagai basis dari hSi.

Secara umum, suatu ruang vektor mempunyai banyak basis. Akan tetapi, semua basis

tersebut mempunyai jumlah elemen yang sama. Banyaknya elemen pada sebuah basis untuk

suatu ruang vektor disebut sebagai dimensi dari ruang vektor tersebut. Sebagai contoh, Kn

mempunyai dimensi n karena setiap basis mempunyai n vektor. Salah satu basisnya adalah himpunan semua vektor bobot 1 di Kn. Pada contoh 2.2.2, hSi mempunyai dimensi 3.

Sedangkan dimensi dari subruang {0} adalah 0.

Basis merupakan cara efisien untuk menyatakan kode linier C. Untuk setiap ruang

(28)

27

dinyatakan secara tunggal sebagai kombinasi linier dari vektor-vektor di B; Yakni terdapat

secara tunggal skalar a1, a2, · · · , ak sehingga w = a1v1+ a2v2+ · · · + akvk.

Contoh 2.2.6. Tulis vektor w = 011 sebagai kombinasi linier dari kata-kata di basis B =

{100, 110, 001} dari K3. Kita mencari a, b dan c sehingga w = 011 = a(100) + b(110) +

c(001). Jadi diperoleh a = b = c = 1.

Misalkan V ruang vektor dan S suatu subhimpunan di V yang bebas linier. Maka S

dapat diperluas sehingga membentuk suatu basis dari V , dengan cara menambah beberapa vektor di luar S.

Contoh 2.2.7. Perluas himpunan bebas linier S = {110, 010} sehingga membentuk basis

untuk K3. Pertama, gabungkan S dengan suatu basis dari K3 yang anda ketahui. Misal,

ambil basis K3= {100, 010, 001}. Sehingga didapat:

110, 010, 100, 010, 001

yang akan direduksi menjadi suatu basis untuk K3 dengan menghapus kata yang bergantung

linier pada kata-kata sebelumnya (seperti proses pada contoh 2.2.3). Akhirnya diperoleh S0 = {110, 010, 001} basis dari K3 yang memuat S.

Sekarang kita sampai pada teorema penting berkaitan dengan kode linier. Jika suatu kode linier C mempunyai dimensi k dan jika {v1, v2, · · · , vk} merupakan basis dari C, maka

untuk suatu katakode w ∈ C dapat ditulis sebagai:

w = a1v1+ a2v2+ · · · + akvk,

untuk suatu pilihan tunggal a1, a2, · · · , ak. Karena setiap ai hanya dapat bernilai 0 atau 1 maka akan ada sebanyak 2k pilihan untuk a

1, a2, · · · , ak; sehingga terdapat tepat 2k

katakode di C.

Teorema 2.2.8. Suatu kode linier C yang berdimensi k akan memuat tepat 2k katakode.

Teorema berikut dapat ditunjukkan dengan menggunakan hasil elementer dari teori sistem persamaan linier.

Teorema 2.2.9. Misal C = hSi kode linier yang dibangun oleh subhimpunan S di Kn. Maka (dimensi dari C) + (dimensi dari C⊥) = n.

(29)

Teorema terakhir pada bagian ini berkenaan dengan banyaknya basis untuk Kn. Perlu

dicatat bahwa ada takhingga banyaknya basis untuk Rn.

Teorema 2.2.10. Suatu kode linier berdimensi k mempunyai k!1 Qk−1i=0(2k− 2i) buah basis yang berbeda.

Diskusi 2.2.11.

1. Carilah basis dan dimensi untuk setiap kode C = hSi dan kode dualnya C⊥ untuk

setiap S pada soal No. 3, Diskusi 2.1.4.

2. Misal S subhimpunan di K9, misal C = hSi dan misalkan C⊥ berdimensi 3. (a) Tentukan dimensi dari C.

(b) Tentukan banyaknya katakode pada C.

3. Misalkan {11110000, 00001111, 11000011} suatu basis dari C⊥. Tentukan banyaknya

katakode di kode linier C.

4. Tunjukkan bahwa dalam setiap kode linier self-ortogonal, salah satu diantara ini pasti berlaku: semua vektor berbobot kelipatan 4 atau separuh vektor berbobot genap tapi bukan kelipatan 4 dan separuh lagi berbobot kelipatan 4.

2.3

Basis kode C = hSi dan C

Pada bagian ini kita akan membangun algoritma untuk menghasilkan basis untuk kode linier dan kode dualnya. Algoritma akan didasarkan pada operasi baris elementer.

Misalkan S subhimpunan takkosong dari Kn. Dua algortima pertama diberikan untuk

mencari basis dari C = hSi.

Algoritma 2.3.1. Bentuk matriks A yang semua barisnya adalah kata di S. Gunakan

operasi baris elementer untuk merubah matriks A menjadi bentuk eselon baris. Maka semua baris taknol dalam bentuk eselon baris tadi membentuk suatu basis C = hSi.

Catatan: Matriks M dikatakan dalam bentuk eselon baris (BEB) jika semua baris nol dari M (bila ada) berada pada bagian bawah M , dan setiap leading 1 selalu berada pada sisi kanan dari leading 1 untuk baris diatasnya. Lebih jauh, jika setiap kolom leading memuat tepat angka ’1’, maka matriks M dikatakan dalam bentuk eselon baris tereduksi (BEBT)

(30)

29

Contoh 2.3.2. Tentukan basis dari kode linier C = hSi untuk S = {11011, 10110, 01011, 11101}.

A =     1 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 1     →     1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0     →     1 1 0 1 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0     .

Matriks terakhir adalah bentuk eselon baris (BEB). Sehingga salah satu basis dari C adalah {11011, 01101, 00110}. Perlu dicatat bahwa Algoritma 2.3.1 tidak menghasilkan basis yang tunggal untuk hSi.

Algoritma 2.3.3. (Mencari basis C). Bentuk matriks A yang kolom-kolomnya adalah

kata-kata di S. Gunakan operasi baris elementer untuk merubah A menjadi bentuk eselon baris tereduksi (BEBT). Perhatikan kolom leading pada matriks BEBT. Maka kolom-kolom dari A yang berkorespondensi dengan kolom-kolom leading tadi membentuk suatu basis untuk C = hSi.

Algoritma berikut ini digunakan untuk mencari suatu basis dari ruang dual C⊥.

Algoritma 2.3.4. (Mencari basis untuk C⊥) Bentuk matriks A dimana baris-barisnya adalah kata di S. Gunakan operasi baris elementer untuk merubah A menjadi bentuk eselon baris tereduksi (BEBT). Misal G adalah matriks k × n terdiri dari semua baris taknol dari BEBT. Misal X adalah matriks k × (n − k) yang diperoleh dari G dengan menghapus kolom leading dari G. Bentuk matriks H ukuran n × (n − k) sebagai berikut:

1. dalam baris H yang berkorespondensi dengan kolom leading dari G letakkan baris-baris X secara terurut;

2. pada baris lainnya dari H, letakkan baris-baris matrik identitas (n−k)×(n−k) secara terurut.

Maka kolom-kolom H membentuk basis untuk C⊥.

Algoritma di atas benar karena (n − k) kolom dari H senantiasa bebas linier, dim C⊥ = n − dim C = n − k, dan dengan suatu permutasi kolom dari G dan baris dari H, berlaku

GH = X + X = 0.

Algoritma 2.3.4 dapat diingat sebagai berikut. Pertama ubah matriks A menjadi bentuk BEBT: A →   G 0   (BEBT).

(31)

Permutasi kolom-kolom dari G untuk membentuk G0= [I

k, X]. bentuk matriks H0 sebagai

berikut: H0   X In−k .

Gunakan kebalikan dari permutasi yang digunakan pada kolom-kolom di G tadi untuk mendapatkan matriks H kembali dari H0.

Contoh 2.3.5. Gunakan Algoritma 2.3.4 untuk mencari basis dari C⊥untuk S = {11011, 10110,

01011, 11101}. A =     11011 10110 01011 11101     →     11011 01101 01011 00110     →     11011 01101 00110 00000     →     10000 01011 00110 00000     . Sekarang, bentuk G =  100|00010|11 001|10, k = 3 dan X =  0011 10 

. Kolom leading dari G adalah

1,2 dan 3, sehingga baris-baris X diletakkan pada baris ke- 1, 2 dan 3 pada matriks H ukuran 5 × (5 − 3). Baris sisanya dari H diisi dengan matriks identitas 2 × 2. Maka:

        00 11 10 10 01         .

Dengan Algoritma 2.3.4. kolom-kolom H membentuk basis dari C⊥.

Contoh 2.3.6. Misalkan n = 10 dan misal S suatu himpunan kata di K10. Misal

ben-tuk BEBT dari matriks A yang dihasilkan Algoritma 2.3.4 mempunyai baris taknol seperti dibawah ini: G =       1010010101 0001010001 0000100100 0000001001 0000000011      .

Kolom leading dari G adalah 1, 4, 5, 7 dan 9. Kita permutasi kolom G dalam urutan

(32)

31 G =       1000001111 0100000101 0010000010 0001000001 0000100001      .

Maka kita bentuk matriks H0 di bawah ini dan kemudian dengan mengatur kembali baris dari H sesuai dengan balikan dari permutasi yang digunakan pada kolom G tadi dan didapat H. H0 = µ X I ¶ =                 01111 00101 00010 00001 00001 10000 01000 00100 00010 00001                 1 4 5 7 9 2 3 6 8 10 ; H =                 01111 10000 01000 00101 00010 00100 00001 00010 00001 00001                 1 2 3 4 5 6 7 8 9 10 .

Dengan Algoritma 2.3.4, kolom-kolom H membentuk basis untuk C⊥.

Diskusi 2.3.7.

1. Dengan menggunakan Algoritma 2.3.4 tentukan basis dari C⊥ untuk setiap kode C = hSi dimana (a) S = {010, 110, 111} (b) S = {0101, 1010, 1100} (c) S = {10110, 01110, 11110, 01010, 10111} (d) S = {111000, 101010, 010101, 000111} (e) S = {00000000, 11111111, 01010101, 10101010}

2. Untuk setiap himpunan S dibawah, gunakan Algoritma 2.3.4 untuk menemukan basis

B untuk kode C = hSi dan basis B⊥ untuk kode dual C.

(a) S = {00000, 111000, 111111, 000111} (b) S = {11100, 01110, 00111, 10011, 11001}

(c) S = {100100100, 010010010, 111111111, 000000000}

2.4

Matriks pembangun dan matriks cek paritas

Pada bagian untuk akan diberikan matriks yang penting untuk kode linier yang digunakan untuk proses encoding (dalam pengiriman pesan).

(33)

Rank dari suatu matriks A atas lapangan K adalah banyaknya baris taknol di setiap

bentuk eselon baris dari matriks A. Dimensi k dari suatu kode C adalah dimensi dari subruang C di Kn. Untuk selanjutnya, suatu kode linier dengan panjang n, dimensi k

dan jarak d dinotasikan sebagai kode linier-(n, k, d). Jika C suatu kode linier panjang

n dan dimensi k maka setiap matriks yang baris-barisnya membentuk suatu basis dari C

disebut sebagai matriks pembangun (matriks generator) untuk C. Dengan demikian, matriks pembangun dari kode linier C harus mempunyai k baris dan n kolom, dan mempunyai rank tepat sama dengan k. Sehingga didapat teorema berikut.

Teorema 2.4.1. Matriks G adalah matriks pembangun dari suatu kode linier C jika dan

hanya jika baris-baris dari G bebas linier.

Teorema 2.4.2. Jika G matriks pembangun untuk suatu kode C maka setiap matriks yang

ekivalen (baris) dengan G juga merupakan matriks pembangun untuk C. Khususnya, setiap kode linier mempunyai matriks pembangun dalam bentuk eselon baris tereduksi (BEBT).

Contoh 2.4.3. Tentukan matriks pembangun dari kode linier C = {0000, 1110, 0101, 1011}.

Dengan menggunakan Algoritma 2.3.1 diperoleh,

A =     0000 1110 0101 1011     →     1110 0101 1011 0000     →     1110 0101 0101 0000     →     1110 0101 0000 0000     . Jadi G = µ 1110 0101 ¶

adalah matriks pembangun dari kode linier C. Bentuk eselon baris tereduksi dari matriks tersebut, yakni G1 =

µ 1011 0101 ¶

juga merupakan matriks pembangun.

Misal G suatu matriks pembangun dari kode linier C panjang n dan dimensi k. Maka, untuk setiap kata u panjang k (ditulis sebagai vektor baris) v = uG merupakan suatu katakode di C. Ini benar karena, jika u = (c1, c2, · · · , ck) dan jika

G =        g1 g2 .. . gk        ,

(34)

33

dimana g1, g2, · · · , gk adalah baris-baris dari G maka v = uG = c1g1 + c2g2 + · · · + ckgk

merupakan kombinasi linier dari baris-baris G (vektor dari basis untuk C). Di sisi lain, karena setiap katakode v di C adalah kombinasi linier dari vektor-vektor basis untuk C (baris-baris dari G), maka v = wG untuk tepatnya satu w ∈ Kk. Sehingga berlaku teorema

di bawah.

Teorema 2.4.4. Jika G matriks pembangun suatu kode C panjang n dan dimensi k, maka

C = {v = wG | w ∈ Kk} yang terdiri dari 2k katakode. Lebih jauh, w

1G = w2G jika dan

hanya jika w1= w2.

Teorema 2.4.4 menyatakan bahwa pesan yang akan diencode oleh kode linier-(n, k, d) adalah semua kata u ∈ Kk. Pesan u diencode dengan matriks G menjadi v = uG. Sehingga

hanya k digit dari setiap katakode yang digunakan untuk membawa pesan. Maka laju informasi dari kode linier-(n, k, d) adalah log2(2k)/n = k/n.

Contoh 2.4.5. Misal C suatu kode linier-(5, 3, d) dengan matriks pembangun di bawah ini.

Maka laju informasi dari C adalah k/n = 3/5. Semua pesan w ∈ K3 dapat diencode dengan matriks G menjadi katakode panjang 5. Sebagai contoh pesan w = 110 diencode menjadi:

v = wG = (110)  1010001001 00111   = 11101.

Selain matriks pembangun untuk kode C, ada satu matriks lagi, yakni matriks cek paritas, yang berguna berkenaan dengan suatu kode C. H disebut matriks cek paritas dari kode linier C jika kolom-kolom dari H membentuk basis dari kode dual C⊥. Berdasarkan

Teorema 2.2.9, jika C mempunyai panjang n dan dimensi k maka dimensi dari C⊥ adalah n − k. Dengan demikian, setiap matrik cek paritas dari C akan berukuran n × (n − k)

dengan rank (n − k). Sehingga didapat teorema di bawah ini.

Teorema 2.4.6. Matriks H ukuran n × (n − k) merupakan matriks cek paritas dari kode

linier C panjang n dan dimensi k jika dan hanya jika kolom-kolom H bebas linier.

Misal H matriks cek paritas dari kode linier C. Mengingat bahwa C⊥= {v ∈ Kn| v·c =

0, ∀c ∈ C} maka setiap w ∈ C akan bersifat bahwa wH = 0. Jadi diperoleh teorema berikut ini.

(35)

Teorema 2.4.7. Jika H matriks cek paritas dari kode linier C panjang n, maka C terdiri

dari semua kata w ∈ Kn yang memenuhi wH = 0.

Algoritma 2.3.4 dapat digunakan untuk mencari matriks cek paritas dari kode linier C dengan matriks pembangun G. Selanjutnya, sifat dan hubungan kedua matriks tersebut dapat diringkaskan sebagai berikut.

Teorema 2.4.8. Matriks G dan H berturut-turut merupakan matriks pembangun dan

ma-triks cek paritas untuk suatu kode linier C jika dan hanya jika: (i) Baris dari G bebas linier,

(ii) Kolom dari H bebas linier,

(iii) Banyaknya baris dari G + Banyaknya kolom dari H = Banyaknya kolom dari G = Banyaknya baris dari H, dan

(iv) GH = 0.

Karena HTGT = (GH)T = 0 dan berdasar Teorema 2.4.8 maka didapat teorema

berikut.

Teorema 2.4.9. H adalah matriks cek paritas dari C jika dan hanya jika HT matriks pembangun dari C⊥. G matriks pembangun dari C jika dan hanya jika GT matriks cek paritas dari C⊥.

Contoh 2.4.10. Tentukan matriks cek paritas dari kode C = {0000, 1110, 0101, 1011}. Dari

contoh 2.4.3 didapat G1 = µ 1011 0101 ¶ = (I X)

matriks pembangun dari C dalam BEBT. Dengan Algoritma 2.3.4 kita dapat mengkonstruksi matriks cek paritas H:

H = µ X I ¶ =     11 01 10 01    

matriks cek paritas dari C. Perlu dicatat bahwa vH = 00 untuk semua kata v ∈ C.

Proses encoding, menurut Teorema 2.4.4, merupakan proses penambahan digit tamba-han (redundancy digits) kepada digit informasi. Setidaknya ada dua cara encoding suatu kode C. Pertama, encoding dengan menggunakan kombinasi linier dari baris-baris pada

(36)

35

matriks pembangun kode C. Kedua, encoding dengan menggunakan persamaan cek pari-tas (karena vH = 0 untuk semua v ∈ C). Kadangkala, untuk suatu kode tertentu (misal kode linier siklis), ada cara lain untuk melakukan encoding. Secara umum, proses encoding tidaklah sukar. Akan tetapi, masalah yang sukar adalah proses decoding.

Karena suatu kode-(n, k, d) dapat diencode dalam beberapa cara, maka adalah tidak selalu benar bahwa k posisi pertama pada setiap katakode merupakan himpunan digit in-formasi. Akan tetapi, setiap kode C akan ekuivalen dengan suatu kode C0 yang mempunyai k posisi pertama sebagai digit informasi.

Dua kode C1 dan C2 dikatakan ekuivalen jika C2 dapat diperoleh dari kode C1 dengan

suatu permutasi indeks koordinat dari suatu matriks pembangun. Sebagai contoh kode C1

dan C2 dengan matriks pembangun G1dan G2berturut-turut di bawah ini adalah ekuivalen

karena C2dapat diperoleh dari C1dengan permutasi (1, 4)(2, 5)(3, 6), yakni dengan menukar

kolom 1 dan 4, kolom 2 dan 5, serta kolom 3 dan 6.

G1 =     100011 010101 001110     dan G2 =     011100 101010 110001    

Kode-kode yang ekuivalen akan mempunyai tepat sifat pengoreksi kesalahan yang sama. Jika yang satu dapat didecode maka kode yang ekuivalen lainnya juga dapat didecode, dengan cara melakukan permutasi dan kemudian mendecode. Jadi mereka bukanlah kode yang secara esensial berbeda.

Kita katakan bahwa matriks pembangun G dari kode linier (n, k, d) dalam bentuk standar bila G = (I, X), dimana I matriks identitas k × k dan X matriks k × (n − k). Sedangkan kode C yang dibangun oleh matriks G bentuk standar disebut sebagai kode sistematik. Catatan: Tidak semua kode linier mempunyai matriks pembangun dalam bentuk standar. Sebagai contoh, kode C yang dibangun oleh {100, 001} mempunyai 6 buah macam matriks

(37)

pembangun, dimana tidak satupun dalam bentuk standar. Tunjukkan! Namun, bila digit kedua dipertukar dengan digit 3 pada semua katakode di C maka didapat kode C∗ yang

dibangun oleh {100, 010} dan ekuivalen dengan C. Serta, dapat diperlihatkan bahwa kode

C∗ mempunyai matriks pembangun bentuk standar.

Banyak keuntungan kalau kita dapat menggunakan kode yang mempunyai matriks pem-bangun dalam bentuk standar. Diantaranya, adalah jika kode linier C mempunyai matriks pembangun dalam bentuk standar G = (I, X) maka menurut Algoritma 2.3.4 didapat ma-triks cek paritas dari C adalah:

H =  X I .

Teorema 2.4.11. Jika C suatu kode linier panjang n dan dimensi k dengan matriks

pem-bangun G dalam bentuk standar, maka k digit pertama dalam setiap katakode v = uG membentuk kata u ∈ Kk.

Bukti. Karena setiap katakode v ∈ C diperoleh dari v = uG = u(I, X) = (uI, uX) = (u, uX). Maka v = (u, uX) untuk suatu u ∈ Kk. Jadi k digit pertama dari setiap katakode membentuk kata u ∈ Kk. 2

Teorema 2.4.12. Setiap kode C ekuivalen dengan suatu kode C∗ yang mempunyai matriks pembangun dalam bentuk standar.

Bukti. Jika G matriks pembangun dari C maka ubahlah ke dalam bentuk eselon baris tereduksi (BEBT). Kemudian permutasi kolom-kolom matriks BEBT tadi sehingga kolom leading berada di depan dan kolom-kolom leading tersebut akan membentuk matriks iden-titas. Setelah dipermutasi tersebut maka didapat matriks G∗ dalam bentuk standar sebagai

matriks pembangun dari kode C∗ yang ekuivalen dengan C. 2 Diskusi 2.4.13.

(38)

37

1. Periksa apakah matriks di bawah ini merupakan matriks pembangun suatu kode linier.

A =        010011101 100101101 101100110 101101101        B =           1001101001 1101000101 0111001011 1000010111 1010001110          

2. Tentukan matriks pembangun dan matriks cek paritas dari kode yang dibangun oleh himpunan S berikut ini. berikan parameter (n, k, d) untuk setiap kode tersebut. (a) S = {11111111, 11110000, 11001100, 10101010} (b) S = {00000011, 00001100, 00110000, 11000000} (c) S = {1010, 0101, 1111} (d) S = {101101, 011010, 110111, 000111, 110000} 3. Bila G =     10011 01000 00101   

 Maka encode pesan berikut ini: (i) u = 100, (ii) u = 010 dan (iii)

u = 111.

4. Definisikan pesan dalam kata-kata di K3 sebagai berikut:

A = 000, E = 100, G = 010, I = 001, K = 110, N = 101, P = 011, R = 111.

Gunakan matriks pembangun pada contoh 2.4.5 untuk mengencode pesan PERANG IRAK.

5. Tentukan kode C∗ yang sistematik yang ekuivalen dengan kode C. Periksa bahwa C

dan C∗ mempunyai panjang, dimensi dan jarak yang sama.

(a) C = {00000, 10110, 10101, 00011} (b) C = {00000, 11000, 00111, 11011}

6. Tentukan matriks pembangun G∗ bentuk standar untuk kode C yang ekuivalen

(39)

(a) H =           110 100 011 010 001           (b) H =                 100 111 010 110 101 001 011                

7. Berikan matriks pembangun dan cek paritas untuk kode linier yang terdiri dari semua vektor panjang 8 dengan bobot genap.

2.5

Jarak kode linier dan Koset

Telah ditunjukkan sebelumnya bahwa jarak dari suatu kode linier C adalah bobot minimum dari katakode taknol di C. Sehingga jarak kode linier C dapat ditentukan berdasarkan matriks cek paritas sebagai berikut.

Teorema 2.5.1. Misal H matriks cek paritas dari kode linier C. Maka C mempunyai

jarak d jika dan hanya jika setiap himpunan d − 1 buah baris dari H akan bebas linier dan sedikitnya ada satu himpunan d buah baris dari H yang bergantung linier.

Proof. Misal v ∈ C dan H matriks cek paritas dari C. Maka vH merupakan kombinasi linier dari tepat wt(v) baris di H. Jika v ∈ C dan wt(v) = d maka vH = 0 dan ini berakibat bahwa ada d baris dari H yang bergantung linier. Lebih lanjut, jika wH = 0 maka w akan merupakan katakode, sehingga wt(w) ≥ d. Jadi setiap d − 1 buah baris dari H akan bebas linier. 2

Contoh 2.5.2. Misal C suatu kode linier dengan matriks cek paritas sebagai berikut:

H =           1011 1001 0110 1000 0100 0010 0001           .

(40)

39

Mudah ditunjukkan bahwa setiap dua baris sebarang di H adalah bebas linier. Namun, ada 3 baris dari H yang bergantung linier, misalnya baris ke-3,5 dan 6. Jadi jarak dari kode C adalah d = 3.

Jika C kode linier panjang n dan jika u suatu kata di Kn, definisikan koset dari C yang

ditentukan oleh a, dan ditulis a + C, adalah {a + v | v ∈ C}. Koset ini adalah koset dari C yang memuat a. Khususnya, bila a ∈ C maka a + C = C. Sebuah koset dapat dinyatakan oleh salah satu elemen yang dikandungnya. Ini berarti jika b ∈ a + C maka a + C = b + C karena b = a + c untuk suatu c ∈ C. Sebagai contoh, misal C = {000, 111}, maka diperoleh empat koset dari C dibawah ini:

100 + C = {100 + 000, 100 + 111} = {100, 011},

010 + C = {010 + 000, 010 + 111} = {010, 101}, 001 + C = {001 + 000, 001 + 111} = {001, 110}, 111 + C = {111 + 000, 111 + 111} = {111, 000}.

Berikut ini teorema yang memberikan beberapa fakta penting dan berguna tentang koset. Beberapa contoh setelah teorema tersebut mungkin dapat membantu memahami fakta penting tersebut. Bukti teorema diberikan sebagai latihan dalam diskusi 2.5.6. Teorema 2.5.3. Misalkan C kode linier panjang n. Misal a dan b kata panjang n. Maka:

(i) Setiap koset dari C mempunyai jumlah elemen yang sama dengan C sendiri. (ii) Setiap kata di Kn terkandung pada tepat satu dan hanya satu koset dari C. (iii) Kn merupakan gabungan semua koset dari C.

(iv) Jika u + v di C maka u dan v berada pada koset yang sama. (v) Jika u + v 6∈ C maka u dan v berada pada koset yang berbeda. (vi) Jika C berdimensi k maka C mempunyai tepat 2n−k buah koset.

Contoh 2.5.4. Tentukan semua koset dari kode C = {0000, 0100, 1010, 1110}. Pertama, C

sendiri merupakan koset, karena 0000 + C = C. Untuk mencari koset lainnya, maka ambil kata di K4\C. Untuk keperluan decoding selanjutnya, ambil kata u ∈ K4\C dengan bobot

terkecil. Misal, ambil u = 1000. Maka didapat koset:

(41)

Selanjutnya, ambil kata lain dengan bobot terkecil di K4 tapi tidak di C dan C + 1000,

misalkan 0001. Maka diperoleh koset lainnya:

0001 + C = {0001, 0101, 1011, 1111}.

Proses diulang dengan mengambil kata 1001 dan didapat koset:

1001 + C = {1001, 1101, 0011, 0111}.

Sehingga kita mempunyai 4 = 2n−k= 24−2= 22 buah koset dari kode C dimana setiap koset

mempunyai 2k= 22 = 4 kata. Setiap kata di K4berada pada tepat satu dan hanya satu koset

dari C. Periksa bahwa 1000 + 0010 = 1010 ∈ C, maka 1000 dan 0010 berada pada koset yang sama, yakni 1000 + C (lihat Teorema 2.5.3(iv)). Di sisi lain, 1100 + 1001 = 0101 6∈ C maka 1100 dan 1001 berada pada koset yang berlainan (Teorema 2.5.3(v)).

Contoh 2.5.5. Daftarkan semua koset dari kode linier C dengan matriks pembangun G =

100101010111 001011

 .

Kode C mempunyai dimensi k = 3 maka ada 2n−k= 26−3= 8 buah koset. Setiap koset

akan memuat 2k= 23 = 8 elemen. Kedelapan koset tersebut adalah sebagai berikut:

000000 100101 010111 001011 110010 101110 011100 111001 100000 000101 110111 101011 010010 001110 111100 011001 010000 110101 000111 011011 100010 111110 001100 101001 001000 101101 011111 000011 111010 100110 010100 110001 000100 100001 010011 001111 110110 101010 011000 111101 000010 100111 010101 001001 110000 101100 011110 111011 000001 100100 010110 001010 110011 101111 011101 111000 101000 001101 111111 100011 011010 000110 110100 010001 Diskusi 2.5.6.

1. Tentukan jarak kode linier C dengan matriks cek paritas yang diberikan di bawah ini. Gunakan Teorema 2.5.1 dan kemudian periksa hasil saudara dengan mencari bobot

Gambar

Tabel 1. Tabel DKMTK untuk kode C = {000, 111}.
Tabel 2. Tabel DKMTK untuk kode C = {0000, 0001, 1110}.
Tabel 3. Sebagian tabel DKMTK untuk kode C = {001, 101, 110}.
Tabel pada contoh 2.6.5 disebut sebagai Array decoding standar (ADS) untuk kode linier C

Referensi

Dokumen terkait

Dari tabel uji reliabilitas yang dihasilkan oleh SPSS, dapat dilihat bahwa cronbach alpha expectation pada dimensi assurance adalah 0,845 dan perceived

54 Tahun 2010 tentang Pengadaan Barang/Jasa Pemerintah serta menindaklanjuti proses seleksi untuk Paket Pekerjaan Pengadaan Mesin Digital , bersama ini kami

Ketidakhadiran Saudara dalam proses pembuktian kualifikasi dapat menyebabkan perusahaan Saudara dinyatakan gugur. Demikian untuk

Pengaruh Modifikasi Dasar Permainan Bola Basket Terhadap Peningkatan Kemampuan Gerak Manipulatif Anak Tunagrahita Ringan.. Universitas Pendidikan Indonesia | repository.upi.edu

FAKTOR-FAKTOR DETERMINAN YANG MEMENGARUHI PEMBENTUKAN JIWA WIRAUSAHA SISWA SMK Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu..

Alasan penelitian pengembangan e-book berbasis problem based learning-GIS (PBL-GIS) karena e-book merupan media yang inovatif dari sebuah buku cetak dan dapat

[r]

Contohnya adalah simpanse ( Pan troglodytes), gorila (Gorilla gorilla), dan manusia