Aritmetik Kodlama ile Veri Sıkıştırma

1 3.883

Merhaba arkadaşlar, bu yazımızda sizinle temel matematik işlemlerinden oluşan bir veri sıkıştırma metodu üzerine konuşacağız. Bu metodumuzun adı aritmetik kodlama ve sadece 4 işlem kullanarak veriyi sıkıştıracağız. Çok ilginç değil mi?

Algoritmayı kısaca özetleyip daha sonra pekişmesi açısından örneklerle açıklayacağım. Algoritmamızın mantığı elimizdeki veriyi 0 ile 1 arasındaki bir reel sayı ile tanımlamaktır. Elimizde verilerin sıklık olasılıkları yani frekansları bulunur. İlk başta aradığımız sayı 0 ile 1 arasında bir reel sayı iken verilerin frekansları bu olasılığı azaltır. Tüm veriler işlendiğinde elimizde olan sayı aralığı verimizi temsil eden sayıdır. Yani veri server üzerinde sıkıştırılıp networke reel bir sayı gönderilir.

Gelin bir örnek üzerinden açıklayalım bunu. Elimizde 3 harfli {a1, a2, a3} bir alfabemiz olsun ve de biz “a2a2a2a3” kelimesini sıkıştırmak istiyoruz. Bu harflerin verinin tamamında bulunma olasılıkları ise P(a1)=0.4, P(a2)=0.5, P(a3)=0.1 olsun. Şimdi gelelim işlemlere;

a1 = [0, 0.4), a2=[0.4, 0.9), a3=[0.9, 1.0)

Yukarıdaki tanımlamaya göre verimizi sıkıştıralım. İlk harfimiz a2 harfi ve aralığımız [0.4, 0.9) aralığına indirgendi. İndirgenen aralık da 3 parçaya bölünür. a2 için hesaplarsak alt aralık (0.4+(0.9-0.4)*0.4=)0.6 üst aralık ise (0.4+(0.9-0.4)*=)0.85 olarak tanımlanır. BuBir sonraki a2 işlemi için aralık [0.7, 0.825) indirgenir. Ve son olarak a3 için aralık [0.8125, 0.8250) olarak tanımlanır. Bu aralıktaki herhangi bir reel sayı bizim metnimizi temsil eden sayıdır.

Evet arkadaşlar gayet basit, temel düzey matematik işlemleriyle elimizdeki veriyi sıkıştırmış olduk. Uzunca bir metni bir sayı ile ifade edip çözümleyebiliriz. İşlem karmaşıklığı O(n) seviyesinde olduğu için sıkıştırma ve açma işlemleri karmaşık değildir. Ama burdaki asıl anlatmak istediğim temel düzey matematik işlemleriyle veriyi sıkıştırmamız. Okullarda neden anlatılmasın?

Bir sonraki yazımızda görüşmek üzere….

 

1 Comment
  1. balinda says

    Mümkünse bu şekilde anlatılmasın. Hiç açık değil

Email adresiniz yayınlanmayacaktır.