Table of Contents. Table of Contents 1

dokumen-dokumen yang mirip
BAB II LANDASAN TEORI

BAB II TEORI KODING DAN TEORI INVARIAN

Kode, GSR, dan Operasi Pada

Aljabar Linear Elementer

BAB II TINJAUAN PUSTAKA

Sandi Blok. Risanuri Hidayat Jurusan Teknik Elektro dan Teknologi Informasi FT UGM

3 HASIL DAN PEMBAHASAN

BAB III HASIL DAN PEMBAHASAN

Proses Decoding Kode Reed Muller Orde Pertama Menggunakan Transformasi Hadamard

BAB I PENDAHULUAN. Penyampaian pesan dapat dilakukan dengan media telephone, handphone,

UNIVERSITAS NEGERI YOGYAKARTA F A K U L T A S M I P A

Ruang Vektor. Kartika Firdausy UAD blog.uad.ac.id/kartikaf. Ruang Vektor. Syarat agar V disebut sebagai ruang vektor. Aljabar Linear dan Matriks 1

BAB I PENDAHULUAN A. Latar Belakang B. Rumusan Masalah C. Tujuan

Pertama, daftarkan kedua himpunan vektor: himpunan yang merentang diikuti dengan himpunan yang bergantung linear, perhatikan:

Kode Sumber dan Kode Kanal

Deteksi dan Koreksi Error

BAB II KAJIAN TEORI. definisi mengenai grup, ring, dan lapangan serta teori-teori pengkodean yang

BAB II KAJIAN PUSTAKA. operasi matriks, determinan dan invers matriks), aljabar max-plus, matriks atas

Aljabar Linier Sistem koordinat, dimensi ruang vektor dan rank

Aljabar Linier Elementer

Chapter 5 GENERAL VECTOR SPACE Row Space, Column Space, Nullspace 5.6. Rank & Nullity

1 PENDAHULUAN 1.1 Latar Belakang

Aljabar Linier. Kuliah 2 30/8/2014 2

CHAPTER 6. Ruang Hasil Kali Dalam

dari ruang vektor berdimensi hingga V (dimana I adalah suatu himpunan indeks) disebut basis bagi V jika V = span(ψ) dan vektorvektor

G a a = e = a a. b. Berdasarkan Contoh 1.2 bagian b diperoleh himpunan semua bilangan bulat Z. merupakan grup terhadap penjumlahan bilangan.

KOREKSI KESALAHAN. Jumlah bit informasi = 2 k -k-1, dimana k adalah jumlah bit ceknya. a. KODE HAMMING

BAB 5 RUANG VEKTOR A. PENDAHULUAN

BAB IV HASIL DAN PEMBAHASAN

Operasi perkalian skalar merupakan suatu aturan yang mengasosiasikan setiap skalar k dan setiap objek u pada v dengan suatu objek ku, yang disebut

PEDOMAN PENGGUNAAN SIMULATOR PENYANDIAN DAN PENGAWASANDIAN SISTEM KOMUNIKASI BERBASIS PERANGKAT LUNAK VISUAL C#

BAB II LANDASAN TEORI. yang biasanya dinyatakan dalam bentuk sebagai berikut: =

Bab 2 LANDASAN TEORI

KONSTRUKSI LEXICOGRAPHIC UNTUK MEMBANGUN KODE HAMMING (7, 4, 3)

BAB II DASAR TEORI. 7. Menuliskan kode karakter dimulai dari level paling atas sampai level paling bawah.

Sebuah garis dalam bidang xy bisa disajikan secara aljabar dengan sebuah persamaan berbentuk :

METODE HAMMING PENDAHULUAN. By Galih Pranowo ing

KONSTRUKSI KODE LINEAR BINER OPTIMAL KUAT BERJARAK MINIMUM 5 DAN 7 ASRIZA RAHMA

MODUL ALJABAR LINEAR 1 Disusun oleh, ASTRI FITRIA NUR ANI

SATUAN ACARA PERKULIAHAN MATA KULIAH : ALJABAR LINIER JURUSAN : TEKNIK KOMPUTER JUMLAH SKS : Definisi, Notasi, dan Operasi Vektor 2.

Aljabar Linier. Kuliah

