• Tidak ada hasil yang ditemukan

3 HASIL DAN PEMBAHASAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "3 HASIL DAN PEMBAHASAN"

Copied!
34
0
0

Teks penuh

(1)

3

HASIL DAN PEMBAHASAN

3.1 Formulasi Masalah

Sejauh ini telah diperkenalkan bahwa terdapat tiga parameter yang terkait dengan konstruksi suatu kode, yaitu panjang, dimensi, dan jarak minimum. Jika C adalah kode linear biner yang mempunyai panjang n, berdimensi k, dan berjarak minimum d, maka C dikatakan baik jika n kecil, k besar dan d besar. Makna fisiknya, n harus kecil terkait dengan kecepatan proses enkoding dan dekoding, dan juga terkait dengan besarnya memori yang digunakan dalam proses itu. Sementara itu k harus besar terkait dengan banyaknya pesan yang dapat diubah menjadi kata kode, sedangkan d harus besar terkait dengan banyaknya galat yang dapat dikoreksi.

Misalkan diberikan sembarang dua parameter, yaitu n dan k. Permasalahannya, apakah ada suatu kode

[

n k d, ,

]

untuk nilai d yang sebesar-besarnya? Pertanyaan tersebut mengarah pada pendefinisian fungsi

( )

, max

{

| kode , ,

[

]

ada

}

D n k = d n k d . Dalam hal ini, suatu kode C dengan parameter

[

n k d, ,

]

disebut optimalD(optimal jarak minimum), jika C ada (telah berhasil dikonstruksi) dan tidak ada kode dengan parameter

[

n k d, , +1

]

(telah pula dibuktikan). Batas bawah l dan batas atas u dari fungsi D n k

( )

, diartikan sebagai berikut. Misalnya D n k

( )

, terletak di antara l dan u

( )

(

lD n k, ≤u

)

, artinya telah berhasil dikonstruksi kode dengan parameter

[

n k d, , ≤l

]

dan telah berhasil pula dibuktikan bahwa tidak ada kode dengan

parameter

[

n k d, , >u

]

, sedangkan ada atau tidaknya kode dengan parameter

[

n k d, ,

]

dengan l< ≤d u merupakan masalah terbuka (open problem).

Untuk memperbaiki satu langkah batas bawah dari fungsi D n k

( )

, , perlu dikonstruksi kode dengan parameter

[

n k l, , +1

]

, sedangkan untuk perbaikan satu langkah batas atas dari fungsi D n k

( )

, sama dengan membuktikan bahwa tidak ada kode dengan parameter

[

n k u, ,

]

. Informasi terkini untuk batas fungsi

(2)

( )

,

D n k dapat dilihat di dalam Tabel Brouwer dan bisa diakses secara on-line pada alamat http://codetables.de (cuplikan dari Tabel Brouwer dapat dilihat pada Lampiran 1). Jika berhasil diperbaiki satu saja batas (bawah atau atas) dari Tabel Brouwer, berarti telah berhasil "dipecahkan satu rekor dunia".

Secara analog (ekivalen), untuk optimalisasi dimensi (optimal-K) dapat didefinisikan fungsi K n k

( )

, atau fungsi N n k

( )

, untuk optimalisasi panjang kode (optimal-N), dan sekaligus memformulasikan masalahnya.

K n d

(

,

)

: max=

{

k| kode , ,

[

n k d

]

ada

}

. • N k d

(

,

)

: min=

{

n| kode , ,

[

n k d

]

ada

}

.

Berdasarkan formulasi umum problem di atas, pada penelitian ini akan didefinisikan kode optimal kuat (strongly optimal codes) beserta formula konstruksinya berlandaskan teorema-teorema yang telah didefinisikan pada tinjauan pustaka. Kode linear C dengan parameter

[

n k d, ,

]

disebut kode optimal kuat jika kode linear-

[

n k d, ,

]

ada dan telah berhasil dibuktikan bahwa kode linear-

[

n+1,k+1,d

]

tidak ada, sedangkan suatu kode disebut optimal-D jika kode linear-

[

n k d, ,

]

ada dan telah berhasil dibuktikan bahwa kode

linear-[

n k d, , +1

]

tidak ada. Jika kode linear-

[

n k d, ,

]

ada dan telah berhasil dibuktikan bahwa kode linear-

[

n−1, ,k d

]

tidak ada, maka kode tersebut disebut optimal-N. Selanjutnya, jika kode linear-

[

n k d, ,

]

ada dan telah berhasil dibuktikan bahwa

kode linear-

[

n k, +1,d

]

tidak ada, maka kode tersebut disebut optimal-

K

. Berdasarkan dasar-dasar konstruksi kode, dalam penelitian ini juga dianalisis hubungan antara kode yang memiliki sifat optimal-D, optimal-K, optimal-N, dan optimal kuat.

Konstruksi kode yang dilakukan dalam penelitian ini dilakukan atas dasar teori konstruksi langsung (direct constructions). Ide dasarnya adalah sebagai berikut. Jika suatu kode memenuhi pertaksamaan Gilber-Varshamov, maka kode tersebut dapat diperluas [Brouwer, 1997].

Dalam penelitian ini, konstruksi kode dibatasi hanya untuk jarak minimum

9

(3)

biner, yaitu kode yang ada dalam ruang vektor 2n

F

. Pemilihan kasus cukup untuk d ganjil, hal ini didasarkan pada salah satu sifat kode linear yang dinyatakan sebagai berikut.

3.1.1 Teorema 11

Jika kode dengan parameter

[

n k d, ,

]

ada untuk d ganjil, maka dapat dikonstruksi kode dengan parameter

[

n+1, ,k d+1

]

dan setiap anggotanya berbobot genap.

Bukti:

Misalkan telah dikonstruksi kode linear dengan parameter

[

n k d, ,

]

, dengan d ganjil. Dengan melakukan penambahan pada matriks cek paritas (dasar konstruksi kode yang pertama) akan diperoleh kode dengan parameter

[

n+1, ,k d+1

]

.

͏

3.2 Analisis Teori

Diberikan kode linear C dengan parameter

[ ]

n k, . Misalkan

H

merupakan matriks cek paritas untuk C. Dari definisi matriks cek paritas,

{

n| T 0

}

q

C = xF Hx = , atau dengan kata lain, C=ker

( )

H . Hal ini karena baris-baris dari matriks

H

merupakan basis untuk C⊥, komplemen orthogonal bagi C.

Karena kode linear C merupakan kernel dari matriks cek paritasnya, maka mengonstruksi suatu kode linear C sama dengan mengonstruksi matriks cek paritasnya.

