İçeriğe atla

Huffman kodu

Huffman Kodu, bilgisayar biliminde veri sıkıştırma için kullanılan, bir entropi kodlama algoritmasıdır. David A. Huffman tarafından 1952 yılında geliştirilmiştir.

Huffman'ın algoritması, her sembol (veya karakter) için özel bir kod üretir. Bu kodlar (ikilik sistemdeki 1 ve 0'lardan oluşan) bit haritası şeklindedir. Veri içerisinde en az kullanılan karakter için en uzun, en çok kullanılan karakter için ise en kısa kodu üretir.

Huffman tekniği günümüzde tek başına kullanılmaz. LZW, RLE gibi yöntemlerle birlikte kullanılır.

Teknik

Huffman'ın algoritması, veri içerisindeki karakterlerin kullanım sıklığına (frekans) göre bir ağaç oluşturur. Ağacın en tepesinden aşağıya doğru ilerlerken sola ayrılan dal için 0, sağa ayrılan dal için 1 kodu verilir.

         5
       /   \
    0 3     2 1
     / \     \
  0 1   2 1   C
   /     \
  B       A

Yukarıda koyu rakamlar karakter sayısını (kullanım sıklığı-frekans) gösterir, eğik rakamlar ise bit kodlarını gösterir. Bu ağaç "ABC" karakterlerinden oluşan bir veri kümesi için üretilmiştir.

Ağaca göre karakterler için bit haritaları şu şekildedir:

B: 00
A: 01
C: 1

Oluşturulan bit haritaları karakterlerin veri içerisindeki konumlarına göre yerleştirilir. Ortaya çıkan bit haritası sıkıştırılmış veridir.

Örneğin; "BAACC" verisi elde edilen bit haritalarına göre yeniden düzenlenirse:

00 01 01 1 1 = 00010111 = 17h

Yani %80 oranında bir sıkıştırma elde edilmiş olur.

Ağacın oluşturulması

İlk önce karakterlerin frekansları (kullanım sıklıkları) hesaplanmalıdır.

Örneğin, elimizdeki veri "BAACC" olsun,

B: 1
A: 2
C: 2

B:1   A:2   C:2

1     2     2
 \     \     \
  B     A     C

En küçük iki frekans toplanır ve frekans tablosu yeniden düzenlenir,

B:1 + A:2   C:2

C:2   BA:3

2      3
 \    / \
  C  1   2
    /     \
   B       A

Tek bir ağaç oluşturulana kadar sürekli en küçük frekanslar toplanır,

C:2 + BA:3

CBA:5

      5
     / \
    3   2
   / \   \
  1   2   C
 /     \
B       A

Dezavantajları

Huffman algoritması az sayıda karakter çeşidine sahip ve büyük boyutlardaki verilerde çok kullanışlı olabilir. Fakat oluşturulan ağacın sıkıştırılmış veriye eklenmesi zorunludur. Bu da sıkıştırma verimini düşürür. Adaptive Huffman gibi teknikler bu sorunu halletmek için geliştirilmişlerdir.

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Ogg</span>

Ogg ya da bir diğer yazılışıyla OGG, Xiph.org Vakfı tarafından geliştirilen açık ve özgür bir çokluortam dosya biçimidir. Yazılım patentlerinin tehdidi altında olmayan bu dosya biçimi, akışkan video için optimize edilmiş yüksek kalitede çokluortam gerçeklemeleri için geliştirilmiştir.

<span class="mw-page-title-main">Bzip2</span> Sıkıştırma protokolü

bzip2 veya BZ2, Julian Seward tarafından geliştirilmiş özgür yazılım/açık kaynak kodlu yazılım veri sıkıştırma algoritmasıdır. Seward'ın geliştirdiği program 1996 yılında 0.15 sürümü ile kullanıma sunuldu. Veri sıkıştırıcısının istikrarı ve yaygın kullanımı zamanla arttı ve 1.0 sürümü 2000 yılının sonlarında çıktı.

<span class="mw-page-title-main">Portable Network Graphics</span>

PNG, "Taşınabilir Ağ Grafiği" anlamındaki (Portable Network Graphics) 'in kısaltmasıdır ve kayıpsız sıkıştırarak görüntü saklamak için kullanılan bir saklama biçimidir. PNG biçiminde paletli ya da gerçek renkte görüntüler seçimlik bir saydamlık kanalıyla saklanabilir.

JPEG, Joint Photographic Experts Group tarafından standartlaştırılmış bir sayısal görüntü kodlama biçimidir. Bu biçim, 1994 yılında ISO 10918-1 adıyla standartlaşmıştır.

<span class="mw-page-title-main">Barkod</span> çubuk kod ya da çizgi im

Barkod, çubuk kod ya da çizgi im, verilerin görsel özellikli makinelerin okuyabilmesi için çeşitli kodlama yöntemleriyle sunulmasıdır.

<span class="mw-page-title-main">FLAC</span> ses kodlama formatı

FLAC dijital sesin kayıpsız olarak sıkıştırılması için kullanılan bir ses kodlama formatıdır ve aynı zamanda referans kod çözümü uygulamasının adıdır. FLAC algoritması ile sıkıştırılmış sayısal ses orijinal boyutunun% 50-60'ına kadar indirgenebilir ve orijinal ses verilerinin özdeş bir kopyasına dek sıkıştırma yapabilir. Örneğin sıkıştırılmamış 1 dakikalık WAV dosyası boyutu yaklaşık 10 MB iken, FLAC dosyası 4,2-6,3 MB arasındadır.

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.

