## Kode Linear untuk Deteksi dan Koreksi Kesalahan Penulisan dalam Huruf Hijaiyah

## Muhamad Zaki Riyanto
Program Studi Matematika, Fakultas Sains dan Teknologi, UIN Sunan Kalijaga, Jl. Marsda Adisucipto No. 1 Yogyakarta, Indonesia.
Korespondensi; Muhamad Zaki Riyanto, Email: zaki.riyanto@uin-suka.ac.id

## Abstrak
Huruf hijaiyah memainkan peran yang sangat penting dalam dunia Islam, salah satu alasannya karena Al-Qur’an ditulis dalam huruf Arab yang menggunakan huruf hijaiyah. Perkembangan teknologi memudahkan setiap orang untuk  menulis  dan  menyebarkan  ayat-ayat  Al-Qur’an  dalam  berbagai  media  elektronik.  Pada  beberapa  kasus, dijumpai kesalahan penulisan yang dapat merubah arti dan makna dari suatu ayat. Di dalam ilmu aljabar, dikenal teori pengkodean yang mempelajari bagaimana suatu pesan itu dikodekan, sehingga memiliki kemampuan deteksi dan koreksi kesalahan yang terjadi. Salah satu jenis kode yang sering digunakan adalah kode linear yang dikonstruksi melalui sebuah subruang dari suatu ruang vektor atas lapangan hingga. Kode linear dapat diterapkan untuk deteksi dan  koreksi  kesalahan  penulisan  pesan  dalam  huruf  hijaiyah.  Oleh  karena  itu,  perlu  dikaji  cara  mengkonstruksi korespondensi huruf hijaiyah agar dapat dikodekan menggunakan kode linear, juga perlu diketahui jenis kesalahan seperti  apa  yang  dapat  dideteksi  dan  dikoreksi  menggunakan  kode  linear,  dan  terakhir  adalah  bagaimana  cara mendeteksi dan mengkoreksi kesalahan penulisan dalam huruf hijaiyah menggunakan kode linear. Dalam penelitian ini,  lapangan  hingga  yang  digunakan  adalah  lapangan  biner.  Oleh  karena  itu,  setiap  huruf  hijaiyah  harus dikorespondensikan dengan ekspansi biner sesuai dengan urutan hurufnya dengan panjang 5 bit. Kode linear yang digunakan adalah kode Hamming berorder 3 atas lapangan biner, dengan matriks generator berupa matriks biner berukuran 4x7, dan matriks cek paritas berupa sebuah matriks biner berukuran 3x7. Matriks generator digunakan untuk mengkodekan, sedangkan matriks cek paritas digunakan untuk mendeteksi dan mengkoreksi kesalahan. Jenis kesalahan penulisan yang dapat dideteksi dan dikoreksi adalah dalam setiap blok pesan yang terdiri dari 4 huruf hijaiyah  hanya  boleh  ada  1  huruf  yang  berubah  menjadi  huruf  hijaiyah  yang  lainnya.  Konsekuensi  dari  adanya pengkodean ini adalah bertambahnya panjang setiap blok pesan, dari yang semula memiliki panjang 20 bit, setelah dikodekan menjadi 35 bit, atau terjadi penambahan cek bit sebesar 15 bit.
Kata Kunci kode linear; huruf hijaiyah; lapangan hingga; ruang vektor; teori pengkodean.

## Abstract
Hijaiyah letters play a very important role in the Islamic world, one of the reasons is because the Qur'an is written in Arabic letters using hijaiyah letters. The  development of technology makes it easy for  everyone to write and spread the verses of the Qur'an in various electronic media. In some cases, writing errors are found that can change the meaning of a verse. In algebra, we have the coding theory that studies how a message is coded, so it has the ability to detect and correct errors that occur. One type of code that is often used is linear code which is constructed using a subspace of a vector space over a finite field. Linear code can be applied for the detection and correction of writing errors in hijaiyah letters. It is necessary to study how to construct hijaiyah correspondence so that it can be encoded using linear code, we also need to know what types of errors can be detected and corrected using linear code, and finally how to detect and correct writing errors in hijaiyah letters using linear code. In this research, the binary field is used. Therefore, each hijaiyah letter must be corresponded with a binary expansion according to the order of the letters with a length of 5 bits. The linear code used is the order 3 Hamming code on the binary field, with the generator matrix is a 4x7 binary matrix, and the parity check matrix is a 3x7 binary matrix. The generator matrix is used to encode, while the parity check matrix is used to detect and correct errors. The type of writing error that can be detected and corrected is that in each block of messages consisting of 4 hijaiyah letters there can only be 1 letter that changes to another hijaiyah letter. The consequence of this encoding is that the length of each message block increases, from what was originally 20 bits long, after it has been coded to 35 bits, or an additional check bit by 15 bits occurs.
Keywords linear code; hijaiyah letters; finite field; vector space; coding theory.

## Pendahuluan
Al-Qur’an merupakan pegangan hidup dari setiap muslim untuk mengarungi kehidupan sampai di hari kiamat. Al-Qur’an diturunkan oleh Allah S.W.T. melalui malaikat Jibril kepada Nabi Muhammad s.a.w. untuk  umat  manusia.  Di  dalamnya  terdapat  berbagai  perintah,  larangan,  kisah  dan  hal-hal  lainnya yang  menakjubkan.  Al-Qur’an  senantiasa  dijaga  keasliannya  oleh  Allah  sebagai  salah  satu  bukti kebenaran dan kemukjizatannya. Salah satu cara Allah s.w.t menjaga keaslian Al-Qur’an adalah dengan membuatnya mudah dihafalkan bahkan oleh orang yang bahasa ibunya bukan bahasa arab. Hingga kini telah ada banyak orang yang mampu menghafalkan Al-Qur’an. Allah berfirman dalam Surat Al- Qomar ayat 17:
yang artinya: “ Dan sesungguhnya Kami mudahkan al-Quran untuk pelajaran, maka adalah orang yang mau mengambil pelajaran. ” (Qs. Al-Qomar: 17).
Perkembangan teknologi dapat memudahkan penulisan Al-Qur’an dalam berbagai media cetak dan elektronik. Akan tetapi, tidak ada hal yang sempurna di dunia ini, manusia dapat melakukan kesalahan, baik itu disengaja maupun tidak disengaja. Tak terkecuali dalam penulisan ayat Al-Qur’an. Tak jarang dijumpai  kasus  kesalahan  penulisan  ayat  Al-Qur’an,  seperti  pada  kasus  kesalahan  penulisan  oleh seseorang yang ditayangkan di sebuah televisi swasta nasional. Kasus lain tentang kesalahan penulisan ayat  Al-Qur’an  juga  ditemui  pada  beberapa  buku  Pendidikan  Agama  Islam  (Republika,  29  Oktober 2017).  Salah  satu  cara  untuk  menyelesaikan  tersebut  adalah  melakukan  pengkodean  huruf  hijaiyah yang digunakan dalam penulisan ayat menggunakan teori pengkodean. Teori pengkodean bermula dari penelitian  Shannon  (1948).  Oleh  Shannon  dijelaskan  konsep  awal  tentang  teori  pengkodean  untuk pendeteksian adanya kesalahan dan kemungkinan dalam melakukan koreksinya. Hingga saat ini, teori pengkodean telah berkembang pesat, sehingga memunculkan berbagai jenis kode, salah satunya adalah kode linear (Jurgen Bierbrauer, 2016).
Teknik pengkodean huruf hijaiyah telah dilakukan oleh Yahya Alqahtani dkk (2013), dilanjutkan oleh  Prakash  Kuppuswamy  dan  Yahya  Alqahtani  (2014)  untuk  enkripsi  pesan  rahasia  dalam  huruh hijaiyah. Perkembangan pengkodean huruf hijaiyah terus dilakukan oleh Ameer Kadhim Hadi (2017) untuk pengamanan pesan rahasia. Akan tetapi, dari penelitian-penelitian tersebut belum menyinggung tentang  pengkodean  untuk  kepentingan  deteksi  dan  koreksi  kesalahan  penulisan  teks  menggunakan huruf hijaiyah. Dalam penelitian ini, adanya kesalahan dalam penulisan  dalam huruf hijaiyah  akan dideteksi  dan  dikoreksi  menggunakan  kode  linear,  proses  perhitungannya  dilakukan  pada  suatu subruang dari ruang vektor yang dikonstruksi melalui sebuah matriks tertentu. Oleh karena itu, perlu dikonstruksi suatu korespondensi antara huruf hijaiyah dengan vektor. Dalam penelitian ini akan dikaji korespondensi huruf hijaiyah kode linear untuk pengkodean huruf hijaiyah, jenis kesalahan penulisan dalam  huruf  hijaiyah  yang  dapat  dikoreksi  menggunakan  kode  linear,  serta  cara  mendeteksi  dan mengkoreksi  adanya  kesalahan penulisan  dalam  huruf  hijaiyah  yang  telah  dikodekan  menggunakan kode linear.

## Kode Linear
Definisi 2.1. (Jurgen Bierbrauer, 2016) Diberikan 𝐹 adalah suatu lapangan dan 𝑛 ∈ 𝑁 , dibentuk 𝑉 𝑛 (𝐹) ruang vektor atas 𝐹 . Suatu (n,k)-kode linear 𝐶 atas 𝐹 adalah subruang dari 𝑉 𝑛 (𝐹) yang berdimensi 𝑘 .
Berdasarkan  hasil  penelitian  San  Ling  dan  Caophing  Xing  (2004),  proses  pembentukan  suatu (𝑛, 𝑘) − kode linear 𝐶 atas lapangan 𝐹 dapat ditentukan melalui pemilihan basis untuk 𝐶 yang disusun dalam  sebuah  matriks 𝐺 ,  matriks  tersebut  dinamakan  dengan  matriks  generator.  Diberikan 𝐵 = {𝑣 1 , 𝑣 2 , … 𝑣 𝑘 , } ⊆ 𝑉 𝑛 (𝐹) basis  untuk 𝐶 berdimensi 𝑘 ,  misalkan 𝑣 1 = (𝑎 11 𝑎 12 … 𝑎 1𝑛 ), 𝑣 2 = (𝑎 21 𝑎 22 … 𝑎 2𝑛 ), … , 𝑣 𝑘 = (𝑎 𝑘1 𝑎 𝑘2 … 𝑎 𝑘𝑛 ) . Dibentuk matriks generator dari 𝐶 yaitu
1 11 12 1 2 21 22 2 1 2 n n k k k kn v a a a
v a a a
G
v a a a
       
                  .
Untuk melakukan pengkodean pada teks pesan yang telah dirubah sebagai elemen dari ruang vektor 𝑉 𝑘 ∈ 𝐹 yaitu 𝑀 = (𝑚 1 , 𝑚 2 , … , 𝑚 𝑘 ) ∈ 𝑉 𝑘 (𝐹) , proses pengkodeannya adalah
    11 12 1 21 22 2 1 2 1 2 1 2 , ,..., , ,..., n n k n k k kn a a a a a a MG m m m x x x a a a    
     
    ,
dan  vektor 𝑐 = (𝑥 1 , 𝑥 2 , … , 𝑥 𝑛 ) disebut  dengan  katakode (codeword)  dari 𝑀 setelah  dikodekan menggunakan kode  linear dengan matriks 𝐺 sebagai  matriks generatornya  (Vanstone  dan Oorschot, 1989). Matriks generator disebut dalam bentuk standar apabila 𝐺 = [𝐼 𝑘 𝐴] dengan 𝐼 𝑘 adalah matriks identitas berorde 𝑘 dan 𝐴 adalah suatu matriks berukuran 𝑘 × (𝑛 − 𝑘) .
Definisi 2.2.  (Vanstone dan Oorschot, 1989) Diberikan 𝐹 adalah suatu lapangan dan 𝑥, 𝑦 ∈ 𝑉 𝑛 (𝐹) . Jarak  Hamming  dari 𝑥 dan 𝑦 ,  dinotasikan  dengan 𝑑(𝑥, 𝑦) didefinisikan  sebagai  banyaknya  posisi koordinat yang berbeda dari 𝑥 dan 𝑦 . Diberikan 𝐶 adalah suatu (𝑛, 𝑘) -kode linear atas lapangan 𝐹 . Jarak  Hamming  dari 𝑪 dinotasikan  dengan 𝑑(𝐶) ,  didefinisikan  sebagai 𝑑(𝐶) = 𝑚𝑖𝑛{𝑑(𝑥, 𝑦): 𝑥, 𝑦 ∈ 𝐶, 𝑥 ≠ 𝑦} .
Berkaitan dengan konsep deteksi dan koreksi adanya kesalahan, yang dimaksud dengan error atau kesalahan  adalah  apabila  vektor  yang  dikirimkan  yaitu 𝑥 = (𝑥 1 , 𝑥 2 , … , 𝑥 𝑛 ) mengalami  perubahan menjadi  vektor  lain.  Dengan  demikian,  kesalahan  yang  terjadi  adalah  adanya  beberapa 𝑥 𝑖 yang nilainya berubah.
Teorema 2.3. (Vanstone dan Oorschot, 1989 ) Diberikan 𝐶 adalah suatu (𝑛, 𝑘) -kode linear atas lapangan 𝐹 . Jika 𝐶 memiliki jarak Hamming 𝑑(𝐶) = 𝑑 , maka 𝐶 memiliki kemampuan untuk mendeteksi 1 d  kesalahan, serta mampu mengkoreksi [ 𝑑−1 2 ] kesalahan.
Definisi 2.4. (Vanstone dan Oorschot, 1989) Diberikan 𝐹 adalah lapangan.
(1) Bobot  Hamming  dari 𝑥 ∈ 𝑉 𝑛 (𝐹) dinotasikan  dengan 𝑤(𝑥) ,  didefinisikan  sebagai  banyaknya koordinat tak nol dari 𝑥 .
(2) Diberikan 𝐶 adalah suatu (𝑛, 𝑘) -kode linear atas lapangan 𝐹 . Bobot Hamming dari 𝐶 dinotasikan dengan 𝑤(𝐶) , didefinisikan sebagai 𝑤(𝐶) = 𝑚𝑖𝑛{𝑤(𝑥): 𝑥 ∈ 𝑉 𝑛 (𝐹), 𝑥 ≠ 0} .
Teorema 2.5. (Vanstone dan Oorschot, 1989) Diberikan 𝐶 adalah suatu (𝑛, 𝑘) -kode linear atas lapangan 𝐹 , maka 𝑤(𝐶) = 𝑑(𝐶) .
Definisi  2.6.  (Vanstone  dan  Oorschot,  1989) Diberikan 𝐹 adalah  lapangan  dan  vektor-vektor 𝑥 = (𝑥 1 , 𝑥 2 , … , 𝑥 𝑛 ), 𝑦 = (𝑦 1 , 𝑦 2 , … , 𝑦 𝑛 ) ∈ 𝑉 𝑛 (𝐹) .  Hasil  kali  dalam  (Euclid)  dari 𝑥 dan 𝑦 didefinisikan sebagai 〈𝑥, 𝑦〉 = ∑ 𝑥 𝑖 𝑦 𝑖 𝑛 𝑖=1 . Vektor 𝑥 dan 𝑦 dikatakan tegak lurus (ortogonal) apabila 〈𝑥, 𝑦〉 = 0 . Diberikan 𝐶 adalah  suatu (𝑛, 𝑘) -kode  linear  atas  lapangan 𝐹 .  Komplemen  tegak  lurus  dari 𝐶 dinotasikan dengan 𝐶 ⊥ dan didefinisikan sebagai 𝐶 ⊥ = {𝑥 ∈ 𝑉 𝑛 (𝐹): 〈𝑥, 𝑦〉 = 0, ∀𝑦 ∈ 𝐶} .
Teorema 2.7. (Vanstone dan Oorschot, 1989) Diberikan 𝐶 suatu (𝑛, 𝑘) -kode linear atas lapangan 𝐹 , maka 𝐶 ⊥ suatu (𝑛, 𝑛 − 𝑘) -kode linear atas 𝐹 . Lebih lanjut, jika 𝐺 = [𝐼 𝑘 𝐴] adalah matriks generator untuk 𝐶 , maka 𝐻 = [−𝐴 𝑇 𝐼 𝑛−𝑘 ] adalah matriks generator untuk 𝐶 ⊥ . Selanjutnya, matriks 𝐻 tersebut dinamakan dengan matriks cek paritas untuk 𝐶 . Diberikan 𝐶 adalah (𝑛, 𝑘) -kode linear atas 𝐹 dengan matriks generator 𝐺 = [𝐼 𝑘 𝐴] . Diberikan pesan yang  akan  dikodekan  yaitu 𝑚 = (𝑚 1 , 𝑚 2 , … , 𝑚 𝑘 ) ∈ 𝑉 𝑘 (𝐹) .  Menggunakan  matriks  generator 𝐺 diperoleh pesan yang telah dikodekan berupa katakode 𝑐 = 𝑚𝐺 = 𝑚 = (𝑚 1 𝑚 2 … 𝑚 𝑘 𝑥 1 𝑥 2 … 𝑥 𝑛−𝑘 ) ∈ 𝑉 𝑛 (𝐹) . Penambahan vector (𝑥 1 𝑥 2 … 𝑥 𝑛−𝑘 ) pada 𝑚 disebut dengan cek simbol. Pada kasus lapangan biner, maka penambahan vektor tersebut dinamakan dengan cek bit. Dikarenakan 𝐺 adalah matriks generator untuk 𝐶 , dan 𝐻 adalah matriks generator untuk 𝐶 ⊥ , maka untuk setiap 𝑥 ∈ 𝐶 pasti memenuhi 𝐻𝑥 𝑇 = 0 , dengan 0 yang dimaksud adalah vektor nol dalam bentuk kolom. Dengan demikian, dapat disimpulkan bahwa kata kode 𝑐 tidak terdeteksi error jika dan hanya jika 𝐻𝑐 𝑇 = 0 , dan terdeteksi error jika dan hanya jika 𝐻𝑐 𝑇 ≠ 0 .
0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 T Hx                                                           
Dapat dilihat bahwa 𝐻𝑥 𝑇 ≠ 0 , sehingga 𝑥 ∉ 𝐶 , yaitu terdeteksi adanya kesalahan.
Teorema 2.8. (Vanstone dan Oorschot, 1989) Diberikan 𝐻 adalah matriks cek paritas untuk (n,k)-kode linear 𝐶 atas 𝐹 , maka setiap himpunan yang terdiri dari 𝑠 − 1 kolom dari 𝐻 adalah himpunan bebas linear jika dan hanya jika 𝐶 memiliki jarak Hamming paling sedikit adalah 𝑠 .
Teorema 2.8. di atas dapat digunakan untuk mengkonstruksi sebuah kode yang dapat mengkoreksi 1 kesalahan ( single error correcting code). Caranya adalah dengan mengkonstruksi matriks cek paritas 𝐻 sedemikian hingga tidak ada sebanyak 2 atau lebih kolom-kolomnya yang tidak bebas linear, yaitu ada kolom yang merupakan kombinasi dari kolom-kolom yang lainnya.
Definisi 2.9. (Vanstone dan Oorschot, 1989 ) Suatu kode Hamming berorder 𝑟 atas lapangan 𝐹 dengan |𝐹| = 𝑞 adalah  suatu (𝑛, 𝑘) -kode  linea 𝐶 atas 𝐹 dengan 𝑛 = 𝑞 𝑟 −1 𝑞−1 dan 𝑘 = 𝑛 − 𝑟 .  Matriks  cek paritasnya adalah matriks 𝐻 𝑟 berukuran 𝑟 × 𝑛 sedemikian hingga kolom-kolom dari 𝐻 𝑟 tidak nol dan tidak ada dua kolom yang merupakan hasil kali skalar satu sama lain.
Berdasarkan konstruksi kode Hamming di atas, dapat dilihat dengan jelas bahwa kode Hamming memiliki  jarak  Hamming  3,  sehingga  memiliki  kemampuan  mendeteksi  2  kesalahan,  serta  mampu mengkoreksi 1 kesalahan. Oleh karena itu, kode Hamming adalah sebuah single error correcting code.

## Pengkodean Huruf Hijaiyah
Perkembangan pengkodean huruf hijaiyah kemudian dilakukan oleh Ameer Kadhim Hadi (2017) dalam penelitiannya untuk pengamanan pesan singkat SMS. Dikarenakan dalam al-Qur’an tidak memuat angka dalam  ayatnya,  maka  peneliti  tidak  memasukkan  angka  sebagai  bagian  dari  huruf  hijaiyah  yang digunakan, sehingga diperoleh sebanyak 30 huruf hijaiyah, seperti diberikan dalam gambar di bawah ini.
Gambar 1. Huruf Hijaiyah (30 huruf).
Metode korespondensi yang sederhana dan melibatkan struktur aljabar yang telah dijelaskan dalam konsep  grup  dan  ring,  maka  dapat  digunakan  himpunan  semua  bilangan  bulat  modulo ℤ 30 = {0,1,2, … ,29} dengan korespondensinya adalah huruf “ alif ” dikorespondensikan dengan 0, huruf “ ba ” dikorespondensikan dengan 1, begitu seterusnya sampai dengan huruf “ ya ” yang dikorespondensikan dengan  29.  Himpunan ℤ 30 memiliki  struktur  aljabar  berupa  ring  komutatif  dengan  elemen  satuan, tetapi bukan lapangan, sebab 30 bukan bilangan prima. Oleh karena itu, tidak dapat digunakan untuk mengkonstruksi kode linear yang syarat utamanya adalah penggunaan struktur aljabar berupa lapangan. Oleh karena itu, peneliti mengusulkan penggunakan himpunan ℤ 31 = {0,1,2, … ,30} dengan 31 adalah bilangan prima, hal ini dilakukan untuk mengakomodir syarat sebagai lapangan. Korespondensi yang terbentuk adalah huruf “ alif ” dikorespondensikan dengan 1, huruf “ ba ” dikorespondensikan dengan 2, begitu seterusnya sampai dengan huruf “ ya ” yang dikorespondensikan dengan 30. Misalkan  digunakan  lapangan  hingga ℤ 31 = {0,1,2, … ,30} .  Apabila  digunakan  kode  Hamming dengan order 2 saja, maka diperoleh 𝑛 = 32 dan 𝑘 = 30 , diperoleh matriks generator yang cukup besar, memiliki ukuran 30x32 dengan entri dari himpunan ℤ 31 . Apabila digunakan kode Hamming dengan order 3, maka diperoleh 𝑛 = 993 dan 𝑘 = 990 , sebuah matriks generator yang sangat besar karena  memiliki  ukuran  990x993.  Oleh  karena  itu,  diperlukan  teknik  korespondensi  yang  dapat menghasilkan matriks yang lebih kecil sehingga proses perhitungan pengkodean dapat berjalan lebih efisien.
Teknik korespondensi satu-satu yang digunakan untuk  mengatasi masalah matriks generator yang besar adalah dengan melakukan ekspansi biner  dari semua bilangan yang  termuat  dalam lapangan ℤ 31 ,  yaitu  dengan  cara  menuliskan  masing-masing  bilangan  sebagai  vektor  biner  basis  2.  Sebagai contohnya,  bilangan  10  dapat  dituliskan  sebagai  10  =  8  +  2  atau  10  =  1.8  +  0.4  +  1.2  +  0.1, sehingga bilangan 10 berkorespondensi dengan vektor biner (1010). Bilangan terbesar yang mungkin adalah 30, diperoleh 30 = 1.16 + 1.8 + 1.4 + 1.2 + 0.1, sehingga 30 berkorespondensi dengan vektor biner (11110) yang memiliki panjang 5. Dengan demikian, masing-masing huruf hijaiyah dikodekan menjadi vektor biner dengan panjang 5 atau lebih dikenal dengan 5-bit, seperti diberikan dalam tabel di bawah ini.
Tabel 1. Korespondensi huruf hijaiyah dan vektor biner.
Berdasarkan  korespondensi  yang  telah  diberikan  pada  Tabel  1.  di  atas,  maka  kode  linear  yang digunakan didefinisikan atas lapangan biner ℤ 2 . Setiap huruf hijaiyah dinyatakan sebagai vektor biner 5  bit,  sehingga  himpunan  semua  pesan  awal  yang  belum  dikodekan  adalah 𝑉 5 (ℤ 2 ) = {(𝑥 1 𝑥 2 𝑥 3 𝑥 4 𝑥 5 ): 𝑥 1 , 𝑥 2 , 𝑥 3 , 𝑥 4 , 𝑥 5 ∈ ℤ 2 } .  Apabila  diasumsikan  terjadi  satu  kesalahan,  yaitu  satu  huruf berubah menjadi huruf yang lain, maka artinya terdapat terjadi paling banyak 5 kesalahan. Apabila digunakan  kode  Hamming  atas  lapangan  biner,  maka  harus  dikonstruksi  kode  linear  dengan  jarak Hammingnya adalah 11. Oleh karena itu, matriks generator yang dikonstruksi masih sangat besar.
Untuk dapat menyiasati penggunaan kode Hamming yang memiliki kemampuan koreksi hanya 1 kesalahan saja, untuk dapat digunakan dalam mengkoreksi kelasahan 1 huruf hijaiyah, diasumsikan bahwa dapat terjadi perubahan satu huruf menjadi huruf lain dalam setiap blok yang terdiri dari 4 huruf. Misalkan dalam setiap blok terdiri dari 4 huruf, yaitu:
Huruf ke-1: (𝑎 1 𝑏 1 𝑐 1 𝑑 1 𝑒 1 ) ∈ 𝑉 5 (ℤ 2 ) , Huruf ke-2: (𝑎 2 𝑏 2 𝑐 2 𝑑 2 𝑒 2 ) ∈ 𝑉 5 (ℤ 2 ) Huruf ke-3: (𝑎 3 𝑏 3 𝑐 3 𝑑 3 𝑒 3 ) ∈ 𝑉 5 (ℤ 2 ) , Huruf ke-4: (𝑎 4 𝑏 4 𝑐 4 𝑑 4 𝑒 4 ) ∈ 𝑉 5 (ℤ 2 ) Selanjutnya, dibentuk vektor-vektor sebagai berikut: 𝑎 = (𝑎 1 𝑎 2 𝑎 3 𝑎 4 ) ∈ 𝑉 4 (ℤ 2 ) 𝑏 = (𝑏 1 𝑏 2 𝑏 3 𝑏 4 ) ∈ 𝑉 4 (ℤ 2 ) 𝑐 = (𝑐 1 𝑐 2 𝑐 3 𝑐 4 ) ∈ 𝑉 4 (ℤ 2 ) 𝑑 = (𝑑 1 𝑑 2 𝑑 3 𝑑 4 ) ∈ 𝑉 4 (ℤ 2 ) 𝑒 = (𝑒 1 𝑒 2 𝑒 3 𝑒 4 ) ∈ 𝑉 4 (ℤ 2 )
Dengan cara seperti ini, apabila terjadi satu kesalahan berupa berubahnya satu huruf menjadi huruf lain dalam setiap blok, maka artinya terjadi kesalahan dalam 1 bit pada setiap vektor 𝑎, 𝑏, 𝑐, 𝑑 dan 𝑒 .  Oleh  karena  itu,  dapat  digunakan  kode  Hamming  dengan  order  3  atas  lapangan  biner ℤ 2 . Berdasarkan parameter yang disyaratkan dalam kode Hamming, dengan 𝑞 = |ℤ 2 | = 2 , maka diperoleh 𝑛 = 2 3 −1 2−1 = 7 dan 𝑘 = 7 − 3 = 4 .  Selanjutnya,  akan  dikonstruksi  sebuah  (7,4)-kode  linear  atas ℤ 2 dengan jarak Hamming 3.
Sebagai  contohnya,  dikonstruksi  matriks  cek  paritas  yang  memenuhi  ketentuan  yang  disyaratkan dalam kode Hamming, yaitu tidak memuat kolom nol, dan tidak ada sebuah kolom yang merupakan hasil kali skalar dari kolom yang lain, yaitu
1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 H            .
Apabila  dinyatakan  dalam  bentuk  standar,  diperoleh 𝐻 = [−𝐴 𝑇 𝐼 3 ] .  Selanjutnya,  ditentukan  matriks generator dari 𝐶 yaitu
  4 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 G I A    
          .
Diperoleh himpunan   ' , ' , ' , ' , ' C a aG b bG c cG d dG e eG       dan tabel berikut:
𝑀 𝑀𝐺   1 2 3 4 a a a a a    1 2 3 4 5 6 7 ' a a a a a a a a    1 2 3 4 b b b b b    1 2 3 4 5 6 7 ' b b b b b b b b    1 2 3 4 c c c c c    1 2 3 4 5 6 7 ' c c c c c c c c    1 2 3 4 d d d d d    1 2 3 4 5 6 7 ' d d d d d d d d    1 2 3 4 e e e e e    1 2 3 4 5 6 7 ' e e e e e e e e 
Setelah itu, kata kode yang diperoleh disusun kembali, sehingga diperoleh 4 huruf pertama dan 15 bit tambahannya, yaitu:
Huruf ke-1: (𝑎 1 𝑏 1 𝑐 1 𝑑 1 𝑒 1 ) Huruf ke-2: (𝑎 2 𝑏 2 𝑐 2 𝑑 2 𝑒 2 ) Huruf ke-3: (𝑎 3 𝑏 3 𝑐 3 𝑑 3 𝑒 3 ) Huruf ke-4: (𝑎 4 𝑏 4 𝑐 4 𝑑 4 𝑒 4 ) , Cek bit ke-1: (𝑎 5 𝑏 5 𝑐 5 𝑑 5 𝑒 5 ) Cek bit ke-2: (𝑎 6 𝑏 6 𝑐 6 𝑑 6 𝑒 6 ) ,  Cek bit ke-3: (𝑎 7 𝑏 7 𝑐 7 𝑑 7 𝑒 7 )
Masing-masing vektor di 𝐶 memiliki panjang 7-bit, yaitu terjadi penambahan sebanyak 3 bit. Oleh karena itu, total penambahan bit dalam setiap blok adalah 15 bit, hal ini berarti dari 1 blok pesan yang memiliki panjang 20 bit menjadi 35 bit. Penambahan 15 bit tersebut dinamakan dengan cek bit.
Contoh 1. Misalkan akan dikodekan pesan dalam huruf hijaiyah sebagai berikut:
Berdasarkan Tabel 1. di atas, diperoleh korespondensi antara huruf hijaiyah dan vektor biner sebegai berikut:
Berdasarkan  konstruksi  kode  linearnya,  diperoleh 𝑎 = (1001) , 𝑏 = (1011) , 𝑐 = (0011) , 𝑑 = (0101) dan 𝑒 = (0100) . Selanjutnya, dilakukan pengkodean dengan mengalikannya dengan matriks generator, diperoleh hasil pengkodean sebagai berikut:
𝑀 𝑀𝐺   1001 a    ' 1001001 a    1011 b    ' 1011100 b    0011 c    ' 0011010 c    0101 d    ' 0101100 d    0100 e    ' 0100011 e 
Pesan yang telah dikodekan adalah sebagai berikut:

## Cek bit: 01010 00101 10001
Apabila cek bit dapat ditulis dalam huruf hijaiyah sesuai dengan tabel, diperoleh pesan yang telah dikodekan sebagai berikut:

## Deteksi dan Koreksi Kesalahan
Diberikan 𝐶 adalah (𝑛, 𝑘) -kode linear atas lapangan 𝐹 . Misalkan 𝐻 adalah matriks cek paritas untuk 𝐶 . Diberikan katakode 𝑐 ∈ 𝐶 , apabila terjadi satu kesalahan maka ada satu koordinat yang nilainya berubah, misalkan 𝐸 ∈ 𝑉 𝑛 (𝐹) adalah vektor kesalahan sedemikian hingga pesan yang telah mengalami
1  kesalahan  adalah 𝑥 = 𝑐 + 𝐸 .  Apabila  terjadi  1  kesalahan,  maka 𝐸 adalah  vektor  yang  entrinya adalah 0 kecuali untuk satu koordinat, serta diketahui 𝐻𝑥 𝑇 ≠ 0 , diperoleh
    0 T T T T T T T T Hx H c E H c E Hc HE HE HE          .
Oleh karena itu, 𝐻𝐸 𝑇 muncul sebagai hasil kali skalar dari suatu kolom dalam 𝐻 yang menunjukkan lokasi kesalahannya.  Apabila digunakan lapangan biner, maka koordinat terjadinya kesalahan dapat dilihat dari kolom dari 𝐻 dimana vektor kolom 𝐻𝐸 𝑇 muncul. Untuk mendeteksi adanya kesalahan, misalkan diterima vektor-vektor berikut ini: Huruf ke-1: (𝑎 1 𝑏 1 𝑐 1 𝑑 1 𝑒 1 ) Huruf ke-2: (𝑎 2 𝑏 2 𝑐 2 𝑑 2 𝑒 2 ) Huruf ke-3: (𝑎 3 𝑏 3 𝑐 3 𝑑 3 𝑒 3 ) Huruf ke-4: (𝑎 4 𝑏 4 𝑐 4 𝑑 4 𝑒 4 ) , Cek bit ke-1: (𝑎 5 𝑏 5 𝑐 5 𝑑 5 𝑒 5 ) , Cek bit ke-2: (𝑎 6 𝑏 6 𝑐 6 𝑑 6 𝑒 6 ) , Cek bit ke-3: (𝑎 7 𝑏 7 𝑐 7 𝑑 7 𝑒 7 )
Langkah  selanjutnya,  disusun  vektor-vektor 𝑎 ′ = (𝑎 1 𝑎 2 𝑎 3 𝑎 4 𝑎 5 𝑎 6 𝑎 7 ) , 𝑏 ′ = (𝑏 1 𝑏 2 𝑏 3 𝑏 4 𝑏 5 𝑏 6 𝑏 7 ) , 𝑐 ′ = (𝑐 1 𝑐 2 𝑐 3 𝑐 4 𝑐 5 𝑐 6 𝑐 7 ) , 𝑑 ′ = (𝑑 1 𝑑 2 𝑑 3 𝑑 4 𝑑 5 𝑑 6 𝑑 7 ) dan 𝑒 ′ = (𝑒 1 𝑒 2 𝑒 3 𝑒 4 𝑒 5 𝑒 6 𝑒 7 ) .  Untuk  mendeteksi  adanya kesalahan, digunakan matriks cek paritas H, yaitu dengan menghitung 𝐻(𝑎′) 𝑇 , 𝐻(𝑏′) 𝑇 , 𝐻(𝑐′) 𝑇 , 𝐻(𝑑′) 𝑇 dan 𝐻(𝑒′) 𝑇 . Apabila diperoleh hasil vektor yang tidak nol, maka terdeteksi adanya kesalahan. Untuk proses koreksi yang diakibatkan oleh 1 kesalahan, langkah-langkahnya adalah dengan melihat hasil perhitungan 𝐻(𝑎′) 𝑇 , 𝐻(𝑏′) 𝑇 , 𝐻(𝑐′) 𝑇 , 𝐻(𝑑′) 𝑇 dan 𝐻(𝑒′) 𝑇 . Apabila ditemukan hasil berupa vektor tak nol, maka hasil vektor tersebut dilihat di dalam matriks cek paritas 𝐻 . Posisi koordinat terjadinya kesalahan terletak di posisi kolom dimana vektor tersebut muncul. Cara mengkoreksinya hanya dengan mengganti 0 dengan 1 atau sebaliknya.
Contoh  2.  Diberikan  kode  Hamming  dengan  parameter  dan  kasus  seperti  pada  Contoh  2.  di  atas, misalkan diterima pesan yang telah terjadi 1 kesalahan yaitu:
Langkah pertama adalah merubah setiap huruf menjadi vektor biner sesuai dengan tabel korespondensi, yaitu
11000 11001 01100
11110 01010 00101
10001
Selanjutnya,  dibentuk  vektor-vektor 𝑎 ′ = (1101001) , 𝑏 ′ = (1111100) , 𝑐 ′ = (0011010) , 𝑐 ′ = (0001100) dan 𝑒 ′ = (0100010) .  Untuk melakukan deteksi kesalahan dilakukan proses perhitungan berikut:
    1 0 1 1 1 0 0 0 0 '
