• Tidak ada hasil yang ditemukan

B. Program Aritmetik Aljabar Matriks Biner Dengan Representasi Himpunan.

N/A
N/A
Protected

Academic year: 2021

Membagikan "B. Program Aritmetik Aljabar Matriks Biner Dengan Representasi Himpunan."

Copied!
30
0
0

Teks penuh

(1)

B. Program Aritmetik Aljabar Matriks Biner Dengan Representasi

Himpunan.

1. AcakSet membangkitkan vektor dalam ruang dimensi n secara acak.

> AcakSet:=proc(m::posint)

local AcIn::procedure, p::integer: AcIn:=rand(2^m):

p:=AcIn():

UbahDesKeSet(p); end proc:

2. AddV menjumlahkan dua vektor

> AddV:=proc(S::set,T::set)

return({op(S minus T),op(T minus S)}); end proc:

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:=proc(m::integer,n::integer) local M::list, S::set, i,j::integer:

M:=[]: for i from 1 to n do S:=AcakSet(m): M:=[op(M),S]: end do: return([m,M]); end proc:

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 vektor kolom yang nol.

> MtxSetC1:=proc(m::integer,n::integer) local M::list, S::set, i,j::integer:

M:=[]: for i from 1 to n do S:=AcakSet(m): for j while S={} do S:=AcakSet(m): end do: M:=[op(M),S]: end do: return([m,M]); end proc:

5. UbahMtxCR mengubah tampilan matriks kolom ke matriks baris

berordo n x m.

> UbahMtxCR:=proc(A::list)

local M,N::list, S::set, i,j,m,n::integer: M:=op(2,A): n:=nops(M): m:=op(1,A): N:=[]:

for i from 0 to m-1 do S:={}:

(2)

for j from 1 to n do if i in M[j] then S:={op(S),j-1}: end if: end do: N:=[op(N),S] end do: return([N,n]); end proc: UbahMtxRC:=proc(A::list) local B,N::list: B:=[op(2,A),op(1,A)]: N:=UbahMtxCR(B); return([N[2],N[1]]); end proc:

6. TrpsC menentukan transpose matriks kolom berordo mxn menghasilkan

matriks kolom berordo n x m.

> TrpsC:=proc(A::list) local M,N::list, m::integer: M:=UbahMtxCR(A); m:=op(2,M): N:=op(1,M): return([m,N]);

end proc:

7. TukarR menukar baris ke-i dan ke-j dalam matriks kolom berordo m x n,

dimana

0 <= i, j <= m - 1.

> TukarR:=proc(i::integer,j::integer,A::list) local M::list, S,T::set, k,n::integer: M:=op(2,A): n:=nops(M): for k from 1 to n do S:=M[k] intersect {i,j}: if nops(S)=1 then T:=AddV(M[k],{i,j}): M:=subsop(k=T,M): end if: end do: return([op(1,A),M]); end proc:

8. GantiB mengganti baris ke-j dengan baris ke-i ditambah baris ke-j dalam

matriks kolom berordo mxn, dimana 0 <= i, j <= m - 1.

> GantiB:=proc(i::integer,j::integer,A::list) local M::list, S::set, k,n::integer:

M:=A: n:=nops(M): for k from 1 to n do if i in M[k] then S:=AddV(M[k],{j}): M:=subsop(k=S,M): end if: end do:

(3)

return(M); end proc:

9. KanonC menentukan bentuk kanonik matriks kolom berordo m x n, dimana

"m<= n."

> KanonC:=proc(A::list)

local M,N::list, S,T::set, i,j,m,n,u,v,w,k::integer: M:=op(2,A): n:=nops(M): m:=op(1,A): w:=m: v:=n: N:=[]:

for i from 0 while i<m do k:=i+1:

if i in M[k] then S:=M[i+1] minus {i}: for j in S do

M:=GantiB(i,j,M); end do:

else T:={}:

for j while T={} and k<n do T:=M[k+1] intersect {i}: k:=k+1:

end do:

if k>(i+1) and k<n then

M:=subsop(i+1=M[k],k=M[i+1],M): S:=M[i+1] minus {i}:

for j in S do M:=GantiB(i,j,M); end do:

elif k=n and T<>{} then

M:=subsop(i+1=M[k],k=M[i+1],M): S:=M[i+1] minus {i}:

for j in S do M:=GantiB(i,j,M); end do:

elif k=n and T={} then u:=max(op(M[i+1])): if u>i then

N:=TukarR(i,u,[w,M]); M:=op(2,N):

S:=M[i+1] minus {i}: for j in S do M:=GantiB(i,j,M); end do: else N:=TukarR(i,m,[w,M]); M:=op(2,N): m:=m-1: M:=subsop(i+1=M[v],v=M[i+1],M): v:=v-1: k:=i+1:

(4)

if i in M[i+1] then S:=M[i+1] minus {i}: for j in S do

M:=GantiB(i,j,M); end do:

else T:={}:

for j while T={} and k<n do T:=M[k+1] intersect {i}: k:=k+1:

end do:

if k>(i+1) and k<n then

M:=subsop(i+1=M[k],k=M[i+1],M): S:=M[i+1] minus {i}:

for j in S do M:=GantiB(i,j,M); end do:

elif k=n and T<>{} then

M:=subsop(i+1=M[k],k=M[i+1],M): S:=M[i+1] minus {i}:

for j in S do M:=GantiB(i,j,M); end do:

elif k=n and T={} then u:=max(op(M[i+1])): if u>i then

N:=TukarR(i,u,[w,M]); M:=op(2,N):

S:=M[i+1] minus {i}: for j in S do M:=GantiB(i,j,M); end do: else N:=TukarR(i,m,[w,M]); M:=op(2,N): m:=m-1: M:=subsop(i+1=M[v],v=M[i+1],M): v:=v-1: end if: end if: end if: end if: end if: end if: end do: return([w,M]); end proc:

10. AddMtx menjumlahkan dua matriks.

> AddMtx:=proc(M::list,N::list) local A,B,H::list, m,n::integer:

(5)

A:=op(2,M): B:=op(2,N): m:=op(1,M): n:=nops(B): if m<>op(1,N) or nops(A)<>n then return(false) end if: H:=[seq(AddV(A[i],B[i]),i=1..n)]:

return([m,H]); end proc:

11. DotV menentukan produk titik dua vektor

> DotV:=proc(S::set,T::set)

local C::integer:

C:=nops(S intersect T) mod 2; return(C);

end proc:

12. MultMtx mengalikan matriks kolom m x n dengan matriks

kolom "n x p."

> MultMtx:=proc(M::list,N::list)

local TA,A,B,H::list, S::set, m,n,i,j,k,p::integer: A:=op(2,M): B:=op(2,N):

m:=op(1,M): n:=op(1,N): p:=nops(B): if n<>nops(A) then return(false) end if: TA:=(op(2,TrpsC(M))): H:=[]: for i from 1 to p do S:={}: for j from 1 to m do k:=DotV(TA[j],B[i]): if k=1 then S:={op(S),j-1}: end if: end do: H:=[op(H),S] end do: return([m,H]); end proc:

13. InkodG mengkoding vektor pesan P menjadi vektor katakode C

menggunakan matriks generator umum G berordo k x n.

> InkodG:=proc(P::set,G::list) local A,B,C::list, H::set, k,p::integer: k:=op(1,G): A:=TrpsC([k,[P]]): B:=MultMtx(A,G): C:=TrpsC(B): H:=op(C[2]): return(H); end proc:

14. ParG menentukan vektor paritas X dari vektor pesan P menggunakan matriks

generator bentuk standar " G=[ |B]," dalam hal ini P dan B menjadi input, dan

X adalah output. Vektor C = (P|X) adalah katakode dari pesan P.

> ParG:=proc(P::set,B::list) local S::set, r,i,s::integer: r:= nops(B): S:={}:

(6)

for i from 1 to r do s:=DotV(P,B[i]): if s=1 then S:={op(S),i-1}: end if: end do: return(S); end proc:

15. InkodS mengkoding vektor pesan P menjadi vektor katakode C

menggunakan matriks generator bentuk standar " G=[ |B]," dalam hal ini P

dan B menjadi input InkodS:=proc(P::set,B::list,k::posint)

> local S::set, r,i,s::integer: r:= nops(B): S:=P: for i from 1 to r do s:=DotV(P,B[i]): if s=1 then S:={op(S),k+i-1}: end if: end do: return(S); end proc:

16. HmDist menentukan jarak Hamming dua vektor

> HmDist:=proc(S::set,T::set)

local C::set: C:=AddV(S,T); return(nops(C)); end proc:

17. NonZeroWt menentukan bobot tak-nol dari suatu kode yang

direpresentasikan oleh matriks generator G.

> NonZeroWt:=proc(B::list) local Wt,C,P::set, i,r,m,k::integer: k:=B[1]: m:=2^k-1: Wt:={}: for i from 1 to m do P:=UbahDesKeSet(i); C:=InkodS(P,B[2],k); r:=nops(C): Wt:={op(Wt),r}: end do: return(Wt); end proc:

C. Program Pelacakan Kode Optimal Kuat.

18. KombinM menentukan list semua kombinasi j vektor dari vektor-vektor M

(representasi baris) untuk suatu nilai "j=1,2,...,k."

> KombinM:=proc(j::posint,M::list) local S,C,L,K,N::set, W::list, i,k::integer: K:= M[1]: k:=nops(K):

(7)

L:={seq(i,i=1..k)}: N:=combinat[choose](L,j): W:=[]: for S in N do C:={}: for i in S do C:=AddV(C,K[i]): end do: W:=[op(W),C]: end do: return(W); end proc:

19. AddVekM menambah satu baris vektor V ke matriks M (representasi baris)

di posisi terakhir.

> AddVekM:=proc(V::set,M::list) local S::list, r::integer:

S:=[op(M[1]),V]: r:=max(max(V),M[2]); return([S,r]);

end proc:

> AddVekMX:=proc(H::set,M::list) local S::list, V::set:

S:=M: for V in H do S:=AddVekM(V,S): end do: return(S); end proc:

20. DelVekM menghapus baris ke-i pada matriks M (representasi kolom)

. > DelVekM:=proc(i::posint,A::list)

local M,T,N,B::list, m,n::integer: M:=op(2,A): n:=nops(M): m:=op(1,A): T:=TrpsC(A):

N:=subsop(i=NULL,T[2]): B:=TrpsC([n,N]):

return(B); end proc:

21. ListKombM menentukan list dari semua list KombinM untuk semua

j = 1, 2, 3,. .. , t dengan t = min {k, d - 1}

> ListKombM:=proc(M::list,t::posint) local L,T::list, j::integer:

L:=[]: for j from 1 to t do T:=KombinM(j,M); L:=[op(L),T]: end do: return(L); end proc:

(8)

22. UjiAdd1VekM menguji apakah vektor X bisa ditambahkan ke M

menggunakan output ListKombM.

> UjiAdd1VekM:=proc(d::posint,X::set,L::list) local K,T,H::list, i,j,b,n,h,k::integer:

T:=subsop(1=NULL,L[1]): H:=subsop(1=T,L): h:=nops(H): for i from 1 to h do K:=H[i]: k:=nops(K): b:=d-1-i: for j from 1 to k do n:=HmDist(X,K[j]): if n<b then return(false); end if: end do: end do: return(true); end proc:

23. Lacak1VekM melacak satu vektor baris X dalam yang bisa ditambahkan ke

M berdasarkan teorema Gilbert-Vashamov. Prosedur ini menggunakan

UjiAdd1VekM.

> Lacak1VekM:=proc(d::posint,t::posint,r::posint,L::list) local S,R,X,Y,Z,V,W::set, B::list, i,j,k,v,x::integer, T::symbol: B:=L[1]: V:=B[1]: v:=nops(V): W:={seq(i,i=0..r-1)} minus V: for j from d-2 to t do for i from 0 to v do if (v+j-2*i)>=(d-1) then S:=combinat[choose](V,v-i): R:=combinat[choose](W,j-i): for Y in S do for Z in R do X:={op(Y),op(Z)}: T:=UjiAdd1VekM(d,X,L); if T=true then return(X); end if: end do: end do: end if: end do: end do: return(0); end proc:

>Kolek1VekM menentukan himpunan semua vektor baris X dalam yang bisa ditambahkan ke M berdasarkan teorema Gilbert-Vashamov. Prosedur ini menggunakan UjiAdd1VekM.

(9)

