Kesimpulan AddMtx menjumlahkan dua matriks. MultMtx n,i,j,k,p::integer: :=nopsB:

KONSTRUKSI KODE LINEAR BINER OPTIMAL KUAT BERJARAK MINIMUM 5 DAN 7 ASRIZA RAHMA SEKOLAH PASCASARJANA INSTITUT PERTANIAN BOGOR BOGOR 2011 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 ]: ,C]: ;

3.2 AddVekM menambah satu baris vektor V ke matriks M representasi baris

AddVekM:=procV::set,M::list ; procH::set,M::list n H do S: ;

3.3 AddVekM menambah satu baris vektor V ke matriks M representasi baris

AddVekM:=procV::set,M::list ; procH::set,M::list do kMV,S: ; C:=AddVC,K[i end do: W:=[opW end do: returnW end proc: 1. di posisi terakhir. local S::list, r::integer: S:=[opM[1],V]: r:=maxmaxV,M[2] return[S,r]; end proc: AddVekMX:= local S::list, V::set: S:=M: for V i S:=AddVekMV, end do: returnS end proc: 1. di posisi terakhir. local S::list, r::integer: S:=[opM[1],V]: r:=maxmaxV,M[2] return[S,r]; end proc: AddVekMX:= local S::list, V::set: S:=M: for V in H S:=AddVe end do: returnS end proc: