Kayıpsız veri sıkıştırma tekniğine dayanan bu yöntemde, birbirini tekrarlayan uzun sembol dizileri, bu sembolün bir örneği ve sembolün kaç kez tekrarlandığı yan yana yazılarak sıkıştırma yapılması amaçlanmıştır. Şöyle ki; bir sembol dizisi, 'L' tane 'S' sembolünün tekrarlanmasından oluşuyor ise, bu diziyi kısaca 'LS' şeklinde yazmak yeterli olacaktır... (Devam)
Örnek vermek gerekirse;
AAAAAAAABBBBBCCCkarakter dizisini şöyle gösterebiliriz:
8A5B3CBu şekilde bir gösterimle, toplam 16 karakterden oluşan bir diziyi, hiçbir kayıp yaşamadan 6 karakterden oluşan bir alana sıkıştırabiliyoruz. Bu karakterlerin yüzlerce kez tekrar ettiği bir diziyi ele aldığımızda, sıkıştırma oranının ne kadar yüksek olacağını öngörebilirsiniz.
Artık biraz Yazılım Yazalım! Buraya kadar anlattıklarımızı yerine getiren basit bir C# fonksiyonu yazmak gerekirse;
public string RLEencode(string input) { char tmp1, tmp2; string output; int i, count; output = ""; tmp1 = input[0]; tmp2 = tmp1; count = 1; for (i = 1; i < input.Length; i++) { tmp1 = input[i]; if (tmp1 != tmp2) { output += count.ToString() + tmp2; tmp2 = tmp1; count = 1; } else { count++; } } output += count.ToString() + tmp2; return (output); }
fonksiyonu yeterli olacaktır. Tabi ki bu kodlama fonksiyonunun oluşturduğu kodlanmış karakter dizisini orjinal haline geri döndüren bir de kod çözücü fonksiyonu olacaktır. Ben burada kod çözücü fonksiyonu yazmayacağım, bu kadar da hazırcı olmayalım değil mi?
Diğer taraftan, RLE tekniğinin her zaman bu kadar etkili olmayabileceğini de tahmin etmek zor değil. Karakterlerin tekrar etmediği bir diziyi ele alırsak;
ABCDEşeklindeki 5 karakterden oluşan dizi,
1A1B1C1D1Eşeklinde 10 karakterden oluşan bir dizi ile gösterilmelidir. Yani dizinin boyutunu %100 oranında artıran bir sıkıştırma uygulamış oluyoruz. Bu ve buna benzer durumlarla karşılaşan kişiler, temeli yukarıda anlattığımız gibi olan RLE tekniğine yeni özellikler katmışlar, yeni öneriler sunmuşlardır. İşte bu yüzden, temeli aynı olan farklı yöntemler geliştirilmiştir.
Gelecek yazımda, bu farklı RLE tekniklerine değinmeyi, getiri ve götürülerini derince incelemeyi planlıyorum.
Yeterince sade ve anlasilir. Cok kisiye faydasi olacak. Tesekkürler
YanıtlaSilTeşekkür ederim.
YanıtlaSil13 yıl sonra oldu. Teşekkürler
YanıtlaSil