BAB III OPERATOR LINEAR TERBATAS PADA RUANG HILBERT. Operator merupakan salah satu materi yang akan dibahas dalam fungsi

Analisis Fungsional. Oleh: Dr. Rizky Rosjanuardi, M.Si Jurusan Pendidikan Matematika UNIVERSITAS PENDIDIKAN INDONESIA

SATUAN ACARA PERKULIAHAN MATA KULIAH : ALJABAR LINIER KODE / SKS : IT / 2 SKS

UNIVERSITAS PENDIDIKAN INDONESIA

KONSTRUKSI KODE LINEAR BINER OPTIMAL KUAT BERJARAK MINIMUM 13 DAN 15 HENDRAWAN

1.1. Definisi, Notasi, dan Operasi Vektor 1.2. Susunan Koordinat Ruang R n 1.3. Vektor di dalam R n 1.4. Persamaan garis lurus dan bidang rata

9. Teori Aproksimasi

GARIS-GARIS BESAR PROGRAM PEMBELAJARAN

RUANG VEKTOR UMUM AKSIOMA RUANG VEKTOR

BAB II KAJIAN TEORI. Himpunan merupakan suatu kumpulan obyek-obyek yang didefinisikan. himpunan bilangan prima kurang dari 12 yaitu A = {2,3,5,7,11}.

Makalah Teori Persandian

Lampiran 1 Pembuktian Teorema 2.3

BASIS DAN DIMENSI. dengan mengurangkan persamaan kedua dengan persamaan menghasilkan

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

Aljabar Linier. Kuliah 3. 5/9/2014 Yanita FMIPA Matematika Unand

7. NILAI-NILAI VEKTOR EIGEN. Nilai Eigen dan Vektor Eigen Diagonalisasi Diagonalisasi Ortogonal

SOLUSI PENDEKATAN TERBAIK SISTEM PERSAMAAN LINEAR TAK KONSISTEN MENGGUNAKAN DEKOMPOSISI NILAI SINGULAR

Encoding dan Decoding Kode BCH (Bose Chaudhuri Hocquenghem) Untuk Transmisi Data

Aljabar Linear dan Matriks (Persamaan Linear dan Vektor) Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

Ruang Vektor Euclid R 2 dan R 3

ALJABAR LINIER MAYDA WARUNI K, ST, MT ALJABAR LINIER (I)

uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx wertyuiopasdfghjklzxcvbnmqwertyui opasdfghjklzxcvbnmqwertyuiopasdfg

MUH1G3/ MATRIKS DAN RUANG VEKTOR

BAB III PEREDUKSIAN RUANG INDIVIDU DENGAN ANALISIS KOMPONEN UTAMA. Analisis komponen utama adalah metode statistika multivariat yang

Ruang Baris, Ruang Kolom, dan Ruang Null (Kernel)

0. Diperoleh bahwa: Selanjutnya dibuktikan tertutup terhadap perkalian skalar:

BAB 2 LANDASAN TEORI

BAB III PEMBAHASAN. Teori Pengkodean (Coding Theory) adalah ilmu tentang sifat-sifat kode

MATERI ALJABAR LINEAR LANJUT RUANG VEKTOR

Definisi : det(a) Permutasi himpunan integer {1, 2, 3,, n}:

BAB IV TRANSFORMASI LINEAR. sebuah vektor yang unik di dalam W dengan sebuah vektor di dalam V, maka kita mengatakan F

Aljabar Linier & Matriks

RUANG VEKTOR. Nurdinintya Athari (NDT)

KONSTRUKSI BARISAN HITUNG SERAGAM SEIMBANG BERBASIS BARISAN TRANSISI KODE GRAY

ENCODING DAN DECODING KODE HAMMING SEBAGAI KODE TAK SIKLIK DAN SEBAGAI KODE SIKLIK Lilik Hardianti, Loeky Haryanto, Nur Erawaty

BAB I PENDAHULUAN Latar Belakang Masalah

6 Sistem Persamaan Linear

Part II SPL Homogen Matriks

RANGKUMAN TEKNIK KOMUNIKASI DATA DIGITAL

BAB 2 LANDASAN TEORI

BAB I PENDAHULUAN. Struktur aljabar merupakan suatu himpunan tidak kosong yang dilengkapi

MODUL DAN KEUJUDAN BASIS PADA MODUL BEBAS

BAB II DASAR DASAR TEORI

Penerapan Operasi Matriks dalam Kriptografi

ALJABAR LINEAR BASIS RUANG BARIS DAN BASIS RUANG KOLOM SEBUAH MATRIKS. Dosen Pengampu: DARMADI, S.Si, M.Pd. Oleh: Kelompok III

Kumpulan Soal,,,,,!!!

BAB X SISTEM PERSAMAAN LINIER

4.1 Algoritma Ortogonalisasi Gram-Schmidt yang Diperumum

BAB II LANDASAN TEORI

BAB II ARITMATIKA DAN PENGKODEAN

STRUKTUR ALJABAR 1. Kristiana Wijaya

BAB 2 RUANG HILBERT. 2.1 Definisi Ruang Hilbert

TEKNIK PENGOLAHAN CITRA. Kuliah 13 Kompresi Citra. Indah Susilawati, S.T., M.Eng.

Matematika Diskrit 1

Pertemuan 1 Sistem Persamaan Linier dan Matriks

Aljabar Linier Elementer. Kuliah 1 dan 2

Bab 4 RUANG VEKTOR. 4.1 Ruang Vektor

TTG3B3 - Sistem Komunikasi 2 Linear Block Code

BEBERAPA KARAKTERISTIK KRIPTOSISTEM KUNCI PUBLIK BERDASARKAN MATRIKS INVERS TERGENERALISASI

Transkripsi:

Table of Contents 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 = S 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 1

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 Bibliography 88

Chapter 1 Pendahuluan Teori Koding (Coding theory) merupakan ilmu yang mempelajari teknik dan metoda transmisi 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, transfer 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 memberikan asumsi-asumsi berikut ini: 2

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 komunikasi 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

4 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 menggunakan 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 1 2 p < 1. Sehingga, untuk selanjutnya, dapat mengasumsikan bahwa kita menggunakan saluran biner simetri dengan probabilitas p, 1 2 < p < 1. (Catatan: kasus

5 p = 1 2 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 C 1 = {00, 10, 01, 11}. Maka setiap kata yang diterima merupakan katakode, sehingga C 1 tidak dapat mendeteksi adanya kesalahan. Kode C 1 tidak dapat mengoreksi karena setiap kata yang diterima tidak perlu perubahan untuk menjadi katakode. Contoh 1.1.2. Ubah kode C 1 dengan mengulang setiap katakodenya 3 kali dan didapat kode C 2 = {000000, 101010, 010101, 111111}. Kode ini salah satu contoh kode pengulangan. Misal kata 111010 yang diterima. Karena kata ini tidak di C 2, maka kami dapat mendeteksi sedikitnya ada satu kesalahan. Untuk menjadikan katakode, kata 111010 perlu diubah sedikitnya pada satu digitnya menjadi 101010. Sehingga kita mengharap bahwa 101010 memang kata yang ditransmisikan, sehingga kita mengoreksi 111010 menjadi 101010. Kode C 2 dapat mengoreksi satu kesalahan. Contoh 1.1.3. Kode C 3 = {000, 101, 011, 110}. Kode C 3 ini didapat dengan menambahkan digit ketiga pada setiap katakode di C 1 sehingga jumlah digit 1 pada setiap katakode genap.

6 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 C 4 kode yang diperoleh dari C 1 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 n log 2 C. Karena 1 C 2 n untuk kode biner C maka laju informasi berharga diantara 0 dan 1. Sebagai contoh, laju informasi untuk kode C 1, C 2 dan C 3 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 10 7 digit per detik. Maka Probabilitas bahwa kata yang diterima tidak sesuai dengan kata yang dikirim adalah kira-kira 11p 10 (1 p), yakni sekitar 11/10 8. Sehingga jumlah kata yang ditransmisikan secara tidak benar adalah: 11 10 8 107 11 = 0.1 kata per detik.

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. Sehingga kode baru mempunyai panjang 12. Karena setiap kesalahan satu dapat terdeteksi, maka Probabilitas terjadinya kesalahan tanpa kita sadari adalah 12 p 10 (1 p) 2, yakni 2 sekitar 66 10 16. Sehingga jumlah kata yang ditransmisikan secara tidak benar tanpa terdeteksi adalah 66 10 16 107 12 = 5.5 10 9 kata 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 mendeteksi 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) = p n d (1 p) d. Contoh 1.4.1. Misal C suatu kode dengan panjang 5. Maka untuk setiap v C, Probabilitas bahwa v diterima secara benar adalah: φ p (v, v) = p 5. Jika 11010 C maka dan jika p= 0.8 maka φ p (11010, 11101) = p 2 (1 p) 3, φ 0.8 (11010, 11101) = (0.8) 2 (0.2) 3 = 0.00512.

8 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 1 2 < p < 1. Misal v 1 dan v 2 katakode dan w suatu kata, semuanya panjang n. Misal bahwa v 1 berbeda dengan w dalam d 1 posisi dan v 2 berbeda dengan w dalam d 2 posisi. Maka, φ p (v 1, w) φ p (v 2, w) jdhj d 1 d 2. Bukti. Ini karena: φ p (v 1, w) φ p (v 2, w) jdhj p n d 1 (1 p) d 1 p n d 2 (1 p) d 2 jdhj ( p 1 p )d 2 d 1 1 jdhj d 1 d 2 (karena p 1 p > 1). 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.

9 1.5 Beberapa konsep Aljabar Misal K = {0, 1} dan K n 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 K n didefisinikan sebagai penjumlahan per komponen dari elemen tersebut. Contoh: 001001 + 101101 = 100100. Maka operasi penjumlahan di K n adalah tertutup. Buktikan! Sebut elemen di K sebagai skalar. Definisikan perkalian skalar di K n sebagai perkalian per komponen. Karena satusatunya skalar adalah 0 dan 1, maka perkalian skalar dari kata w hanya dapat berbentuk 0 w(= 0) atau 1 w(= w). Jelas K n tertutup terhadap perkalian skalar. Dengan operasi penjumlahan dan perkalian diatas, dapat ditunjukkan K n membentuk ruang vektor, yakni bahwa untuk setiap kata u, v dan w di K n dan setiap skalar a dan b berlaku: 1. u + v K n 2. (u + v) + w = u + (v + w) 3. u + 0 = 0 + u = u, dimana 0 kata nol 4. Ada v K n dimana v + v = v + v = 0. 5. u + v = v + u 6. av K n

10 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 K n maka v + v = 0. 2. Tunjukkan bahwa jika v dan w kata di K n dan v + w = 0 maka v = w. 3. Tunjukkan bahwa jika u, v dan w kata di K n 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 K n. Bobot Hamming wt(v), atau bobot, dari v adalah banyaknya digit 1 pada v. Jika v, w K n. 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) = p n 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.

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 K k = 2 k. Kemudian, tentukan berapa digit yang perlu ditambahkan kepada setiap kata tersebut untuk membentuk kode (mis. panjang n) yang dapat mengoreksi kesalahan seperti yang dipersyaratkan. Untuk mengirim suatu pesan, transmiter mencari lebih dahulu kata panjang k yang menyatakan pesan tersebut dan kemudian mengirim katakode panjang n yang bersesuaian dengan kata panjang k tersebut. Decoding. Misal kata w K n diterima. 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 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

12 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 (v 1, w) φ p (v 2, w) jdhj wt(v 1 + w) wt(v 2 + 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 Tabel 1. Tabel DKMTK untuk kode C = {000, 111}.

13 Tanda * pada kolom kedua dan ketiga menyatakan pola kesalahan dengan bobot terkecil. 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;

14 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 K n yang 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) = w L(v) φ p (v, w). Catatan: L(v) adalah himpunan semua kata di K n dimana 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: L(000) = {000, 100, 010, 001}.

15 Maka, θ p (C, 000 = φ p (000, 000) + φ p (000, 100) + φ p (000, 010) + φ p (000, 001) = p 3 + p 2 (1 p) + p 2 (1 p) + p 2 (1 p) = p 3 + 3p 2 (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) = p 4 + p 3 (1 p) + p 3 (1 p) = 0.8019. Untuk v = 1010. L(0000) = {1010, 1011}, θ p (C, v) = φ p (1010, 1010) + φ p (1010, 1011) = p 4 + p 3 (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 K 3 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} b) C = {00000, 11110, 01111, 10001}