1 1 0 1 0 1 0 1101001 1 0
0 1 1 1 0 0 1 1 0 T T H a
               
                     1 0 1 1 1 0 0 0 0
' 1 1 0 1 0 1 0 1111100 1 0
0 1 1 1 0 0 1 1 0 T T H b
                                
    1 0 1 1 1 0 0 0
' 1 1 0 1 0 1 0 0011010 0 0 1 1 1 0 0 1 0 T T H c
                          1 0 1 1 1 0 0 0 0
' 1 1 0 1 0 1 0 0001100 1 0 0 1 1 1 0 0 1 1 0
T T
H d                                      1 0 1 1 1 0 0 0
' 1 1 0 1 0 1 0 0100010 0
0 1 1 1 0 0 1 0 T T H e
                     
Berdasarkan hasil perhitungan di atas, diperoleh bahwa terjadi kesalahan pada vector 𝑎′ , 𝑏′ dan 𝑑′ . Dapat  dilihat  bahwa 𝐻(𝑎′) 𝑇 = 𝐻(𝑏′) 𝑇 = 𝐻(𝑑′) 𝑇 = ( 0 1 1 ) muncul  sebagai  kolom  kedua  dari  matriks cek paritas 𝐻 . Oleh karena itu, kesalahan terjadi pada bit ke-2, sehingga vektor kesalahannya adalah 𝐸 = (0100000) . Proses koreksi dilakukan dengan menghitung: 
     ' 1101001 0100000 1001001 a E           ' 1111100 0100000 1011100 b E           '