3.2.1 Teorema 12

Diberikan kode linear C dengan panjang n. Jika

H

adalah matriks cek paritas untuk C, maka kode tersebut mempunyai dimensi

(

n r

)

jika dan hanya jika ada r kolom dari

H

yang bebas linear tetapi tidak ada

r

+

1

kolom dari

H

yang bebas linear (r adalah rank dari

H

).

(4)

Diberikan kode linear C dengan panjang n. Didefinisikan r = n-k. Misalkan

H

adalah matriks cek paritas bagi kode linear C. Misalkan pula G adalah matriks generator bagi kode linear C.

Kode linear C memiliki pangkat

(

n r

)

jika dan hanya jika

( ) (

)

rank G = −n k . [Karena G adalah basis, dan banyaknya baris di G menunjukkan dimensi suatu kode]. Karena G dan

H

saling orthogonal, maka

( ) (

)

rank G = −n r jika dan hanya jika rank H

( )

=r.

͏

3.2.2 Teorema 13

Diberikan kode linear C dengan panjang n. Jika

H

adalah matriks cek

paritas untuk C, maka kode tersebut mempunyai jarak minimum d jika dan hanya jika setiap d−1 kolom dari

H

yang bebas linear dan ada d kolom dari

H

yang tidak bebas linear. Bukti:

Diberikan kode linear C dengan panjang n. Misalkan

H

adalah matriks cek paritas bagi kode linear C.

Kode linear C berbobot minimum d jika dan hanya jika kedua butir berikut terpenuhi i. Ada vektor 2 n

v

F

dengan wt v

( )

=d sehingga T 0T Hv = . ii. T 0T Hw ≠ untuk setiap 2 n

w F

dengan wt w

( )

<d. (Jika T 0T Hw = , maka w C∈ . Kontradiksi dengan fakta bahwa wt w

( )

<d).

Di sisi lain, kedua butir di atas (i dan ii) dapat terjadi jika dan hanya jika ada d kolom dari

H

yang tidak bebas linear dan setiap d−1 kolom dari

H

bebas

linear.

͏

3.2.3 Teorema 14: The Singleton Bound

Diberikan kode linear C. Jika C adalah kode dengan parameter

[

n k d, ,

]

maka

(

n k− ≥

) (

d−1 .

)

(5)

Bukti:

Misalkan diberikan kode linear C dengan parameter

[

n k d, ,

]

, maka kode linear C memiliki matriks cek paritas

H

berukuran

(

n k− ×

)

n, sehingga

( ) (

)

rank H ≤ −n k .

Dari Teorema 13, matriks

H

memiliki d−1 kolom yang bebas linear,

sehingga rank H

( ) (

= d−1

)

, dengan kata lain

(

d− ≤ −1

) (

n k

)

.

͏

3.2.4 Teorema 15: The Gilbert-Varshamov Bound

Diberikan kode linear C dengan parameter

[

n k d, ,

]

. Jika ketaksamaan

1 2 2 1 n n n 2n k d − − ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ +⎜ ⎟ ⎜ ⎟+ + + <

⎝ ⎠ ⎝ ⎠ ⎝ ⎠ berlaku, maka dapat dikonstruksi kode dengan

parameter

[

n+1,k+1,d

]

. Bukti:

Misalkan diberikan kode linear yang memiliki parameter

[

n k d, ,

]

. Berdasarkan Teorema 5, ada matriks cek paritas berordo

(

n k− ×

)

n, yaitu

(

1 2 ... n

)

H= c c c yang setiap d−1 vektor dari

{

c c1, ,...,2 cn

}

adalah bebas linear dalam ruang vektor 2

n k

F

− . Jika ada vektor 2

n k

x F

− yang bukan

i

kombinasi linear dari vektor-vektor kolom

H

, untuk i=1, 2,...,d−2, maka

(

1 2

)

' n

H = c cc x adalah matriks cek paritas untuk kode linear yang memiliki parameter

[

n+1,k+1,d

]

. Hal ini karena

H

'

berorde

(

n k− × +

) (

k 1

)

dan setiap d−1 vektor dari

{

c c1, ,..., ,2 c xn

}

adalah bebas linear dalam ruang

vektor 2

n k

F

− .

Jika banyaknya kombinasi linear yang mungkin dari kolom-kolom

H

'

sehingga tidak ada d−1 kolom yang bergantung linear lebih besar atau sama

dengan jumlah vektor tak nol dalam 2

n k

F

− , maka

H

'

bukan matriks cek paritas untuk kode linear dengan parameter

[

n+1,k+1,d

]

. Banyaknya vektor-vektor

(6)

tak-nol dalam 2n k

F

− yang mungkin dipilih untuk x adalah 2n k− −1, sedangkan banyaknya kombinasi linear yang mungkin dari kolom-kolom

H

'

adalah

1 2 2

n n n

d

⎛ ⎞ ⎛ ⎞+ + +⎛ ⎞

⎜ ⎟ ⎜ ⎟ ⎜ ⎟

⎝ ⎠ ⎝ ⎠ ⎝ ⎠. Dengan demikian, jika ada kode linear C dengan parameter

[

n k d, ,

]

dan pertaksamaan 1 2 2 1 n n n 2n k d − − ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ +⎜ ⎟ ⎜ ⎟+ + + <

⎝ ⎠ ⎝ ⎠ ⎝ ⎠ berlaku, maka dapat

dikonstruksi kode baru dengan parameter

[

n+1,k+1,d

]

berdasarkan kode linear C tersebut.

͏

3.2.5 Lema 3

Misalkan C adalah suatu kode linear dengan panjang n, maka jumlah unsur satu pada setiap kata kode di posisi ke-

i

sama dengan nol atau setengah dari jumlah kata kode yang ada di C.

Bukti:

Misalkan

X

adalah himpunan kata kode yang memiliki unsur nol pada

koordinat ke-

i

dan

Y

adalah himpunan kata kode yang memiliki unsur satu pada koordinat ke-

i

, maka C= ∪X Y. Jika Y = ∅, maka C=X, sehingga tidak ada kata kode yang memiliki unsur satu pada posisi ke-

i

. Namun demikian, jika

Y≠ ∅, ambil c Y∈ sembarang, karena c Y+ ⊆ X , maka YX . Selanjutnya, karena c+XY , maka XY . Oleh karena itu, dapat diambil kesimpulan bahwa Y = X .

͏

3.2.6 Proposisi 1

i. Jika ada kode linear dengan parameter