16 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 K n yang diterima, maka u = v + w merupakan pola kesalahan. Karena setiap kata u K n 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 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 K n, 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 K 3, 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.

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 kesalahan yang dapat dideteksi adalah K 4 \{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 w}. Karena d(v, w) = wt(v + w), maka jarak kode C adalah min{wt(v + w) : v, w C, v 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 K n 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 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. 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 kesalahan dengan bobot t + 1. Maka berdasar Teorema 1.9.4, setiap kode C dengan jarak kode d sedikitnya merupakan kode pendeteksi d 1 kesalahan.

18 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 kesalahan 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

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 dengan bobot kurang dari atau sama dengan (d 1)/2. Namun, C tidak dapat mengoreksi sedikitnya satu pola kesalahan berbobot 1 + (d 1)/2. Bukti. Misal u suatu pola kesalahan dengan bobot wt(u) (d 1)/2. Misal v dan w dua katakode di C dengan w 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 (d 1)/2 dari d bit 1 pada v + w menjadi bit 0. Maka: d(v, v + u) = wt(u) = 1 + (d 1)/2, dan d(w, v + u) = wt(w + v + u) = d(v + w, u) = d (1 + (d 1)/2 ).

20 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. 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 u 1 dan u 2 pola kesalahan panjang n, dan misal u 2 mempunyai nilai 1 pada setiap posisi 1 di u 1. Buktikan bahwa jika kode C mengoreksi u 2 maka ia juga mengoreksi u 1.

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, C 1 = {000, 100, 110} bukan kode linier, karena 100 dan 110 ada di C tapi 100 + 110 = 010 C 1. 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. 21

22 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 K n, dalam hal ini kata-kata, dengan operasi tambah dua vektor dan perkalian skalar yang memenuhi 10 sifat pada bagaian 1.5. Subhimpunan 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 K n jika dan hanya jika U tertutup terhadap operasi penjumlahan. Jadi, kode linier adalah suatu subruang dari K n. Vektor w dikatakan sebagai kombinasi linier dari vektor-vektor v 1, v 2,, v k jika terdapat skalar a 1, a 2, a k sedemikian sehingga w = a 1 v 1 + a 2 v 2 + + a k v k. Himpunan semua kombinasi linier dari vektor-vektor di S = {s 1, s 2,, s k } disebut sebagai linier span dari S, dan diberi notasi S. Dalam hal S = definisikan S = {0}. Mudah ditunjukkan bahwa untuk setiap subhimpunan S dari ruang vektor V, linier span S dari S membentuk subruang, dan selanjutnya subruang tersebut dikatakan dibangun

23 oleh S. Karena S subruang di K n maka S membentuk kode linier yang dibangun oleh S. Teorema 2.1.1. Untuk setiap subhimpunan S dari K n, kode C = S 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 = S terdiri dari: 0000, 0011, 1000 + 0011 = 1011, 0011 + 1100 = 1111, 1000, 1100, 1000 + 1100 = 0100, 1000 + 0011 + 1100 = 0111. Dengan demikian C = S = {0000, 1000, 0011, 1100, 1111, 1011, 0111, 0100}. Misal v = (v 1, v 2,, v n ) dan w = (w 1, w 2,, w n ) dua vektor di K n. Definisikan perkalian skalar atau perkalian titik v w dari v dan w sebagai v w = v 1 w 1 + v 2 w 2 + + v n w n. Sebagai contoh di K 5, 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 K 5. Untuk himpunan S K n, 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, komplemen ortogonal S membentuk suatu subruang di V. Selanjutnya, jika C = S 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 K 4 yang memenuhi persyaratan berikut:

24 v 1000 = 0, 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: Diskusi 2.1.4. dan C = S = {0000, 0001, 0100, 0101}. 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 S. (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 = S 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 K n yang memenuhi v v = 0. b) Tentukan v dan w di K n yang memenuhi wt(u + v) = wt(u) + wt(v) 2(u v). 8. Untuk setiap subhimpunan S di ruang vektor V, tunjukkan (S ) = S. 9. Berikan contoh kode yang self-dual di K 4. 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 K 6 dengan d(u, v) 3 untuk setiap u dan v. 12. Apakah mungkin kita mempunyai 9 vektor di K 6 dengan d(u, v) 3 untuk setiap u dan v.

25 2.2 Basis dan dimensi Himpunan S = {v 1, v 2,, v k } dari vektor-vektor di K n dikatakan bergantung linier bila terdapat skalar a 1, a 2,, a k yang tidak semuanya nol sedemikian sehingga a 1 v 1 + a 2 v 2 + + a k v k = 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 {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 bergantung 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 S. Kemudian periksa kembali apakah S bebas linier. Bila S masih bergantung linier maka hapus vektor yang bergantung linier pada vektor-vektor sebelumnya dan diperoleh subhimpunan baru S. Proses ini diulangi terus menerus hingga diperoleh subhimpunan yang bebas linier. Dalam hal contoh ini, S sudah bebas linier. Jadi S = {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:

26 1. B membangun V (Ini berarti, B = V ), dan 2. B bebas linier. Catatan bahwa setiap himpunan bebas linier B senantiasa merupakan basis dari B. Karena setiap himpunan bergantung linier S memuat subhimpunan terbesar yang bebas linier maka kita dapat mengekstrak dari S untuk mendapatkan sebuah basis B untuk S. 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 = S = {0000, 1001, 1101, 0011, 0100, 1010, 1111, 0010} yang merupakan subruang di K 4. Contoh 2.2.5. Misal S = {110, 011, 101, 100}. Dari contoh 2.2.2 didapat bahwa S bergantung linier dan subhimpunan terbesar yang bebas linier adalah S = {110, 011, 100}. Maka S merupakan basis dari kode C = S. Kedua contoh ini mengilustrasikan bagaimana mencari suatu basis untuk kode C = S. 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 S = {110, 011, 100} bukan satu-satunya subhimpunan terbesar dari S yang bebas linier, karena S = {110, 101, 100} juga bebas linier. Maka S juga dapat diambil sebagai basis dari S. 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, K n mempunyai dimensi n karena setiap basis mempunyai n vektor. Salah satu basisnya adalah himpunan semua vektor bobot 1 di K n. Pada contoh 2.2.2, S mempunyai dimensi 3. Sedangkan dimensi dari subruang {0} adalah 0. Basis merupakan cara efisien untuk menyatakan kode linier C. Untuk setiap ruang vektor V, jika B = {v 1, v 2,, v k } suatu basis dari V maka setiap vektor w V dapat

27 dinyatakan secara tunggal sebagai kombinasi linier dari vektor-vektor di B; Yakni terdapat secara tunggal skalar a 1, a 2,, a k sehingga w = a 1 v 1 + a 2 v 2 + + a k v k. Contoh 2.2.6. Tulis vektor w = 011 sebagai kombinasi linier dari kata-kata di basis B = {100, 110, 001} dari K 3. 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 K 3. Pertama, gabungkan S dengan suatu basis dari K 3 yang anda ketahui. Misal, ambil basis K 3 = {100, 010, 001}. Sehingga didapat: 110, 010, 100, 010, 001 yang akan direduksi menjadi suatu basis untuk K 3 dengan menghapus kata yang bergantung linier pada kata-kata sebelumnya (seperti proses pada contoh 2.2.3). Akhirnya diperoleh S = {110, 010, 001} basis dari K 3 yang memuat S. Sekarang kita sampai pada teorema penting berkaitan dengan kode linier. Jika suatu kode linier C mempunyai dimensi k dan jika {v 1, v 2,, v k } merupakan basis dari C, maka untuk suatu katakode w C dapat ditulis sebagai: w = a 1 v 1 + a 2 v 2 + + a k v k, untuk suatu pilihan tunggal a 1, a 2,, a k. Karena setiap a i hanya dapat bernilai 0 atau 1 maka akan ada sebanyak 2 k pilihan untuk a 1, a 2,, a k ; sehingga terdapat tepat 2 k katakode di C. Teorema 2.2.8. Suatu kode linier C yang berdimensi k akan memuat tepat 2 k katakode. Teorema berikut dapat ditunjukkan dengan menggunakan hasil elementer dari teori sistem persamaan linier. Teorema 2.2.9. Misal C = S kode linier yang dibangun oleh subhimpunan S di K n. Maka (dimensi dari C) + (dimensi dari C ) = n.

28 Teorema terakhir pada bagian ini berkenaan dengan banyaknya basis untuk K n. Perlu dicatat bahwa ada takhingga banyaknya basis untuk R n. Teorema 2.2.10. Suatu kode linier berdimensi k mempunyai 1 k! yang berbeda. Diskusi 2.2.11. k 1 i=0 (2k 2 i ) buah basis 1. Carilah basis dan dimensi untuk setiap kode C = S dan kode dualnya C untuk setiap S pada soal No. 3, Diskusi 2.1.4. 2. Misal S subhimpunan di K 9, misal C = S 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 = S 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 K n. Dua algortima pertama diberikan untuk mencari basis dari C = S. 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 = S. 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)

29 Contoh 2.3.2. Tentukan basis dari kode linier C = S untuk S = {11011, 10110, 01011, 11101}. 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 A = 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 0. 1 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 S. Algoritma 2.3.3. (Mencari basis C). Bentuk matriks A yang kolom-kolomnya adalah katakata 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 = S. 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).

30 Permutasi kolom-kolom dari G untuk membentuk G = [I k, X]. bentuk matriks H sebagai berikut: H X. I n k Gunakan kebalikan dari permutasi yang digunakan pada kolom-kolom di G tadi untuk mendapatkan matriks H kembali dari H. Contoh 2.3.5. Gunakan Algoritma 2.3.4 untuk mencari basis dari C untuk S = {11011, 10110, 01011, 11101}. 11011 11011 11011 10000 A = 10110 01011 01101 01011 01101 00110 01011 00110. 11101 00110 00000 00000 100 00 00 Sekarang, bentuk G = 010 11, k = 3 dan X = 11. Kolom leading dari G adalah 001 10 10 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 K 10. Misal bentuk BEBT dari matriks A yang dihasilkan Algoritma 2.3.4 mempunyai baris taknol seperti dibawah ini: 1010010101 0001010001 G = 0000100100 0000001001. 0000000011 Kolom leading dari G adalah 1, 4, 5, 7 dan 9. Kita permutasi kolom G dalam urutan 1, 4, 5, 7, 9, 2, 3, 6, 8, 10 (kolom leading dahulu) sehingga menjadi matriks:

31 G = 1000001111 0100000101 0010000010 0001000001 0000100001 Maka kita bentuk matriks H 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. H = ( 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 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 = S 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 = S 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} 1 2 3 4 5 6 7 8 9 10. 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).

