Jump to content

Yeni bir kayıpsız sıkıştırma algoritması üzerinde çalışıyorum.


Recommended Posts

8 dakika önce, haci yazdı:

Kayıpsız sıkıştırmak mümkün değildir.

 

Neyi rastgele verileri mi, baytları mı? Tekrar edebilen kayıpsız sıkıştırma mı mümkün değil? Daha açık yazar mısın? Kayıpsız sıkıştırma mümkün olmaz olur mu? Elbette mümkün WinRAR, WinZip, 7zip gibi programlar ne işe yarıyor? Örneğin PAQ8 algoritması rastgele üretilen verileri bile sıkıştırabiliyor. 

 

"Kayıpsız sıkıştırmak mümkün değildir" de ne demek oluyor?

tarihinde John_Ahmet tarafından düzenlendi
Link to post
Sitelerde Paylaş
On 10.01.2020 at 10:56, John_Ahmet yazdı:

 

Neyi rastgele verileri mi, baytları mı? Tekrar edebilen kayıpsız sıkıştırma mı mümkün değil? Daha açık yazar mısın? Kayıpsız sıkıştırma mümkün olmaz olur mu? Elbette mümkün WinRAR, WinZip, 7zip gibi programlar ne işe yarıyor? Örneğin PAQ8 algoritması rastgele üretilen verileri bile sıkıştırabiliyor. 

 

"Kayıpsız sıkıştırmak mümkün değildir" de ne demek oluyor?

Sen bunun ne anlama geldiğini bile anlayamayacak kadar cahilsin.. Devri daim makinası yapmaya çalışıyorsun.

Link to post
Sitelerde Paylaş
  • 1 month later...
On 10.01.2020 at 18:50, haci said:

Kayıpsız sıkıştırmak mümkün değildir.

 

Doğru, eksiksiz geri kazanım demeleri gerek. Ama yabancı dilimize bir kez yerleşmiş. Sıkıştırmanın varsayımlarını kullanarak orjinal veriye eksiksiz geri ulaşmaya kayıpsız sıkıştırma deniyor. 

İlk duyduğumda bana da saçma gelmişti.

 

Gerçi ayak yerine popoya "bottom" diyen bir kültürden etimolojik doğruluk beklemenin alemi yok. 

 

tarihinde bayşapka tarafından düzenlendi
Link to post
Sitelerde Paylaş
On 11.01.2020 at 13:25, haci said:

Sen bunun ne anlama geldiğini bile anlayamayacak kadar cahilsin.. Devri daim makinası yapmaya çalışıyorsun.

 

"Kayıpsız sıkıştırma" mümkündür, ama önce terimleri karıştırmamak lazım. 

 

Basit örneği şudur. 0.333333333333333333333333333 gibi bir sayıyı, bir sürü basamak yerine 1/3 olarak 3 harfle gösterebilirsin. 

 

Sıkıştırma denen terimin, olayın aslı budur. Veriyi kaybetmez, yok edersin, onun yerine o veriyi oluşturacak bir formül koyarsın. Yani, sıkıştırma algoritması denen şey, istenen veriyi üretecek olan denklemi bulmak demektir. 

Link to post
Sitelerde Paylaş

Aşağıda sıkıştırmaya da değinen bana ait bir yazıyı bulacaksınız. Bayşapka ve Anibal'in değindiği kayıpsız sıkıştırma mümkündür.

Link to post
Sitelerde Paylaş
Bir saat önce, haci yazdı:

Zaten sıkıştırma kaybetme anlamında kullanılıyor. Kayıpsız sıkıştırma entropisi yüksek ve anlamsız bir kavram.

 

Saçmalardan seçmeler.

 

Herhangi bir byte dizisi ki bu dizi en az bir algoritma ile sıkıştırılabilir. Daha genel bir sıkıştırma algoritması için çeşitli yöntemler vardır. Ayrıca sıkıştırma oranı düşük olmakla birlikte tekrar edebilen sıkıştırma algoritmaları da vardır. Benim üzerinde çalıştığım bu türden bir sıkıştırma algoritmasıdır ve sıkıştırılmış dosyaları dahi sıkıştırabilmektedir.

 