local S,R,C,X,Y,Z,V,W::set, B::list, i,j,k,v,x::integer, T::symbol: B:=L[1]: V:=B[1]: v:=nops(V): C:=[]: W:={seq(i,i=0..r-1)} minus V: for j from d-2 to t do for i from 0 to v do if (v+j-2*i)>=(d-1) then S:=combinat[choose](V,v-i): R:=combinat[choose](W,j-i): for Y in S do for Z in R do X:={op(Y),op(Z)}: T:=UjiAdd1VekM(d,X,L); if T=true then C:=[op(C),X]: end if: end do: end do: end if: end do: end do: return(C); end proc:

24. ReduEki1 membuang anggota output Kolek1VekM dan menyisakan

vektor-vektor yang menghasilkan matriks-matriks tidak saling ekivalen jika ditambahkan

ke M,

>ReduEki1:=proc(H::list,M::list)

local i,h::integer, A,L,G,K,R::list, Q,S::set: h:=nops(H): A:=H[1]: G:=AddVekM(A,M): K:=UbahMtxRC(G): L:=sort(map(S->UbahSetKeDes(S),K[2])): R:=[A]: Q:={L}: for i from 2 to h do A:=H[i]: G:=AddVekM(A,M): K:=UbahMtxRC(G): L:=sort(map(S->UbahSetKeDes(S),K[2])): S:={L} intersect Q: if S={} then Q:={op(Q),L}: R:=[op(R),A]: end if: end do: return(R): end proc:

25. Misalkan himpunan H adalah output Kolek1VekM, setiap pasangan vektor

(X,Y) anggota H akan mehasilkan vektor Z = X + Y. Agar dua vektor X dan Y

(10)

bisa ditambahkan langsung ke matriks M, maka Z diuji dengan prosedur

UjiAdd2VekM berdasarkan output ListKombM.

> UjiAdd2VekM:=proc(d::posint,Z::set,L::list) local H,G::list, i,j,g,b,k,n,t::integer:

if nops(Z)<(d-2) then return(false) end if; H:=L: k:=nops(L[1]): n:=min(d-3,k): for i from 1 to n do G:=H[i]: g:=nops(G): b:=d-2-i: for j from 1 to g do t:=HmDist(Z,G[j]): if t<b then return(false); end if: end do: end do: return(true); end proc:

26. Kolek2VekM menentukan himpunan semua pasang (X,Y) dalam yang bisa

ditambahkan ke M berdasarkan teorema Gilbert-Vashamov. Prosedur ini

menggunakan UjiAdd2VekM

.

> Kolek2VekM:=proc(d::posint,H::list,L::list,c::posint) local X,Y,Z::set, C::list, h,i,j::integer, T::symbol: h:=nops(H): C:=[]:

for i from 1 to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=AddV(X,Y): T:=UjiAdd2VekM(d,Z,L): if T=true then C:=[op(C),{X,Y}]: if nops(C)=c then C:=[op({op(C)})]: return(C); end if: end if: end do: end do: C:=[op({op(C)})]: return(C): end proc:

27. Kolek2VekMDt menentukan himpunan semua pasang (X,Y) menggunakan

data hasil sebelumnya.

> Kolek2VekMDt:=proc(d::posint,H::list,L::list,c::posint,Dat::list) local X,Y,Z::set, h,i,j,k::integer, F,C::list, T::symbol:

C:=Dat[2]: k:=Dat[1]: h:=nops(H):

(11)

for i from k to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=AddV(X,Y): T:=UjiAdd2VekM(d,Z,L): if T=true then C:=[op(C),{X,Y}]: if nops(C)=c then C:=[op({op(C)})]: F:=[i,C]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp2.m"; return(C); end if: end if: end do: end do: F:=[op({op(C)})]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp2.m"; return(F):

end proc:

28. ReduEkiX membuang anggota output Kolek2VekM dan menyisakan

vektor-vektor yang menghasilkan matriks-matriks tidak saling ekivalen jika

ditambahkan ke M,

> ReduEkiX:=proc(H::list,M::list)

local i,h::integer, A,L,G,K,R::list, Q,S::set: h:=nops(H): A:=H[1]: G:=AddVekMX(A,M): K:=UbahMtxRC(G): L:=sort(map(S->UbahSetKeDes(S),K[2])): R:=[A]: Q:={L}: for i from 2 to h do A:=H[i]: G:=AddVekMX(A,M): K:=UbahMtxRC(G): L:=sort(map(S->UbahSetKeDes(S),K[2])): S:={L} intersect Q: if S={} then Q:={op(Q),L}: R:=[op(R),A]: end if: end do: return(R): end proc: ReduEkiXc:=proc(H::list,M::list) local r,k,t::integer, A,L,G,K,R,Q,J::list: r:=M[2]: k:=nops(M[1]): t:=nops(H[1]): G:=map(X->AddVekMX(X,M),H):

(12)

K:=map(X->UbahMtxRC(X),G): J:=map(X->map(S->UbahSetKeDes(S),X[2]),K): L:=map(X->sort(X),J): R:=[op({op(L)})]: Q:=map(X->[k+t,map(n->UbahDesKeSet(n),X)],R): return(Q): end proc:

29. Misalkan himpunan H adalah output Kolek2VekM, setiap pasangan vektor

(X,Y,Z) anggota H akan mehasilkan vektor W = X + Y + Z. Agar dua vektor X, Y

dan Z bisa ditambahkan langsung ke matriks M, maka U diuji dengan prosedur

UjiAdd3VekM berdasarkan output ListKombM.

> UjiAdd3VekM:=proc(d::posint,U::set,L::list) local H,G::list, i,j,g,b,k,n,t::integer:

if nops(U)<(d-3) then return(false) end if; H:=L: k:=nops(L[1]): n:=min(d-4,k): for i from 1 to n do G:=H[i]: g:=nops(G): b:=d-3-i: for j from 1 to g do t:=HmDist(U,G[j]): if t<b then return(false); end if: end do: end do: return(true); end proc:

30. Kolek3VekM menentukan himpunan semua pasang (X,Y,Z) dalam yang

bisa ditambahkan ke M berdasarkan teorema Gilbert-Vashamov. Prosedur ini

menggunakan UjiAdd3VekM.

> Kolek3VekM:=proc(d::posint,H::list,L::list,c::posint) local X,Y,Z,U,V,W,S,R::set, h,i,j::integer, T::symbol, C::list: h:=nops(H): C:=[]:

for i from 1 to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=3 then S:=X intersect Y: V:=Z minus S: U:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,U,L): if T=true then R:=op(S): W:=AddV(U,R): T:=UjiAdd3VekM(d,W,L): if T=true then

(13)

C:=[op(C),{op(V),R}]: if nops(C)=c then C:=[op({op(C)})]: return(C); end if: end if: end if: end if: end do: end do: C:=[op({op(C)})]: return(C): end proc:

31. Kolek3VekMDt menentukan himpunan semua pasang (X,Y,Z)

menggunakan data hasil sebelumnya.

> Kolek3VekMDt:=proc(d::posint,H::list,L::list,c::posint,Dat::list) local X,Y,Z,U,V,W,S,R::set, h,i,j,k::integer, T::symbol, C,F::list: C:=Dat[2]: k:=Dat[1]:

h:=nops(H):

for i from k to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=3 then S:=X intersect Y: V:=Z minus S: U:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,U,L): if T=true then R:=op(S): W:=AddV(U,R): T:=UjiAdd3VekM(d,W,L): if T=true then C:=[op(C),{op(V),R}]: if nops(C)=c then C:=[op({op(C)})]: F:=[i,C]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp3.m"; return(C); end if: end if: end if: end if: end do: end do: F:=[op({op(C)})]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp3.m"; return(F):

(14)

end proc:

Kolek3VekMDtX:=proc(d::posint,H::list,L::list,c::posint,Dat::list) local X,Y,Z,U,V,W,S,R,C,K::set, h,i,j,k::integer, T::symbol, F::list: C:={op(Dat[2])}: k:=Dat[1]:

h:=nops(H):

for i from k to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=3 then K:={Z} intersect C: if K={} then S:=X intersect Y: V:=Z minus S: U:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,U,L): if T=true then R:=op(S): W:=AddV(U,R): T:=UjiAdd3VekM(d,W,L): if T=true then C:=C union {Z}: if nops(C)=c then F:=[i,[op(C)]]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp3.m"; return([op(C)]); end if: end if: end if: end if: end if: end do: end do: F:=[op(C)]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp3.m"; return(F):

end proc:

32. Misalkan himpunan H adalah output Kolek3VekM, setiap 4 vektor (X,Y,Z,W)

anggota H akan mehasilkan vektor U = W + X + Y + Z. Agar dua vektor X, Y,Z

dan W bisa ditambahkan langsung ke matriks M, maka U diuji dengan prosedur

UjiAdd4VekM berdasarkan output ListKombM.

> UjiAdd4VekM:=proc(d::posint,U::set,L::list) local H,G::list, i,j,g,b,k,n,t::integer:

if nops(U)<(d-4) then return(false) end if; H:=L: k:=nops(L[1]):

n:=min(d-5,k): for i from 1 to n do G:=H[i]: g:=nops(G):

(15)

b:=d-4-i: for j from 1 to g do t:=HmDist(U,G[j]): if t<b then return(false); end if: end do: end do: return(true); end proc:

33. Kolek4VekM menentukan himpunan semua pasang (X,Y,Z,W) dalam yang

bisa ditambahkan ke M berdasarkan teorema Gilbert-Vashamov. Prosedur ini

menggunakan UjiAdd4VekM.

> Kolek4VekM:=proc(d::posint,H::list,L::list,c::posint)

local X,Y,Z,U,U1,U2,V,W,S,A::set, h,i,j::integer, T,T1,T2::symbol, C::list: h:=nops(H): C:=[]:

for i from 1 to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=4 then S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then U1:=AddV(op(1,S),A): U2:=AddV(op(2,S),A): T1:=UjiAdd3VekM(d,U1,L): T2:=UjiAdd3VekM(d,U2,L): if T1=true and T2=true then W:=AddV(op(2,S),U1): T:=UjiAdd4VekM(d,W,L): if T=true then C:=[op(C),{op(Z)}]: if nops(C)=c then C:=[op({op(C)})]: return(C): end if: end if: end if: end if: end if: end do: end do: C:=[op({op(C)})]: return(C):

(16)

end proc:

34. Kolek4VekMDt menentukan himpunan semua pasang (X,Y,Z,U)

menggunakan data hasil sebelumnya.

> Kolek4VekMDt:=proc(d::posint,H::list,L::list,c::posint,Dat::list)

local X,Y,Z,U,U1,U2,V,W,S,A::set, h,i,j,k::integer, T,T1,T2::symbol, C,F::list: C:=Dat[2]: k:=Dat[1]:

h:=nops(H):

for i from k to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=4 then S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then U1:=AddV(op(1,S),A): U2:=AddV(op(2,S),A): T1:=UjiAdd3VekM(d,U1,L): T2:=UjiAdd3VekM(d,U2,L): if T1=true and T2=true then W:=AddV(op(2,S),U1): T:=UjiAdd4VekM(d,W,L): if T=true then C:=[op(C),{op(Z)}]: if nops(C)=c then C:=[op({op(C)})]: F:=[i,C]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp4.m"; return(C); end if: end if: end if: end if: end if: end do: end do: F:=[op({op(C)})]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp4.m"; return(F):

end proc:

> Kolek4VekMDtX:=proc(d::posint,H::list,L::list,c::posint,Dat::list)

local X,Y,Z,U,U1,U2,V,W,S,A,C,K::set, h,i,j,k::integer, T,T1,T2::symbol, F::list: C:={op(Dat[2])}: k:=Dat[1]:

h:=nops(H):

for i from k to (h-1) do X:=H[i]:

(17)

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=4 then K:={Z} intersect C: if K={} then S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then U1:=AddV(op(1,S),A): U2:=AddV(op(2,S),A): T1:=UjiAdd3VekM(d,U1,L): T2:=UjiAdd3VekM(d,U2,L): if T1=true and T2=true then W:=AddV(op(2,S),U1): T:=UjiAdd4VekM(d,W,L): if T=true then C:=C union {Z}: if nops(C)=c then F:=[i,[op(C)]]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp4.m"; return([op(C)]); end if: end if: end if: end if: end if: end if: end do: end do: F:=[op(C)]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp4.m"; return(F):

end proc:

35. Misalkan himpunan H adalah output Kolek4VekM, setiap 5 vektor

(X,Y,Z,V,W) anggota H akan mehasilkan vektor U = W+V + X + Y + Z. Agar

dua vektor X, Y,Z,V dan W bisa ditambahkan langsung ke matriks M, maka U

diuji dengan prosedur UjiAdd5VekM berdasarkan output ListKombM.

> UjiAdd5VekM:=proc(d::posint,U::set,L::list) local H,G::list, i,j,g,b,k,n,t::integer:

if nops(U)<(d-5) then return(false) end if; H:=L: k:=nops(L[1]): n:=min(d-6,k): for i from 1 to n do G:=H[i]: g:=nops(G): b:=d-5-i: for j from 1 to g do

(18)

t:=HmDist(U,G[j]): if t<b then return(false); end if: end do: end do: return(true); end proc:

36. Kolek5VekM menentukan himpunan semua pasang (X,Y,Z,V,W) dalam

yang bisa ditambahkan ke M berdasarkan teorema Gilbert-Vashamov. Prosedur

ini menggunakan UjiAdd5VekM.

> Kolek5VekM:=proc(d::posint,H::list,L::list,c::posint)

local X,Y,Z,U,U1,U2,U3,V,W1,W2,W3,R,S,A::set, h,i,j::integer, T,T1,T2,T3::symbol, C::list:

h:=nops(H): C:=[]: for i from 1 to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=5 then S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then U1:=AddV(op(1,S),A): U2:=AddV(op(2,S),A): U3:=AddV(op(3,S),A): T1:=UjiAdd3VekM(d,U1,L): T2:=UjiAdd3VekM(d,U2,L): T3:=UjiAdd3VekM(d,U3,L):

if T1=true and T2=true and T3=true then W1:=AddV(op(2,S),U1): W2:=AddV(op(3,S),U1): W3:=AddV(op(3,S),U2): T1:=UjiAdd4VekM(d,W1,L): T2:=UjiAdd4VekM(d,W2,L): T3:=UjiAdd4VekM(d,W3,L):

if T1=true and T2=true and T3=true then R:=AddV(op(3,S),W1): T:=UjiAdd5VekM(d,R,L): if T=true then C:=[op(C),{op(Z)}]: if nops(C)=c then C:=[op({op(C)})]: return(C): end if: end if:

(19)

end if: end if: end if: end if: end do: end do: C:=[op({op(C)})]: return(C): end proc:

37. Kolek5VekMDt menentukan himpunan semua pasang (X,Y,Z,U,W)

menggunakan data hasil sebelumnya

.

> Kolek5VekMDt:=proc(d::posint,H::list,L::list,c::posint,Dat::list) local X,Y,Z,U,U1,U2,U3,V,W1,W2,W3,R,S,A::set, h,i,j,k::integer, T,T1,T2,T3::symbol, C,F::list:

C:=Dat[2]: k:=Dat[1]: h:=nops(H):

for i from k to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=5 then S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then U1:=AddV(op(1,S),A): U2:=AddV(op(2,S),A): U3:=AddV(op(3,S),A): T1:=UjiAdd3VekM(d,U1,L): T2:=UjiAdd3VekM(d,U2,L): T3:=UjiAdd3VekM(d,U3,L):

if T1=true and T2=true and T3=true then W1:=AddV(op(2,S),U1): W2:=AddV(op(3,S),U1): W3:=AddV(op(3,S),U2): T1:=UjiAdd4VekM(d,W1,L): T2:=UjiAdd4VekM(d,W2,L): T3:=UjiAdd4VekM(d,W3,L):

if T1=true and T2=true and T3=true then R:=AddV(op(3,S),W1): T:=UjiAdd5VekM(d,R,L): if T=true then C:=[op(C),{op(Z)}]: if nops(C)=c then C:=[op({op(C)})]: F:=[i,C]:

(20)

return(C); end if: end if: end if: end if: end if: end if: end do: end do: F:=[op({op(C)})]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp5.m"; return(F):

end proc:

> Kolek5VekMDtX:=proc(d::posint,H::list,L::list,c::posint,Dat::list) local X,Y,Z,U,U1,U2,U3,V,W1,W2,W3,R,S,A,C,K::set, h,i,j,k::integer, T,T1,T2,T3::symbol, F::list:

C:={op(Dat[2])}: k:=Dat[1]: h:=nops(H):

for i from k to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]: Z:=X union Y: if nops(Z)=5 then K:={Z} intersect C: if K={} then S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then U1:=AddV(op(1,S),A): U2:=AddV(op(2,S),A): U3:=AddV(op(3,S),A): T1:=UjiAdd3VekM(d,U1,L): T2:=UjiAdd3VekM(d,U2,L): T3:=UjiAdd3VekM(d,U3,L):

if T1=true and T2=true and T3=true then W1:=AddV(op(2,S),U1): W2:=AddV(op(3,S),U1): W3:=AddV(op(3,S),U2): T1:=UjiAdd4VekM(d,W1,L): T2:=UjiAdd4VekM(d,W2,L): T3:=UjiAdd4VekM(d,W3,L):

if T1=true and T2=true and T3=true then R:=AddV(op(3,S),W1):

T:=UjiAdd5VekM(d,R,L): if T=true then

C:=C union {Z}: if nops(C)=c then

(21)

F:=[i,[op(C)]]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp5.m"; return([op(C)]); end if: end if: end if: end if: end if: end if: end if: end do: end do: F:=[op(C)]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp5.m"; return(F):

end proc:

38. Misalkan himpunan H adalah output Kolek(X-1)VekM, setiap X vektor

anggota H akan mehasilkan jumlah. Agar X vektor ini bisa ditambahkan langsung

ke matriks M, maka diuji dengan prosedur UjiAddXVekM berdasarkan output

ListKombM.

> UjiAddXVekM:=proc(x::posint,d::posint,U::set,L::list) local H,G::list, i,j,g,b,k,n,t::integer:

if nops(U)<(d-x) then return(false) end if; H:=L: k:=nops(L[1]): n:=min(d-x-1,k): for i from 1 to n do G:=H[i]: g:=nops(G): b:=d-x-i: for j from 1 to g do t:=HmDist(U,G[j]): if t<b then return(false); end if: end do: end do: return(true); end proc:

39. KolekXVekM menentukan himpunan semua X vektor yang bisa

ditambahkan ke M berdasarkan teorema Gilbert-Vashamov. Prosedur ini

menggunakan UjiAddXVekM.

> KolekXVekM:=proc(x::posint,d::posint,H::list,L::list,c::posint)

local X,Y,Z,U,V,S,A,B,R,N,K,W,Q::set, h,i,j,k,l::integer, T,T1::symbol, C::list: h:=nops(H): C:=[]:

for i from 1 to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]:

Z:=X union Y: if nops(Z)=x then

(22)

