3 HASIL DAN PEMBAHASAN 3.1 Formulasi Masalah
3.3 Metode Komputas
3.3.3 Algoritme Kostruks
Pada bab-bab ini, akan dideskripsikan algoritme-algoritme yang diperlukan untuk mengontruksi suatu kode linear biner.
3.3.3.1 Algoritme tentang fungsi aritmetik aljabar matriks
Karena struktur data yang digunakan adalah struktur data khusus, maka perlu didefinisikan terlebih dahulu program-program tentang aritmatik aljabar matriks dalam representasi himpunan, sebagai berikut.
38
1. Menghitung penjumlahan dua vektor.
2. Mengubah tampilan dari matriks kolom ke bentuk matriks baris (atau sebaliknya).
3. Menentukan transpose dari suatu matriks. Algoritme:
Misalkan diberikan vektor x dan y, jumlah antara vektor x dan y dapat dihitung dengan mencari selisih simetrik antara kedua himpunan tersebut.
Algoritme:
Misalkan diberikan matriks B berukuran m×n (dalam representasi kolom).
Untuk mengubah tampilan menjadi matriks baris, dapat dilakukan dengan cara sebagai berikut.
1. Untuk setiap himpunan vektor-vektor kolom yang ada di dalam list, periksa apakah ada bilangan i, i = 0, 1, 2, …, m-1.
2. Jika ada, simpan indeks (urutan himpunan dalam list), yang dimulai dari nol, ke dalam himpunan baru, katakanlah himpunan si.
3. Akan diperoleh diperoleh m himpunan vektor baris.
Untuk mengubah tampilan dari matriks baris ke matriks kolom, dapat dilakukan dengan cara yang serupa.
Algoritme:
Misalkan diberikan matriks B dalam representasi kolom. Untuk menentukan
transpose dari matriks B, tampilan matriks B diubah menjadi representasi matriks baris. Selanjutnya, informasi tentang banyaknya kolom dipindahkan ke bagian depan list (banyaknya kolom menjadi banyaknya baris).
39
4. Menukar baris ke-
i
dan ke-j.5. Menambahkan baris ke-j dengan baris ke-
i
di baris ke-j.6. Menentukan bentuk kanonik dari suatu matriks. Algoritme:
Misalkan diberikan matriks B dengan ukuran m×n dalam representasi kolom.
Misalkan yang akan ditukar adalah baris ke-i dan ke-j, dengan indeksnya
dimulai dari 0 sampai dengan m-1. Untuk menukar, dilihat semua himpunan
yang ada di dalam list, apabila ada himpunan yang mengandung unsur i dan j
atau tidak mengandung kedua unsur tersebut, maka himpunan tersebut dibiarkan (tidak berubah). Namun apabila himpunan tersebut mengandung
unsur i saja, maka unsur tersebut diganti dengan unsur j. Begitu pula
sebaliknya.
Algoritme:
Misalkan diberikan matriks B dengan ukuran m×n dalam representasi kolom.
Misalkan misalkan baris ke-i akan ditambahkan ke dalam baris i. dengan
indeksnya dimulai dari 0 sampai dengan m-1. Untuk semua himpunan dalam
list, apabila di dalam himpunan tersebut terkandung unsur i dan j, maka unsur
j dihapus. Apabila hanya ada unsur j, atau tidak mengandung kedua unsur
tersebut, maka himpunan tersebut dibiarkan (tidak berubah). Namun, apabila
hanya mengandung unsur i, maka unsur j ditambahkan pada himpunan
tersebut.
Algoritme:
Misalkan diberikan matriks A dengan ukuran m×n. Akan dicari bentuk
kanonik dari matriks A. Dilakukan OBD (menukar baris, menambahkan suatu
baris dengan baris yang lain, dan mengalikan suatu baris dengan skalar) pada
matriks A sehingga anak matriks persegi m×m di bagian kiri matriks
40
7. Menjumlahkan dua matriks.
8. Menentukan hasil kali skalar (dot product) dari dua vektor.
9. Mengalikan matriks A berukuran m×n dengan matriks B berukuran n p× (A dan B dalam representasi kolom).
10.Menambahkan satu baris vektor v ke matriks B di posisi/baris terakhir. (B dalam representasi baris).
Algoritme:
Misalkan diberikan matriks A dan matriks B (dalam representasi yang sama, misalkan representasi baris). Untuk menjumlahkan dua matriks, dij Jumlahkan vektor-vektor dari A dan vektor-vektor dari B (dalam posisi yang sama).
Algoritme:
Misalkan diberikan vektor x dan y. dot product dari x dan y dapat dihitung
dengan menghitung banyaknya unsur dari irisan antara himpunan x dan y,
yang selanjutnya dimodulokan dengan bilangan 2.
Algoritme:
Misalkan diberikan matriks A dan B. Langkah-langkah untuk mengalikan
kedua matriks tersebut adalah:
1. Mengubah format matriks A ke dalam representasi matriks baris.
2. Untuk setiap vektor yang ada pada matriks A, dilakukan hasil kali
skalar dengan vektor-vektor matriks B. Selanjutnya, disimpan
indeksnya pada himpunan baru, misalkan s.
3. Setelah diperoleh sebanyak p himpunan s, dikumpulkan jadi satu ke
dalam suatu list.
Algoritme:
Misalkan diberikan matriks B dan vektor v. untuk menambahkan v ke dalam
baris terakhir matriks B, ditambahkan himpunan vektor v pada list dari
41
11.Menghapus baris ke-i pada matriks B. (B dalam representasi kolom).
3.3.3.2 Algoritme tentang pelacakan kode linear biner
Setelah dibangun program-program dasar untuk proses aritmatik aljabarnya, selanjutnya akan dikonstruksi program pelacakan kode linear biner. Berikut diberikan deskripsi singkat tentang program-program tersebut.
1. Mengubah matriks generator yang sudah dalam bentuk standar menjadi matriks cek paritas (dalam representasi matriks kolom).
2. Mengkoding suatu pesan
p
menjadi vektor kata kode c menggunakan matriks generator G , G dalam bentuk umum.3. Mengkoding suatu vektor pesan
p
menjadi kata kode c menggunakan matriksB
, di mana G=[
Ik|B]
merupakan matriks generator.Algoritme:
Misalkan diberikan matriks B. Untuk menghapus baris ke-i, dihapus angka i-
1 pada list dari vektor-vektor kolom B.
Algoritme:
Diberikan kode linear dengan matriks generator . Maka,
matriks cek paritas untuk kode linear adalah .
Algoritme:
Diberikan matriks generator dan vektor pesan . Kata kode untuk
vektor pesan dapat diperoleh dengan cara mengalikan vektor dengan
matriks .
Algoritme:
Diberikan matriks dan vektor pesan . Kata kode untuk vektor pesan
dapat diperoleh dengan cara menghitung vektor , kemudian
42
4. Menentukan jarak Hamming dari dua vektor.
5. Menentukan bobot tak-nol dari suatu kode berdasakan matriks generatornya.
6. Menentukan list dari semua kombinasi j vektor dari matriks B (representasi baris), dengan j=1, 2, 3,...,t, dan t=min
{
k d, −1}
.Algoritme:
Misalkan diberikan dua vektor x dan y. Untuk menentukan jarak Hamming
antara vektor x dan y, ditambahkan x dan y (dengan operasi ). Misalkan hasilnya adalah vektor z. Selanjutnya, jarak antara vektor x dan y adalah
banyaknya unsur dari vektor z. dengn kata lain, banyaknya unsur “1” di
vektor z.
Algoritme:
Untuk menentukan bobot tak nol dari suatu kode berdasarkan matriks generatornya, perlu dicari semua kata kode yang ada dalam kode tersebut
dengan cara menghitung , dengan adalah dimensi dari
kode tersebut. Selanjutnya dihitung bobot Hamming (atau jarak Hamming) dari setiap dua vektor yang berbeda.
Algoritme:
List dari semua kombinasi j vektor dari matriks B dapat diperoleh dengan cara:
1. Menyimpan list 1 vektor (list awal dari matriks B)
2. Untuk memperoleh list dari semua kombinasi 2 vektor, dijumlahkan
setiap dua vektor yang berbeda dalam list 1 vektor. Hasilnya
digabungkan dengan hasil poin 1.
3. Dengan cara yang serupa, untuk memperoleh list dari semua
kombinasi j vektor, di jumlahkan setiap j vektor yang berbeda dalam
list 1 vektor. Selanjutnya, gabungkan hasilnya dalam list yang
43
7. Melacak/mencari satu vektor baris dalam yang bisa ditambahkan ke
matriks B berdasarkan teorema Gilbert-Vashamov.
8. Menghimpun semua vektor-vektor baris anggota yang bisa
ditambahkan ke matriks B. x 2 k
F
2 kF
Algoritme:Misalkan diberikan vektor , selanjutnya diuji bobot vektor
sedemikian sehingga , dengan adalah anggota dari
semua kombinasi vektor baris di untuk , dan
. Apabila lulus uji, maka diperoleh satu vektor yang
dapat ditambahkan ke matriks .
Algoritme:
Misalkan diberikan matriks B yang merepresentasian kode linear biner
dengan parameter . Untuk menghimpun semua vektor-vektor baris
yang bisa ditambahkan ke matriks B, perlu di cek semua vektor di dalam ,
apakah bisa ditambahkan atau tidak. Namun, untuk menghemat waktu
komputasi, cukup dipilih vektor , dengan merupakan
vektor biner yang memiliki unsur satu dengan dan
merupakan vektor biner yang memiliki unsur satu dengan
yang memenuhi ketaksamaan , dengan
44
9. Menguji apakah dua vektor x dan y bisa ditambahkan ke matriks B berdasarkan teorema Gilbert-Varshamov.
10.Menghimpun semua pasangan vektor-vektor x dan y yang bisa ditambahkan ke B.
Algoritme:
Misalkan adalah himpunan satu vektor yang dapat ditambahkan ke
matriks . Dari , dapat dicari pasangan dua vektor yang dapat
ditambahkan ke matriks . Caranya adalah dengan menjumlahkan setiap
kemungkinan dua vektor yang berbeda yang ada di . Misalkan hasil
penjumlahannya adalah vektor . Apabila bobot lebih besar dari ,
proses dilanjutkan dengan menguji bobot vektor sedemikian
sehingga , dengan adalah anggota dari semua
kombinasi vektor baris di untuk , dan .
Apabila vektor tersebut lulus uji, maka diperoleh dua vektor yang dapat
ditambahkan ke matriks .
Algoritme:
Misalkan adalah himpunan satu vektor yang dapat ditambahkan ke
matriks . Untuk mencari semua pasangan 2 vektor yang bisa ditambahkan
45
11.Menguji apakah m+1 vektor bisa ditambahkan ke matriks B Algoritme:
Misalkan adalah himpunan dari kumpulan vektor anggota yang
dapat ditambahkan ke matriks . Dari , dapat dicari vektor yang
bisa ditambahkan ke matriks dengan cara mencari dua anggota yang
jika digabung memiliki vektor yang berbeda. Misalkan dua kumpulan
vektor tersebut adalah dan . Selanjutnya dilakukan pengujian
sebagai berikut.
1. Menguji apakah kedua vektor anggota dapat
ditambahkan ke matriks .
2. Menguji apakah kedua vektor anggota yang jika
ditambahkan dengan setiap vektor dalam ,
bisa ditambahkan ke matriks .
Untuk menguji j vektor bisa ditambahkan ke matriks B, caranya adalah
dengan menjumlahkan j vektor tersebut, misalkan hasil penjumlahannya
adalah vektor . Apabila bobot lebih besar dari , proses
dilanjutkan dengan menguji bobot vektor sedemikian sehingga
, dengan adalah anggota dari semua kombinasi
vektor baris di untuk , dan . Apabila vektor
tersebut lulus uji, maka diperoleh vektor yang dapat ditambahkan ke
46
12.Menghimpun semua m+1 vektor yang bisa ditambahkan ke matriks B berdasarkan teorema Gilbert-Varshamov.
13.Mereduksi himpunan pasangan vektor-vektor baris dengan cara membuang pasangan vektor yang saling ekivalen.
Implementasi dari algoritme-algoritme di atas dapat dilihat pada Lampiran 2. Algoritme tersebut ditulis dalam bahasa pemograman MAPLE.