Sıkıştırma Algoritmaları
Makale - Algoritma
Yazar ugokhan   
Pazartesi, 14 Mayıs 2007 18:45
Veri sıkıştırma işlemi, belirli uzunluktaki verilerin çeşitli yöntemlerle daha az bellek kullanılması amacıyla geliştirilmiştir. Bu sayede bellek üzerinde yer tasarrufu, veri aktarımında da zaman tasarrufu yapılabilmektedir.
Veri sıkıştırma yöntemleri iki grupta incelenir. Kayıplı ve Kayıpsız sıkıştırma. Kayıplı sıkıştırma daha çok multimedia verilerde kullanılır. Mpeg ve MP3 bunun en yaygın örneğidir. MP3'lerde insan kulağının duyamayacağı ses dalgaları kayıda alınmaz. Ayrıca JPEG resim sıkıştırma formatında da resim üzerinde belirli ara renk kayıpları olmaktadır.

İkinci tip sıkıştırma ise kayıpsız sıkıştırmadır. Özellikle sayısal sonuçların önemli olduğu durumlarda kullanılır. Mesela bir exe dosyayı sıkıştırdığımızda hiçbir verinin kaybolmasını istemeyiz. Çünkü birkaç byte'ın bile farklı olması exe'nin çalışmamasına yol açabilir. Yukarıda bahsedildiği gibi tüm Multimedia formatları kayıplı değildir. GIF ve PCX formatı kayıpsız olarak sıkıştırma yapabilmektedir.

1. RLE SIKIŞTIRMA ALGORİTMASI : En basit veri sıkıştırma yöntemidir. RLE (Run Lenght) yönteminde veriler adetleri tutularak sıkıştırılır.
RLE Algoritması

Kırmızı sayılar verilerin tekrar miktarını göstermektedir. Bu şekilde 33 karakterlik bir veri dizisi 18 karaktere sıkıştırılmıştır. Bu metod teoride doğrudur fakat pratikte o kadar da verimli değildir. Hatta orjinal veriden daha fazla yer kaplayabilme ihtimali de vardır. Eğer "A B A B A B" verisini sıkıştırmak istersek "1A 1B 1A 1B 1A 1B" şekline dönüştürmemiz lazım bu durumda 6 karakterlik veriyi 12 karaktere çıkarmış oluruz. Yani genişletmiş oluruz. Ayrıca çok uzun verilerde veri uzunluğu bilgisini Byte tipinden Word tipine çevirmek gerekir. Fakat 65535 karakterden uzun bir veriyle karşılaşılırsa yeni bir veri paketi oluşturmak gerekir. Yani 100 MB'ı sıkıştırcam diye bir bakmışsın 200MB'lık sıkıştırma dosyası oluşturmuşsun. Etkin bir metod değil. RLE metodu tekrarı fazla olan verilerde kullanıldığında başarılıdır. Tekrarsız verilerde ise kesinlikle uygun değildir. Fakat bir çok sıkıştırma tekniği bu metod üzerine kurulmuştur.

2. LWZ / HUFFMAN ALGORİTMASI : Sıkıştırma oranı en yüksek algoritmalardan biridir. Karşılaşılan veri katarları bir tabloda tutularak aynı veri katarı ile karşılaşıldığında sadece tablodaki numarası yazılarak veri kısaltılmış olur.

 

LWZ Algoritması

 

Yukarıdaki örnekte 34 byte'lık bir veri dizisi (20 + 8 = 28) byte uzunlukta sıkıştırılmıştır. Eğer aynı veriyi RLE metodu ile sıkıştırmış olsaydık 68 byte'lık bir veri elde edecektik. Yani tam 2 katına çıkaracaktık. LWZ / HUFFMAN algoritmasının başarı oranı, tekrarını bulabildiği daha uzun katarlar ile ölçülür. Yukarıdaki veri dizisi aşağıda daha iyi sıkıştırılmıştır. Bu sefer tekrarı olan daha uzun metin katarları seçilmiştir. Bu şekilde (17 + 6 = 23) byte uzunluk elde edilmiştir.

 

LWZ Algoritması

 

Alıntı : www.programlama.com

 

Yorum ekle

TCK'ya aykırı, yasadışı ve genel ahlaka aykırı yazılar ile konu dışında yazılar, istekler, spam ve reklam amaçlı mesajlar yazılması YASAKTIR. Bu tür yazılar görüldüğü anda tarafımdan silinecektir. Herhangi bir uygunsuzluğun olduğunu düşündüğünüz yazılar için lütfen bana eposta yoluyla haber veriniz.


Güvenlik kodu
Yenile