Bagian8.3Matriks Pemeriksa Paritas dan Matriks Pembangkit
Kita perlu menemukan cara sistematis untuk membangkitkan kode linear serta metode pendekodean yang cepat. Dengan memeriksa sifat-sifat matriks \(H\) dan memilih \(H\) dengan cermat, kita dapat mengembangkan metode pengodean dan pendekodean pesan yang sangat efisien. Untuk tujuan ini, kita akan memperkenalkan matriks pembangkit standar dan matriks pemeriksa paritas kanonik.
Andaikan \(H\) adalah matriks \(m \times n\) dengan entri dalam \({\mathbb Z}_2\) dan \(n \gt m\text{.}\) Jika \(m\) kolom terakhir matriks tersebut membentuk matriks identitas \(m \times m\text{,}\)\(I_m\text{,}\) maka matriks tersebut merupakan matriks pemeriksa paritas kanonik. Secara lebih khusus, \(H= (A \mid I_m)\text{,}\) dengan \(A\) adalah matriks \(m \times (n-m)\)
Dengan setiap matriks pemeriksa paritas kanonik, kita dapat mengaitkan sebuah \(n \times (n-m)\) matriks pembangkit standar
\begin{equation*}
G = \left( \frac{I_{n-m}}{A} \right)\text{.}
\end{equation*}
Tujuan kita adalah menunjukkan bahwa terdapat \(\mathbf x\) yang memenuhi \(G {\mathbf x} = {\mathbf y}\) jika dan hanya jika \(H{\mathbf y} = {\mathbf 0}\text{.}\) Diberikan blok pesan \({\mathbf x}\) yang hendak dikodekan, matriks \(G\) memungkinkan kita mengodekannya dengan cepat menjadi kata kode linear \({\mathbf y}\text{.}\)
Perhatikan bahwa baris-baris dalam \(H\) merepresentasikan pemeriksaan paritas pada posisi bit tertentu dalam tupel-\(6\text{.}\) Bit-bit \(1\) dalam matriks identitas berfungsi sebagai pemeriksa paritas untuk bit-bit \(1\) pada baris yang sama. Jika \({\mathbf x} = (x_1, x_2, x_3, x_4, x_5, x_6)\text{,}\) maka
Di sini \(x_4\) berfungsi sebagai bit pemeriksa untuk \(x_2\) dan \(x_3\text{;}\)\(x_5\) adalah bit pemeriksa untuk \(x_1\) dan \(x_2\text{;}\) dan \(x_6\) adalah bit pemeriksa untuk \(x_1\) dan \(x_3\text{.}\) Matriks identitas mencegah \(x_4\text{,}\)\(x_5\text{,}\) dan \(x_6\) harus saling memeriksa. Dengan demikian, \(x_1\text{,}\)\(x_2\text{,}\) dan \(x_3\) dapat dipilih sebarang, tetapi \(x_4\text{,}\)\(x_5\text{,}\) dan \(x_6\) harus dipilih untuk menjamin paritas. Ruang nol \(H\) mudah dihitung sebagai
Jika \(H \in {\mathbb M}_{m \times n}({\mathbb Z}_2)\) merupakan matriks pemeriksa paritas kanonik, maka \(\Null(H)\) terdiri atas semua \({\mathbf x} \in {\mathbb Z}_2^n\) yang \(n-m\) bit pertamanya sebarang, sedangkan \(m\) bit terakhirnya ditentukan oleh \(H{\mathbf x} = {\mathbf 0}\text{.}\) Setiap bit di antara \(m\) bit terakhir berfungsi sebagai bit pemeriksa paritas genap bagi sebagian dari \(n-m\) bit pertama. Jadi, \(H\) menghasilkan kode blok \((n, n-m)\text{.}\)
Pembuktian teorema ini kami serahkan sebagai latihan. Berdasarkan teorema tersebut, \(n - m\) bit pertama dalam \({\mathbf x}\) disebut bit informasi, sedangkan \(m\) bit terakhir disebut bit pemeriksa. Dalam Contoh 8.3.1, tiga bit pertama merupakan bit informasi dan tiga bit terakhir merupakan bit pemeriksa.
Misalkan \(G\) adalah matriks pembangkit standar \(n \times k\text{.}\) Maka \(C = \left\{{\mathbf y} : G{\mathbf x} ={\mathbf y}\text{ untuk }{\mathbf x}\in {\mathbb Z}_2^k\right\}\) merupakan kode blok \((n,k)\text{.}\) Secara lebih khusus, \(C\) merupakan kode grup.
Misalkan \(G {\mathbf x}_1 = {\mathbf y}_1\) dan \(G {\mathbf x}_2 ={\mathbf y}_2\) adalah dua kata kode. Maka \({\mathbf y}_1 + {\mathbf y}_2\) berada dalam \(C\) karena
Kita juga harus menunjukkan bahwa dua blok pesan tidak dapat dikodekan menjadi kata kode yang sama. Artinya, kita harus menunjukkan bahwa jika \(G {\mathbf x} = G {\mathbf y}\text{,}\) maka \({\mathbf x} = {\mathbf y}\text{.}\) Misalkan \(G {\mathbf x} = G {\mathbf y}\text{.}\) Maka
\begin{equation*}
G {\mathbf x} - G {\mathbf y} = G( {\mathbf x} - {\mathbf y}) = {\mathbf 0}\text{.}
\end{equation*}
Namun, \(k\) koordinat pertama dalam \(G( {\mathbf x} - {\mathbf y})\) tepat sama dengan \(x_1 -y_1, \ldots,
x_k - y_k\text{,}\) karena koordinat-koordinat tersebut ditentukan oleh matriks identitas \(I_k\text{,}\) yang merupakan bagian dari \(G\text{.}\) Jadi, \(G( {\mathbf x} - {\mathbf y}) = {\mathbf 0}\) tepat ketika \({\mathbf x} = {\mathbf y}\text{.}\)
Misalkan \(H = (A \mid I_m )\) adalah matriks pemeriksa paritas kanonik \(m \times n\) dan \(G = \left( \frac{I_{n-m} }{A} \right) \) adalah matriks pembangkit standar \(n \times (n-m)\) yang terkait dengan \(H\text{.}\) Misalkan \(C\) adalah kode yang dibangkitkan oleh \(G\text{.}\) Maka \({\mathbf y}\) berada dalam \(C\) jika dan hanya jika \(H {\mathbf y} = {\mathbf 0}\text{.}\) Secara khusus, \(C\) merupakan kode linear dengan matriks pemeriksa paritas kanonik \(H\text{.}\)
Sebaliknya, misalkan \({\mathbf y} = (y_1, \ldots,
y_n)^\transpose\) berada dalam ruang nol \(H\text{.}\) Kita perlu mencari suatu \({\mathbf x}\) dalam \({\mathbb Z}_2^{n-m}\) sedemikian sehingga \(G {\mathbf x}^\transpose = {\mathbf y}\text{.}\) Karena \(H {\mathbf y} = {\mathbf 0}\text{,}\) sistem persamaan berikut harus dipenuhi:
Akan sangat membantu apabila kita dapat menghitung jarak minimum suatu kode linear secara langsung dari matriks \(H\)-nya untuk menentukan kemampuan kode tersebut dalam mendeteksi dan mengoreksi kesalahan. Misalkan
adalah tupel-\(n\) dalam \({\mathbb Z}_2^n\) yang berbobot \(1\text{.}\) Untuk matriks biner \(m \times n\)\(H\text{,}\)\(H{\mathbf e}_i\) tepat merupakan kolom ke-\(i\) dari matriks \(H\text{.}\)
Misalkan \({\mathbf e}_i\) adalah tupel-\(n\) biner yang memiliki \(1\) pada koordinat ke-\(i\) dan \(0\) di tempat lainnya, dan misalkan \(H \in {\mathbb M}_{m \times n}({\mathbb Z}_2)\text{.}\) Maka \(H{\mathbf e}_i\) merupakan kolom ke-\(i\) dari matriks \(H\text{.}\)
Misalkan \(H\) adalah matriks biner \(m \times n\text{.}\) Maka ruang nol \(H\) merupakan kode pendeteksi kesalahan tunggal jika dan hanya jika tidak ada kolom \(H\) yang seluruhnya terdiri atas nol.
Misalkan \(\Null(H)\) merupakan kode pendeteksi kesalahan tunggal. Maka jarak minimum kode tersebut harus sekurang-kurangnya \(2\text{.}\) Karena ruang nol tersebut merupakan kode grup, cukup disyaratkan bahwa kode itu tidak memuat kata kode berbobot kurang dari \(2\text{,}\) selain kata kode nol. Artinya, \({\mathbf e}_i\) tidak boleh menjadi kata kode untuk \(i = 1, \ldots, n\text{.}\) Karena \(H{\mathbf e}_i\) merupakan kolom ke-\(i\) dari \(H\text{,}\) satu-satunya cara \({\mathbf e}_i\) dapat berada dalam ruang nol \(H\) adalah jika kolom ke-\(i\) seluruhnya nol, yang mustahil; jadi, kode tersebut setidaknya harus memiliki kemampuan untuk mendeteksi kesalahan tunggal.
Kita bahkan dapat memperoleh hasil yang lebih kuat daripada Teorema 8.3.9. Teorema ini memberikan syarat-syarat pada suatu matriks \(H\) yang menunjukkan kapan bobot minimum kode yang dibentuk oleh ruang nol \(H\) adalah \(2\text{.}\) Kita juga dapat menentukan kapan jarak minimum suatu kode linear adalah \(3\) dengan memeriksa matriks yang bersesuaian.
dan ingin menentukan apakah \(H\) merupakan matriks pemeriksa paritas kanonik bagi suatu kode pengoreksi kesalahan, kita perlu memastikan bahwa \(\Null(H)\) tidak memuat tupel-\(4\) berbobot \(2\text{.}\) Artinya, \((\codeword{1100})\text{,}\)\((\codeword{1010})\text{,}\)\((\codeword{1001})\text{,}\)\((\codeword{0110})\text{,}\)\((\codeword{0101})\text{,}\) dan \((\codeword{0011})\) tidak boleh berada dalam \(\Null(H)\text{.}\) Teorema berikut menyatakan bahwa kita memang dapat menentukan bahwa kode yang dibangkitkan oleh \(H\) mengoreksi kesalahan dengan memeriksa kolom-kolom \(H\text{.}\) Perhatikan dalam contoh ini bahwa \(H\) bukan hanya tidak memiliki kolom nol, melainkan juga tidak memiliki dua kolom yang sama.
Misalkan \(H\) adalah suatu matriks biner. Ruang nol \(H\) merupakan kode pengoreksi kesalahan tunggal jika dan hanya jika \(H\) tidak memiliki kolom nol dan tidak ada dua kolom \(H\) yang identik.
Tupel-\(n\)\({\mathbf e}_{i} +{\mathbf e}_{j}\) memiliki \(1\) pada entri ke-\(i\) dan ke-\(j\text{,}\) serta \(0\) di tempat lainnya, dan \(w( {\mathbf e}_{i} +{\mathbf e}_{j}) = 2\) untuk \(i \neq j\text{.}\) Karena
Sekarang, misalkan kita memiliki matriks pemeriksa paritas kanonik \(H\) dengan tiga baris. Kita dapat menanyakan berapa banyak kolom lagi yang dapat ditambahkan ke matriks tersebut sambil tetap memperoleh ruang nol yang merupakan kode pendeteksi dan pengoreksi kesalahan tunggal. Karena setiap kolom memiliki tiga entri, terdapat \(2^3 = 8\) kemungkinan kolom yang berbeda. Kita tidak dapat menambahkan kolom-kolom
Secara umum, jika \(H\) adalah matriks pemeriksa paritas kanonik \(m \times n\text{,}\) maka terdapat \(n-m\) posisi informasi dalam setiap kata kode. Setiap kolom memiliki \(m\) bit, sehingga terdapat \(2^m\) kemungkinan kolom yang berbeda. Kolom-kolom \({\mathbf 0}, {\mathbf e}_1, \ldots, {\mathbf e}_m\) harus dikecualikan, sehingga tersisa \(2^m - (1 + m)\) kolom bagi informasi jika kita ingin tetap mempertahankan kemampuan bukan hanya untuk mendeteksi, melainkan juga untuk mengoreksi kesalahan tunggal.