Sıkıştırma Algoritmaları - Winzip/winrar nasıl çalışır?

PC hakkındaki genel bilgi ve ipucu paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
mayhemious
Kilobyte4
Kilobyte4
Mesajlar: 698
Kayıt: 17 Kas 2007, 13:14
cinsiyet: Erkek

Sıkıştırma Algoritmaları - Winzip/winrar nasıl çalışır?

Mesaj gönderen mayhemious »

Veri sıkıstırma islemi, belirli uzunluktaki verilerin çesitli yöntemlerle daha az bellek kullanılması amacıyla gelistirilmistir. Bu sayede bellek üzerinde yer tasarrufu, veri aktarımında da zaman tasarrufu yapılabilmektedir.
Veri sıkıstırma yöntemleri iki grupta incelenir. Kayıplı ve Kayıpsız sıkıstırma. Kayıplı sıkıstırma daha çok multimedia verilerde kullanılır. Mpeg ve MP3 bunun en yaygın örnegidir. MP3'lerde insan kulagının duyamayacagı ses dalgaları kayıda alınmaz. Ayrıca JPEG resim sıkıstırma formatında da resim üzerinde belirli ara renk kayıpları olmaktadır.

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

1. RLE SIKIsTIRMA ALGORİTMASI : En basit veri sıkıstırma yöntemidir. RLE (Run Lenght) yönteminde veriler adetleri tutularak sıkıstırılır.

Resim

Kırmızı sayılar verilerin tekrar miktarını göstermektedir. Bu sekilde 33 karakterlik bir veri dizisi 18 karaktere sıkıstırılmıstır. Bu metod teoride dogrudur fakat pratikte o kadar da verimli degildir. Hatta orjinal veriden daha fazla yer kaplayabilme ihtimali de vardır. Eger "A B A B A B" verisini sıkıstırmak istersek "1A 1B 1A 1B 1A 1B" sekline dönüstürmemiz lazım bu durumda 6 karakterlik veriyi 12 karaktere çıkarmıs oluruz. Yani genisletmis oluruz. Ayrıca çok uzun verilerde veri uzunlugu bilgisini Byte tipinden Word tipine çevirmek gerekir. Fakat 65535 karakterden uzun bir veriyle karsılasılırsa yeni bir veri paketi olusturmak gerekir. Yani 100 MB'ı sıkıstırcam diye bir bakmıssın 200MB'lık sıkıstırma dosyası olusturmussun. Etkin bir metod degil. RLE metodu tekrarı fazla olan verilerde kullanıldıgında basarılıdır. Tekrarsız verilerde ise kesinlikle uygun degildir. Fakat bir çok sıkıstırma teknigi bu metod üzerine kurulmustur.

2. LWZ / HUFFMAN ALGORİTMASI : Sıkıstırma oranı en yüksek algoritmalardan biridir. Karsılasılan veri katarları bir tabloda tutularak aynı veri katarı ile karsılasıldıgında sadece tablodaki numarası yazılarak veri kısaltılmıs olur.

Resim

Yukarıdaki örnekte 34 byte'lık bir veri dizisi (20 + 8 = 28) byte uzunlukta sıkıstırılmıstır. Eger aynı veriyi RLE metodu ile sıkıstırmıs olsaydık 68 byte'lık bir veri elde edecektik. Yani tam 2 katına çıkaracaktık. LWZ / HUFFMAN algoritmasının basarı oranı, tekrarını bulabildigi daha uzun katarlar ile ölçülür. Yukarıdaki veri dizisi asagıda daha iyi sıkıstırılmıstır. Bu sefer tekrarı olan daha uzun metin katarları seçilmistir. Bu sekilde (17 + 6 = 23) byte uzunluk elde edilmistir.

Resim

Alıntı : gokhanca.com
Kullanıcı avatarı
armorking
Megabyte1
Megabyte1
Mesajlar: 917
Kayıt: 27 Oca 2008, 18:54

Mesaj gönderen armorking »

çok güzel ve net bir açıklama .
Cevapla