DAFTAR PUSTAKA
A.Bar, S.Guritman and J. Simonis. Strengthening the Gilbert- Varshamov bound, Linear Algebra and its Applications,307, pp. 119-129, 2000.
A.E. Brouwer, Bounds on the size of linear codes, in Handbook of coding theory, ed: V.Plees and W.C Huffman. Elsevier,1998.ISBN: 0-444-50088-x. Online
version: http:www
. win. tue.nlmathdwvooolincod.html Aliatiningtyas N. 2002. Struktur Aljabar. Bogor: Fakultas Matematika dan Ilmu
Pengetahuan Alam, IPB. Guritman S, Aliatiningtyas N. 2004. Struktur Aljabar. Bogor: Departemen
Matematika, FPMIPA-IPB. Guritman S. 2005. Aljabar Linear Lanjut.Bogor: Departemen Matematika,
FPMIPA-IPB. Kanemasu,M,1990. Golay Codes. MIT Press.
. Ling,San and Xing,Chaopin.2000. Coding Theory A First Course. National
University of Singapore. Cambrid University Pres. MacWilliams FJ, Sloane NJA. 1981. The Theory of Error Correcting Codes.
North-Holland Mathematical Library. Menezes A, Oorschot PV, Vanstone S. 1997. Handbook of Applied
Cryptography. New York: CRC Press, Inc.
Lampiran 1 Program Matriks Biner 1.1
Pendefinisian Prosedur yang Digunakan untuk konversi Representasi Data.
1.1.1
UbahBinKeDes Prosedur untuk mengubah vektor biner ke decimal dari
order rendah ke order tinggi
UbahBinKeDes:=procN::list local D1,D2::list, Des::integer;
D1:=mapx-2x,[seqi,i=0..nopsN-1]: D2:=[seqN[j]D1[j],j=1..nopsN]:
Des:=addi,i=D2;
end proc:
1.1.2
UbahDesKebin Prosedur untuk mengubah integer decimal ke vektor biner
dengan panjang m
UbahDesKeBin:=procB::integer,m::integer local K,KVek,Kv::list, i::integer:
K:=B mod 2m; Kv:=convertK,base,2:
KVek:=[opKv,seq0,i=nopsKv+1..m]:
end proc:
1.1.3 UbahbinKeSet Prosedur untuk mengubah vektor biner ke set
UbahBinKeSet:=procCr::list local H::set, i,n::integer:
n:=nopsCr: H:={}:
for i from 1 to n do if Cr[i]=1 then
H:=H union {i-1}: end if:
end do: returnH:
end proc:
1.1.4
UbahDesKeSet mengubah intejer ke himpunan
UbahDesKeSet:=procn::integer local X::list:
X:=convertn,base,2: UbahBinKeSetX;
end proc:
1.1.5 UbahSetKeDes Prosedur mengubah set ke decimal
UbahSetKeDes:=procN::set local D::set, Des::integer;
D:=mapx-2x,N:
Des:=addi,i=D; end proc:
1.1.6 UbahSetKeBin Prosedur mengubah set ke biner
UbahSetKeBin:=procN::set local C::list, i,m::integer;
m:=opnopsN,N+1: C:=[seq0,i=1..m]:
for i in N do C:=subsopi+1=1,C:
end do: returnC;
end proc:
1.1.7 UbahSetKeVek prosedur mengubah set ke vektor
UbahSetKeVek:=procN::set,m::posint local C::list, i::integer;
C:=[seq0,i=1..m]: for i in N do
C:=subsopi+1=1,C: end do:
returnC; end proc:
1.2 Program Aljabar Matriks Biner dengan Representasi Himpunan
1.2.1 AcakSet membangkitkan vektor dalam ruang dimensi n secara acak.
AcakSet:=procm::posint local AcIn::procedure, p::integer:
AcIn:=rand2m: p:=AcIn:
UbahDesKeSetp; end proc:
1.2.2 AddV menjumlahkan dua vektor
AddV:=procS::set,T::set return{opS minus T,opT minus S};
end proc:
1.2.3 MtxSetC mendefinisikan matriks kolom biner berordo mxn secara acak.
Dalam ini, m adalah ukuran vektor baris, dan n adalah banyaknya vektor kolom dalam matriks.
MtxSetC:=procm::integer,n::integer
]: local M::list, S::set, i,j::integer:
M:=[]: for i from 1 to n do
S:=AcakSetm: M:=[opM,S]:
end do: return[m,M];
end proc:
1.2.4
MtxSetC1 mendefinisikan matriks kolom biner berordo mxn secara acak.
Dalam ini m adalah panjang vektor dan n adalah banyaknya vektor kolom dalam matriks. Tidak ada vektor kolom yang nol.
MtxSetC1:=procm::integer,n::integer local M::list, S::set, i,j::integer:
M:=[]: for i from 1 to n do
S:=AcakSetm: for j while S={} do
S:=AcakSetm: end do:
M:=[opM,S]: end do:
return[m,M]; end proc:
1.2.5 Ubah MtxCR
mengubah tampilan matriks kolom ke matriks baris berordo n
UbahMtxCR:=procA::list local M,N::list, S::set, i,j,m,n::integer:
M:=op2,A: n:=nopsM: m:=op1,A: N:=[]:
for i from 0 to m-1 do S:={}:
for j from 1 to n do if i in M[j] then
S:={opS,j-1}: end if:
end do: N:=[opN,S]
end do: return[N,n];
end proc: UbahMtxRC:=procA::list
local B,N::list: B:=[op2,A,op1,A
.2.6 TrpsC menentukan transpose matriks kolom berordo m
menghasilkan
TrpsC:=procA::list integer:
j dalam matriks kolom berordo m ,
rR:=proci:: nteger,j::integer,A::list
:
1,A,M];
ti baris ke-j dengan baris ke-i ditambah baris ke-j dalam
N:=UbahMtxCRB; return[N[2],N[1]];
end proc:
matriks kolom berordo n
1
local M,N::list, m:: M:=UbahMtxCRA;
1,M: m:=op2,M: N:=op
return[m,N]; end proc:
.2.7 TukarR menukar baris ke-i dan ke-
dimana ,
1
Tuka i
1
local M::list, S,T::set, k,n::integer: M:=op2,A: n:=nopsM:
for k from 1 to n do
i,j} S:=M[k] intersect {
if nopsS=1 then
j}: T:=AddVM[k],{i,
M:=subsopk=T,M: end if:
end do:
op return[
end proc:
1.2.8 GantiB menggan
matriks kolom berordo mxn, dimana
GantiB:=proci::integer,j::integer,A::list local M::list, S::set, k,n::integer:
M:=A: n:=nopsM:
do for k from 1 to n
if i in M[k] then
: S:=AddVM[k],{j}
M:=subsopk=S,M: end if:
end do:
; returnM
end proc:
.2.9 KanonC menentukan bentuk kanonik matriks kolom berordo mxn, dimana
KanonC:=procA::list :set, i,j,m,n,u,v,w,k::integer:
om 0 while im do [k] then
i}:
}: ile T={} and kn do
and kn then i+1],M:
,M; n
i+1],M:
]; us {i}:
Ri,m,[w,M];
1
local M,N::list, S,T: M:=op2,A: n:=nopsM: m:=op1,A: w:=m: v:=n:
N:=[]: for i fr
k:=i+1: if i in M
S:=M[i+1] minus { for j in S do
,M; M:=GantiBi,j
end do: else
T:={ for j wh
T:=M[k+1] intersect {i}: k:=k+1:
end do:
if ki+1 M:=subsopi+1=M[k],k=M[
S:=M[i+1] minus {i}: for j in S do
M:=GantiBi,j end do:
d T{} the elif k=n an
M:=subsopi+1=M[k],k=M[ S:=M[i+1] minus {i}:
for j in S do
,M; M:=GantiBi,j
end do:
d T={} then elif k=n an
u:=maxopM[i+1]: if ui then
,u,[w,M N:=TukarRi
M:=op2,N: S:=M[i+1] min
for j in S do
,M; M:=GantiBi,j
end do: else
ukar N:=T
M:=op2,N:
i+1=M[v],v=M[i+1],M:
[i+1] then :
,M;
}: ile T={} and kn do
and kn then i+1],M:
,M; d T{} then
i+1],M:
,M; d T={} then
,u,[w,M]; us {i}:
,M;
ukarRi,m,[w,M];
i+1=M[v],v=M[i+1],M: m:=m-1:
M:=subsop v:=v-1:
k:=i+1: if i in M
S:=M[i+1] minus {i} for j in S do
M:=GantiBi,j end do:
else T:={
for j wh T:=M[k+1] intersect {i}:
k:=k+1: end do:
if ki+1 M:=subsopi+1=M[k],k=M[
S:=M[i+1] minus {i}: for j in S do
M:=GantiBi,j end do:
elif k=n an M:=subsopi+1=M[k],k=M[
S:=M[i+1] minus {i}: for j in S do
M:=GantiBi,j end do:
elif k=n an u:=maxopM[i+1]:
if ui then N:=TukarRi
M:=op2,N: S:=M[i+1] min
for j in S do M:=GantiBi,j
end do: else
N:=T M:=op2,N:
m:=m-1: M:=subsop
v:=v-1: end if:
,M];
2.10 AddMtx menjumlahkan dua matriks.
er: : n:=nopsB:
d if:
.2.11 DotV menentukan produk titik dua vektor
T mod 2;
2.12 MultMtx
mengalikan matriks kolom dengan matriks kolom
m,n,i,j,k,p::integer: :=nopsB:
if:
om 1 to p do om 1 to m do
-1}:
,S] end if:
end if: end if:
end if: end if:
end do: return[w
end proc:
1.
AddMtx:=procM::list,N::list local A,B,H::list, m,n::integ
A:=op2,M: B:=op2,N: m:=op1,M if mop1,N or nopsAn then returnfalse en
H:=[seqAddVA[i],B[i],i=1..n]: return[m,H];
end proc:
1
DotV:=procS::set,T::set local C::integer:
C:=nopsS intersect returnC;
end proc:
1.
MultMtx:=procM::list,N::list local TA,A,B,H::list, S::set,
A:=op2,M: B:=op2,N: m:=op1,M: n:=op1,N: p
if nnopsA then returnfalse end TA:=op2,TrpsCM:
H:=[]: for i fr
S:={}: for j fr
k:=DotVTA[j],B[i]: if k=1 then
S:={opS,j end if:
end do: H:=[opH
,H];
2.13 InkodG mengkoding vektor pesan P menjadi vektor katakode C
Inkod ,p::integer:
P]]:
2.14 ParG menentukan vektor paritas X dari vektor pesan P menggunakan
enjadi
r C = P|X a
ParG: er:
-1}:
;
.2.15 InkodS mengkoding vektor pesan P menjadi vektor katakode C
m hal ini P
InkodS:=procP::set,B::list,k::posint
+i-1}: end do:
return[m end proc:
1.
menggunakan matriks generator umum G berordo kxn.
G:=procP::set,G::list local A,B,C::list, H::set, k
k:=op1,G: A:=TrpsC[k,[
B:=MultMtxA,G: C:=TrpsCB:
H:=opC[2]: returnH;
end proc:
1.
matriks generator bentuk standar dalam hal ini P dan B m
input, dan X adalah output. Vekto dalah katakode dari pesan P.
=procP::set,B::list local S::set, r,i,s::integ
r:= nopsB: S:={}: for i from 1 to r do
s:=DotVP,B[i]: if s=1 then
S:={opS,i end if:
end do: returnS
end proc:
1
menggunakan matriks generator bentuk standar dala
dan B menjadi input
local S::set, r,i,s::integer: r:= nopsB: S:=P:
for i from 1 to r do s:=DotVP,B[i]:
if s=1 then S:={opS,k
;
2.16 HmDist menentukan jarak Hamming dua vektor
;
2.17 NonZeroWt menentukan bobot tak-nol dari suatu kode yang
NonZe ,k::integer:
Wt:={}: o
}: ;
.3 Pendefinisian Prosedur yang digunakan untuk konstruksi Kode Optimal
.
1.3.1
ombinM menentukan list semua kombinasi j vektor dari vektor-vektor M
Kombi i,k::integer:
,j: N do
S do end if:
end do: returnS
end proc:
1.
HmDist:=procS::set,T::set local C::set:
C:=AddVS,T; returnnopsC
end proc:
1.
direpresentasikan oleh matriks generator G.
roWt:=procB::list local Wt,C,P::set, i,r,m
k:=B[1]: m:=2k-1:
for i from 1 to m d P:=UbahDesKeSeti;
C:=InkodSP,B[2],k; r:=nopsC:
Wt:={opWt,r end do:
returnWt end proc:
1
Diberikan matriks generator bentuk standar Misalkan M adalah
matriks representasi vektor baris dari B.
K representasi baris untuk suatu nilai j = 1,2,…,k.
nM:=procj::posint,M::list local S,C,L,K,N::set, W::list,
K:= M[1]: k:=nopsK: L:={seqi,i=1..k}:
N:=combinat[choose]L W:=[]:
for S in C:={}:
for i in