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

Computer architecture instruction formats
Computer architecture instruction formatsComputer architecture instruction formats
Computer architecture instruction formatsMazin Alwaaly
 
Konsep proses dan penjadwalan
Konsep proses dan penjadwalanKonsep proses dan penjadwalan
Konsep proses dan penjadwalanDickdick Maulana
 
5. analog to digital conversion. ( pcm ,dm with short descriptions )
5. analog to digital conversion. ( pcm ,dm with short descriptions )5. analog to digital conversion. ( pcm ,dm with short descriptions )
5. analog to digital conversion. ( pcm ,dm with short descriptions )MdFazleRabbi18
 
System Programming Unit IV
System Programming Unit IVSystem Programming Unit IV
System Programming Unit IVManoj Patil
 
Array Processors & Architectural Classification Schemes_Computer Architecture...
Array Processors & Architectural Classification Schemes_Computer Architecture...Array Processors & Architectural Classification Schemes_Computer Architecture...
Array Processors & Architectural Classification Schemes_Computer Architecture...Sumalatha A
 
Ch 02- Multiprocessing System
Ch 02- Multiprocessing SystemCh 02- Multiprocessing System
Ch 02- Multiprocessing SystemTri Sugihartono
 
Operand and Opcode | Computer Science
Operand and Opcode | Computer ScienceOperand and Opcode | Computer Science
Operand and Opcode | Computer ScienceTransweb Global Inc
 
11 instruction sets addressing modes
11  instruction sets addressing modes 11  instruction sets addressing modes
11 instruction sets addressing modes Sher Shah Merkhel
 
Operating Systems - memory management
Operating Systems - memory managementOperating Systems - memory management
Operating Systems - memory managementMukesh Chinta
 
Computer organization memory hierarchy
Computer organization memory hierarchyComputer organization memory hierarchy
Computer organization memory hierarchyAJAL A J
 
Message Passing Interface (MPI)-A means of machine communication
Message Passing Interface (MPI)-A means of machine communicationMessage Passing Interface (MPI)-A means of machine communication
Message Passing Interface (MPI)-A means of machine communicationHimanshi Kathuria
 
pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.Zohaib Arshid
 

What's hot (20)

Computer architecture instruction formats
Computer architecture instruction formatsComputer architecture instruction formats
Computer architecture instruction formats
 
Konsep proses dan penjadwalan
Konsep proses dan penjadwalanKonsep proses dan penjadwalan
Konsep proses dan penjadwalan
 
Introduction to Adaptive filters
Introduction to Adaptive filtersIntroduction to Adaptive filters
Introduction to Adaptive filters
 
5. analog to digital conversion. ( pcm ,dm with short descriptions )
5. analog to digital conversion. ( pcm ,dm with short descriptions )5. analog to digital conversion. ( pcm ,dm with short descriptions )
5. analog to digital conversion. ( pcm ,dm with short descriptions )
 
Cache memory
Cache memoryCache memory
Cache memory
 
Ch4 1 v1
Ch4 1 v1Ch4 1 v1
Ch4 1 v1
 
Feistel cipher
Feistel cipherFeistel cipher
Feistel cipher
 
System Programming Unit IV
System Programming Unit IVSystem Programming Unit IV
System Programming Unit IV
 
Array Processors & Architectural Classification Schemes_Computer Architecture...
Array Processors & Architectural Classification Schemes_Computer Architecture...Array Processors & Architectural Classification Schemes_Computer Architecture...
Array Processors & Architectural Classification Schemes_Computer Architecture...
 
Ch 02- Multiprocessing System
Ch 02- Multiprocessing SystemCh 02- Multiprocessing System
Ch 02- Multiprocessing System
 
Operand and Opcode | Computer Science
Operand and Opcode | Computer ScienceOperand and Opcode | Computer Science
Operand and Opcode | Computer Science
 
Parallel processing
Parallel processingParallel processing
Parallel processing
 
11 instruction sets addressing modes
11  instruction sets addressing modes 11  instruction sets addressing modes
11 instruction sets addressing modes
 
Framing Protocols
Framing ProtocolsFraming Protocols
Framing Protocols
 
Addressing modes
Addressing modesAddressing modes
Addressing modes
 
Warmhole routing ppt
Warmhole routing pptWarmhole routing ppt
Warmhole routing ppt
 
Operating Systems - memory management
Operating Systems - memory managementOperating Systems - memory management
Operating Systems - memory management
 
Computer organization memory hierarchy
Computer organization memory hierarchyComputer organization memory hierarchy
Computer organization memory hierarchy
 
Message Passing Interface (MPI)-A means of machine communication
Message Passing Interface (MPI)-A means of machine communicationMessage Passing Interface (MPI)-A means of machine communication
Message Passing Interface (MPI)-A means of machine communication
 
pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.pipelining and hazards occure in assembly language.
pipelining and hazards occure in assembly language.
 

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