lostyazilim

Huffman Sıkıştırma Algoritması

5 Mesajlar 1.191 Okunma
lstbozum
wmaraci reklam

ennrh ennrh WM Aracı Kullanıcı
  • Üyelik 16.03.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 451
  • Beğeniler 38 / 78
  • Ticaret 7, (%100)
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.



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.




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.



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



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



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.



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.

[B]Kaynak:[/B] Pubtekno
burakisci newcoder23 yms

kişi bu mesajı beğendi.

http://www.pubtekno.com
wmaraci
reklam

izotonik izotonik WM Aracı Kullanıcı
  • Üyelik 28.01.2016
  • Yaş/Cinsiyet 33 / E
  • Meslek Web Developer
  • Konum İstanbul Avrupa
  • Ad Soyad Y** Ş**
  • Mesajlar 17
  • Beğeniler 1 / 1
  • Ticaret 0, (%0)
çalışan bir uygulaması ya da kodlaması da var mı hocam?
 

 

ErcanDinsel ErcanDinsel E' Kullanıcı
  • Üyelik 28.01.2012
  • Yaş/Cinsiyet 32 / E
  • Meslek Grafiker. / ercandinsel.org
  • Konum Kocaeli
  • Ad Soyad E** D**
  • Mesajlar 670
  • Beğeniler 54 / 241
  • Ticaret 1, (%100)
Silicon Vallley dizisinde görmüştüm. :P
Kenar muhammetdemirel

kişi bu mesajı beğendi.

ennrh ennrh WM Aracı Kullanıcı
  • Üyelik 16.03.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 451
  • Beğeniler 38 / 78
  • Ticaret 7, (%100)

izotonik adlı üyeden alıntı

çalışan bir uygulaması ya da kodlaması da var mı hocam?


Maalesef hocam
 

 

http://www.pubtekno.com
wmaraci
wmaraci

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Princeton üniversitesinin paylaştığı örnek bir kod;

Huffman codes. Specific way to construct optimal prefix-free codes. Invented by David Huffman while a student at MIT in 1950. Huffman.java implements Huffman algorithm.

http://algs4.cs.princeton.edu/55compression/Huffman.java.html


-- Ref : http://algs4.cs.princeton.edu/55compression/
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al