32 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 K n. 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, 0000 1110 1110 1110 A = 1110 0101 0101 1011 0101 0101 0101 0000. 1011 0000 0000 0000 ( ) 1110 Jadi G = adalah matriks pembangun dari kode linier C. Bentuk eselon baris 0101 ( ) 1011 tereduksi dari matriks tersebut, yakni G 1 = juga merupakan matriks pembangun. 0101 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 = (c 1, c 2,, c k ) dan jika g 1 g 2 G =,. g k

33 dimana g 1, g 2,, g k adalah baris-baris dari G maka v = ug = c 1 g 1 + c 2 g 2 + + c k g k 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 K k. 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 K k } yang terdiri dari 2 k katakode. Lebih jauh, w 1 G = w 2 G jika dan hanya jika w 1 = w 2. Teorema 2.4.4 menyatakan bahwa pesan yang akan diencode oleh kode linier-(n, k, d) adalah semua kata u K k. 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 log 2 (2 k )/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 K 3 dapat diencode dengan matriks G menjadi katakode panjang 5. Sebagai contoh pesan w = 110 diencode menjadi: 10100 v = wg = (110) 01001 = 11101. 00111 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 K n v c = 0, c C} maka setiap w C akan bersifat bahwa wh = 0. Jadi diperoleh teorema berikut ini.

34 Teorema 2.4.7. Jika H matriks cek paritas dari kode linier C panjang n, maka C terdiri dari semua kata w K n 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 matriks 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 H T G T = (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 H T matriks pembangun dari C. G matriks pembangun dari C jika dan hanya jika G T 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 ( ) 1011 G 1 = = (I X) 0101 matriks pembangun dari C dalam BEBT. Dengan Algoritma 2.3.4 kita dapat mengkonstruksi matriks cek paritas H: H = ( ) 11 X = 01 I 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 tambahan (redundancy digits) kepada digit informasi. Setidaknya ada dua cara encoding suatu kode C. Pertama, encoding dengan menggunakan kombinasi linier dari baris-baris pada