Örneğin 4 bytelık veri bloklarını kendisinden bir küçük asal sayı ve farkı şeklinde ifade edebiliriz.

 

Bu asal sayıları seçerken de asal indeksleri de asal olan asal sayıları kullanırız ve sayıyı

 

Number = p(p(index)) + diff şeklinde ifade edip yalnızca index ve diff değerlerini saklarız.

 

diff değerlerinin küçük olduğu bir dizi için başarılı bir sıkıştırma sağlanabilir.

 

 

 

Link to post
Sitelerde Paylaş
20 dakika önce, mirasyedi yazdı:

Kayıpsız sıkıştırma algoritması örnekleri verin.

Açık kaynak yazılımlarda bile kapalı kodlar var.(Örneğin kütüphaneler)

 

 

LZW ve LZ türevleri, Huffman, PQ serisi algoritmalar vb...

 

LZ türevi algoritmalar sözlük kullanır ve birbiri ardına tekrar eden byteları esas alır. Huffman ise dizideki byte ların frekanslarını esas alır. PQ serisi algoritmalar çok daha karmaşıktır ve bit operatörleri de kullanarak çok kompleks bir algoritma ile çok yavaş olsa da bilinen sıkıştırma algoritmaları ile sıkıştırılmış verileri dahi sıkıştırabilirler.

 

Bu konu daha üzerine çok fazla çalışma gerektiren bir konudur ve ileride tek başına bir meslek olacaktır. Artık veri çağına girdik ve bu verileri etkili şekilde arşivleyecek kayıpsız sıkıştırma algoritmaları kullanan sistemlere ve bu sistemlerde uzman olacak kişilere olan ihtiyaç gün geçtikçe artmaktadır.

 

tarihinde John_Ahmet tarafından düzenlendi
Link to post
Sitelerde Paylaş
On 19.02.2020 at 23:49, John_Ahmet yazdı:

 

 

LZW ve LZ türevleri, Huffman, PQ serisi algoritmalar vb...

 

LZ türevi algoritmalar sözlük kullanır ve birbiri ardına tekrar eden byteları esas alır. Huffman ise dizideki byte ların frekanslarını esas alır. PQ serisi algoritmalar çok daha karmaşıktır ve bit operatörleri de kullanarak çok kompleks bir algoritma ile çok yavaş olsa da bilinen sıkıştırma algoritmaları ile sıkıştırılmış verileri dahi sıkıştırabilirler.

 

Bu konu daha üzerine çok fazla çalışma gerektiren bir konudur ve ileride tek başına bir meslek olacaktır. Artık veri çağına girdik ve bu verileri etkili şekilde arşivleyecek kayıpsız sıkıştırma algoritmaları kullanan sistemlere ve bu sistemlerde uzman olacak kişilere olan ihtiyaç gün geçtikçe artmaktadır.

 

örnek verin  derken açık kod yada algoritma demek istedim.

slaytlarda  sınırlı bilgi veriyorlar.

Sözlük karşı tarafa nasıl iletiliyor yazmıyorlar.

sözlükte yer alan karekter veya karekter grupları sayısı 256 aşarsa ne yapılıyor anlatmıyorlar.

 

sendende şikayetçiyim.programını yazıp yayınlamıyorsun.Verimli olup olmadığını göremedik. :)

Link to post
Sitelerde Paylaş
9 saat önce, mirasyedi yazdı:

örnek verin  derken açık kod yada algoritma demek istedim.

slaytlarda  sınırlı bilgi veriyorlar.

Sözlük karşı tarafa nasıl iletiliyor yazmıyorlar.

sözlükte yer alan karekter veya karekter grupları sayısı 256 aşarsa ne yapılıyor anlatmıyorlar.

 

sendende şikayetçiyim.programını yazıp yayınlamıyorsun.Verimli olup olmadığını göremedik. :)

 