[

n k d, ,

]

, maka ada kode

linear dengan parameter

[

n−1, ,k d−1

]

, di di manamana d>1.

ii. Jika ada kode linear dengan parameter

[

n k d, ,

]

, maka ada kode

(7)

iii. Jika ada kode linear dengan parameter

[

n k d, ,

]

, maka ada kode linear dengan parameter

[

n k, −1,d

]

, di mana k>1.

iv. Jika ada kode linear dengan parameter

[

n k d, ,

]

, maka ada kode linear dengan parameter

[

n−1,k−1,d

]

, di mana k>1.

Bukti:

i. Misalkan C adalah kode linear dengan parameter

[

n k d, ,

]

dengan

1

d> . Karena C memiliki jarak minimal d, maka ada kata kode c C∈ dimana wt c

( )

=wt C

( )

=d. Misalkan kata kode c memiliki unsur satu pada koordinat ke-

i

. Dengan menghapus unsur ke-

i

pada semua kata kode dalam C, akan diperoleh kode linear C' dengan panjang

(

n−1

)

dan c berubah menjadi c'. Karena wt c

( )

' = −d 1, maka wt C

( )

' = −d 1. Untuk menunjukkan dim

( )

C' =k, misalkan

( )

dim C' <k, maka ada x y, ∈C, sehingga x+ =c y di mana

( )

1

wt c = . Kontradiksi dengan d>1. Haruslah dim

( )

C' =k. Dengan demikian, C' memiliki parameter

[

n−1, ,k d−1

]

.

ii. Misalkan Gk n× adalah matriks generator untuk kode linear C dengan

parameter

[

n k d, ,

]

. Tambahkan vektor nol pada kolom terakhir G sehingga membentuk matriks G' yang berukuran k× +

(

n 1

)

. Karena yang ditambahkan adalah vektor nol, maka banyaknya kombinasi linear dari baris-barisnya tidak akan berubah, sehingga jarak minimumnya tidak berubah. Dengan kata lain, telah diperoleh kode linear dengan parameter

[

n+1, ,k d

]

.

iii. Misalkan C adalah kode linear dengan parameter

[

n k d, ,

]

dengan

1

k> . Karena C memiliki jarak minimal d, maka ada kata kode c C∈ di mana wt c

( )

=wt C

( )

=d. Misalkan Gk n× adalah matriks

(8)

pula baris ke-r dari G yang tidak sama dengan c dihapus sehingga membentuk kode baru, yaitu C' dengan matriks generator G'. Karena baris-baris di G saling bebas linear, maka semua baris di G' juga saling bebas linear, sehingga dim

( )

C' = −k 1. Karena

( )

( )

wt C =wt c =d dan kata kode c tetap ada di C', maka

( )

'

wt C =d, sehingga kode linear C' memiliki parameter

[

n k, −1,d

]

.

iv. Misalkan C adalah kode linear dengan parameter

[

n k d, ,

]

dengan

1

k> . Karena C memiliki jarak minimal d, maka ada kata kode c C∈ di mana wt c

( )

=wt C

( )

=d. Misalkan G dan

H

adalah matriks generator dan matriks cek paritas untuk C. Misalkan pula kata kode c memiliki unsur nol pada koordinat ke-

i

. Ada dua kasus yang mungkin terjadi, kasus pertama adalah semua kata kode di C memiliki unsur nol pada koordinat ke-

i

, sedangkan kasus kedua tidak semua kata kode memiliki unsur nol pada koordinat ke-

i

. Jika kasus pertama yang terjadi, maka koordinat ke-

i

pada semua kata kode dapat dihapus sehingga menghasilkan kode dengan parameter

[

n−1, ,k d

]

(Proposisi 1 butir i), selanjutnya dengan menghapus satu

baris dari matriks generator untuk kode dengan parameter

[

n−1, ,k d

]

tersebut, akan diperoleh kode dengan parameter

[

n−1,k−1,d

]

(Proposisi 1 butir ii). Seandainya kasus kedua yang terjadi, yaitu ada beberapa kata kode yang memiliki unsur satu pada koordinat ke-

i

, maka berdasarkan Lema 3, setengah dari kata kode

yang ada di C memiliki unsur satu pada koordinat ke-

i

. Dengan menghapus koordinat ke-

i

pada setiap kata kode yang ada di C, akan diperoleh kodeC' yang meniliki panjang

(

n−1

)

. Misalkan kata kode c berubah menjadi c', karena yang dihapus pada koordinat

(9)

Selanjutnya dengan menghapus satu baris dari matriks generator untuk kode dengan parameter

[

n−1, ,k d

]

tersebut, akan diperoleh kode dengan parameter

[

n−1,k−1,d

]

(Proposisi 1 butir ii).

͏

3.2.7 Proposisi 2

Diberikan kode linear C dengan parameter

[

n k d, ,

]

. i. Jika C optimal kuat, maka C optimal-

K

. ii. Jika C optimal-N, maka C optimal-

D

.

iii. Jika C optimal-

K

, maka belum tentu C optimal kuat. iv. Jika C optimal-

D

, maka belum tentu C optimal-N.

v. Jika C optimal-

D

, maka belum tentu C optimal-

K

.

vi. Jika C optimal-

D

, maka belum tentu C optimal kuat. vii. Jika C optimal-N, maka belum tentu C optimal kuat. Bukti:

i. Andaikan C tidak optimal-

K

, maka ada kode linear C' dengan parameter

[

n k, +1,d

]

. Karena ada kode C' ada, maka dari Proposisi 1 bagian ii, akan ada kode linear dengan parameter

[

n+1,k+1,d

]

. Hal ini kontradiksi dengan fakta bahwa kode C optimal kuat.

ii. Andaikan C tidak optimal-

D

, maka ada kode linear C' dengan parameter

[

n k d, , +1

]

. Karena kode C' ada, maka dari Proposisi 1 bagian i, akan ada kode linear dengan parameter

[

n−1, ,k d

]

. Hal ini kontradiksi dengan fakta bahwa kode C optimal-N.

iii. Dari Tabel Brouwer, ada kode dengan parameter

[

13,9,3

]

dan tidak ada kode dengan parameter

[

13,10,3

]

. Tetapi kode dengan parameter

[

14,10,3

]

ada.

(10)

iv. Dari Tabel Brouwer, ada kode dengan parameter

[

14,7,4

]

dan tidak ada kode dengan parameter

[

14,7,5

]

. Tetapi kode dengan parameter

[

13,7,4

]

ada.