0001100 0100000 0101100 d E    
Diperoleh  katakode-katakode  yang  telah  dikoreksi,  yaitu (1001001) , (1011100) , (0011010) , (0101100) dan (0100011) . Selanjutnya, cek bit dihilangkan, diperoleh (1001) , (1011) , (0011) , (0101) dan (0100) . Kemudian disusun dalam tabel berikut:
11000 00011 01100
11110 Diperoleh pesan semula yaitu
Kesimpulan
Berdasarkan perhitungan-perhitungan di atas, maka dapat disimpulkan bahwa kode Hamming berorder 3 atas lapangan ℤ 2 dapat digunakan untuk mendeteksi dan mengkoreksi kesalahan penulisan dalam huruf hijaiyah untuk jenis kesalahan tertentu, yaitu dalam setiap blok pesan yang terdiri dari 4 huruf, terjadi perubahan  sebuah  huruf  menjadi huruf yang  lainnya. Hal  tersebut  terjadi  dikarenakan kode Hamming hanya memiliki kemampuan koreksi 1 kesalahan. Apabila diinginkan dapat mengkoreksi 2 kesalahan,  maka  harus  digunakan  kode  linear  dengan  jarak  Hammingnya  adalah  5,  yang mengakibatkan matriks generatornya menjadi lebih besar, serta penambahan cek bit yang lebih banyak.
Untuk mengkonstruksi korespondensi huruf hijaiyah dilakukan melalui ekspansi biner pada urutan huruf-huruf  hijaiyah  yang  berjumlah  30  huruf,  dimulai  dari  huruf “ alif ” yang  dikorespondensikan dengan bilangan 1 yang memiliki ekspansi biner 5 bit yaitu 00001, sampai dengan huruf ‘ya” yang dikorespondensikan dengan bilangan 30 yang memiliki ekspansi biner 5 bit yaitu 11110. Dari 4 huruf
tersebut  kemudian  disusun  dalam  matriks,  kemudian  dibentuk  5  vektor  dengan  panjang  4-bit  yang diambil pada kolom-kolomnya. Pengkodean yang digunakan berupa kode linear berupa kode Hamming order 3 atas lapangan biner ℤ 2 . Terjadi penambahan panjang pesan sebanyak 15 bit, dari yang semula 20 bit, setelah dikodekan menjadi 35 bit. Berdasarkan penggunaan kode Hamming atas lapangan biner ℤ 2 dengan order 3, maka jenis kesalahan yang dapat dideteksi dan dikoreksi adalah apabila terjadi kesalahan penulisan dalam setiap blok yang  terdiri dari 4 huruf, terjadi kejadian satu huruf menjadi huruf yang lain.
Sebagai  saran,  perlu  dikaji  jenis-jenis  kode  lain  yang  lebih  cocok  digunakan  untuk  pengkodean huruf hijaiyah, sehingga dapat meminimalisir jumlah penambahan cek bit pada pesan semula. Perlu dikaji jenis-jenis kesalahan penulisan apa saja yang sering muncul pada penulisan dalam huruf hijaiyah. Selain  itu,  perlu  dikaji  metode  pengkodean  untuk  jenis  kesalahan  yang  terjadi  karena  adanya penambahan  huruf  baru  dalam  sebuah  pesan,  serta  jenis  kesalahan  yang  terjadi  karena  adanya penghapusan huruf.

## Referensi
[1] Ameer Kadhim Hadi. 2017. Toward Trust and More Characters of Arabic Short Message Service using Encryption . Journal of Engineering and Applied Sciences. Vol.12 No.21. pp.5384-5387.
[2] Anton, Howard. 2014. Elementary Linear Algebra 11 th Edition: Applications Version . Canada. Wiley.
[3] Dummit, David S. dan Foote Richard M. 2004. Abstract Algebra Third Edition . New Jersey: John Wiley and Sons.
[4] Jurgen Bierbrauer. 2016. Introduction to Coding Theory 2 nd Edition . Boca Raton Florida. Chapman and Hall/CRC.
[5] Leon, Steven J. 2002. Linear Algebra with Applications 6 th Edition . New Jersey. Prentice-Hall.
[6] Malik, D. S., Morderson John N. dan Sen, M. K. 1997. Fundamentals of Abstract Algebra . WCB/McGraw-Hill.
[7] Prakash Kuppuswamy dan Yahya Alqahtani. 2014. New Innovation of Arabic Language Encryption Technique Using New Symmetric Key Algorithm . International Journal of Advances in Engineering & Technology. Vol. 7 Issue 1. Mar 2014. pp. 30-37.
[8] Republika. 2017. Kesalahan Penulisan Alquran, Penyeleksian Harus Diperluas . https://www.republika.co.id/berita/dunia- islam/islam-nusantara/17/10/29/oyl5es396-kesalahan-penulisan-alquran-penyeleksian-harus-diperluas  (diakses  tanggal  1 September 2018)
[9] San Ling, Chaoping Xing. 2004. Coding Theory: A First Course . Cambridge UK. Cambridge University Press.
[10] Shannon, Claude. 1948. A Mathematical Theory of Communication . Bell System Technical Journal. 27 (3). Pp.379- 423.
[11] Thomas  W.  Judson.  2017. Abstract  Algebra:  Theory  and  Applications: 2017 Edition .  Texas.  Orthogonal  Publishing
L3C.
[12] Van Lint, J. H. 1999. Introduction to Coding Theory Third Edition . Springer.
[13] Vanstone, Scott A. dan Oorschot, Paul C. van. 1989. An Introduction to Error Correcting Codes with Applications . Kluwer Academic Publishers.
[14] William E. Ryan dan Shu Lin. 2009. Channel Codes: Classical and Modern . Cambridge University Press.
[15] Yahya Alqahtani, Prakash Kuppuswamy dan Sikandhar Shah. 2013. New Approach of Arabic Encryption/Decryption Technique Using Vigenere  Cipher on Mod 39.  International Journal  of Advanced Research in IT  and Engineering. Vol.2 No.12. Dec 2013. pp.1-9.