Verinin kapladığı boyutu küçültmek için ardışık tekrarları sayı çiftlerine dönüştüren RLE ve frekanslara göre değişken bit uzunluğu atayan Değişken Uzunluklu Kodlama yöntemleridir.
Veri sıkıştırma, bilginin saklanması veya iletilmesi sırasında bellek/bant genişliği verimliliğini artırmayı hedefler. Kayıpsız sıkıştırma yöntemleri, orijinal veriyi bit kaybı olmadan tamamen geri yüklemeyi garanti eder.
RLE (Run-Length Encoding), veri içinde arka arkaya tekrar eden karakter gruplarını (örn. "AAAAA") karakter ve tekrar sayısı (örn. "A5" veya "5A") olarak kodlayan basit ve etkili bir yöntemdir. Özellikle piksellerin tekrar ettiği basit resimlerde veya seyrek verilerde çok başarılıdır.
Değişken Uzunluklu Kodlama (Variable-Length Encoding) ise verideki karakterlerin frekanslarını (görülme sıklıklarını) çıkarır. Çok sık geçen karakterlere kısa bit kodları (örn. "A" için "0"), nadir geçen karakterlere ise uzun bit kodları (örn. "Z" için "1101") atayarak genel bit yükünü optimize eder.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1// Run-Length Encoding (RLE)2function runLengthEncode(input: string): string {3 if (input.length === 0) return '';4 let encoded = '';5 let count = 1;6 for (let i = 0; i < input.length; i++) {7 if (i + 1 < input.length && input[i] === input[i + 1]) {8 count++;9 } else {10 encoded += input[i] + count;11 count = 1;12 }13 }14 return encoded;15}1617// Variable-Length static encoding map generator18function buildFrequencyMap(input: string): Record { 19 const freq: Record = {}; 20 for (const char of input) {21 freq[char] = (freq[char] ?? 0) + 1;22 }23 return freq;24}Sıkıştırma modunu ve metni noktalı virgülle ayırın. Modlar: RLE (Run-Length), VLE (Değişken Uzunluklu Huffman benzeri). Örnek: RLE; AAAABBBCCDAA
Sıkıştırma modunu ve metni noktalı virgülle ayırın. Modlar: RLE (Run-Length), VLE (Değişken Uzunluklu Huffman benzeri). Örnek: RLE; AAAABBBCCDAA
En İyi Durum: O(N) doğrusal sürede
Ortalama Durum: O(N + V log V) V: alfabe boyutu
En Kötü Durum: O(N + V log V)
O(V) frekans tablosu ve kod ağacı için - Bu algoritmanın karmaşıklığı belirtilmemiş.
Veri Sıkıştırma (Compression) Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: