/ / Huffman kodları: örnekler, uygulama

Huffman kodları: örnekler, uygulama

Şu anda, birkaç kişi gerçeği düşünür,sıkıştırma nasıl çalışır. Geçmişe kıyasla kişisel bilgisayar kullanmak çok daha kolaylaştı. Ve hemen hemen dosya sistemi ile çalışan herkes arşivleri kullanıyor. Ancak birkaç kişi, nasıl çalıştıklarını ve dosyaların ilkesinin hangi prensipte olduğunu düşündüklerini düşünmektedir. Bu sürecin ilk versiyonu Huffman kodlarıydı ve hala çeşitli popüler arşivlerde kullanılıyorlar. Birçok kullanıcı dosyayı sıkıştırmanın ne kadar kolay olduğunu ve hangi şemaya göre çalıştığını bile düşünmez. Bu yazıda, sıkıştırmanın nasıl çalıştığına, nüansların kodlama sürecini hızlandırmaya ve basitleştirmeye ne yardımcı olduğuna bakacağız ve ayrıca bir kodlama ağacı oluşturma ilkesinin ne olduğunu anlayacağız.

Algoritmanın tarihi

Etkili için ilk algoritmaElektronik bilginin kodlanması, Huffman'ın yirminci yüzyılın ortalarında, yani 1952'de önerdiği koddu. Şu anda bilgi sıkıştırmak için oluşturulan çoğu programın temel temel öğesidir. Şu anda, bu kodu kullanan en popüler kaynaklardan biri ZIP, ARJ, RAR arşivleri ve diğerleridir.

Huffman kodları
Bu Huffman algoritması ayrıcaJPEG görüntülerin ve diğer grafik nesnelerin sıkıştırılması. Eh, tüm modern faks makineleri de 1952 yılında icat, kodlama kullanın. Kodun yaratılmasından bu yana çok zaman geçmesine rağmen, bugüne kadar en yeni kabuklarda ve eski ve modern tipte ekipmanlarda kullanılmaktadır.

Verimli kodlama prensibi

Huffman algoritmasının temeli bir şemadır.En olası, en çok karşılaşılan sembolleri ikili sistem kodlarıyla değiştirmeyi sağlar. Ve daha az yaygın olanları daha uzun kodlarla değiştirilir. Uzun Huffman kodlarına geçiş, yalnızca sistem tüm minimum değerleri kullandıktan sonra gerçekleşir. Bu teknik, orijinal mesajın bütün karakterleri için kod uzunluğunu bir bütün olarak en aza indirmenize izin verir.

Huffman algoritması
Önemli bir nokta, başlangıçtaharflerin oluşma olasılığını kodlayan zaten bilinmelidir. Son mesajın derleneceği budur. Bu verilere dayanarak, Huffman kod ağacı inşa edilir; bu esnada, arşivdeki harfleri kodlama işlemi gerçekleştirilir.

Huffman'ın kodu, örnek

Algoritmayı göstermek içinBir kod ağacının yapımının grafik bir versiyonu. Bu yöntemi kullanmak etkiliydi, bu yöntem kavramı için gerekli olan bazı değerlerin tanımını açıklığa kavuşturmak yararlıdır. Düğümden düğüme yönlendirilen ark kümesi ve düğümleri genellikle bir grafik olarak adlandırılır. Ağacın kendisi bir takım belirli özelliklere sahip bir grafiktir:

  • her bir düğümde yaylardan en fazla birini giremez;
  • düğümlerden biri ağacın kökü olmalı, yani arkın hiç girmemesi gerekir;
  • eğer kökten yaylar boyunca hareket etmeye başlarsa, bu süreç tüm düğümlerin içine girmeye izin vermelidir.

huffman örneği
Kodlarda yer alan böyle bir kavram var.Huffman, bir ağacın yaprağı gibi. Arkın kaçmaması gereken bir düğümdür. Eğer iki düğüm bir yay ile bağlanırsa, o zaman bunlardan biri arkın hangi düğümden geldiğine bağlı olan ebeveyn, diğeri ise diğeridir. İki düğüm aynı ana düğüme sahipse, genellikle fraternal düğümler olarak adlandırılır. Yapraklara ek olarak, düğümlerde birkaç tane yay varsa, bu ağaç ikili olarak adlandırılır. Bu tam olarak Huffman'ın ağacı. Bu yapının düğümlerinin özelliği, her ebeveynin ağırlığının tüm düğümlü çocukların ağırlığının toplamına eşit olmasıdır.

Huffman'a göre bir ağaç inşa etmek için algoritma

Huffman kodunun yapımı harflerden yapılırgiriş alfabesinin Gelecek kod ağacında serbest olan düğümlerin bir listesi oluşturulur. Bu listedeki her düğümün ağırlığı, bu düğüme karşılık gelen mesajın harfinin oluşma olasılığı ile aynı olmalıdır. Bu durumda, gelecekteki ağacın az sayıdaki serbest düğümleri arasında, en az ağırlık olanı seçilir. Aynı zamanda, eğer minimum göstergeler birkaç düğümde gözlemleniyorsa, o zaman çiftlerden herhangi birini serbestçe seçmek mümkündür.

Huffman kod yapısı
Sonra ebeveynin yaratılışıDüğüm, bu çift düğümün toplamı kadar tartılmalıdır. Bundan sonra, ebeveyn serbest düğümlerle listeye gönderilir ve çocuklar silinir. Aynı zamanda, yaylar karşılık gelen indeksleri, birleri ve sıfırları alır. Bu işlem, sadece bir düğüm bırakmak için gerektiği kadar tekrarlanır. Bundan sonra, ikili sayılar yukarıdan aşağıya doğru yazılır.

Sıkıştırma verimliliğini artırma

Sıkıştırma verimliliğini artırmak için, bu gereklidirbir ağaca bağlı belirli bir dosyada görünen harflerin olasılığına ilişkin tüm verileri kullanacak ve çok sayıda metin belgesi üzerinde dağılmasına izin vermeyecek bir kod ağacı oluşturma süresi. Bu dosyadan ilk kez yürürseniz, sıkıştırılacak bir nesneden hangi sıklıkta harflerle karşılaşıldığının istatistiklerini hemen hesaplayabilirsiniz.

Sıkıştırma işleminin hızlandırılması

Algoritmayı hızlandırmak için harflerin tanımıBu ya da bu mektubun meydana gelme olasılığı ve meydana gelme sıklığı ile ilgili göstergelerin yerine getirilmemesi gerekir. Bu sayede, algoritma daha basit hale gelir ve onunla çalışmak büyük ölçüde hızlanır. Bu ayrıca yüzen virgül ve bölümle ilişkili işlemleri önler.

dinamik Huffman kodu
Ayrıca, bu modda çalışarak, dinamikHuffman kodu veya daha doğrusu algoritmanın kendisi herhangi bir değişikliğe tabi değildir. Bu temelde olasılıkların frekanslara doğrudan doğruya doğru olması gerçeğinden kaynaklanmaktadır. Dosyanın veya kök düğümün son ağırlığının, işlenecek nesnenin harf sayısının toplamına eşit olması gerçeğine özellikle dikkat edilmeye değer.

Sonuç

Huffman'ın kodları - basit ve köklüBirçok tanınmış program ve şirket tarafından hala kullanılan algoritma. Sadeliği ve netliği, herhangi bir boyuttaki dosyalar için etkili sıkıştırma sonuçları elde etmeyi ve depolama diskinde kapladığı alanı önemli ölçüde azaltmayı mümkün kılar. Diğer bir deyişle Huffman algoritması, uzun zamandır incelenen ve iyi tasarlanmış bir şemadır;

Huffman kod kodlaması
Ve dosyaların boyutunu küçültme yeteneği sayesinde,Ağ üzerinden veya başka yollarla iletimleri daha basit, hızlı ve kullanışlı hale gelir. Algoritma ile çalışarak, yapısına ve kalitesine zarar vermeden, ancak dosyanın ağırlığını azaltmanın maksimum etkisiyle kesinlikle herhangi bir bilgiyi sıkıştırabilirsiniz. Diğer bir deyişle Huffman kod kodlaması, dosya boyutu sıkıştırmasının en popüler ve gerçek yöntemi olarak kaldı.

Devamını oku: