Doğrusal Kodlar
$\mathbb{F}_{q}$ sonlu cismi üzerindeki $n$ uzunluklu bir doğrusal kod $\mathbb{F}_{q}^{n}$ uzayının bir alt uzayından başka bir şey değildir. Doğrusal kodlar birer vektör uzayı olduğundan, üzerlerindeki cebirsel yapı sayesinde tanımlanmaları ve kullanılmaları doğrusal olmayan kodlara nazaran daha kolay olmaktadır.
Sonlu Cisimler Üzerindeki Vektör Uzayları
Tanım 4.1: Vektör Uzayı
Her $u,v\in V$ ve $\lambda,\mu\in\mathbb{F}_{q}$ için
- $\lambda v\in V$
- $\lambda(u+v)=\lambda u+\lambda v$ ve $(\lambda+\mu)v=\lambda v+\mu v$
- $(\lambda\mu)v=\lambda(\mu v)$
- $1_{\mathbb{F}_{q}}v=v$
olur.
Toplama ve skalerle çarpma işlemleri bileşensel olarak tanımlanır:
- v $+$ w $=(v_{1}+w_{1},\ldots,v_{n}+w_{n})$
- $\lambda$v $=(\lambda v_{1},\ldots,\lambda v_{n})$
Örnek 4.22: Vektör Uzayı Örnekleri
Aşağıdaki kümeler $\mathbb{F}_{q}$ üzerinde birer vektör uzayıdır:
- $C_{1}=\{(\lambda,\ldots,\lambda):\lambda\in\mathbb{F}_{q}\}$
- $C_{2}=\{(0,0,0,0),(1,0,1,0),(0,1,0,1),(1,1,1,1)\}$ ($q=2$)
- $C_{3}=\{(0,0,0),(0,1,2),(0,2,1)\}$ ($q=3$)
Not 4.1
Herhangi bir karışıklığa neden olmadığı sürece $(v_{1},\ldots,v_{n})$ vektörünü $v_{1}\ldots v_{n}$ şeklinde göstereceğiz.
Tanım 4.2: Alt Uzay
Örnek 4.23
- $\{\vek0\}$ her uzayın altuzayıdır.
- $\mathcal{C}_{2}=\{(0,0,0,0),(1,0,1,0),(0,1,0,1),(1,1,1,1)\}$, $\mathbb{F}_{2}^{4}$'ün bir altuzayıdır.
- $\mathcal{C}_{3}=\{(0,0,0),(0,1,2),(0,2,1)\}$, $\mathbb{F}_{3}^{3}$'ün bir altuzayıdır.
Teorem 4.1: Alt Uzay Kriteri
Not 4.2: İkili Kodlar İçin
Tanım 4.3: Doğrusal Kombinasyon ve Bağımsızlık
- $\lambda_{1},\lambda_{2},\ldots,\lambda_{r}\in\mathbb{F}_{q}$ olmak üzere $V$'nin $\lambda_{1}$v$_{1}+\lambda_{2}$v$_{2}+\cdots+\lambda_{r}$v$_{r}$ şeklindeki bir elemanına doğrusal kombinasyon denir.
Her $\lambda_{1},\ldots,\lambda_{r}\in\mathbb{F}_{q}$ için
$$\lambda_{1}\mathbf{v}_{1}+\lambda_{2}\mathbf{v}_{2}+\cdots+\lambda_{r}\mathbf{v}_{r}=0 \Rightarrow \lambda_{1}=\lambda_{2}=\cdots=\lambda_{r}=0$$ise $\{\mathbf{v}_{1},\mathbf{v}_{2},\ldots,\mathbf{v}_{r}\}$ kümesine doğrusal bağımsız denir.
Örnek 4.24
- $\vek0$'ı içeren her küme doğrusal bağımlıdır.
Herhangi bir $q$ için $\{0001,0010,0100\}$ kümesi $\mathbb{F}_{q}^{4}$'ün doğrusal bağımsız bir altkümesidir.
Herhangi bir $q$ için $\{0001,1000,1001\}$ kümesi $\mathbb{F}_{q}^{4}$'ün doğrusal bağımlı bir altkümesidir.
Önerme 4.2
şeklinde tanımlanan küme $V$'nin bir altuzayıdır. Aslında $\left\langle S\right\rangle $, $S$ kümesini içeren $V$'nin en küçük altuzayıdır.
Tanım 4.4
Yukarıdaki önermede görülen $\left\langle S\right\rangle$ altuzayına $V$'nin $S$ tarafıdan üretilen (veya gerilen) altuzayı denir. Eğer $S=\emptyset$ ise $\left\langle S\right\rangle=\{\vek0\}$ olarak tanımlanır.
- $V$'nin bir $C$ altuzayı için $C=\left\langle S\right\rangle$ olacak şekilde $V$'nin bir $S$ altkümesi varsa, yani $C$ bir $S$ kümesi tarafından üretilirse, $S$ kümesine $C$'nin bir üreteç kümesi denir.
Not 4.3
Eğer $S$, $V$'nin bir altuzayı ise bu durumda $\left\langle S\right\rangle =S$ olur.
Örnek 4.25
- $q=2$ olsun. $S=\{0001,0010,0100\}$ ise $\left\langle S\right\rangle=\{0000,0001,0010,0100,0011,0101,0110,0111\}$ olur.
- $q=2$ ve $S=\{0001,1000,1001\}$ ise $\left\langle S\right\rangle=\{0000,0001,1000,1001\}$ olur.
- $q=3$ ve $S=\{0001,1000,1001\}$ ise $\left\langle S\right\rangle=\{0000,0001,0002,2000,1001,1002,2001,2002\}$ olur.
Tanım 4.5: Vektör Uzayının Bazı
Not 4.4
- $V$ bir vektör uzayı ve $\mathscr{B}=\{\mathbf{v}_{1},\ldots,\mathbf{v}_{k}\}$, $V$'nin bir bazı ise $V$'nin her elemanı, $\mathscr{B}$'nin elemanlarının bir tek doğrusal kombinasyonu şeklinde yazılabilir. Yani $\vek v\in V$ ise $\vek v=\lambda_{1}\mathbf{v}_{1}+\cdots+\lambda_{k}\mathbf{v}_{k}$ olacak şekilde tek türlü belirli $\lambda_{1},\ldots,\lambda_{k}\in\mathbb{F}_{q}$ elemanları bulunabilir.
Her vektör uzayının en az bir bazı vardır. Bir vektör uzayının çok sayıda bazı bulunabilir.
Bir vektör uzayının tüm bazları aynı sayıda eleman içerir. Herhangi bir bazın eleman sayısına o vektör uzayının boyutu diyeceğiz ve $k$ boyutlu bir $V$ vektör uzayı için $\text{boy}_{\mathbb{F}_{q}}(V)=k$ şeklinde yazacağız.
Teorem 4.3: Boyut ve Eleman Sayısı
- $V$, $q^{k}$ tane eleman içerir.
- $V$'nin $\dfrac{1}{k!}\prod_{i=0}^{k-1}(q^{k}-q^{i})$ tane farklı bazı vardır.
Tanım 4.6: Nokta Çarpımı ve Diklik
- $\vek v\cdot\vek w=v_{1}w_{1}+\cdots+v_{n}w_{n}$ şeklinde tanımlanan işleme nokta çarpımı (veya Öklid iç çarpımı) adı verilir.
- $\vek v\cdot\vek w=0$ ise $\vek v$ ve $\vek w$ vektörleri için dik vektörler denir ve $\vek v\perp\vek w$ yazılır.
- $S$, $\mathbb{F}_{q}^{n}$'nin boş olmayan bir altkümesi ise $S$'nin her elemanına dik olan $\mathbb{F}_{q}^{n}$'nin elemanlarından oluşan kümeye $S$ kümesinin dik tümleyeni (orthogonal complement) denir.
Not 4.5
Kolayca görülebilir ki boş olmayan her $S\subseteq\mathbb{F}_{q}^{n}$ altkümesi için $S^{\perp}$ kümesi $\mathbb{F}_{q}^{n}$'nin bir altuzayıdır ve $\left\langle S\right\rangle^{\perp}=S^{\perp}$.
Nokta çarpımı $\mathbb{F}_{q}^{n}$ üzerinde bir iç çarpımdır. Yani her ${bf}u{/bf},{bf}v{/bf},{bf}w{/bf}\in\mathbb{F}_{q}^{n}$ ve $\lambda\in\mathbb{F}_{q}$ için aşağıdakiler sağlanır:
- $\vek u\cdot\vek v=\vek v\cdot\vek u$,
- $(\lambda\vek u)\cdot\vek v=\vek u\cdot(\lambda\vek v)=\lambda(\vek u\cdot\vek v)$,
- $(\vek u+\vek v)\cdot\vek w=\vek u\cdot\vek w+\vek v\cdot\vek w$,
- $\vek u\cdot(\vek v+\vek w)=\vek u\cdot\vek v+\vek u\cdot\vek w$,
her $\vek x\in\mathbb{F}_{q }^{n }$ için $\vek x\cdot\vek v=0$ $\iff$ $\vek v=\vek0$.
Örnek 4.26
- $q=2$ ve $n=4$ olsun. $\vek u={1111}$, $\vek v=1110$ ve $\vek w=1001$ ise $\vek u\cdot\vek v=1$, $\vek u\cdot\vek w=0$ ve $\vek v\cdot\vek w=1$ bulunur. Buna göre $\vek u$ ve $\vek w$ diktir.
- $q=2$ ve $S=\{0100,0101\}$ olsun. Buna göre $S^{\perp}=\{0000,0010,1000,1010\}$ olur.
Teorem 4.4: Dik Tümleyenin Boyutu
olur.
Doğrusal Kodlar
Tanım 4.7: Doğrusal Kod
Örnek 4.27: Doğrusal Kod Örnekleri
Aşağıdakiler birer doğrusal koddur:
- $C=\{(\lambda,\ldots,\lambda):\lambda\in\mathbb{F}_{q}\}$ (tekrar kodu)
- $C=\{000,001,010,011\}$ ($q=2$)
- $C=\{0000,1100,2200,0001,0002,1101,1102,2201,2202\}$ ($q=3$)
- $C=\{000,001,010,011,100,101,110,111\}$ ($q=2$)
Tanım 4.8: Dual Kod
Teorem 4.5: Dual Kod Özellikleri
- $|C|=q^{\text{boy}(C)}$, yani $\text{boy}(C)=\log_{q}|C|$.
- $C^{\perp}$ bir doğrusal koddur ve $\text{boy}(C)+\text{boy}(C^{\perp})=n$.
- $(C^{\perp})^{\perp}=C$.
Not 4.6: Gösterim
Tanım 4.9: Kendisine dik kodlar ve öz-dual kodlar
- $C\subseteq C^{\perp}$ ise $C$'ye bir kendisine dik (self-orthogonal) doğrusal kod,
- $C=C^{\perp}$ ise $C$'ye bir öz-dual (self-dual) kod denir.
Teorem 4.6: Öz-Dual Kodların Boyutu
öyle ki her $1\le i \le n$ için $z_i=x_iy_i\in \ff_2$, işlemi tanımlansın. Aşağıdaki teorem ikili sözcükler için $\wedge$ işlemi ile ağırlık fonksiyonu arasındaki ilişkiyi göstermesi bakımından kullanışlı bir sonuçtur.
Teorem 4.7
- $\wt(\vek x + \vek y) = \wt(\vek x) + \wt(\vek y) - 2\wt(\vek x\wedge \vek y)$
- $\wt(\vek x \wedge \vek y) \equiv \vek x \cdot\vek y \pmod{2}$.
Teorem 4.8
- $\mcc$ kendisine dik bir kod ve $\mcc$'nin bir üreteç matrisinin satırlarının ağırlıkları 4 ile bölünebilirse, $\mcc$'nin her kod sözcüğünün ağırlığı 4 ile bölünebilir.
Eğer $\mcc$'nin her kod sözcüğünün ağırlığı 4 ile bölünebilirse, o zaman $\mcc$ kendisine diktir.
Kanıt
(i) $G$, satırlarının ağırlıkları 4 ile bölünebilen $\mcc$'nin bir üreteç matrisi olsun. $\vek x$ ve $\vek y$, $G$'nin iki satırı olsun. O zaman
$$\begin{align} \wt(\vek x + \vek y) & = \wt(\vek x) + \wt(\vek y) - 2\wt(\vek x\wedge\vek y)\\ & \equiv 0 + 0 - 2\wt(\vek x\wedge\vek y) \pmod{4}\\ & \equiv 0 \pmod{4} \end{align}$$ve böylece $\wt(\vek x + \vek y)$, 4 ile bölünebilir. $\mcc$'nin kod sözcükleri $G$'nin satırlarının toplamı şeklinde yazıldığından, tümevarım ile istenilen elde edilir.
(ii) $\vek x,\vek y\in \mcc$ olsun. Kabulden dolayı
$$\begin{align} 2\ (\vek x\cdot\vek y) = 2\wt(\vek x\wedge \vek y) & = 2\wt(\vek x\wedge\vek y) - \wt(\vek x) - \wt(\vek y)\\ & \equiv -\wt(\vek x + \vek y) \equiv 0 \pmod{4} \end{align}$$olacağından, $\vek x\cdot\vek y\equiv 0 \pmod{2}$ bulunur. Böylece $\mcc$ kodu kendisine diktir.
Hamming Ağırlığı
Tanım 4.10: Hamming Ağırlığı
Teorem 4.9: Uzaklık ve Ağırlık İlişkisi
olur.
Tanım 4.11: Kodun Asgari Ağırlığı
Bir $C$ kodu için
$$\text{wt}(C)=\min\{\text{wt}(\mathbf{c}):\mathbf{c}\in C,\ \mathbf{c}\neq\mathbf{0}\}$$sayısına $C$'nin asgari ağırlığı denir.
Teorem 4.10: Doğrusal Kodun Uzaklığı
Kanıt
elde edilir.
Not 4.7: Önemli
Bu teorem, doğrusal bir kodun uzaklığını hesaplarken tüm çiftler yerine sadece sıfırdan farklı kod sözcüklerinin ağırlıklarını kontrol etmenin yeterli olduğunu gösterir. Bu, hesaplama karmaşıklığını önemli ölçüde azaltır.
Üretec ve Eşlik-Denetim Matrisleri
Tanım 4.12: Eşlik-Denetim Matrisi
Satırları $C$'nin bir bazı olan bir matrise $C$ kodunun bir üretec matrisi denir.
- $C^{\perp}$ dual kodunun bir üretec matrisine $C$ kodunun bir eşlik-denetim matrisi denir.
Not 4.8: Üreteç ve Eşlik-Denetim Matrislerinin Boyutları
Tanım 4.13: Standart Form
Bir üretec matrisi $G=(I_{k}|A)$ biçiminde ise, burada $I_{k}$ birim matris ve $A$ herhangi bir $k\times(n-k)$ matris olmak üzere, bu üretec matrisine standart formda denir.
Örnek 4.28
şeklindedir.
Lemma 4.11: Üretec Matrisi ile Diklik
Her $\mathbf{v}\in\mathbb{F}_{q}^{n}$ için $\mathbf{v}\in C^{\perp}$ $\iff$ $\mathbf{v}$, $G$'nin her satırına diktir $\iff$ $\mathbf{v}G^{T}=0$.
- $(n-k)\times n$ boyutlu bir $H$ matrisi için; $H$, $C$'nin bir eşlik-denetim matrisidir ancak ve ancak $H$'nin satırları doğrusal bağımsızdır ve $HG^{T}=0$ dır.
Lemma 4.12: Eşlik-Denetim Matrisi ile Diklik
Her $\mathbf{v}\in\mathbb{F}_{q}^{n}$ için $\mathbf{v}\in C$ $\iff$ $\mathbf{v}$, $H$'nin her satırına diktir $\iff$ $\mathbf{v}H^{T}=0$.
- $k\times n$ boyutlu bir $G$ matrisi için; $G$, $C$'nin bir üretec matrisidir ancak ve ancak $G$'nin satırları doğrusal bağımsızdır ve $GH^{T}=0$ dır.
Teorem 4.13: Uzaklık ve Eşlik-Denetim Matrisi
- $d(C)\geq d$ ancak ve ancak $H$'nin herhangi $d-1$ adet sütunu doğrusal bağımsızdır.
- $d(C)\leq d$ ancak ve ancak $H$'nin $d$ adet doğrusal bağımlı sütunu vardır.
Sonuç 4.14: Uzaklık Karakterizasyonu
- $d(C)=d$
- $H$'nin herhangi $d-1$ adet sütunu doğrusal bağımsız ve $H$'nin $d$ adet doğrusal bağımlı sütunu vardır.
Örnek 4.29: Uzaklık Hesabı
olsun. Herhangi bir sütun sıfır olmadığından $d(C)\geq 2$; herhangi iki sütun doğrusal bağımsız olduğundan $d(C)\geq 3$; ancak 1., 2. ve 3. sütunlar doğrusal bağımlı olduğundan $d(C)\leq 3$. O halde $d(C)=3$.
Teorem 4.15: Standart Form ve Eşlik-Denetim
Örnek 4.30: Eşlik-Denetim Matrisi Hesabı
Tanım 4.14: Eşlik-Denetim Matrisi için Standart Yapı
Bir eşlik-denetim matrisi $[Y|I_{n-k}]$ yapısında ise bu matris için "standart yapıdadır" denir.
Doğrusal Kodların Denkliği
Tanım 4.15: Denk Kodlar
Kod sözcüklerinin koordinatlarının permütasyonu
Sabit bir konumdaki koordinatın sıfırdan farklı bir skaler ile çarpılması
Örnek 4.31: Denklik Örneği
olarak verilir. Sütunları yer değiştirerek (2. ve 3. sütunları 1. ve 2. sıralara getirerek)
$$G'=\begin{pmatrix}1&0&0\\0&1&0\end{pmatrix}$$standart matris elde edilir. $G'$ matrisi $C$'ye denk olan $C'$ kodunun bir üretec matrisidir.
Teorem 4.16
Her doğrusal kod, standart yapıda üretec matrisine sahip bir doğrusal kod ile denktir.
Doğrusal Kodlar ile Kodlama
doğrusal kombinasyonu şeklinde yazılabilir. $G$, satırları $\mathbf{r}_{1},\ldots,\mathbf{r}_{k}$ olan $k\times n$ matris ve $\mathbf{u}=(u_{1},\ldots,u_{k})$ olsun. O zaman
$$\mathbf{v}=\mathbf{u}G=u_{1}\mathbf{r}_{1}+\cdots+u_{k}\mathbf{r}_{k}$$olur. Tersine her $\mathbf{u}=(u_{1},\ldots,u_{k})\in\mathbb{F}_{q}^{k}$ için $\mathbf{v}=\mathbf{u}G\in C$ olur. Bu işleme kodlama denir.
Örnek 4.32: Kodlama Örneği
olmak üzere $C$, üretec matrisi $G$ olan bir ikili $[5,3]$-kodu olsun. Buna göre $\mathbf{u}=101$ mesajı,
$$\mathbf{v}=\mathbf{u}G=(1\;0\;1)\cdot\begin{pmatrix}1&0&1&1&0\\0&1&0&1&1\\0&0&1&0&1\end{pmatrix}=10011$$olarak kodlanır. Dikkat edilirse $5$ bitten yalnız $3$'ü mesajı taşımak için kullanılır. Bu durumda $C$ kodunun bilgi oranı $3/5$ dir.
Not 4.9: Standart Yapıda Kodlama
Standart yapıda üretec matrise sahip kodlar ile kodlama yapmak nispeten daha kolaydır. $G=[I_{k}|X]$ ise $\mathbf{u}G=(\mathbf{u},\mathbf{u}X)$ olur. Yani bir $\mathbf{u}$ mesajı kodlandığında elde edilen kod sözcüğünün ilk $k$ basamağı $\mathbf{u}$'yu verir. Geri kalan $n-k$ basamağa ise kontrol basamakları denir.
Doğrusal Kodların Çözülmesi
Tanım 4.16: Koset
kümesine $C$'nin $\mathbf{u}$'yu içeren koseti denir.
Örnek 4.33: Koset Örneği
Dikkat edilirse $000+C=010+C=101+C=111+C$ ve $001+C=011+C=100+C=110+C=\mathbb{F}_{2}^{3}\setminus C$ olur.
Teorem 4.17: Koset Özellikleri
- $\mathbb{F}_{q}^{n}$'deki her vektör $C$'nin bir koseti tarafından içerilir.
Her $\mathbf{u}\in\mathbb{F}_{q}^{n}$ için $|\mathbf{u}+C|=|C|=q^{k}$.
Her $\mathbf{u},\mathbf{v}\in\mathbb{F}_{q}^{n}$ için $\mathbf{u}\in\mathbf{v}+C$ ise $\mathbf{u}+C=\mathbf{v}+C$.
İki koset ya eşittir ya da ayrıktır.
- $C$'nin toplam $q^{n-k}$ tane koseti vardır.
Her $\mathbf{u},\mathbf{v}\in\mathbb{F}_{q}^{n}$ için $\mathbf{u}-\mathbf{v}\in C$ ancak ve ancak $\mathbf{u}$ ve $\mathbf{v}$ aynı koset içindedir.
Örnek 4.34: Kosetlerin Listesi
olarak bulunur.
Tanım 4.17: Koset Öncüsü ve Koset Ağırlığı
Bir kosetteki ağırlığı en küçük olan elemanların her birine o kosetin öncüsü denir. Bir koset öncüsünün ağırlığına ise o kosetin ağırlığı denir.
Örnek 4.35: Koset Öncüleri
- $\mathbf{w}-\mathbf{e}=\mathbf{v}\in C$
- $\mathbf{w}$ ile $\mathbf{e}$ hata dizgesi aynı koset içinde bulunur
- $d(\mathbf{v},\mathbf{w})=\text{wt}(\mathbf{w}-\mathbf{v})=\text{wt}(\mathbf{e})$
Asgari uzaklık kod çözme kuralına göre $\mathbf{w}$, $\mathbf{v}$ şeklinde çözülürse $\mathbf{e}$, $\mathbf{w}+C$ kosetinin bir öncüsüdür
[index:coset_weight:Koset Ağırlığı]
Sendrom ile Kod Çözme
Tanım 4.18: Sendrom
Teorem 4.18: Sendrom Özellikleri
- $S(\mathbf{u}+\mathbf{v})=S(\mathbf{u})+S(\mathbf{v})$
- $S(\mathbf{u})=0$ ancak ve ancak $\mathbf{u}\in C$
- $S(\mathbf{u})=S(\mathbf{v})$ ancak ve ancak $\mathbf{u}$ ve $\mathbf{v}$, $C$'nin aynı koseti içindedir
Not 4.10: Koset ve Sendrom İlişkisi
Bir koset, aynı sendroma sahip sözcüklerin kümesidir. Bir $C$ $[n,k]$-kodu için kosetler ile $\mathbb{F}_{q}^{n-k}$ arasında birebir bir eşleme vardır.
Tanım 4.19: Sendrom Tablosu
Koset öncüleri ile bunların sendromlarını karşılık getiren bir tabloya sendrom tablosu denir.
Önerme 4.19: Tek Öncü Koşulu
ise $\mathbf{e}$, $C$'nin kendisini içeren kosetinin tek öncü elemanıdır.
Sendrom ile kod çözme işlemi:
Alınan $\mathbf{w}$ sözcüğü için $S(\mathbf{w})$ sendromunu hesaplarız.
Sendrom tablosundan $S(\mathbf{u})=S(\mathbf{w})$ olacak şekildeki $\mathbf{u}$ koset öncüsünü buluruz.
- $\mathbf{w}$ sözcüğünü $\mathbf{v}=\mathbf{w}-\mathbf{u}$ olarak çözeriz.
Örnek 4.36: Sendrom ile Kod Çözme
olan bir $[5,2,3]$-kodu olsun. Buna göre $C$'nin sendrom tablosu aşağıdaki gibidir:
| koset öncüsü | sendrom |
|---|---|
| 00000 | 000 |
| 00001 | 001 |
| 00010 | 010 |
| 00100 | 100 |
| 01000 | 011 |
| 10000 | 110 |
| ? | 101 |
| ? | 111 |
| koset öncüsü | sendrom |
|---|---|
| 00000 | 000 |
| 00001 | 001 |
| 00010 | 010 |
| 00100 | 100 |
| 01000 | 011 |
| 10000 | 110 |
| 11000, 00101 | 101 |
| ? | 111 |
| koset öncüsü | sendrom |
|---|---|
| 00000 | 000 |
| 00001 | 001 |
| 00010 | 010 |
| 00100 | 100 |
| 01000 | 011 |
| 10000 | 110 |
| 11000, 00101 | 101 |
| 10001, 01100 | 111 |
Hamming Kodları
Ağırlığı en fazla 1 olan sözcüklerin, koset öncüleri olarak sendrom tablosunu doldurduğu bir durumu göz önüne alalım. Başka bir değişle ağırlığı en fazla 1 olan sözcüklerin tüm sendromları karşılayabildiği özel bir durumu ele alıyoruz. Kolaylık olması açısından başlangıçta ikili kodları düşünelim. $n$ uzunluklu bir ikili kod için toplam $n+1$ tane ağırlığı $0$ veya $1$ olan sözcük vardır. Tüm sendromların sayısı ise ikinin bir kuvveti şeklinde olacaktır. Buna göre $n+1$ sayısı ikinin bir kuvveti olacak şekilde seçilmelidir.
Örneğin $n+1 = 8$, yani $n=7$ olsun. O zaman eşlik denetim matrisi
$$H= \begin{pmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1\\ 0 & 1 & 1 & 0 & 0 & 1 & 1\\ 1 & 0 & 1 & 0 & 1 & 0 & 1 \end{pmatrix}$$olan ikili $[7,4]$-kodu için sendrom tablosu yandaki gibidir.
Yandaki sendrom tablosundan görülebileceği gibi tüm sendromlar, koset öncüsü tek olan kosetler ile tamamen eşlenmiş durumdadır. Buna göre 1 bitlik hataların tamamı düzeltilebilir. Başka bir deyişle, bir eşlik denetim matrisi $H$ olan ikili doğrusal kodun minimum uzaklığı 3 veya 4'tür. Aslında $H$ matrisinin herhangi iki sütunu doğrusal bağımsız olduğundan $d\geq 3$ olur. Ancak doğrusal bağımlı üç sütununu bulmak mümkün olduğundan $d=3$ olur, yani bu kod bir $[7,4,3]$-kodudur.
Daha genel olarak, her $r\geq 2$ için, bir eşlik denetim matrisi $\ff_2^r$'nin tüm sıfırdan farklı vektörlerinin sütunlara yazılmasıyla elde edilebilen $n=2^{r}-1$ uzunluğunda ikili doğrusal kodun minimum uzaklığı yine 3 olur. Bu kodlara ikili Hamming kodları diyeceğiz ve herhangi birini $\mathcal{H}_{2,r}$ ile göstereceğiz.
| Koset Öncüsü | Sendrom |
|---|---|
| 0000000 | 000 |
| 1000000 | 001 |
| 0100000 | 010 |
| 0010000 | 011 |
| 0001000 | 100 |
| 0000100 | 101 |
| 0000010 | 110 |
| 0000001 | 111 |
Teorem 4.20: Hamming Kodları
Örnek 4.37: $\mathcal{H}_{2,4}$
Bir $\mathcal{H}_{2,4}$ Hamming kodu için eşilk denetim matrisi
$$H= \begin{pmatrix} 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1\\ 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1\\ 0 & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1\\ 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \end{pmatrix}$$olarak düzenlenebilir. Hem bu matrisin hem de bir önceki sayfada verilen $H$ matrisinin sütunları $\ff_2^r$'nin tüm sıfırdan farklı vektörlerinin 1'den $2^r-1$'e kadar olan sayıların ikilik düzendeki gösterimleri olduğunu görebiliriz. Başka bir sıralama seçimek de mümkündür. Örneğin $H$'nin ilk dört sütunu $0001$, $0010$, $0100$ ve $1000$'i verecek şekilde düzenlenebilir. O zaman $H$'nin geri kalan 11 sütunu da sırasıyla $0011$, $0101$, $0110$, $1001$, $1010$, $1100$, $0111$, $1011$, $1101$, $1110$ ve $1111$'i verecek şekilde düzenlenebilir. Fakat nasıl düzenlenirse düzenlensin, elde edilen kod $\mathcal{H}_{2,4}$ ile gösterdiğimiz bir Hamming kodu olacaktır ve yukarıdaki gibi seçilen eşilk denetim matrisine sahip Hamming kodu ile birbirlerine denk olacaklardır.
Not 4.11
Yukarıdaki örnekte de bahsedildiği gibi bir Hamming kodunun eşlik denetim matrisini yazarken seçilen sütun sıralaması kodun yapısını değiştirmese de kod çözme işleminde fark yaratabilir. Bu fark genelde daha hızlı işlem yapmaya olanak tanır.
İkili Hamming Kodları ile Kod Çözme
Örneğin $\vek w = 100010100010101$ sözcüğü için sendrom $S(\vek w) = 1010$ olur. Bu ise $10$ sayısının ikilik düzendeki temsili olduğundan $\vek w$ sözcüğü 10. sütunun verdiği koset öncüsü olan $000000000100000$ ile aynı kosette bulunur. Başka bir deyişle hata 10. koordinattadır. O zaman $\vek w$ sözcüğü $\vek w - 000000000100000 = 100010100{\color{red}1}10101$ sözcüğü şeklinde çözülebilir.
Yukarıdaki gibi özel sütun sıralaması ile oluşturulan eşlik denetim matrisi üzerinden, Hamming kodları için aşağıdaki gibi bir kod çözme algoritması verebiliriz:
Adım 1. Alınan sözcüğün sendromunu hesapla.
Adım 2. Sendromuun ikilik düzende temsil ettiği doğal sayıyı belirle.
Adım 3. İkinci adımda bulunan sayı t ise alınan sözcükten $\vek e_t$ vektörünü çıkararak kod sözcüğünü elde et.
Tanım 4.20: Genel Hamming Kodları
Aşağıdaki teoremi verebiliriz:
Teorem 4.21
Aynı uzunluğa sahip her $q$-lu Hamming kodu birbirine denktir ve her biri birer $[n,n-r,3]$-kodu olur. Burada $n=(q^{r}-1)/(q-1)$ dir.
Kanıt
Not 4.12
Yukarıdaki tanımda tarif edilen eşlik denetim matrisi oluşturma işleminin takibi önemli bir zorluk doğrabileceğinden belli bir prosedür üzerinden sütunların yazılması bu konuda ortaya çıkabilecek aksaklıkların da önlenmesinde faydalı olacaktır. Bunun için bir önerimiz var: $H$ matrisinin sütunlarını yazarken $m$ uzunluklu vektörler kullanıyoruz. Bu vektörlerden soldan sağa ilk sıfırdan farklı kooridnatı 1'e eşit olan tüm sözcükler $\ff_q^r$'nin tüm birbirinden ve sıfırdan farklı 1-boyutlu uzaylarlarını gererler. O nedenle $H$'nin sütunlarına bu vektörleri yazmak yeterlidir. Aşağıdaki örneği inceleyiniz.
Örnek 4.38
matrisi bir üçlü Hamming kodunun eşlik denetim matrisidir.
q-lu Hamming Kodları ile Kod Çözme
Örneğin, Örnek 4.38'daki gibi tanımlanan $H$ matrisine göre $\vek w = 1010000002002$ sözcüğünün sendromu $S(\vek w) = 221$ olur. Bu ise $2\cdot 112$ olduğundan $\vek w$ sözcüğü 7. sütunun verdiği koset öncüsü olan $2\cdot\vek e_7$ ile aynı kosette bulunur. Başka bir deyişle hata 7. koordinattadır ve hata dizgesi $e=2\cdot\vek e_7$ olur. O zaman $\vek w$ sözcüğü $\vek w - 2\cdot\vek e_7 = 101000{\color{red}1}002002$ sözcüğü şeklinde çözülebilir.
Yukarıdaki gibi özel sütun sıralaması ile oluşturulan eşlik denetim matrisi üzerinden, $q$-lu Hamming kodları için aşağıdaki gibi bir kod çözme algoritması verebiliriz:
Adım 1. Alınan sözcüğün sendromunu hesapla.
Adım 2. Birinci adımda bulunan sendromu, sıfırdan farklı ilk koordinatı 1 olan bir $\vek u$ sözcüğünün bir skaler $c$ katı olarak yaz.
Adım 3. İkinci adımda bulunan $\vek u$'nun $H$'nin hangi sütunu olduğunu belirle.
Adım 4. Üçüncü adımda bulunan sütun t ise alınan sözcükten $c\cdot\vek e_t$ vektörünü çıkararak kod sözcüğünü elde et.