<span class="mw-page-title-main">Hızlı Fourier dönüşümü</span>

Hızlı Fourier dönüşümü bir dizinin ayrık Fourier dönüşümünü (DFT) ya da ters ayrık dönüşümünü hesaplayan bir algoritmadır. Fourier analizinde bir sinyal bulunduğu uzaydaki gösteriminden frekans uzayıki gösterimine ya da tersine dönüştürülür. DFT'de ise ayrık veri dizileri farklı frekans öğelerine ayrılır. Bu operasyon her ne kadar birçok alanda kullanışlı olsa da, doğrudan formüllerle hesabı hızlı ve pratik değildir; bu nedenle DFT hesabı için FFT algoritmaları kullanılmaktadır.

Sayısal elektronikte yapılan işleri kolaylaştırmak, hata oranını azaltmak ve bilgi iletimini sağlamak amacıyla kullanılır.

<span class="mw-page-title-main">Sayısal ses</span>

Sayısal ses, analog ses verisinin bilgisayarlarda işlenebilmesi için dönüştürülmüş haline denir.

Modemler İçin Bağlantı Erişim Prosedürü modemler için V.42 hata düzeltme protokolünin bir parçasıdır.

<span class="mw-page-title-main">BCD kodu</span>

BCD kodu, bilgisayar ve elektronik sistemlerinde onluk tabandaki (decimal) sayıların ikilik tabana (binary) dönüştürülmesi için kullanılan sayısal kodlama metodudur. Bu dönüştürme işlemi yapılırken öncelikle sayının her bir basamağı tek tek ikilik tabana çevrilir ve ardından her basamağın karşılık geldiği binary değerler sırasıyla birleştirilerek sayının BCD Kodu ile gösterimi elde edilir.

<span class="mw-page-title-main">Kriptografik özet fonksiyonu</span>

Kriptografik özet fonksiyonu çeşitli güvenlik özelliklerini sağlayan bir özet fonksiyonudur. Veriyi belirli uzunlukta bir bit dizisine, (kriptografik) özet değerine, dönüştürür. Bu dönüşüm öyle olmalıdır ki verideki herhangi bir değişiklik özet değerini değiştirmelidir. Özetlenecek veri mesaj, özet değeri ise mesaj özeti veya kısaca özet olarak da adlandırılır.

ISO 3166-2:TR,Uluslararası Standartlar Örgütü (ISO) tarafından yayınlanan ISO 3166 standardının bir parçası olan Türkiye'deki ana bölümlerin isimlerini kodlamaya yarayan bir koddur. Güncel olarak 81 il için ISO 3166-2 kodları bulunmaktadır.

Blum–Goldwasser Kriptosistem veya Blum-Goldwasser şifreleme sistemidir. 1984 yılında Manuel Blum ve Şafi Goldwasser tarafından önerilen bir asimetrik anahtar şifreleme algoritmasıdır. Bulum-Goldwasser bilinen en verimli kripto sistemlerden biridir. RSA ile hız ve mesaj genişlemesi açısından kıyaslanabilir. Bu şifreleme algoritmasında rastgele sayı üretmek için Blum Blum Shub rastgele sayı üretme algoritması kullanılır. Büyük sayıların asal çarpanlarına ayrılma probleminin çözülemezliği kabulüne dayanan bir şifreleme algoritmasıdır.

<span class="mw-page-title-main">Tek anahtarlı mesaj doğrulama kodu</span>

Tek anahtarlı mesaj doğrulama kodu, CBC-MAC algoritmasına benzer bir blok şifresinden oluşturulan bir mesaj kimlik doğrulama kodudur.

<span class="mw-page-title-main">WebP</span>

WebP, Google tarafından geliştirilmiş olup, JPEG, PNG veya GIF resim biçimlerine kıyasla daha küçük veya daha iyi görünen resimler oluşturmak için tasarlanmıştır.

Frekans seçici yüzeyler, belli frekanslardaki elektromanyetik dalgaları yansıtmak, iletmek veya soğurmak için tasarlanmış periyodik yapılardır. Özellikle mikrodalga ve optik frekansları için filtrelemede sıklıkla kullanılan bu yapıların işleyişi kırınım ilkesine dayalıdır. Bu yüzeylerle ilgili çalışmalar ilk kez 1960'lı yıllarda savunma sanayisinde başlamıştır.

Uluslararası Menkul Kıymet Kimlik Numarası (ISIN) bir güvenliği benzersiz olarak tanımlamaktadır. Yapısı ISO 6166'da tanımlanmıştır. ISIN kodu, ticaret ve yerleşim sırasında var olan atanmış Ulusal numaranın normalleştirilmesi yoluyla bir güvenliğin tek düze tanımlanmasına hizmet eden 12 karakterli bir alfanümerik koddur.

<span class="mw-page-title-main">U-kanunu algoritması</span>

μ-kanunu algoritması, öncelikle Kuzey Amerika ve Japonya'daki 8 bitlik PCM dijital telekomünikasyon sistemlerinde kullanılan bir sıkıştırma algoritmasıdır. ITU-T'nin G.711 standardında yer alan iki sıkıştırma algoritmasından biridir, zaten diğeri ise benzer A kanunudur. A-kanunu, Avrupa gibi dijital telekomünikasyon sinyallerinin E-1 devreleri üzerinde taşındığı bölgelerde kullanılmaktadır.