Telekomünikasyonda, ismini yaratıcısı Richard Hamming’den alan, doğrusal hata düzelten bir koddur. Hamming Kodu tek bitlik hataları saptayıp düzeltebilir. Veya aynı kod bir veya iki bitlik hataları saptamak üzere kullanılabilir. Buna karşın, basit eşlik kodu iki bitin transpoze olduğu yerde hata bulamaz; bulsa da düzeltemez.
Tarihçe
Hamming 1940’larda Bell Laboratuvarları’nda manyetiksel röle bazlı, zaman döngüsü saniye olan Bell Model V adlı bir bilgisayarda çalışmıştır. Giriş hataları okunabilen punch kartlarına yüklenirdi. Günler boyunca özel kodlar hataları bulur ve ışık yakardı ki operatörler problemi düzeltsin. Mesaiden sonraki periyotlarda ve hafta sonlarında, operatörler olmadığından makine diğer işlemlere geçerdi. Hamming hafta sonları çalışırdı ve kart okuyucunun güvenilmez olduğundan programlarına ilk satırdan başlamak zorunda kalması onu deli ediyordu. Yıllar içinde hata düzeltme problemi üzerinde çalışarak çok güçlü bir dizi algoritma yarattı. 1950 yılında bugünkü adıyla aynı olan ve hala kullanılan Hamming Kodu'nu yayımladı.
Hamming'den Önceki Kodlar
Hamming kodundan önce birkaç basit hata düzeltici kod kullanılmıştır. Ama aynı genel uzayda Hamming'in tekniğinden daha başarılı değillerdi.
Eşlik
Eşlik verilerdeki 1 numaralı bitin tek veya çift olduğunu anlamaya yarayan bir bit ekler. Tek bir bit iletim anında değişirse, eşlik değişir ve hata o noktada bulunabilir. Eşlik değeri 1 olursa verideki 1'lerin sayısı tektir, 0 ise çifttir. Yani veri ve eşlik bitleri bir arada çift sayıda 1’e sahip olmalıdır. Eşlik denetimi çok sağlam bir yöntem değildir. Çünkü değişen bit sayısı çift olduğunda, kontrol biti doğru olacak ve hata görülmeyecektir. Dahası eşlik biti hangi bitin değiştiğini veya hata bulundurduğunu da anlamayacaktır. Veri tamamen çöpe atılmalıdır veya en baştan gönderilmelidir. Gürültülü iletim ortamında veri iletiminin başarılı olması çok uzun zaman alır ya da hiç olmaz. Eşlik denetimi çok iyi olmasa da, sadece bir bitin kaybolduğunda yerine konmasını sağlayabilir. Bunun için de hangi bitin kaybolduğunun bilinmesi gerekir.
Beşin İkisi Kodu
1940’larda Bell beşin ikisi diye bilinen biraz daha karmaşık bir kod kullanmıştır. Bu kod bütün beş bitlik bloklarda iki tane bir olduğunu, blokta iki tane bir yoksa bir hata olduğunu gösterir. Beşin İkisi Kodu halen bir bitlik hataları bulabilir. Ama bir bit 1'den 0'a, başka bir bit 0'dan 1'e dönerse hata bulunamaz.
Tekrarlama
Kullanılan başka bir kod ise her veri bitinin birkaç kere tekrar edilerek doğru olduğunun ve doğru transfer edildiğinin garanti edilmesi üzerine kuruludur. Mesela gönderilen veri 1 olsun. n = 3 tekrar için 111 gönderilir. Bu üç bitten biri farklı ise hata oluşmuş demektir. Kanal yeterince temiz ise, çoğu seferde üçlünün sadece bir biti farklı olacaktır. 001, 010 ve 100 sıfıra; 110, 101 ve 011 bire tekabül edecektir ki bu sayılar orijinal bit için oy gibidir. Bu özelliği taşıyan ve orijinal mesajı hatalarını fark ederek yeniden yazabilen bu kodlara hata düzelten kod denir. Ama bu kodlar her hatayı düzeltemez. Bizim örneğimizde 2 biti değiştirirsek alıcı 001 elde eder. Sistem hatayı görür ama orijinal bitin 0 olduğu sonucuna varır ki bu da yanlıştır. Her biti kopyalama sayımızı artırırsak mesela 4 kez, bu sefer bütün 2 bitlik hataları bulabilir ama düzeltemeyiz. 5 kereye çıkarırsak 2 bitlik hataları düzeltebiliriz ama 3 bitlik hataları düzeltemeyiz. Dahası, tekrar kodu çok verimsizdir. Bizim örneğimizde bir kerede gidecek biti üç kere gönderecek zaman kaybına yol açmıştır. Tekrar sayısı arttıkça verim katlanarak düşecektir.
Hamming Kodları
Bir mesaj içinde daha fazla hata düzelten bit olursa, bu bitler değişik yanlış bitlerin oluşturduğu değişik hataları bulabilecek şekilde ayarlanabilirse, kötü bitler bulunabilir. Yedi bitlik bir mesajda yedi olası hatalı bit vardır. Üç tane kontrol biti hatayı bulmakla kalmaz, yerini de saptayabilir.
Hamming olan kodlama sistemlerinin, beşin ikisi dâhil, üzerinde çalışıp, bu fikirleri genelleştirmiştir. Başlangıç olarak sistemi açıklamak için bir terminoloji yaratmıştır. Bu terminoloji içinde veri bitleri sayısı ve hata düzelten bitlerin bulunduğu blokları da kapsar. Örnek olarak, eşlik içerisinde her veri sözcüğü için tek bit bulundurur. ASCII karakterlerinin 7 bit olduğunu varsayarsak, Hamming (8,7) kodu, toplamda sekiz bit, yedisi veri olmak üzere tanımlamıştır. Tekrarlama örneği bu kurama göre olacaktır. Bilgi oranı, ikinci sayının birinciye bölünmesiyle bulunur.
Hamming iki ve daha fazla bitin değişmesi problemini uzaklık olarak tanımlamıştır. (Halen “Hamming uzaklığı” olarak bilinir). Eşlik, herhangi iki bit değişimi görülmez olunca, uzaklık “2” olur.
Hamming bu uzaklığı ve bilgi oranını olabildiğince artırmaya çalışmıştır. 1940’lar boyunca var olan kodlar üzerinde önemli iletmeler gerçekleştiren birkaç kod yöntemi geliştirmiştir. Bütün sistemlerin anahtar noktası eşlik bitlerinin bütün bitlerin ve verinin üzerinden kontrol ederek geçmesidir.
Örnek Hamming Kodu Kullanımı
0110101 yedi bitlik veri sözcüğümüz olsun. Hamming Kodların nasıl hesaplandığı ve hatayı nasıl buldukları aşağıdaki tabloda gösterilmiştir. Data bilgileri için d, eşlik bitleri için p kullanılmaktadır. İlk olarak veri bitleri uygun yerlere konur ve eşlik bitleri her seferinde çift eşlik kullanılarak hesaplanır.
Hamming Kodunda Kullanılan Eşlik bitlerinin Hesaplanması p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 Veri (eşlik biti olmadan): 0 1 1 0 1 0 1 p1 1 0 1 0 1 1 p2 0 0 1 0 0 1 p3 0 1 1 0 p4 0 1 0 1 Veri (eşlik bitiyle birlikte): 1 0 0 0 1 1 0 0 1 0 1
Yeni veri sözcüğümüz (eşlik biti ile) 10001100101 olmuştur. Son bitin hatalı olduğunu farz edelim ve bu bit 1’den 0 ‘a değişmiş olsun. Yeni veri sözcüğümüz 10001100100'dır ve bu sefer Hamming Kodun nasıl elde edildiğini çift eşlik biti her hata sapladığında, eşlik bitini 1 olarak değiştirip analiz edelim.
Eşlik bitlerinin Denetlenmesi (değişmiş bit koyu renkli) p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 Parity check Parity bit Alınan veri sözcüğü: 1 0 0 0 1 1 0 0 1 0 0 p1 1 0 1 0 1 0 Kalır 1 p2 0 0 1 0 0 0 Kalır 1 p3 0 1 1 0 Geçer 0 p4 0 1 0 0 Kalır 1
Son adımda her eşlik bitinin değerini ölçelim. Değerin sayı karşılığı 11 çıkar. Yani 11. biti hatalıdır ve değiştirilmesi gerekir
p4 p3 p2 p1 İkilik tabanda 1 0 1 1 Onluk tabanda 8 2 1 Σ = 11
11. biti değiştirmek 10001100100'ı tekrar 10001100101 yapar. Hamming Kodlarını çıkartınca geriye orijinal veri sözcüğümüz 0110101 kalır. Bir eşlik biti hatalı olur, diğerleri doğru olursa sorudaki eşlik biti yanlıştır ve kontrol ettiği bitler de hatalı olacaktır.
Son olarak, x ve y konumlarındaki iki bit yer değiştirmiş olsun. x ve y ikilik gösterimlerinin 2k konumlarındaki bitleri aynı ise, o konuma tekabül eden eşlik biti ikisini de kontrol eder ve aynı kalır. x≠y olan bazı eşlik bitleri yüzünden bu konumlara tekabül eden bitler değişir. Sonuçta Hamming Kodu iki bitlik hataları bulur ama bunları bir bitlik hatalardan ayırt edemez.
Hamming(7,4) Kodu
Günümüzde Hamming Kod, spesifik olarak Hamming’in 1950 yılında gösterdiği bir (7,4) kodla ilgilidir. Hamming Kodu her 4 bitlik mesaja 3 kontrol biti ekler. Hamming’in algoritması bir bitlik hatayı bulup düzeltir ve iki bitlik hatayı tespit edebilir. Orta durum nakillerinde, hatalar çok değilse Hamming Kodu efektiftir.
Hamming matrisleri
Hamming kodlar, Hamming Matrisleri adı verilen matris çarpımlarının eşlik biti fikrinin genişlemesiyle çalışır. Hamming (7,4) kodu için birbiriyle alakalı kod yaratıcı matris G ve eşlik denetleyicisi matris H kullanılır.
G matrisinin ilk 4 sırası 4x4 birim matrisi I4, son 3 sıra ise 4 kaynak bitinden 3 eşlik bitine 4x3’lük matrisi gösterir. G’nin sütun vektörleri H’nin çekirdeğinin temelini oluşturur. Çarpım yapılırken birim matris veriyi iletir. Yukarıdaki açıklamadan farklı olarak, veri bitleri ilk 4 konumdayken, eşlik bitleri son 3 konumdadır. Bu matrisler gerçek Hamming matrislerinden farklı olsa da, bunlar Hamming Kodu daha kolay anlaşılır hale getiren gerekli detaylardır.
Benzer olarak H’nin 3 sütunu 3x3 birim matris I3’ü gösterirken, ilk 4 sütun kaynak veri bitleri ve eşlik denetleyicilerinden oluşan 4x3 matrisi verir. 4 blokluk yararlı veri bitini ve birikmiş diğer 3 göz ardı edilmiş biti kullanırız. (4+3=7 (7,4)). Veriyi göndermek için göndermek istediğimiz veri bloğunu vektör olarak düşünürüz. Mesela 1011 için:
Kanal kodlama
Diyelim ki gürültülü komünikasyon kanalında veri iletmek istiyoruz. G ve p’nin çarpımını alır, modül 2 girişi ile X kod sözcüğünü elde ederiz.
Eşlik kontrolü
İletim sırasında hata olmaz ise r kod sözcüğü, x ile tıpatıp aynı olur.
Alıcı H ve r’yi çarparak z sendrom vektörünü elde eder. z vektörü hata varsa nerede olduğunu gösterir. Bu çarpım;
Z vektörü 0 olduğundan, alıcı verinin hatasız olduğunu anlar. Bu sonuç veri vektörü G ile çarpıldığında, alt uzay vektöründe bir değişime uğradığı gözlemine dayanır. Transfer sırasında hiçbir şey olmazsa, r H’nin çekirdeği olarak kalır ve çarpım hep sıfırı verir.
Hata Düzeltilmesi
Diyelim ki bir hata oluştu. Matematiksel olarak; r = x + eiyazılabilir. Mod 2’ye göre, i. konumda 1 olan bir sıfır vektörü, 1’den başlar. Yukarıdaki tanım i. Konumda bir hata olduğunu gösterir.
Şimdi bu vektörü H ile çarparsak :
x iletilen veri olduğundan hatasızdır ki bu, H ve x’in çarpımının sıfır olduğunu gösterir. Sonuç olarak;
Şimdi H ve P standart baz vektörlerinin çarpımı H’nin hata bulunan sütununu bulur. H’yi parçalı biçimde yarattığımızdan, hatalı sütunu 2’lik sayı olarak yazabiliriz. Mesela (1,0,1) H’nin bir sütunudur ve 5. konuma tekabül eder ki hata ordadır ve düzeltilebilir.
Alttaki şekli inceleyelim:
Şimdi ;
H’nin 2. sütununa denk gelir. 2. konumda bir hata bulunmuştur ve düzeltilebilir.
Bu yolu kullanarak tek bitlik hataların düzeltilebileceğini göstermek zor değildir. Bunun dışında, Hamming Kodu tek veya çift bit hataları bulabilir ama hata oluştuğunda H’nin çarpımı neredeyse hiçbir zaman sıfırdan farklı olmaz. Ama Hamming (7,4) bir ve iki bitlik hataları birbirinden ayıramaz.
Ekstra Eşlik Biti
Hamming kodları ekstra eşlik bitiyle kullanılabilir. Ek bir bütün bitlere Hamming Kodu bütün bitleri kontrol ettikten sonra uygulanıp eklenir. Bu geçerli kodların Hamming uzaklığını 3’ten 4’e uzatır. Sonra bütün 1,2,3 bitlik hatalar bulunabilir. Artı 2 bitlik hatalar 1 ve 3 bitlik hatalardan ayırt edilebilir. 1 bitlik hatalar düzeltilebilir.
Eşlik hatası gözlenmez ama Hamming Kodu bir hata bulur ise, bunun 2 bitlik bir hata olduğu farz edilir fakat düzeltilemez.
Kaynaklar ve Dış bağlantılar
en:Hamming code
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Telekomunikasyonda ismini yaraticisi Richard Hamming den alan dogrusal hata duzelten bir koddur Hamming Kodu tek bitlik hatalari saptayip duzeltebilir Veya ayni kod bir veya iki bitlik hatalari saptamak uzere kullanilabilir Buna karsin basit eslik kodu iki bitin transpoze oldugu yerde hata bulamaz bulsa da duzeltemez TarihceHamming 1940 larda Bell Laboratuvarlari nda manyetiksel role bazli zaman dongusu saniye olan Bell Model V adli bir bilgisayarda calismistir Giris hatalari okunabilen punch kartlarina yuklenirdi Gunler boyunca ozel kodlar hatalari bulur ve isik yakardi ki operatorler problemi duzeltsin Mesaiden sonraki periyotlarda ve hafta sonlarinda operatorler olmadigindan makine diger islemlere gecerdi Hamming hafta sonlari calisirdi ve kart okuyucunun guvenilmez oldugundan programlarina ilk satirdan baslamak zorunda kalmasi onu deli ediyordu Yillar icinde hata duzeltme problemi uzerinde calisarak cok guclu bir dizi algoritma yaratti 1950 yilinda bugunku adiyla ayni olan ve hala kullanilan Hamming Kodu nu yayimladi Hamming den Onceki KodlarHamming kodundan once birkac basit hata duzeltici kod kullanilmistir Ama ayni genel uzayda Hamming in tekniginden daha basarili degillerdi Eslik Eslik verilerdeki 1 numarali bitin tek veya cift oldugunu anlamaya yarayan bir bit ekler Tek bir bit iletim aninda degisirse eslik degisir ve hata o noktada bulunabilir Eslik degeri 1 olursa verideki 1 lerin sayisi tektir 0 ise cifttir Yani veri ve eslik bitleri bir arada cift sayida 1 e sahip olmalidir Eslik denetimi cok saglam bir yontem degildir Cunku degisen bit sayisi cift oldugunda kontrol biti dogru olacak ve hata gorulmeyecektir Dahasi eslik biti hangi bitin degistigini veya hata bulundurdugunu da anlamayacaktir Veri tamamen cope atilmalidir veya en bastan gonderilmelidir Gurultulu iletim ortaminda veri iletiminin basarili olmasi cok uzun zaman alir ya da hic olmaz Eslik denetimi cok iyi olmasa da sadece bir bitin kayboldugunda yerine konmasini saglayabilir Bunun icin de hangi bitin kayboldugunun bilinmesi gerekir Besin Ikisi Kodu 1940 larda Bell besin ikisi diye bilinen biraz daha karmasik bir kod kullanmistir Bu kod butun bes bitlik bloklarda iki tane bir oldugunu blokta iki tane bir yoksa bir hata oldugunu gosterir Besin Ikisi Kodu halen bir bitlik hatalari bulabilir Ama bir bit 1 den 0 a baska bir bit 0 dan 1 e donerse hata bulunamaz Tekrarlama Kullanilan baska bir kod ise her veri bitinin birkac kere tekrar edilerek dogru oldugunun ve dogru transfer edildiginin garanti edilmesi uzerine kuruludur Mesela gonderilen veri 1 olsun n 3 tekrar icin 111 gonderilir Bu uc bitten biri farkli ise hata olusmus demektir Kanal yeterince temiz ise cogu seferde uclunun sadece bir biti farkli olacaktir 001 010 ve 100 sifira 110 101 ve 011 bire tekabul edecektir ki bu sayilar orijinal bit icin oy gibidir Bu ozelligi tasiyan ve orijinal mesaji hatalarini fark ederek yeniden yazabilen bu kodlara hata duzelten kod denir Ama bu kodlar her hatayi duzeltemez Bizim ornegimizde 2 biti degistirirsek alici 001 elde eder Sistem hatayi gorur ama orijinal bitin 0 oldugu sonucuna varir ki bu da yanlistir Her biti kopyalama sayimizi artirirsak mesela 4 kez bu sefer butun 2 bitlik hatalari bulabilir ama duzeltemeyiz 5 kereye cikarirsak 2 bitlik hatalari duzeltebiliriz ama 3 bitlik hatalari duzeltemeyiz Dahasi tekrar kodu cok verimsizdir Bizim ornegimizde bir kerede gidecek biti uc kere gonderecek zaman kaybina yol acmistir Tekrar sayisi arttikca verim katlanarak dusecektir Hamming KodlariHx Hei 0 Hei Hei displaystyle Hx He i 0 He i He i Bir mesaj icinde daha fazla hata duzelten bit olursa bu bitler degisik yanlis bitlerin olusturdugu degisik hatalari bulabilecek sekilde ayarlanabilirse kotu bitler bulunabilir Yedi bitlik bir mesajda yedi olasi hatali bit vardir Uc tane kontrol biti hatayi bulmakla kalmaz yerini de saptayabilir Hamming olan kodlama sistemlerinin besin ikisi dahil uzerinde calisip bu fikirleri genellestirmistir Baslangic olarak sistemi aciklamak icin bir terminoloji yaratmistir Bu terminoloji icinde veri bitleri sayisi ve hata duzelten bitlerin bulundugu bloklari da kapsar Ornek olarak eslik icerisinde her veri sozcugu icin tek bit bulundurur ASCII karakterlerinin 7 bit oldugunu varsayarsak Hamming 8 7 kodu toplamda sekiz bit yedisi veri olmak uzere tanimlamistir Tekrarlama ornegi bu kurama gore olacaktir Bilgi orani ikinci sayinin birinciye bolunmesiyle bulunur Hamming iki ve daha fazla bitin degismesi problemini uzaklik olarak tanimlamistir Halen Hamming uzakligi olarak bilinir Eslik herhangi iki bit degisimi gorulmez olunca uzaklik 2 olur Hamming bu uzakligi ve bilgi oranini olabildigince artirmaya calismistir 1940 lar boyunca var olan kodlar uzerinde onemli iletmeler gerceklestiren birkac kod yontemi gelistirmistir Butun sistemlerin anahtar noktasi eslik bitlerinin butun bitlerin ve verinin uzerinden kontrol ederek gecmesidir Ornek Hamming Kodu Kullanimi0110101 yedi bitlik veri sozcugumuz olsun Hamming Kodlarin nasil hesaplandigi ve hatayi nasil bulduklari asagidaki tabloda gosterilmistir Data bilgileri icin d eslik bitleri icin p kullanilmaktadir Ilk olarak veri bitleri uygun yerlere konur ve eslik bitleri her seferinde cift eslik kullanilarak hesaplanir Hamming Kodunda Kullanilan Eslik bitlerinin Hesaplanmasi p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7Veri eslik biti olmadan 0 1 1 0 1 0 1p1 1 0 1 0 1 1p2 0 0 1 0 0 1p3 0 1 1 0p4 0 1 0 1Veri eslik bitiyle birlikte 1 0 0 0 1 1 0 0 1 0 1 Yeni veri sozcugumuz eslik biti ile 10001100101 olmustur Son bitin hatali oldugunu farz edelim ve bu bit 1 den 0 a degismis olsun Yeni veri sozcugumuz 10001100100 dir ve bu sefer Hamming Kodun nasil elde edildigini cift eslik biti her hata sapladiginda eslik bitini 1 olarak degistirip analiz edelim Eslik bitlerinin Denetlenmesi degismis bit koyu renkli p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 Parity check Parity bitAlinan veri sozcugu 1 0 0 0 1 1 0 0 1 0 0p1 1 0 1 0 1 0 Kalir 1p2 0 0 1 0 0 0 Kalir 1p3 0 1 1 0 Gecer 0p4 0 1 0 0 Kalir 1 Son adimda her eslik bitinin degerini olcelim Degerin sayi karsiligi 11 cikar Yani 11 biti hatalidir ve degistirilmesi gerekir p4 p3 p2 p1Ikilik tabanda 1 0 1 1Onluk tabanda 8 2 1 S 11 11 biti degistirmek 10001100100 i tekrar 10001100101 yapar Hamming Kodlarini cikartinca geriye orijinal veri sozcugumuz 0110101 kalir Bir eslik biti hatali olur digerleri dogru olursa sorudaki eslik biti yanlistir ve kontrol ettigi bitler de hatali olacaktir Son olarak x ve y konumlarindaki iki bit yer degistirmis olsun x ve y ikilik gosterimlerinin 2k konumlarindaki bitleri ayni ise o konuma tekabul eden eslik biti ikisini de kontrol eder ve ayni kalir x y olan bazi eslik bitleri yuzunden bu konumlara tekabul eden bitler degisir Sonucta Hamming Kodu iki bitlik hatalari bulur ama bunlari bir bitlik hatalardan ayirt edemez Hamming 7 4 KoduGunumuzde Hamming Kod spesifik olarak Hamming in 1950 yilinda gosterdigi bir 7 4 kodla ilgilidir Hamming Kodu her 4 bitlik mesaja 3 kontrol biti ekler Hamming in algoritmasi bir bitlik hatayi bulup duzeltir ve iki bitlik hatayi tespit edebilir Orta durum nakillerinde hatalar cok degilse Hamming Kodu efektiftir Hamming matrisleri Hamming kodlar Hamming Matrisleri adi verilen matris carpimlarinin eslik biti fikrinin genislemesiyle calisir Hamming 7 4 kodu icin birbiriyle alakali kod yaratici matris G ve eslik denetleyicisi matris H kullanilir G 1000010000100001011110111011 displaystyle G begin pmatrix 1 amp 0 amp 0 amp 0 0 amp 1 amp 0 amp 0 0 amp 0 amp 1 amp 0 0 amp 0 amp 0 amp 1 0 amp 1 amp 1 amp 1 1 amp 0 amp 1 amp 1 1 amp 0 amp 1 amp 1 end pmatrix H 011110010110101101001 displaystyle H begin pmatrix 0 amp 1 amp 1 amp 1 amp 1 amp 0 amp 0 1 amp 0 amp 1 amp 1 amp 0 amp 1 amp 0 1 amp 1 amp 0 amp 1 amp 0 amp 0 amp 1 end pmatrix G matrisinin ilk 4 sirasi 4x4 birim matrisi I4 son 3 sira ise 4 kaynak bitinden 3 eslik bitine 4x3 luk matrisi gosterir G nin sutun vektorleri H nin cekirdeginin temelini olusturur Carpim yapilirken birim matris veriyi iletir Yukaridaki aciklamadan farkli olarak veri bitleri ilk 4 konumdayken eslik bitleri son 3 konumdadir Bu matrisler gercek Hamming matrislerinden farkli olsa da bunlar Hamming Kodu daha kolay anlasilir hale getiren gerekli detaylardir Benzer olarak H nin 3 sutunu 3x3 birim matris I3 u gosterirken ilk 4 sutun kaynak veri bitleri ve eslik denetleyicilerinden olusan 4x3 matrisi verir 4 blokluk yararli veri bitini ve birikmis diger 3 goz ardi edilmis biti kullaniriz 4 3 7 7 4 Veriyi gondermek icin gondermek istedigimiz veri blogunu vektor olarak dusunuruz Mesela 1011 icin p 1011 displaystyle p begin pmatrix 1 0 1 1 end pmatrix Kanal kodlama Diyelim ki gurultulu komunikasyon kanalinda veri iletmek istiyoruz G ve p nin carpimini alir modul 2 girisi ile X kod sozcugunu elde ederiz Gp 1000010000100001011110111011 1011 1011010 x displaystyle G p begin pmatrix 1 amp 0 amp 0 amp 0 0 amp 1 amp 0 amp 0 0 amp 0 amp 1 amp 0 0 amp 0 amp 0 amp 1 0 amp 1 amp 1 amp 1 1 amp 0 amp 1 amp 1 1 amp 0 amp 1 amp 1 end pmatrix begin pmatrix 1 0 1 1 end pmatrix begin pmatrix 1 0 1 1 0 1 0 end pmatrix x Eslik kontrolu Iletim sirasinda hata olmaz ise r kod sozcugu x ile tipatip ayni olur r x displaystyle r x Alici H ve r yi carparak z sendrom vektorunu elde eder z vektoru hata varsa nerede oldugunu gosterir Bu carpim Hr 011110010110101101001 1011010 000 z displaystyle H r begin pmatrix 0 amp 1 amp 1 amp 1 amp 1 amp 0 amp 0 1 amp 0 amp 1 amp 1 amp 0 amp 1 amp 0 1 amp 1 amp 0 amp 1 amp 0 amp 0 amp 1 end pmatrix begin pmatrix 1 0 1 1 0 1 0 end pmatrix begin pmatrix 0 0 0 end pmatrix z Z vektoru 0 oldugundan alici verinin hatasiz oldugunu anlar Bu sonuc veri vektoru G ile carpildiginda alt uzay vektorunde bir degisime ugradigi gozlemine dayanir Transfer sirasinda hicbir sey olmazsa r H nin cekirdegi olarak kalir ve carpim hep sifiri verir Hata Duzeltilmesi Diyelim ki bir hata olustu Matematiksel olarak r x eiyazilabilir Mod 2 ye gore i konumda 1 olan bir sifir vektoru 1 den baslar Yukaridaki tanim i Konumda bir hata oldugunu gosterir Simdi bu vektoru H ile carparsak Hr H x ei Hx Hei displaystyle H r H left x e i right Hx He i x iletilen veri oldugundan hatasizdir ki bu H ve x in carpiminin sifir oldugunu gosterir Sonuc olarak Hx Hei 0 Hei Hei displaystyle Hx He i 0 He i He i Simdi H ve P standart baz vektorlerinin carpimi H nin hata bulunan sutununu bulur H yi parcali bicimde yarattigimizdan hatali sutunu 2 lik sayi olarak yazabiliriz Mesela 1 0 1 H nin bir sutunudur ve 5 konuma tekabul eder ki hata ordadir ve duzeltilebilir Alttaki sekli inceleyelim Simdi Hr 011110010110101101001 1111010 101 z displaystyle H r begin pmatrix 0 amp 1 amp 1 amp 1 amp 1 amp 0 amp 0 1 amp 0 amp 1 amp 1 amp 0 amp 1 amp 0 1 amp 1 amp 0 amp 1 amp 0 amp 0 amp 1 end pmatrix begin pmatrix 1 1 1 1 0 1 0 end pmatrix begin pmatrix 1 0 1 end pmatrix z H nin 2 sutununa denk gelir 2 konumda bir hata bulunmustur ve duzeltilebilir Bu yolu kullanarak tek bitlik hatalarin duzeltilebilecegini gostermek zor degildir Bunun disinda Hamming Kodu tek veya cift bit hatalari bulabilir ama hata olustugunda H nin carpimi neredeyse hicbir zaman sifirdan farkli olmaz Ama Hamming 7 4 bir ve iki bitlik hatalari birbirinden ayiramaz Ekstra Eslik BitiHamming kodlari ekstra eslik bitiyle kullanilabilir Ek bir butun bitlere Hamming Kodu butun bitleri kontrol ettikten sonra uygulanip eklenir Bu gecerli kodlarin Hamming uzakligini 3 ten 4 e uzatir Sonra butun 1 2 3 bitlik hatalar bulunabilir Arti 2 bitlik hatalar 1 ve 3 bitlik hatalardan ayirt edilebilir 1 bitlik hatalar duzeltilebilir Eslik hatasi gozlenmez ama Hamming Kodu bir hata bulur ise bunun 2 bitlik bir hata oldugu farz edilir fakat duzeltilemez Kaynaklar ve Dis baglantilaren Hamming code