• Tidak ada hasil yang ditemukan

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 matriks

B

, 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 k

F

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.

Dokumen terkait