Forum: Projeler dkv RSS
Veri Sıkıştırma Modülü
Sayfa:  önceki  1  2  3 
erdem (Moderatör) #31
Üye Tem 2009 tarihinden beri · 981 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 6936
erdem:
void harflereBöl (dstring metin)
{
    /* ... */
 
    foreach (karakter; metin) {
        if (karakter in harfler) {
            ++harfler[karakter];
        } else {
            harfler[karakter] = 1;
        }
    }

Bu arada Ali beyin verdiği ipucunu şimdi gördüm. Kod daha da basitleşmiş oldu.
    foreach (karakter; metin) {
        ++harfler[karakter];
    }
acehreli (Moderatör) #32
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 6936
erdem:
Huffman algoritmasını kodlarken çokuzluları kullanabilirmiydik acaba.

Tam olarak neresi için düşündüğünü bilmiyorum ama struct kullanılabilen her yerde çokuzlu da kullanılabilir.

Bir de bir karakterin ne kadar tekrarlandığı ya da frekansını kaydetmemize gerek var mı.

Benim de Huffman deneyimim yok ama en fazla kullanılan harfi '0' biti ile ifade edebilmek için frekansları öğrenmek gerek. Tabii eğer gönderen ve alan taraflar hangi kodun hangi harfe karşılık geldiği konusunda daha önceden anlaşmış iseler buna gerek kalmaz. Ama dediğim gibi, farklı yöntemleri olup olmadığını bile bilmiyorum.

Ali
Kadir Can #33
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Frekansları öğrenmeye bizim kullandığımız Huffman kodlamasında gerek oluyor; çünkü ben metne göre ağaç oluşturmayı tercih etmiştim.
Öte yandan yaptığım araştırmalar sırasında frekansları ölçmeyen örnekler de gördüm; ama bu örneklerde dile uygun frekanslar önceden belirtiliyordu. Yani İngilizce için kelimelerin çoğunluğunda geçen harfler daha önceden analiz edilmiş oluyor ve her seferinde aynı ağaç oluşturuluyordu.
Benim tercih ettiğim yöntem, metne en uygun sıkıştırmayı sağladığı için avantajlı; fakat oluşturduğumuz ağacı da veriye eklediğimiz için küçük metinlerde pek faydalı olmuyor. Oysa önceden ölçülmüş frekanslar sürekli aynı ağacı oluşturduğu için sadece metni göndermek yetiyor; ama bu sefer de sıkıştırma oranı azalabiliyor. ayrıca frekanslar önceden belirlendiyse program genellikle bir dile bağlı oluyor.
Bunların dışında bir de dinamik Huffman kodlaması var; burada ise karşı tarafa ağacı göndermiyoruz. Alıcı taraf, gönderdiğimiz metinde geçen baytların sıklığından yararlanarak kendi ağacını oluşturuyor. Ağaç göndermediğimiz için avantajlı; ama ağaç yanlış oluşturulursa verinin açılması pek mümkün görülmüyor.
İsteğe bağlı diyebiliriz. :)
Bu mesaj Kadir Can tarafından değiştirildi; zaman: 2012-07-18, 16:50.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2  3 
Forum: Projeler dkv RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-22, 12:30:07 (UTC -08:00)