v. Dari Tabel Brouwer, ada kode dengan parameter

[

15,4,8

]

dan tidak ada kode dengan parameter

[

15,3,9

]

. Tetapi kode dengan parameter

[

15,4,8

]

ada.

vi. Dari Tabel Brouwer, ada kode dengan parameter

[

17,8,6

]

dan tidak ada kode dengan parameter

[

17,8,9

]

. Tetapi kode dengan parameter

[

18,9,6

]

ada.

vii. Dari Tabel Brouwer, ada kode dengan parameter

[

15,4,8

]

dan tidak ada kode dengan parameter

[

14,4,8

]

. Tetapi kode dengan parameter

[

16,5,8

]

ada.

͏

3.3 Metode Komputasi

Dalam penelitian ini, software yang digunakan untuk mengonstruksi kode optimal kuat adalah MAPLE. Dari analisis teori, diturunkan algoritme-algoritme untuk mengonstruksi kode optimal kuat. Dalam subbab-subbab berikut ini, dibahas algoritme konstruksi dan deskripsi program konstruksi.

3.3.1 Ide dasar konstruksi kode

Untuk mengkonstruksi suatu kode, sama saja artinya dengan mengonstruksi matriks cek paritas

H

. Berlandaskan teorema-teorema yang telah disebutkan di landasan teori, cukup dikonstruksi bentuk standar dari

H

, yaitu

(

T|

)

r

H = B I . Berdasarkan pertimbangan efisiensi komputasi, cukup dikonstruksi matriks

B

berukuran k r× . Setelah mempelajari teorema-teorema sebelumnya, terutama teorema Gilbert-Varshamov, dapat dibuat teorema baru yang berkaitan dengan konstruksi kode linear biner, yaitu:

(11)

Teorema 16

Jika matriks

B

berukuran k r× dikonstruksi berdasarkan sifat sebagai berikut.

1. Semua vektor baris dari

B

berbeda, dan

2. Jumlah setiap

i

vektor baris dari

B

berbobot paling sedikit

(

di

)

untuk 2, 3,...,

i= s di mana s=min

{

d−1,k

}

, dan

(

d− ≤1

)

r, maka

(

T |

)

r

H = B I dan G=

(

Ik|B

)

secara berturut-turut merupakan matriks cek paritas dan matriks generator untuk kode linear C dengan parameter

[

k+r k, ,≥d

]

.

Bukti:

Misalkan telah dikonstruksi matriks

B

berukuran k r× sebagaimana disyaratkan teorema. Akan ditunjukkan bahwa

(

t|

)

r

H = B I merupakan matriks cek paritas untuk kode linear C dengan parameter

[

k+r k, ,≥d

]

.

Karena

H

berukuran r× +

(

k r

)

, maka C memiliki panjang k+r. Karena jumlah baris matriks

B

sama dengan k, maka kode linear C berdimensi k.

Selanjutnya, akan ditunjukkan bahwa kode linear C memiliki jarak minimum kurang dari atau sama dengan d . Andaikan ada v C∈ dengan

( )

wt v <d dan dituliskan v=

(

v vm, c

)

di mana vm merupakan vektor pesan

dengan wt v

( )

m =i dan vc adalah vektor cek dengan wt v

( )

c = j, maka berlaku

( )

c i+ < ⇔ < − ⇒j d j d i wt v < −d i (1) dan

(

)

0 | 0 0 T T T T m T T T T T T T T r T m r c m c c v Hv B I B v I v B v v v ⎛ ⎞ = ⇔ = ⇔ + = ⇔ = ⎝ ⎠ . (2)

Karena wt v

( )

m =i, dan berdasarkan pada syarat 2 dari konstruksi B, maka

(

T T

)

m

(12)

Dari persamaan 2, diperoleh bahwa T T T

m c

B v =v , sehingga persamaan 3 ekivalen dengan wt v

( )

c ≥ −d i. Hal ini kontradiksi dengan persamaan 1.

Sehingga dapat disimpulkan bahwa kode linear C memiliki jarak minimum ≥d.

͏

Dari Teorema 16, untuk mengonstruksi kode linear C-

[

k+r k d, ,

]

, sama artinya dengan mengonstruksi matriks

B

yang berukuran k r× yang semua baris dari

B

berbeda dan jumlah setiap

i

vektor baris dari

B

berbobot paling sedikit

(

di

)

, untuk i=1, 2, 3,...,s, dengan s=min

{

d−1,k

}

, dan

(

d−1

)

r.

Misalkan diberikan matriks

B

untuk kode C dengan parameter

[

n k d, ,

]

, dengan G=

[

I B| k r×

]

adalah matriks generator untuk C. Akan dicari vektor

2

r

xF yang bisa ditambahkan ke matriks

B

sehingga diperoleh kode

[

n+1,k+1,d

]

.

Untuk memilih vektor x, pertama-tama dipilih salah satu baris dari matriks

B

. Misalkan pula banyaknya unsur satu dari baris tersebut sama denganv, dan banyaknya unsur nol sama dengan rv. Dari Teorema 16, salah satu syarat suatu vektor dapat ditambahkan adalah memiliki bobot paling sedikit sebesar d−1,

sehingga dipilih vektor 1 ( ) 1

1v | 2 r v

x x× x × −

⎡ ⎤

= ⎣ ⎦ dengan x1 merupakan vektor biner yang memiliki

( )

v i− unsur satu dengan i=0,1, 2,...,v dan x2 merupakan vektor biner yang memiliki

(

j i

)

unsur satu dengan j = −d 2,d−1,...r yang memenuhi ketaksamaan v+ −j 2i≥ −d 1 (karena bobot dari x sama dengan banyaknya unsur satu dalam x, yaitu sama dengan

(

v i− + −

) (

j i

)

, atau v− −j 2i). Pemilihan vektor dengan cara di atas dilakukan untuk mengefisiensikan komputasi yang dilakukan, sehingga tidak semua vektor anggota F2r diuji

berdasarkan Teorema 16.

Setelah diperoleh vektor x, langkah selanjutnya adalah menguji apakah vektor x dapat ditambahkan ke matriks

B

dengan menguji bobot vektor x b+ i

(13)

kombinasi

i

vektor baris di

B

untuk i=1, 2,...,s, dan s=min

{

d−1,k

}

. Apabila x lulus uji, maka diperoleh satu vektor yang dapat ditambahkan ke matriks

B

.

Jika semua langkah untuk memperoleh satu vektor diulangi sampai tidak ada vektor anggota 2r

F yang bisa ditambahkan ke matriks

B

, maka akan diperoleh himpunan satu vektor yang dapat ditambahkan ke matriks

B

.

Misalkan L1 adalah himpunan satu vektor yang dapat ditambahkan ke matriks

B

. Dari L1, dapat dicari pasangan dua vektor yang dapat ditambahkan ke matriks

B

sehingga diperoleh kode linear dengan parameter

[

n+2,k+2,d

]

. Caranya adalah dengan menjumlahkan setiap kemungkinan dua vektor yang berbeda yang ada di L1. Misalkan hasil penjumlahannya adalah vektor

y

. Apabila bobot

y

lebih besar dari

(

d−2

)

, proses dilanjutkan dengan menguji bobot vektor

(

y b+ i

)

sedemikian sehingga wt y b

(

+ i

)

≥ − −d 2 i, dengan bi

adalah anggota dari semua kombinasi

i

vektor baris di

B

untuk i=1, 2,...,s, dan

{

}

min 1,

s= dk . Apabila vektor

y

tersebut lulus uji, maka diperoleh dua vektor yang dapat ditambahkan ke matriks

B

.

Jika semua langkah untuk memperoleh dua vektor diulangi sampai tidak ada pasangan dua vektor anggota L1 yang bisa ditambahkan ke matriks

B

, maka akan

diperoleh himpunan dari kumpulan dua vektor yang dapat ditambahkan ke matriks

B

.

Secara serupa, untuk memperoleh pasangan m+1 vektor yang bisa

ditambahkan ke matriks

B

, dapat dicari dari himpunan dari kumpulan m vektor yang bisa ditambahkan ke matriks

B

. Misalkan Lm adalah himpunan dari

kumpulan m vektor anggota F2r yang dapat ditambahkan ke matriks

B

. Dari

m

L , dapat dicari

(

m+1

)

vektor yang bisa ditambahkan ke matriks

B

dengan cara mencari dua anggota Lm yang jika digabung memiliki m+1 vektor yang berbeda.

Misalkan dua kumpulan m vektor tersebut adalah y1 dan y2. Selanjutnya dilakukan pengujian sebagai berikut.

(14)

1. Menguji apakah kedua vektor anggota

(

y1∪y2

) (

y1∩y2

)

dapat ditambahkan ke matriks

B

.

2. Menguji apakah kedua vektor anggota

(

y1∪y2

) (

y1∩y2

)

yang jika ditambahkan dengan setiap

i

vektor dalam

(

y1∩y2

)

, i=1, 2,...m−1 bisa ditambahkan ke matriks

B

.

Untuk menguji j vektor bisa ditambahkan ke matriks B, caranya adalah dengan menjumlahkan j vektor tersebut, misalkan hasil penjumlahannya adalah vektor

y

. Apabila bobot

y

lebih besar dari

(

dj

)

, proses dilanjutkan dengan menguji bobot vektor

(

y b+ i

)

sedemikian sehingga wt y b

(

+ i

)

≥ − −d j i, dengan

i

b adalah anggota dari semua kombinasi

i

vektor baris di

B

untuk i=1, 2,...,s, dan s=min

{

d−1,k

}

. Apabila vektor

y

tersebut lulus uji, maka diperoleh m+1

vektor yang dapat ditambahkan ke matriks

B

.

Misalkan Lm adalah himpunan dari kumpulan m vektor anggota 2

r

F yang dapat ditambahkan ke matriks

B

. Untuk mencari pasangan

(

m+1

)

vektor yang bisa ditambahkan ke matriks

B

, dapat diilustrasikan pula dengan menggunakan

teori graf, yaitu dengan memisalkan vektor 2r i

xF sebagai suatu verteks. Jika ada j verteks yang membentuk graf lengkap, maka j vektor yang berkaitan dengan verteks tersebut dapat ditambahkan ke matriks

B

. Dengan demikian, untuk memperoleh pasangan

(

m+1

)

vektor yang bisa ditambahkan ke matriks

B

,

dipilih graf lengkap (complete graph) yang terdiri atas

(

m+1

)

verteks.

Dari penjabaran di atas, proses ekstensi kode

[

n k d, ,

]

tersebut dilakukan

tahap demi tahap. Hal tersebut dilakukan sampai diperoleh suatu kode C dengan parameter

[

n k d', ', '

]

yang sudah tidak bisa diperluas lagi. Jika telah dibuktikan bahwa kode dengan parameter

[

n' 1, ' 1,+ k + d

]

tidak ada, maka C merupakan kode optimal kuat yang telah berhasil dikonstruksi. Akan tetapi, ketika diperoleh informasi bahwa ada kode dengan parameter

[

n' 1, ' 1,+ k + d

]

, berarti kode optimal kuat tersebut telah gagal dikonstrusi. Dalam hal ini, harus dilakukan rekonstruksi

(15)

ulang dengan strategi memilih kode dasar yang lain yang berpeluang besar dapat diperluas menjadi kode optimal kuat C.

3.3.2 Struktur data himpunan

Untuk membangun metode konstruksi yang efisien, perlu didefiiniskan struktur data yang baru, yang merepresentasikan ruang vektor 2n

F , yaitu himpunan kuasa atas A=

{

0,1, 2,...,n−1

}

. Untuk itu, perlu didefinisikan korespondensi satu-satu antara suatu vektor di n

q

F dengan suatu himpunan bilangan bulat tak negatif. Misalkan diberikan 2n

xF sembarang, katakanlah x=

(

x x x0, , ,...,1 2 xn1

)

, dengan xi

{ }

0,1 , maka x akan direpresentasikan dalam bentuk himpunan dengan aturan/cara sebagai berikut.

- Definisikan A=

{ }

Z n, , dengan Z =

{ }

, - Jika xi=1, maka Z = ∪Z i, i=0,1, 2,...,n−1.

Maka, x akan sama dengan A (dalam representasi himpunan). Sebagai contoh: - x=

(

0, 0, 0, 0

)

↔ =A

{

{ }

, 4

}

.

- x=

(

1, 0,1,1, 0

)

↔ =A

{

{

0, 2,3 ,5

}

}

.

Selanjutnya, operasi penjumlah dalam representasi himpunan didefinisikan sebagai operasi xor/selisih simetri, yang akan dilambangkan dengan ⊕. Sebagai contoh, misalkan A1=

{

{

1,3,5 , 6

}

}

, dan A2 =

{

{

0,3, 4 , 6

}

}

, maka A1+A2=

{

}

{

0,1, 4,5 , 6 , atau dalam representasi vektor biner,

}

(

0,1, 0,1, 0,1

) (

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

)

(

1,1, 0, 0,1

)

= .

Akan ditunjukkan bahwa dengan struktur data yang baru tersebut, ruang vektor biner dengan operasi penjumlahan yang direpresentasikan dengan himpunan bilangan bulat dengan operasi xor juga merupakan grup. Dengan kata lain, perlu ditunjukkan

- ⊕bersifat asosiatif, - ada unsur identitas (I),

- setiap anggotanya punya inverse,

(

2n

)(

' 2n

)

A F A F

∀ ∈ ∃ ∈ sehingga

'

(16)

Akan dibuktikan ⊕ bersifat asosiatif. Misalkan diberikan 3 vektor biner (dalam representasi himpunan) dengan panjang n sembarang, yaitu A A A1, ,2 3, dengan Aj =

{

{

a a0, ,...,1 ak

}

,n

}

, ai∈{0,1, 2,...n−1} dan k≤ −n 1. Akan

ditunjukkan

(

A1A2

)

A3 = A1

(

A2A3

)

. Ambil sembarang unsur pada A1, misalkan yang diambil adalah digit ke-l. Selanjutnya, ambil unsur padaA2 dan

3

A di urutan digit yang sama. Misalkan unsurnya adalah x, y, dan z. Dengan menggunakan tabel kebenaran, dapat dilihat bahwa untuk sembarang unsur di A1,

2

A , dan A3 (pada koordinat yang sama), ⊕ bersifat asosiatif.

Tabel 1. Tabel kebenaran untuk sifat asosiatif pada operasi xor

x y z

(

xy

)

(

xy

)

z

(

yz

)

x

(

yz

)

(5) ↔ (7) (1) (2) (3) (4) (5) (6) (7) (8) 1 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1

Untuk menunjukkan adanya unsur identitas dan adanya invers, misalkan diberikan vektor biner (dalam representasi himpunan) dengan panjang n sembarang, yaitu A=

{

{

a a0, ,...,1 ak

}

,n

}

, dengan ai∈{0,1, 2,...n−1} dan k≤ −n 1.

{ }

{

,

}

I = n merupakan untuk identitas, karena I⊕ = ⊕ =A A I A. Sebagai contoh,

{

{

0, 2,3 , 4

}

}

{

{ }

,4

}

=

{

{

0, 2,3 , 4

}

}

. Selanjutnya akan ditunjukkan ada

'

A sehingga AA'=I, karena A⊕ =A I, maka pilih A'=A. Oleh karena itu, setiap unsur di 2n

F memiliki invers, yaitu dirinya sendiri.

Selanjutnya suatu matriks biner juga akan direpresentasikan sebagai list/daftar dari sejumlah himpunan bilangan bulat tak negatif. Misalkan diberikan matriks biner sembarang. karena suatu matriks dapat dianggap sebagai kumpulan vektor-vektor kolom atau sebagai kumpulan dari vektor-vektor baris, maka ada dua cara untuk mendefinisikan matriks dalam representasi himpunan, yaitu

(17)

sebagai representasi matriks baris jika matriks tersebut dianggap sebagai kumpulan vektor-vektor baris atau sebagai representasi matriks kolom jika matriks tersebut dianggap sebagai kumpulan vektor-vektor kolom. Apabila suatu matriks dianggap sebagai representasi matriks kolom, maka informasi tentang banyaknya baris diletakkan sebelum list vektor-vektor, sebaliknya jika suatu matriks dianggap sebagai representasi matriks baris, maka informasi tentang banyaknya kolom diletakkan setelah list dari vektor-vektor. Sebagai contoh,

misalkan diberikan matriks

1 0 0 1 0 1 1 1 1 1 1 0 M ⎡ ⎤ ⎢ ⎥ = ⎢ ⎥ ⎢ ⎥ ⎣ ⎦

. M dapat dianggap sebagai

representasi matriks baris, yaitu L1=

{

{ } {

0,3 , 1, 2,3 0,1, 2 ,3

}{

}

}

atau sebagai representasi matriks kolom, yaitu L2=

{

4, 0, 2 , 1, 2 , 1, 2 , 0,1

{ } { } { } { }

}

.

Dengan didefinisikannya struktur data yang baru tersebut, maka perlu disusun suatu program untuk melakukan perhitungan aritmatik aljabar matriks. 3.3.3 Algoritme Kostruksi

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.

(18)

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

(19)

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 merupakan matriks identitas.

(20)

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 vektor-vektor baris B di posisi terakhir.

(21)

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 disusun vektor .

(22)

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

(23)

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

2k

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 v adalah banyaknya unsur satu dari baris pertama pada matriks B.

(24)

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 ke matriks B, perlu dicek semua 2 vektor yang berbeda.

(25)

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

(26)

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.

3.3.4 Eksplorasi kode linear untuk jarak minimum 9

Pada subbab ini, akan diceritakan proses diperolehnya (konstruksi) kode optimal kuat dengan jarak minimum 9. Konstruksi kode linear tersebut dilakukan dengan menggunakan software MAPLE. Dari Tabel Brouwer, dapat dilihat bahwa untuk , kode , ,

[

20,5,9

]

,

[

23,7,9

]

, dan

[

27,10,9

]

merupakan kode optimal kuat. Konstruksi dimulai dari kode

[

14,2,9

]

, yaitu dengan mendefinisikan matriks

B

yang berukuran

2 12

×

sebagai berikut

1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

B= ⎜⎛ ⎞

⎝ ⎠

Matriks tersebut dipakai sebagai matriks dasar untuk diperluas menjadi matriks B1 yang berukuran 3 14× (yang mendefinisikan kode

[

17,3,9

]

) dengan cara menambahkan dua vektor kolom nol pada

B

, dilanjutkan dengan menambah

satu vektor baris berukuran 13 bit yang memenuhi syarat strategi berdasarkan

9

d=

[

14, 2,9

]

[

17,3,9

]

Algoritme:

Analog dengan algoritme untuk menghimpun semua pasangan 2 vektor, Untuk menghimpun semua m+1 vektor, perlu di cek semua himpunan dari kumpulan vektor anggota yang dapat ditambahkan ke matriks .

Algoritme:

Misalkan dari hasil eksplorasi diperoleh matriks . Selanjutnya, setiap dua pasang matriks tersebut di cek, apakah saling ekivalen atau tidak, apabila kedua matriks tersebut saling ekivalen, maka salah satunya dapat dihapus, sehingga nantinya hanya diperoleh matriks-matriks yang tidak saling ekivalen.

