Huffman Algoritması

Bu makale faydalı oldumu ?


  • Kullanılan toplam oy
    3

Bu konuyu okuyanlar

erkankarabulut

Öğrenci
Katılım
18 Mart 2016
Mesajlar
30
Reaksiyon puanı
7
Puanları
8
Yaş
27
Huffman Algoritması


Huffman algoritması veri sıkıştırma için kullanılan bir algoritma çeşididir. David A. Huffman tarafından 1952 yılında geliştirilmiştir. Her bir karakterin ascii tablosundaki karşılığının ikili tabanda bir değeri vardır. Örnek olarak P harfinin ascii tablosundaki karşılığı 80 sayısıdır. 80 sayısı bellekte 01010000 şeklinde 8 bitlik yer kaplar.

Huffman algoritmasının amacı, buradaki P karakterini saklamak için harcanan 8 bitlik alanı azaltmaya yöneliktir.

Huffman Algoritması Uygulanışı


İlk olarak sıkıştırılmak istenilen metindeki harflerin frekansını yani tekrar etme sayıları bulunur. Örnek olarak "MERHABA" kelimesini ele alalım. Bu kelimede:

2 adet A
1 adet M
1 adet R
1 adet E
1 adet H
1 adet B

harfleri bulunmaktadır.

Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528193%2529.png


Adım 1: En az tekrar eden 2 harfi birleştirelim. Birden çok sayıda harf 1 kere tekrar ettiği için herhangi birini seçebiliriz. M ve E yi birleştirdik.

Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528194%2529.png



Adım 2:
Artık ME bir bütün halinde oldu ve birleştirme işleminde artık frekansını 2 olarak kabul edeceğiz. En az tekrar eden diğer 2 eleman olarak R ve H seçelim.

Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528196%2529.png


Adım 3: Şimdi ise B ve AA kısmını birleştirelim ve frekansı 3 olan bir eleman elde edelim.

Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528197%2529.png


Adım 4: Frekansı ez az olan ME ve RH elemanlarını birleştirelim.

Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528198%2529.png


Adım 5: Son olarak ise geriye kalan frekansı 3 olan AAB elemanını ve frekansı 4 olan MERH elemanını birleştirip Huffman ağacını oluşturmuş olalım.

Ekran%2BG%25C3%25B6r%25C3%25BCnt%25C3%25BCs%25C3%25BC%2B%2528199%2529.png


Gördüğünüz gibi Huffman ağacımızı oluşturduk ağacın her düğümünün sağ tarafına 1 sol tarafına ise 0 sayısını yerleştirdik. Huffman ağacında ovaller düğüm olmaktadır.

Normalde her bir harfi saklamak için 8 bitlik alana ihtiyacımız vardı. MERHABA için 8x7 den 56 bitlik bir alan gerekiyordu.

Şimdi ise örnek olarak A harfi için 01000001 yerine ağaçtan okları takip ederek A harfini bulalım. Sadece 01 yani 2 bitlik alanda A harfini saklamış olduk.

Huffman Algoritması sayesinde bu şekilde verileri sıkıştırarak bellekten büyük kazanç elde edebiliriz.

Ayrıca "Selection Sort Sıralama Algoritması" dersi için buraya tıklayın.

"Huffman Algoritması" adlı bu makaleyi beğendiyseniz yorum yapmayı ve paylaşmayı unutmayın.

Kaynak: Pubtekno
 
Üst