Aradığın sıkıştırma algoritmasının başına ararken "github" keyword unu ekle çıkan sonuçlardan github.com sitesinin linklerini açarak kodları inceleyebilirsin.

 

https://github.com/lz4/lz4

 

https://github.com/gyaikhom/huffman

 

https://github.com/hxim/paq8px

 

huffman kodu oldukça basit ve anlaşılır. Onu inceleyebilirsin. LZ serisinde sözlük dosyada saklanmaz.

 

Mevcut işlerden dolayı ilgilenemiyorum. Kazanç olduğunu tespit edip taslak kodları hazırlamıştım. Kazanç hesaplama adımlarını da tamamladım. Şimdi GNU standartlarında kodu yazmak kaldı. Onu da yazar paylaşırım.

tarihinde John_Ahmet tarafından düzenlendi
Link to post
Sitelerde Paylaş

Bir bilgisayar mühendisi olarak yardımcı olmak isterdim ama kayıpsız sıkıştırmanın entropi gereği mümkün olmadığı açıktır. Daha ayrıntılı bilgi için Entrophy and File Compression diye Google üzerinden araştırma yapabilirsin. Dosya sıkıştırma konusunda entropi limitine gerçekten çok yaklaştığımızı düşünürsek senin buluşun sonuçsuz kalacaktır.

 

Yine de çabaların boşa değil, gerçekten inanılmaz deneyim elde etmeni sağlar ve seni bambaşka seviyeye taşır ki bu ülkenin senin gibilere ihtiyacı olduğunu açıkça ifade edebilirim.

Link to post
Sitelerde Paylaş
On 21.02.2020 at 03:07, mirasyedi said:

örnek verin  derken açık kod yada algoritma demek istedim.

slaytlarda  sınırlı bilgi veriyorlar.

Sözlük karşı tarafa nasıl iletiliyor yazmıyorlar.

sözlükte yer alan karekter veya karekter grupları sayısı 256 aşarsa ne yapılıyor anlatmıyorlar.

 

sendende şikayetçiyim.programını yazıp yayınlamıyorsun.Verimli olup olmadığını göremedik. :)

 

Önce sıkıştırma olayını anlaman lazım. 

 

Bunun içinde olan bitenin sıkıştırma olmadığını anlaman lazım. Ortada mevcut veriyi ezip, büküp küçültme gibi bir şey yok. Olan şey, mevcut veriyi elde edebileceğin ve daha küçük yer kaplayan bir denklem üretmek, basit tarifle olan bu. Yani, asıl veri ile sıkıştırılmış verinin aslen alakası yoktur, ortada yeni, başka bir veri vardır. Bu yeni veri "işlenerek", yani hesaplanarak vs. o orijinal verinin aynısı elde edilebilir. 

 

Şimdi şu yazdığın mesaja bak. Oradaki tüm harfler 8 bitle saklanıyor. Şimdi bak orada en çok geçen harf, harfler ne. O harfleri 2 bit ile gösterdiğini farzet. En çok kullanılan harf için en az bit sayısını düşün. Böylece daha az bitle, aynı mesajı gösterebilirsin... Hayır gösteremezsin, oradaki hangi iki bit nedir, necidir, bunu bilip gösterecek bir bilgisayar yok. Bu senin mesajındı, yani bu mesajdaki en çok geçen harf, benim mesajımda en çok geçen harfle aynı olmayacaktır, o yüzden öyle sıkışmış veriyi ahanda bu şu harf diye işleyemezsin basitçe. Fakat, uygun kodu koyar, o bitleri tekrar eski 8 bit hallerine getirir ve burada gösterebilirsin.

 

İşte algoritma dediğin o şeyler, bu işi yapan kodlar. 

 

 

Link to post
Sitelerde Paylaş
  • Konuyu Görüntüleyenler   0 kullanıcı

    Sayfayı görüntüleyen kayıtlı kullanıcı bulunmuyor.

×
×
  • Yeni Oluştur...