S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then for k from 1 to (x-3) do N:=combinat[choose](S,k); T1:=true:

for R in N while T1=true do B:=A: for K in R do B:=AddV(B,K): end do: T1:=UjiAddXVekM(2+k,d,B,L): end do: if T1=false then break; end if: end do: if T1=true then W:=op(S minus R): Q:=AddV(B,W): T:=UjiAddXVekM(x,d,Q,L): if T=true then C:=[op(C),{op(Z)}]: if nops(C)=c then C:=[op({op(C)})]: return(C): end if: end if: end if: end if: end if: end do: end do: C:=[op({op(C)})]: return(C): end proc:

40. KolekXVekMDt menentukan himpunan semua pasang (X,Y,Z,U,W)

menggunakan data hasil sebelumnya.

> KolekXVekMDt:=proc(x::posint,d::posint,H::list,L::list,c::posint,Dat::list) local X,Y,Z,U,V,S,A,B,R,N,K,W,Q::set, h,i,j,k,l,t::integer, T,T1::symbol, C,F::list: C:=Dat[2]: t:=Dat[1]:

h:=nops(H):

for i from t to (h-1) do X:=H[i]:

for j from (i+1) to h do Y:=H[j]:

(23)

if nops(Z)=x then S:=X intersect Y: V:=Z minus S: A:=AddV(op(1,V),op(2,V)): T:=UjiAdd2VekM(d,A,L): if T=true then for k from 1 to (x-3) do N:=combinat[choose](S,k); T1:=true:

for R in N while T1=true do B:=A: for K in R do B:=AddV(B,K): end do: T1:=UjiAddXVekM(2+k,d,B,L): end do: if T1=false then break; end if: end do: if T1=true then W:=op(S minus R): Q:=AddV(B,W): T:=UjiAddXVekM(x,d,Q,L): if T=true then C:=[op(C),{op(Z)}]: if nops(C)=c then C:=[op({op(C)})]: F:=[i,C]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp6.m"; return(C): end if: end if: end if: end if: end if: end do: end do: F:=[op({op(C)})]:

save F, "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp6.m"; return(F):

end proc:

D. Konstruksi Kode Optimal Kuat.

41. Konstruksi Kode Optimal Kuat [20,2,13], dengan menggunakan satu kali

basis matriks sebagai berikut:

> B:=[2,[{0,1},{0,1},{0,1},{0,1},{0,1},{0,1},{0},{0},{0},{0},{0},{0},{1},{1},{1}, {1},{1},{1}]];

(24)

> M:=UbahMtxCR(B); > r:=M[2]; d:=13: k:=B[1]; > W:=NonZeroWt(B); > Code13218:=B;

> #save Code13218, "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k2r18.m";

42. Konstruksi Kode Optimal Kuat [24,3,13], dengan menggunakan kode

[20, 2,13] sebagai dasar adalah sebagai berikut:

> B:=[2,[{0,1},{0,1},{0,1},{0,1},{0,1},{0,1},{0}, {0},{0},{0},{0},{0},{1},{1},{1},{1},{1},{1}, {},{},{}]]; > M:=UbahMtxCR(B); > r:=M[2]; d:=13: k:=B[1]; > W:=NonZeroWt(B); > t:=min(d-1,k); > L:=ListKombM(M,t): > H:=Kolek1VekM(d,r,r,L): > nops(H); > Q:=ReduEki1(H,M): > nops(Q);

Akhirnya, diperoleh 8 kode Optimal kuat [24,3,13] tidak saling ekivalen.

> T:=map(X->AddVekM(X,M),Q):

> Code13321:=map(X->UbahMtxRC(X),T): > C3PX:=Code13321[3];

> NonZeroWt(C3PX);

> #save Code13321, "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k3r21.m";

43. Konstruksi Kode Optimal Kuat [27,5,13], dengan menggunakan kode

[24, 3, 13] sebagai matriks dasar adalah sebagai berikut:

> read "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k3r21.m"; > C3PX:=Code13321[3]; > B:=[C3PX[1],[op(C3PX[2]),{}]]; > M:=UbahMtxCR(B); > r:=M[2]; d:=13: k:=B[1]; > W:=NonZeroWt(B); > t:=min(d-1,k); > L:=ListKombM(M,t): > H:=Kolek1VekM(d,r,r,L): > nops(H); > G:=[1,[]]: > H2:=Kolek2VekMDt(d,H,L,40000,G): > nops(H2);

> read "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp2.m"; > G:=F: G[1]; nops(G[2]);

> Q:=ReduEkiX(H2,M): > nops(Q);

Akhirnya, paling tidak ada 4 kode Optimal kuat [27,5,13] tidak saling ekivalen.

> T:=map(X->AddVekMX(X,M),Q):

(25)

> C5PX:=Code13522[1]; > NonZeroWt(C5PX);

> #save Code13522, "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k5r22.m";

44. Konstruksi Kode Optimal Kuat [29,6,13], dengan menggunakan kode

[27, 5, 13] sebagai matriks dasar adalah sebagai berikut:

> read "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k5r22.m"; > C5PX:=Code13522[1]; > B:=[C5PX[1],[op(C5PX[2]),{}]]; > M:=UbahMtxCR(B); > r:=M[2]; d:=13: k:=B[1]; > W:=NonZeroWt(B); > t:=min(d-1,k); > L:=ListKombM(M,t): > H:=Kolek1VekM(d,r,r,L): > nops(H);

Akhirnya, paling tidak ada 1 kode optimal kuat [29,6,13] tidak saling ekivalen.

> T:=map(X->AddVekM(X,M),H):

> Code13623:=map(X->UbahMtxRC(X),T): > C6PX:=Code13623[1];

> NonZeroWt(C6PX);

> #save Code13623, "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k6r23.m";

45. Konstruksi Kode Optimal Kuat [32,8,13],

dengan menggunakan kode

[29, 6, 13] sebagai matriks dasar adalah sebagai berikut:

> read "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k6r23.m"; > C6PX:=Code13623[1]: > B1:=[C6PX[1],[op(C6PX[2]),{}]]; > i:=1: > B:=DelVekM(i,B1); > M:=UbahMtxCR(B); > r:=M[2]; d:=13: k:=B[1]; > t:=min(d-1,k); > L:=ListKombM(M,t): > H:=Kolek1VekM(d,d,r,L): > nops(H); > DtR24H:=H:

> #save DtR24H, "D:\\Explor Files\\Coding Theory\\DataOutD11\\DtR24H.m"; > read "D:\\Explor Files\\Coding Theory\\DataOutD11\\DtR24H.m";

> H:=DtR24H: > G:=[1,[]]:

> H2:=Kolek2VekMDt(d,H,L,1000,G): > nops(H2);

> read "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp2.m"; > G:=F: G[1]; nops(G[2]);

> G:=[1,[]]:

> H3:=Kolek3VekMDtX(d,H2,L,1000,G): > nops(H3);

(26)

> G:=F: G[1]; nops(G[2]); > Q:=ReduEkiX(H3,M): > nops(Q);

Akhirnya, paling tidak ada 192 kode optimal kuat [32,8,13] yang tidak saling

ekivalen.

> T:=map(X->AddVekMX(X,M),Q):

> Code13824:=map(X->UbahMtxRC(X),T): > C8PX:=Code13824[1];

> NonZeroWt(C8PX);

> #save Code13824, "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k8r24.m";

46. Dilanjutkan, Mengkonstruksi kode {34, 9, 13] dengan menggunakan kode

[32, 8, 13] sebagai matriks dasar.

> read "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k8r24.m"; > C8PX:=Code13824[1]; > B1:=[C8PX[1],[op(C8PX[2]),{}]]; > NonZeroWt(B1); > i:=1: > B:=DelVekM(i,B1); > M:=UbahMtxCR(B); > r:=M[2]; d:=13: k:=B[1]; > t:=min(d-1,k); > L:=ListKombM(M,t): > H:=Kolek1VekM(d,d,r,L): > nops(H); > G:=[1,[]]: > H2:=Kolek2VekMDt(d,H,L,1000,G): > nops(H2);

> read "D:\\Explor Files\\Coding Theory\\DataOutD13\\DatTemp2.m"; > G:=F: G[1]; nops(G[2]);

Akhirnya, diperoleh 2 kode optimal [34,9,13]

> T:=map(X->AddVekMX(X,M),H2): > Code13925:=map(X->UbahMtxRC(X),T): > C9PX:=Code13925[1];

> NonZeroWt(C9PX);

> #save Code13925, "D:\\Explor Files\\Coding Theory\\DataOutD13\\CdD13k9r25.m";

47. Konstruksi Kode Optimal Kuat [23,2,15]

,

dengan menggunakan satu kali

basis matriks sebagai berikut:

> B:=[2,[{0,1},{0,1},{0,1},{0,1},{0,1},{0,1}, {0,1},{0},{0},{0},{0},{0},{0},{0},{1},{1}, {1}, {1},{1}, {1},{1}]]; > M:=UbahMtxCR(B); > r:=M[2]; d:=15: k:=B[1]; > W:=NonZeroWt(B); > Code15221:=B;

> #save Code15221, "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k2r21.m";

(27)

48. Konstruksi Kode Optimal Kuat [27,3,15],

dengan menggunakan kode

[23, 2, 15] sebagai matriks dasar gagal. Sehingga dikonstruksi matriks B dasar

yang baru sebagai berikut:

> B:=[3,[{0,1},{0,2},{1,2},{0,1},{0,2},{1,2}, {0,1},{0,2},{1,2},{0,1},{0,2},{1,2},{0,1,2}, {0},{1},{2},{0,1,2},{0},{1},{2},{0,1,2}, {0},{1},{2}]]; > M:=UbahMtxCR(B); > r:=M[2]; d:=15: k:=B[1]; > W:=NonZeroWt(B); > Code15324:=B;

> #save Code15324, "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k3r24.m";

49. Konstruksi Kode Optimal Kuat [31,6,15],

dengan menggunakan kode [27, 3, 15] sebagai matriks dasar adalah sebagai berikut:

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k3r24.m"; > C3PX:=Code15324; > B:=[C3PX[1],[op(C3PX[2]),{}]]; > M:=UbahMtxCR(B); > r:=M[2]; d:=15: k:=B[1]; > W:=NonZeroWt(B); > t:=min(d-1,k); > L:=ListKombM(M,t): > G:=[0,[]]: > H:=Kolek1VekMDt(d,r,L,50000,G): > nops(H);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp1.m"; > G:=F: G[1]; nops(G[2]); > H:=F: nops(H); > H:=[op(30000..34992,H)]: > G:=[1,[]]: > H2:=Kolek2VekMDt(d,H,L,200000,G): > nops(H2);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp2.m"; > G:=F: G[1]; nops(G[2]); > Q:=ReduEkiX(H2,M): > nops(Q); > H2:=G[2]: nops(H2); > G:=[1,[]]: > H3:=Kolek3VekMDt(d,H2,L,100,G): > nops(H3);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp3.m"; > G:=F: G[1]; nops(G[2]);

> R:=[op(1..10,H3)]: > Q:=ReduEki1(R,M): > nops(Q);

Akhirnya, diperoleh 1 kode Optimal kuat [30,5,15].

> T:=map(X->AddVekMX(X,M),Q):

> Code15525:=map(X->UbahMtxRC(X),T): > C6P1:=Code15525[1];

(28)

> #save Code15525, "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k5r25.m";

50. Konstruksi Kode Optimal Kuat [31,6,15],

dengan menggunakan kode [30, 5, 15] sebagai matriks dasar adalah sebagai berikut:

> read "d:\\Bapak's Files\\Coding Theory\\DataOutD15\\CdD15k5r25.m"; > C5P1:=Code15525[1]; > B:=[C5P1[1],[op(C5P1[2]),{},{}]]; > NonZeroWt(B); > M:=UbahMtxCR(B); > r:=M[2]; d:=15: k:=B[1]; > t:=min(d-1,k); > L:=ListKombM(M,t): > G:=[0,[]]: > H:=Kolek1VekMDt(d,r,L,10000,G): > nops(H);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp1.m"; > G:=F: G[1]; nops(G[2]);

> H:=F[2]: nops(H); > H:=[op(1..10,H)]:

Diperoleh 9309 kode Optimal optimal [31,6,15]. > T:=map(X->AddVekM(X,M),H):

> Code15625:=map(X->UbahMtxRC(X),T): > C6P1:=Code15625[1];

> NonZeroWt(C6P1);

> #save Code15625, "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k6r25.m";

51. Konstruksi Kode Optimal Kuat [35,8,15]