(27)

algoritme konstruksi. Dari hasil komputasi yang dilakukan, diperoleh 8 kode linear dengan parameter

[

17,3,9

]

yang tidak saling ekivalen, salah satunya:

1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 B ⎛ ⎞ ⎜ ⎟ = ⎜ ⎟ ⎜ ⎟ ⎝ ⎠

Selanjutnya, akan diperluas ke matriks yang berukuran (yang mendefinisikan kode ) dengan cara:

1. Menambahkan satu vektor kolom nol pada ,

2. Mencari dua vektor baris berukuran 15 bit yang dapat ditambahkan ke berdasarkan algoritme konstruksi.

Dari hasil eksplorasi, diperoleh 128 matriks yang tidak saling ekivalen yang merepresentasikan kode liner dengan parameter . Salah satunya adalah:

.

Dengan cara yang serupa, yaitu dengan menambahkan satu vektor nol pada kolom terakhir dari dan mencari dua vektor baris yang bisa ditambahkan ke , diperoleh 5040 kode linear dengan parameter yang tidak saling ekivalen. Salah satunya adalah

3 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 B ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ = ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ .

Dari matriks B3, akan dikonstruksi kode linear dengan parameter

[

27,10,9

]

. Setelah ditambahkan satu vektor nol pada kolom terakhir dari matriksB3 dan

1 B 5 15×

[

20,5,9

]

1 B 1 B

[

20,5,9

]

2 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 B ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ = ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ 2

B

2 B

[

23,7,9

]

(28)

dicari tiga vektor baris yang bisa ditambahkan, diperoleh delapan matriks yang berukuran 10 17× yang tidak saling ekivalen. Salah satunya adalah

.

Setelah ditambahkan vektor nol pada kolom terakhir dari matriks , akan dicari vektor-vektor baris yang dapat ditambahkan. Harapannya, ingin diperoleh matriks yang merepresentasikan kode baru yang berparameter , Namun hasil komputasi menunjukkan bahwa matriks yang telah ditambahkan vektor kolom hanya dapat diperluas menjadi matriks yang berukuran yang merepresentasikan kode dengan parameter .

3.3.5 Eksplorasi kode linear untuk jarak minimum 11

Identik dengan eksplorasi untuk kode dengan jarak minimum 9, konstruksi kode optimal kuat untuk dilakukan dengan menggunakan software MAPLE dan dimulai dari kode optimal dengan dimensi dua, yang direpresentasikan dengan matriks

.

Karena kode optimal kuat berikutnya berparameter , matriks perlu ditambahkan dua vektor nol sebelum dicari satu vektor yang dapat ditambahkan sehingga diperoleh dengan parameter . Hasil komputasi menunjukkan ada dua matriks yang tidak saling ekivalen yang merepresentasikan kode dengan parameter , salah satunya adalah:

4 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 B ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ = ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎜ ⎜ ⎜ ⎜ ⎝ ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ 4 B 14 18×

[

32,14,9

]

4 B 12 17×

[

30,12,9

]

11 d= 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 B= ⎜⎛ ⎞ ⎝ ⎠

[

20,3,11

]

B

[

20,3,11

]

[

20,3,11

]

(29)

.

Selanjutnya, dengan menambahkan satu vektor nol pada kolom terakhir dari dan mencari dua vektor baris yang bisa diambahkan, diperoleh 128 macam matriks yang merepresentasikan kode linear dengan parameter . Salah satunya adalah:

.

Dengan cara yang serupa untuk memperoleh kode dengan parameter

[

23,5,11

]

, yaitu dengan menambahkan satu vektor nol pada kolom terakhir dari matriks B2 dan mencari dua vektor baris yang bisa ditambahkan, diperoleh 4032 macam matriks yang merepresentasikan kode linear dengan parameter

[

26,7,11

]

. Salah satunya adalah:

3 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 B ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ = ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ .

Selanjutnya, B3 akan diperluas menjadi matriks yang berukuran

yang merepresentasikan kode dengan parameter dengan cara menambahkan satu vektor nol pada kolom terakhir dari dan mencari empat vektor yang dapat ditambahkan. Akan tetapi, dari hasil komputasi yang dilakukan, matriks tersebut hanya dapat diperluas menjadi matriks yang berukuran , sehingga hanya diperoleh kode dengan parameter . Gagalnya konstruksi

1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 B ⎛ ⎞ ⎜ ⎟ = ⎜ ⎝ ⎠ 1 B

[

23,5,11

]

2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 B ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ = ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ 11 20×

[

31,11,11

]

3 B 8 20×

[

28,8,11

]

(30)

kode

[

31,11,11

]

disebabkan oleh pemilihan kode awal yang kurang baik, dalam kasus ini kode awal tersebut adalah kode yang direpresentasikan oleh matriks B3. Salah satu cara untuk mengatasi hal tersebut adalah dengan cara menghapus baris ke-3 dan ke-4 dari matriks .Dilanjutkan dengan rekonstruksi ulang, yaitu dengan menambahkan vektor nol pada kolom terakhirnya. Kemudian dicari 6 vektor yang dapat ditambahkan, sehingga diperoleh empat matriks berukuran 11 20× yang tidak saling ekivalen yang merepresentasikan kode dengan parameter . Salah satunya adalah

4 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 B = 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ .

Pemilihan baris dan banyaknya baris yang dihapus berkaitan dengan peluang perluasan matriks dasar tersebut, namun tidak ada aturan yang pasti mengenai penghapusan tersebut agar diperoleh kode dengan dimensi terbesar. Yang pasti hanyalah peluang untuk memperluas kode dengan menghapus dua baris lebih besar jika dibandingkan dengan menghapus satu baris, tapi waktu komputasinya menjadi jauh lebih lambat.

Dengan cara yang serupa, kode linear dengan parameter

diperoleh dengan menghapus beberapa baris dari matriks B4, dan dilakukan rekonstruksi ulang. Hasil komputasi menunjukkan ada 2 matriks yang tidak saling ekivalen, salah satunya

[

26,7,11

]

3

B

[

31,11,11

]

(31)

.

Agar dapat memperoleh kode baru yang belum diperoleh orang lain, yaitu kode dengan parameter

[

37,15,11

]

, matriks harus dapat diperluas menjadi matriks berukuran 15 22× . Namun, matriks tersebut gagal dikonstruksi, dari hasil komputasi yang dilakukan, hanya diperoleh kode dengan parameter

yang direpresentasikan oleh matriks yang berukuran 14 22

×

sebagai berikut.

. 5 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 B = 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ 5 B

[

36,14,11

]

6 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 B = 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 1 ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎝ ⎠

(32)

3.3.6 Fakta tentang komputasi untuk dua representasi data yang berbeda Dalam melakukan konstruksi kode linear biner, dapat dilakukan dengan dua representasi data yang berbeda, yaitu dengan representasi himpunan dan dengan representasi matriks/vektor. Proses pengerjaan dengan representasi himpunan delakukan dengan menggunakan software MAPLE, sedangkan untuk representasi matriks dilakukan dengan software MATLAB Dari kedua representasi tersebut, dibandingkan waktu komputasinya dengan PC berprosessor Intel® Core™ i3, 2.93 GHz, 6 GB RAM.

Dalam melakukkan perbandingan ini, diambil contoh untuk . Berikut hasil perbandingan komputasi yang dilakukan.

Tabel 2. Perbandingan komputasi antara dua representasi data

Kode Basis Kode yang dihasilkan

Waktu eksekusi (detik)

Himpunan Matriks

[

17,2,11

]

0.787 36.917

[

20,3,11

]

219.590 1985.293

[

23,5,11

]

[

26,7,11

]

25.156 938.301

3.4 Hasil yang Diperoleh

Dari eksplorasi dengan menggunakan software MAPLE, telah berhasil dikonstruksi kode optimal sebagai berikut.

Tabel 3. Hasil konstruksi untuk kode untuk d = 9 dan d = 11

Jarak Minimal

9

d=

Panjang dan Dimensi dari Suatu Kode -

[ ]

n k,

[ ]

17,2

[

20,3

]

[

23,5

]

[

26,7

]

[

31,11

]

- 11 d=

[

20,3,11

]

[

23,5,11

]

11 d=

[

14,2

]

[

17,3

]

[

20,5

]

[

23,7

]

[

27,10

]

[

33,12

]

(33)

Dari Tabel Brouwer, dapat diketahui bagaimana cara mengontruksi suatu kode pada saat pertama kali ditemukan. Pada umumnya, kode-kode tersebeut diperoleh dengan cara menggabungkan 2 kode yang memiliki dimensi yang sama. Sebagai contohnya, kode

[

14,2,9

]

diperoleh dengan cara menggabungkan kode dan kode

[

12,2,8

]

. Begitu pula kode , kode tersebut diperoleh dengan cara menggabungkan kode

[

3,3,1

]

dan kode . Selain penggabungan, suatu kode juga dapat diperoleh dengan cara memotong kode yang lebih besar, seperti untuk memperoleh kode

[

26,7,11

]

, yang diperoleh dengan cara:

1. mengontruksi kode dengan memotong (puncturing) matriks generator dari kode

[

51,8,24

]

di kolom ke 51.

2. mengontruksi kode dengan memotong (puncturing) matriks generator dari kode

[

51,8,24

]

di kolom ke 1, 9, 13, 14, 16, 19, 21, 22, 25, 26, 28, 29, 30, 31, 34, 35, 36, 38, 39, 42, 45, 46, 50. 3. mengontruksi kode dengan memotong (puncturing)

matriks generator dari kode

[

27,7,12

]

di kolom ke 27.

Kelebihan dari metode konstruksi tersebut adalah lebih mudah dan lebih cepat, terutama untuk kode dengan dimensi besar. Namun, jika dibandingkan dengan metode konstruksi yang dilakukan pada penelitian ini, metode tersebut memiliki kelemahan, yaitu tidak dapat mengoleksi kode-kode yang memiliki parameter yang sama sebanyak-banyaknya. Sebagai contoh, diperoleh 4048 kode dengan parameter yang tidak saling ekivalen.

Dari dari penelitian yang dilakukan, waktu komputasi dengan menggunakan struktur data himpunan jauh lebih cepat bila dibandingkan dengan menggunakan struktur data ruang vektor. Dua hal yang berpengaruh terhadap kecepatan tersebut adalah:

1. Program yang digunakan dalam struktur data himpunan lebih ramping, artinya, program tersebut didesain hanya untuk masalah ini.

[

2, 2,1

]

[

17,3,9

]

[

13,3,8

]

[

50,8, 23

]

[

27,7,12

]

[

26,7,11

]

[

27,7,11

]

(34)

2. Banyaknya memori yang digunakan akan berkurang jika menggunakan struktur data himpunan, karena sebagian besar dari himpunan dalam list memiliki panjang yang kurang dari panjang vektor ketika merepresentasikan suatu matriks biner.

Dari hasil penelitian yang dilakukan, ternyata sangat sulit untuk memperbaiki batas bawah dari Tabel Brouwer. Salah satu faktor yang paling berpengaruh dalam ketidak berhasilan tersebut adalah faktor hardware, yaitu keterbatasan komputer yang digunakan.

Gambar

Tabel 2. Perbandingan komputasi antara dua representasi data

Referensi

Dokumen terkait

Dalam hukum pidana Islam, ketiga macam tindak pidana menurut KUHP Mesir tersebut dinamakan jinayah atau jarimah, karena sebagaimana telah dikatakan diatas bahwa  jinayah adalah

Pada tahun 1884, Hans Chrisitan Gram, mengembangkan teknik untuk membedakan jenis bakteri berdasarkan ketebalan lapisan peptidoglikan pada dinding sel dengan sistem

Teknik referensial digunakan untuk mendeskripsikan dialog tindak tutur pada program tv sentilan sentilun edisi 16 Januari 2015 dengan judul “ Ada Gula Ada Mafia”, sedangkan

Konsentrasi COD dengan keberadaan akar wangi selama 61 hari proses remediasi mengalami penurunan dari 3840 mg/L menjadi 24 mg/L (Gambar 5A). Akar wangi umur 75 HST pada

Jadi pendidikan orang dewasa adalah proses pendidikan dimana para pembelajarnya adalah individu yang telah memiliki identitas dan mengetahui

Bulk Grains Bulk Soft Meals Bulk Animal Protein Meals Liquids – Fats, Oils, Molasses Bagged Animal Protein Meals Bagged Macro Ingredients Bulk Minerals Bagged Macro

Kemudian hasil wawancara dengan kepala sekolah yaitu Shaleh ataupun sering disebut guru Shaleh menyatakan bahwa penerimaan siswa baru di SD Lembah Binubu masih

Udara merupakan perantara yang dapat menyebabkan bunyi dapat kita dengar. Kita dapat mendengar bunyi bel yang ada di sekolah karena bunyi tersebut merambat melalui udara dan