SlideShare a Scribd company logo
1 of 19
Download to read offline
Huffman Kodu
                                    1

                  BIL 236 – PROGRAMLAMA LABORATUVARI
                                 5. ÖDEV




Yiğitcan Aksarı - Nisan 2009                           16.04.2009
Huffman Kodu Nedir?
                                        2

 Huffman Kodu, veri sıkıştırma için kullanılan
  kayıpsız bir algoritmadır.
 David A. Huffman tarafından 1952 yılında
  bulunmuştur.
 Pek çok güncel sıkıştırma algoritması tarafından
  kullanılır. Örn: MP3, JPEG...




Yiğitcan Aksarı - Nisan 2009                         16.04.2009
8 bit sınır mı?
                                      3




 ASCII, 8 bit
 29 farklı karakter 5 bit ile kodlanabilir.
 5/8 = %62,5 sıkıştırma


 Sabit sayıda bit ile kodlamaya ihtiyacımız var mı?




Yiğitcan Aksarı - Nisan 2009                      16.04.2009
Morse Kodu
                                   4




Yiğitcan Aksarı - Nisan 2009                16.04.2009
Kod kelimelerinin devamlılığı
                                   5

 Sık kullanılan harfler için kısa kod kelimeleri
  kullanılmıştır.
 Fakat
      Bağlama göre sıklıklar değişebilmektedir. Örn: Türkçe,
       İngilizce, ses kütüğü, görüntü kütüğü, vs...
      Kod kelimeleri aralarında bekleme olmaksızın ayırd
       edilememektedir. Neden?




Yiğitcan Aksarı - Nisan 2009                                    16.04.2009
Morse Kodu’nda belirsizlik
                                    6




 Olası belirsizlikler
 •ATT
 •ETTT
 •WT




Yiğitcan Aksarı - Nisan 2009                         16.04.2009
Huffman’ın önerileri
                                           7

 Bağlama göre sıklık belirlenmesi
 Aralarında boşluk olmadan kullanılabilen kod
   kelimeleri (önek ağacı)
      Örn: Telefon numaraları
           +90 Türkiye
             312 Ankara
                • 297 Beytepe
                    7500 Bilgisayar Mühendisliği Bölümü




Yiğitcan Aksarı - Nisan 2009                               16.04.2009
Huffman Ağacı
                                     8

 Bu yapıda dallar takip edildikçe kod sözcüğü
   oluşmaktadır.




Yiğitcan Aksarı - Nisan 2009                     16.04.2009
Algoritma
                                   9

 Karakterlerin sıklıkları bulunur ve bir öncelik
  kuyruğuna konulur.
 En düşük sıklığa sahip iki düğüm yeni bir düğümün
  çocukları olmak üzere kuyruktan alınır.
 Yeni oluşturulan düğüm kuyruğa eklenir.
 Kuyrukta bir adet düğüm kalana kadar bu işleme
  devam edilir




Yiğitcan Aksarı - Nisan 2009                        16.04.2009
Örnek
                                 10

 Elimizde sıkıştırılması istenen alttaki katarın
   olduğunu varsayalım;
      aaaabbbccddddeeefa
 Bu katardaki karakter sıklıkları hesaplandığında;
   f = 1, c = 2, b = 3, e = 3, d = 4, a = 5

 ASCII olarak tutulduğunda bu katar toplam
   18 * 8 = 144 bayt yer kaplamaktadır.




Yiğitcan Aksarı - Nisan 2009                        16.04.2009
Örnek – 1. Adım
                                      11
                                            En küçük sıklıklı iki
                                             düğüm f ve c tek bir
                                             düğüm altında
                                             birleştirilir.
                                            Yeni oluşturulan fc
                                             düğümünün sıklığı; f ve
                                             c’nin toplam sıklığı olur.




Yiğitcan Aksarı - Nisan 2009                                     16.04.2009
Örnek – 2. Adım
                                      12
                                            Sıradaki en küçük sıklıklı
                                             b ve fc birleştirilir.
                                            Önceki adımda
                                             oluşturulan fc düğümü
                                             tekrardan listeye
                                             eklenmiştir. Bu
                                             düğümlere farklı bir
                                             davranış yoktur. Normal
                                             düğümlerle aynı şekilde
                                             ele alınırlar.



Yiğitcan Aksarı - Nisan 2009                                    16.04.2009
Örnek – 3. Adım
                                        13




   En düşük sıklıklı iki düğüm önceden oluşturulmuş ağaçtan bağımsız olabilir.
   Tekrardan bu iki düğümün birleştirilmesi ile oluşturulan düğüm listeye
   ekleneceğinden veri kaybı olmaz.
Yiğitcan Aksarı - Nisan 2009                                            16.04.2009
Örnek – 4. Adım
                                      14




Yiğitcan Aksarı - Nisan 2009                     16.04.2009
Örnek – 5. Adım
                                      15




Yiğitcan Aksarı - Nisan 2009                     16.04.2009
Örnek – 6. Adım
                                      16
                                            Son birleştirme de
                                             gerçekleştirildiğinde
                                             dallara değerleri
                                             atandığında artık
                                             ağacımızda hangi
                                             karakterin kodunun ne
                                             olduğunu bulabiliriz.
                                            Bu örnekte;
                                                e:   00
                                                d:   01
                                                a:   10
                                                b:   111
                                                f:   1100
                                                c:   1101



Yiğitcan Aksarı - Nisan 2009                                      16.04.2009
Sonuç
                                 17
 Sık olan karakterler üst             a: 10     sıklık: 5
  dallarda, seyrek olanlar             d: 01     sıklık: 4
  alt dallarda.                        e: 00     sıklık: 3
 Sıkıştırmadan önce
                                       b: 111    sıklık: 3
       144 bit (18 * 8 bit)
                                       c: 1101   sıklık: 2
 Huffman kodu
                                       f: 1100   sıklık: 1
      45 bit (sıklık * kod
       sözcüğü uzunluğu) yer
 Sıkıştırma oranı
       45 / 144 = %31



Yiğitcan Aksarı - Nisan 2009                              16.04.2009
Sıkıştırmayı açmak
                                       18
                                            •   Örneğin elimizde girdi
                                             katarımızın “abbbccd” kısmını
                                             çevirdiğimizi düşünelim.
                                            • Bu kısmın Huffman kodu ile
                                             ifadesi şöyledir;
                                             “101111111111101110101”
                                            • İlk karakterden başlayıp
                                             yolları takip ettiğimizde;
                                                   1 -> abfc
                                                   0 -> a (hiç çocuğu yok, köke
                                                    dön)
                                                   1 -> abfc
                                                   1 -> bfc
                                                   1 -> b (hiç çocuğu yok, köke
                                                    dön)

Yiğitcan Aksarı - Nisan 2009                                               16.04.2009
Sorularınız
                                     19

                               TEŞEKKÜRLER...




Yiğitcan Aksarı - Nisan 2009                    16.04.2009

More Related Content

What's hot

IT for Jobs:-Pillar of Digital India
IT for Jobs:-Pillar of Digital India IT for Jobs:-Pillar of Digital India
IT for Jobs:-Pillar of Digital India Kumar Dhanwani
 
PPt With animation on Mera Digital India
PPt With animation on Mera Digital IndiaPPt With animation on Mera Digital India
PPt With animation on Mera Digital IndiaAsh Gray
 
Quantum Cryptography
Quantum CryptographyQuantum Cryptography
Quantum Cryptographysahilnarvekar
 
Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!Fabien Baligand
 
IIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへ
IIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへIIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへ
IIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへtechlog (Internet Initiative Japan Inc.)
 
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH Ciphers
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH CiphersChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH Ciphers
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH CiphersAdaLabs
 
City Wide Wi-Fi implementation, a strategic approach
City Wide Wi-Fi implementation, a strategic approach City Wide Wi-Fi implementation, a strategic approach
City Wide Wi-Fi implementation, a strategic approach varunmatj
 
Quantum Cryptography
Quantum CryptographyQuantum Cryptography
Quantum CryptographySwasat Dutta
 

What's hot (13)

IT for Jobs:-Pillar of Digital India
IT for Jobs:-Pillar of Digital India IT for Jobs:-Pillar of Digital India
IT for Jobs:-Pillar of Digital India
 
PPt With animation on Mera Digital India
PPt With animation on Mera Digital IndiaPPt With animation on Mera Digital India
PPt With animation on Mera Digital India
 
PhD Defense Talk - Near-Optimal Mobile Crowdsensing: Design Framework and Alg...
PhD Defense Talk - Near-Optimal Mobile Crowdsensing: Design Framework and Alg...PhD Defense Talk - Near-Optimal Mobile Crowdsensing: Design Framework and Alg...
PhD Defense Talk - Near-Optimal Mobile Crowdsensing: Design Framework and Alg...
 
Quantum Cryptography
Quantum CryptographyQuantum Cryptography
Quantum Cryptography
 
Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!Logstash Editor: The vscode extension to boost your productivity!
Logstash Editor: The vscode extension to boost your productivity!
 
IIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへ
IIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへIIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへ
IIJmio meeting 21 SIMカードの調達プロセスと管理~そしてeSIMへ
 
Make in india
Make in indiaMake in india
Make in india
 
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH Ciphers
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH CiphersChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH Ciphers
ChaCha20-Poly1305 Cipher Summary - AdaLabs SPARKAda OpenSSH Ciphers
 
quantum cryptography
quantum cryptographyquantum cryptography
quantum cryptography
 
City Wide Wi-Fi implementation, a strategic approach
City Wide Wi-Fi implementation, a strategic approach City Wide Wi-Fi implementation, a strategic approach
City Wide Wi-Fi implementation, a strategic approach
 
DIGITAL INDIA
DIGITAL INDIA DIGITAL INDIA
DIGITAL INDIA
 
Quantum Cryptography
Quantum CryptographyQuantum Cryptography
Quantum Cryptography
 
AES.ppt
AES.pptAES.ppt
AES.ppt
 

Huffman kodu

  • 1. Huffman Kodu 1 BIL 236 – PROGRAMLAMA LABORATUVARI 5. ÖDEV Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 2. Huffman Kodu Nedir? 2  Huffman Kodu, veri sıkıştırma için kullanılan kayıpsız bir algoritmadır.  David A. Huffman tarafından 1952 yılında bulunmuştur.  Pek çok güncel sıkıştırma algoritması tarafından kullanılır. Örn: MP3, JPEG... Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 3. 8 bit sınır mı? 3  ASCII, 8 bit  29 farklı karakter 5 bit ile kodlanabilir.  5/8 = %62,5 sıkıştırma  Sabit sayıda bit ile kodlamaya ihtiyacımız var mı? Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 4. Morse Kodu 4 Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 5. Kod kelimelerinin devamlılığı 5  Sık kullanılan harfler için kısa kod kelimeleri kullanılmıştır.  Fakat  Bağlama göre sıklıklar değişebilmektedir. Örn: Türkçe, İngilizce, ses kütüğü, görüntü kütüğü, vs...  Kod kelimeleri aralarında bekleme olmaksızın ayırd edilememektedir. Neden? Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 6. Morse Kodu’nda belirsizlik 6 Olası belirsizlikler •ATT •ETTT •WT Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 7. Huffman’ın önerileri 7  Bağlama göre sıklık belirlenmesi  Aralarında boşluk olmadan kullanılabilen kod kelimeleri (önek ağacı)  Örn: Telefon numaraları  +90 Türkiye  312 Ankara • 297 Beytepe  7500 Bilgisayar Mühendisliği Bölümü Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 8. Huffman Ağacı 8  Bu yapıda dallar takip edildikçe kod sözcüğü oluşmaktadır. Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 9. Algoritma 9  Karakterlerin sıklıkları bulunur ve bir öncelik kuyruğuna konulur.  En düşük sıklığa sahip iki düğüm yeni bir düğümün çocukları olmak üzere kuyruktan alınır.  Yeni oluşturulan düğüm kuyruğa eklenir.  Kuyrukta bir adet düğüm kalana kadar bu işleme devam edilir Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 10. Örnek 10  Elimizde sıkıştırılması istenen alttaki katarın olduğunu varsayalım;  aaaabbbccddddeeefa  Bu katardaki karakter sıklıkları hesaplandığında;  f = 1, c = 2, b = 3, e = 3, d = 4, a = 5  ASCII olarak tutulduğunda bu katar toplam 18 * 8 = 144 bayt yer kaplamaktadır. Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 11. Örnek – 1. Adım 11  En küçük sıklıklı iki düğüm f ve c tek bir düğüm altında birleştirilir.  Yeni oluşturulan fc düğümünün sıklığı; f ve c’nin toplam sıklığı olur. Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 12. Örnek – 2. Adım 12  Sıradaki en küçük sıklıklı b ve fc birleştirilir.  Önceki adımda oluşturulan fc düğümü tekrardan listeye eklenmiştir. Bu düğümlere farklı bir davranış yoktur. Normal düğümlerle aynı şekilde ele alınırlar. Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 13. Örnek – 3. Adım 13 En düşük sıklıklı iki düğüm önceden oluşturulmuş ağaçtan bağımsız olabilir. Tekrardan bu iki düğümün birleştirilmesi ile oluşturulan düğüm listeye ekleneceğinden veri kaybı olmaz. Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 14. Örnek – 4. Adım 14 Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 15. Örnek – 5. Adım 15 Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 16. Örnek – 6. Adım 16  Son birleştirme de gerçekleştirildiğinde dallara değerleri atandığında artık ağacımızda hangi karakterin kodunun ne olduğunu bulabiliriz.  Bu örnekte;  e: 00  d: 01  a: 10  b: 111  f: 1100  c: 1101 Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 17. Sonuç 17  Sık olan karakterler üst  a: 10 sıklık: 5 dallarda, seyrek olanlar  d: 01 sıklık: 4 alt dallarda.  e: 00 sıklık: 3  Sıkıştırmadan önce  b: 111 sıklık: 3  144 bit (18 * 8 bit)  c: 1101 sıklık: 2  Huffman kodu  f: 1100 sıklık: 1  45 bit (sıklık * kod sözcüğü uzunluğu) yer  Sıkıştırma oranı  45 / 144 = %31 Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 18. Sıkıştırmayı açmak 18 • Örneğin elimizde girdi katarımızın “abbbccd” kısmını çevirdiğimizi düşünelim. • Bu kısmın Huffman kodu ile ifadesi şöyledir; “101111111111101110101” • İlk karakterden başlayıp yolları takip ettiğimizde;  1 -> abfc  0 -> a (hiç çocuğu yok, köke dön)  1 -> abfc  1 -> bfc  1 -> b (hiç çocuğu yok, köke dön) Yiğitcan Aksarı - Nisan 2009 16.04.2009
  • 19. Sorularınız 19 TEŞEKKÜRLER... Yiğitcan Aksarı - Nisan 2009 16.04.2009