, dengan menggunakan kode [31, 6, 15] sebagai matriks dasar adalah sebagai berikut:

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k6r25.m"; > C6P1:=Code15625[1]; > i:=1: > B:=DelVekM(i,C6P1): > NonZeroWt(B); > M:=UbahMtxCR(B); > r:=M[2]; d:=15: k:=B[1]; > t:=min(d-1,k); > L:=ListKombM(M,t): > G:=[0,[]]: > H:=Kolek1VekMDt(d,r,L,10000,G): > nops(H);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp1.m"; > G:=F: G[1]; nops(G[2]);

> H:=F: nops(H); > G:=[1,[]]:

> H2:=Kolek2VekMDt(d,H,L,20000,G): > nops(H2);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp2.m"; > G:=F: G[1]; nops(G[2]);

> G:=[1,[]]:

(29)

> nops(H3);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp3.m"; > G:=F: G[1]; nops(G[2]);

> Q:=ReduEkiX(F[2],M): > nops(Q);

Akhirnya, diperoleh paling sedikitr 689 kode Optimal kuat [35,8,15].

> T:=map(X->AddVekMX(X,M),Q):

> Code15827:=map(X->UbahMtxRC(X),T): > C6P1:=Code15827[1];

> NonZeroWt(C6P1);

> #save Code15827, "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k8r27.m";

52. Konstruksi Kode Optimal Kuat [37, 9, 15],

dengan menggunakan kode [35, 8, 15] sebagai matriks dasar adalah sebagai berikut:

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\CdD15k8r27.m"; > C8PX:=Code15827[1]; > B1:=[C8PX[1],[op(C8PX[2]),{}]]; > i:=8: > B:=DelVekM(i,B1): > NonZeroWt(B); > M:=UbahMtxCR(B); > r:=M[2]; d:=15: k:=B[1]; > t:=min(d-1,k); > L:=ListKombM(M,t): > G:=[0,[]]: > H:=Kolek1VekMDt(d,r,L,2500,G): > nops(H);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp1.m"; > G:=F: G[1]; nops(G[2]);

> H:=F[2]: nops(H); > G:=[1,[]]:

> H2:=Kolek2VekMDt(d,H,L,1000,G): > nops(H2);

> read "D:\\Explor Files\\Coding Theory\\DataOutD15\\DatTemp2.m"; > G:=F: G[1]; nops(G[2]); > G:=[1,[]]: > H3:=Kolek3VekMDt(d,H2,L,1,G): > nops(H3); > Q:=ReduEkiX(H2,M): > nops(Q);

Diperoleh paling sedikitr 281 kode Optimal kuat [37,9,15].

> T:=map(X->AddVekMX(X,M),Q):

> Code15928:=map(X->UbahMtxRC(X),T): > C9PX:=Code15928[1];

> NonZeroWt(C9PX);

(30)

Lampiran A. Cuplikan tabel Brouwer yang berkaitan dengan kode untuk d = 13

dan d = 15

n/k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 19 19 12 10 9 8 8 8 7 6 5 4 4 4 3 20 20 13 11 10 9 8 8 8 7 6 5 4 4 4 21 21 14 12 10 10 8 8 8 8 7 6 5 4 4 22 22 14 12 11 10 9 8 8 8 8 7 6 5 4 23 23 15 12 12 11 10 9 8 8 8 8 7 6 5 24 24 16 13 12 12 10 10 8 8 8 8 8 6 6 25 25 16 14 12 12 11 10 9 8 8 8 8 6 6 26 26 17 14 13 12 12 11 10 9 8 8 8 7 6 27 27 18 15 14 13 12 12 10 10 9 8 8 8 7 28 28 18 16 14 14 12 12 11 10 10 8 8 8 8 29 29 19 16 15 14 13 12 12 11 10 9 8 8 8 30 30 20 16 16 15 14 12 12 12 11 10 9 8 8 n/k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 31 31 20 17 16 16 15 13 12 12 12 11 10 9 8 32 32 21 18 16 16 16 14 13 12 12 12 10 10 8-9 33 33 22 18 16 16 16 14 14 12 12 12 11 10 9-10 34 34 22 19 17 16 16 15 14 13 12 12 12 10 10 35 35 23 20 18 16 16 16 15 14 12-13 12 12 11 10 36 36 24 20 18 17 16 16 16 14 13-14 12-13 12 12 11 37 37 24 20 19 18 17 16 16 15 14 13-14 12-13 12 12 38 38 25 21 20 18 18 16 16 16 14 14 13-14 12 12 39 39 26 22 20 19 18 17 16 16 15 14 14 12-13 12 40 40 26 22 20 20 18 18 16 16 16 15 14 13-14 12-13 41 41 27 23 21 20 19 18 17 16 16 16 14-15 14 12-14 42 42 28 24 22 20 20 19 18 17 16 16 15-16 14 13-14 43 43 28 24 22 21 20 20 18 18 16-17 16 16 15 14 44 44 29 24 23 22 21 20 19 18 17-18 16-17 16 16 15

Referensi

Dokumen terkait

Kuitenkin on huomattava, että kansainväliset uskonnonvapauden ja uskontokasva- tuksen suhdetta sivuavat kansainväliset sopimukset ja suositukset toteavat ykskantaan, ettei

Untuk memperolehi keputusan akhir bagi mendapatkan perhubungan diantara ujian Proba JKR dan Ujian Penusukan Piawai, data-data yang telah dianalisis daripada ketiga-tiga tapak

Boedi (2008) mengungkapkan bahwa kecilnya pelaporan intellectual capital yang tidak disajikan secara eksternal akan berdampak kurangnya informasi bagi investor

Dalam bab ini yang membahas mengenai latar belakang masalah pada risiko bank swasta nasional yang diukur dengan beta risiko, rumusan masalah yang membahas mengenai

Ada beberapa pengertian kegiatan reflektif dalam pembelajaran, (1) Kegiatan refleksi pembelajaran adalah sebuah kegiatan yang dilakukan dalam proses belajar mengajar

Kapang Tidak Mampu Menghasilkan Enzim Lipase Menghasilkan Enzim Lipase Keterangan : bio.unsoed.ac.id zona jernih.. Performansi Dage

(1) Pendapat dan pertimbangan masyarakat untuk rencana teknis bangunan gedung tertentu dan/atau kegiatan penyelenggaraan yang menimbulkan dampak penting terhadap

Tujuan dari penelitian ini adalah untuk mengetahui seberapa besar pengaruh Electronic Word of Mouth terhadap Purchase Intention dengan Information