Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
148
Cevap
13533
Tıklama
0
Öne Çıkarma
Cevap: Histogram Based, Real Time Lossless Data Compression Algorithm λ∈[(ArgMax⇔>∀xω1) (4. sayfa)
G
6 yıl
Yüzbaşı

itiraz edenler zor olduğu için değil bunun fiziksel olarak imkansız olduğu için itiraz ediyor

1KB lık örnek dosyamız olsun bu dosyanın toplam olası kombinasyonu 2^(1024 * 8) yapar.

elimizde her biri 1KB lık 2^(1024 * 8) tane dosya olsun, her dosyanın içeriği bir birinden farklı olsun (yani olabilecek tüm kombinasyonlar)

her birini 1/8 oranında sıkıştırma yapmak demek, olası kombinasyonu 2^(1024 * 7) yapmak demek.

şimdi 2^(1024 * 7) kombinasyonu 2^(1024 * 8) kombinasyona çevir bakalım nasıl olacak. yapamazsın çünkü dosyaların 8 de biri aynı bitsel değerlere sahip.





< Bu mesaj bu kişi tarafından değiştirildi Guest-4D62BFE91 -- 1 Ocak 2020; 17:12:57 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @SEO19 @ayhanarican
A
6 yıl
Onbaşı

quote:

Orijinalden alıntı: ProjectMan

Bu mesaj silindi.
O benim için mesele bile değil. 4 bytelık işaretsiz bir tamsayının kare köküne en yakın sayı şu formül ile hesaplanabilir. Zaten buna totent deniyor ve şöyle hesaplanıyor.

var sqrt = Math.Pow(Math.E, BigInteger.Log(bigNumber) / 2);
var startNumber = Convert.ToUInt64(sqrt);

BigIteger.Log() yerine Math.Log da kullanılabilir.

Şu kodu incelersen anlayacaksın.

X ^ 2 + D yöntemini kullanıyoruz.

Sadece bu yöntemi kullanmak istersek.

Burada X'i hep asal seçip X'in asal indeksini saklarsak X için 13 bit, D için de 17 bit kullanabiliriz. D bu durumda en fazla 131071 olabilir. Eğer rastgele seçilmiş 4 byte lık N sayının %50'sinden fazlasını bu son yöntemde gösterebilirsen ki - bu olasılık hesaplanabilir - kesin bir sıkıştırma algoritması üretmiş oluruz.

Şu kodu incele anlayacaksın.
https://dotnetfiddle.net/m1RE5W



A
6 yıl
Onbaşı

quote:

Orijinalden alıntı: Guest-4D62BFE91

itiraz edenler zor olduğu için değil bunun fiziksel olarak imkansız olduğu için itiraz ediyor

1KB lık örnek dosyamız olsun bu dosyanın toplam olası kombinasyonu 2^(1024 * 8) yapar.

elimizde her biri 1KB lık 2^(1024 * 8) tane dosya olsun, her dosyanın içeriği bir birinden farklı olsun (yani olabilecek tüm kombinasyonlar)

her birini 1/8 oranında sıkıştırma yapmak demek, olası kombinasyonu 2^(1024 * 7) yapmak demek.

şimdi 2^(1024 * 7) kombinasyonu 2^(1024 * 8) kombinasyona çevir bakalım nasıl olacak. yapamazsın çünkü dosyaların 8 de biri aynı bitsel değerlere sahip.
Bu yazdıklarından bu konuda hiç bir halt bilmediğin anlaşılıyor. Üstüne bir de çok bilmişlik yapıyorsunuz.

1KB'da 2 ^ 1024 * 8 kombinasyon olabilir. 1KB ile 0 - (2 ^ 8192) - 1 arasındaki sayıları temsil edebilirsiniz.

Böyle büyüklükte bir sayıyı ifade etmek için 0 - (2 ^ 8192) - 1 arasındaki bütün asalların bir db'sini oluşturduysan ya da asallar için bir formül bulunursa ki - bulundu - kendisinden küçük sayıya en yakın asalın indeksi ve bu sayıdan farkını saklarsan ciddi oranda sıkıştırmış olursun.

Bu yöntem henüz bu aralık için asallarla çalışmanın donanımsal zorluklarından dolayı uygulanamıyor fakat çok yaknda uygulamaya alınacaktır.





< Bu mesaj bu kişi tarafından değiştirildi ayhanarican -- 1 Ocak 2020; 18:22:45 >
Bu mesaja 1 cevap geldi.
G
6 yıl
Yüzbaşı

bana işlemin nasıl yapılacağından bahsetme 2^(1024 * 7) kombinasyonu 2^(1024 * 8) kombinasyona nasıl çevireceksin onu söyle vahiymi gelecek?

1/8 oranında sıkıştırmadan sonra dosyaların 8 de biri aynı veriye sahip olacak aynı veriden farklı kombinasyon çıkma işi nasıl olacak?





< Bu mesaj bu kişi tarafından değiştirildi Guest-4D62BFE91 -- 1 Ocak 2020; 18:8:57 >


Bu mesajda bahsedilenler: @ayhanarican
G
6 yıl
Yüzbaşı

valla konuya yazsammı yazmasammı derken belki faydam olur birilerini bu boş hayallerden kurtarırım diye düşündüüm yazdım :) dediğin gibi çokmu zor bir dil öğrenmek bu gibi algoritmaları yazmak için dilin tamamını da öğrenmene gerek yok harcayacağın zaman 12 saati geçmez.





< Bu mesaj bu kişi tarafından değiştirildi Guest-4D62BFE91 -- 1 Ocak 2020; 19:38:42 >


Bu mesajda bahsedilenler: @Stack
S
6 yıl
Yüzbaşı

Bunlardan piyasada çok var Determinist. İşleri güçleri laf üretmek. Okudukları, gördükleri bir kaç şeyle adam olduk sanarlar. Ben Entropi diyorum, Kolmogorov Karmaşası diyorum tık yok. Adam işlem yaparken onu seçiyor bunu seçiyor, işine geldiği gibi gidiyor. Performansı geçtik, ulan bunun bir de kayıpsız geri çözümlemesi olacak. Yok şuna bakıyor yok buna bakıyor, daha ettiği masrafı düşünemiyor.

Neyse gösterecek uygulamasını ve kayıpsız çözümünü Excel de bize. Yoksa biz ona gösterecez artık


Bu mesaja 1 cevap geldi.
A
6 yıl
Onbaşı

Aşufte için özürümü sunarım demedim sayın. Ya da sen benim huyumu bilmem ne yapmış ol, falan.

Şimdi ispat niyetine bir iki kelâm edeyim.

1. Asal sayılarla sıkıştırma yöntemi

a. 1 Byte lık asal sıkıştırma
b. 4 byte lık asal sıkıştırma

2. X ^ 2 + D -> Tam kare uzaklığı ile gösterim.

X asal seçiyoruz ve 13 bit D ise 17 bit max: 131071

1. a.

0-255 arasında 54 adet asal sayı vardır. Bu rastgele seçilen N sayının yaklaşık %21 oranında asal byte içermesi anlamına gelir.

Tüm byte lara bakıyoruz asal ise 6 bit kullanarak 0-53 arasında bir sayıyla indeksleri saklıyoruz. Değilse aynen 8 bit olarak yazıyoruz. Elbette sıkıştırma yapıp yapmadığımızla ilgili olarak bir bit olmak üzere harita oluşturuyoruz ve bunu da verilere ekliyoruz.

Şimdi kullanılmayan 54-63 arası indeksler içinde yeni bir fırsat oluşuyor. Tüm byte ların frekanslarını çıkarıyoruz ve frekansı en yüksek asal olmayan 10 byte ı seçiyoruz. Sayı asal olmasa da kodlarken harita da bir gösterip bu frekans tablosundaki bu 10 sayıdan birine denk gelince 0-9 a karşılık 54-63 olarak bunu kodluyoruz. Böylece etkili bir sıkıştırma oluşturmuş oluyoruz.

Etkili bir sıkıştırma olabilmesi için en az kaç byte ın asal olması gerektiğini ya da frekans tablosundaki ilk 10 sayının dosyanın en az % kaçına denk gelmesi gerektiğini hesaplayabiliriz. Bunu size bırakıyorum.

1. b.

Sayıları 4'er byte lık bloklar haline getiriyoruz asal her sayıyı indeksiyle 28 bitte saklıyoruz çünkü bu aralıkta 203 milyon asal var. Yine dosya içerisindeki asal sayı oranı kritik önem taşıyor? En az kaç olmalı ki oluşturacağımız 1 bitlik haritayı içermesine rağmen kazanç sağlayabilsin bunu size soruyorum? Yine (2 ^ 28) - (bu aralıktaki asal sayısı - yaklaşık 203 milyon) ?? burada frekansı yüksek olan byte dizilerini saklamak için kullanabiliriz.

2 .

X ^ 2 + D

X'i daima asal seçiyoruz ve 65.5 binin üzerine asal indeksleri kullanarak 13 bit ile rahatlıkla ulaşıyoruz. D için 17 bit (131071) ayırıyoruz.

Şimdi soruyorum. Rastgele seçilen 4 byte lık N sayının % kaçını bu gösterimle sağlayabiliriz. Buna siz cevap verin. N / 2 den ne kadar fazla olabilir.


Bu mesaja 1 cevap geldi.
A
6 yıl
Onbaşı

quote:

Orijinalden alıntı: Stack

Bunlardan piyasada çok var Determinist. İşleri güçleri laf üretmek. Okudukları, gördükleri bir kaç şeyle adam olduk sanarlar. Ben Entropi diyorum, Kolmogorov Karmaşası diyorum tık yok. Adam işlem yaparken onu seçiyor bunu seçiyor, işine geldiği gibi gidiyor. Performansı geçtik, ulan bunun bir de kayıpsız geri çözümlemesi olacak. Yok şuna bakıyor yok buna bakıyor, daha ettiği masrafı düşünemiyor.

Neyse gösterecek uygulamasını ve kayıpsız çözümünü Excel de bize. Yoksa biz ona gösterecez artık
Kolmogorov Karmaşası bilinen yöntemler için bir bakış kazandırıyor. Bilmediğiniz yöntemler için bir anlam ifade edemez. Ya da her veri setini daha iyi sıkıştırabilen en az bir algoritma bulunabilir savından yola çıkarak bu tezi yumuşatabiliyoruz.



G
6 yıl
Yüzbaşı

quote:

0-255 arasında 54 adet asal sayı vardır. Bu rastgele seçilen N sayının yaklaşık %21 oranında asal byte içermesi anlamına gelir.

Tüm byte lara bakıyoruz asal ise 6 bit kullanarak 0-53 arasında bir sayıyla indeksleri saklıyoruz. Değilse aynen 8 bit olarak yazıyoruz. Elbette sıkıştırma yapıp yapmadığımızla ilgili olarak bir bit olmak üzere harita oluşturuyoruz ve bunu da verilere ekliyoruz.


huyunu sikerim için özrümü sunarım demedim say.

sadece şu kısımda kar yerine zarar ediyorsun asalsayıları indekslerken + 1 bit sıkıştırma yapıldımı yapılmadımı bilgisi ekliyorsun yani %21, 7 bit kullanacaksın %79, 9 bit kullanacaksın. gerisini okumadım.




Bu mesajda bahsedilenler: @ayhanarican
A
6 yıl
Onbaşı

Bu bit dizisinde bol sıfır olduğu için Huffman ya da LZ ile ekstra sıkıştırabiliyoruz. Sen oarayı kafana takma orada veri boyutu en az %70 kısalacak. Gerisini okumamak düşük zeka belirtisidir. Çözüme yönelik düşün sorunları birlikte çözelim.


Bu mesaja 1 cevap geldi.
G
6 yıl
Yüzbaşı

konunun buraya varacağı en başından belliydi. göstermeye çalıştığım şey bunun imkansız olduğuna dair somut delildi. neyse son mesajım olsun zaman israfına gerek yok.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ayhanarican
A
6 yıl
Onbaşı

quote:

Orijinalden alıntı: Guest-4D62BFE91

konunun buraya varacağı en başından belliydi. göstermeye çalıştığım şey bunun imkansız olduğuna dair somut delildi. neyse son mesajım olsun zaman israfına gerek yok.
Tamam geri zekalı değilsin, okuduğunu biliyorum. Amacım sana hakaret etmek değil biraz düşünmeni sağlamak.

Bit haritası veriyi 1/8 oranında artırırken asal byte lar 1 / 20 oranında azaltacak. öte yandan bit haritası sıkıştırıldığında

1 / 24 artacak ve 1 / 20 azalacak nihayetinde 1 / 24 artıp 1 / 20 azalan bir veri kısalacaktır.

Frekans tablosuna ve faydasına hiç girmiyorum.

Dizilime bakılmaksızın her hangi bir veri dizisini kısaltacak mükemmel bir yöntemdir. Lisanslanması gerekir.

1 + (1 / 24) - (1 / 20) = %99,1 sıkıştırma oranıyla ve defalarca kullanılabilmesi ile yeni neslin sıkıştırma formatları arasında yerini alabilir. :(

Bu kadar laf işittiğime değdi mi?





< Bu mesaj bu kişi tarafından değiştirildi ayhanarican -- 1 Ocak 2020; 22:16:49 >
Bu mesaja 1 cevap geldi.
A
6 yıl
Onbaşı

Jetonun köşelerini iyi zımparalayınca kimseden ses çıkmıyor. :)



T
6 yıl
Yarbay

Hm. Yaptım demekle olmaz. Yaptım dediğiniz bu yeni sıkıştırma yönteminin implementasyonu var mı yani indirip deneyebileceğimiz? Öyle birşey olsa birşey konuşmanıza gerek kalmaz zira ürününüzün kendisi konuşur.



< Bu ileti mini sürüm kullanılarak atıldı >

A
6 yıl
Onbaşı

quote:

Orijinalden alıntı: Guest-4D62BFE91

hala defalarca kullanmaktan bahsediyorsun, bu bir hayal anla artık. bunu sana daha sade bir şekilde anlatabilirdim ama harcayacağım zamana değmezsin.

sıkıştırma algoritman o kadar iyiki çıktı boyutu orijinal boyuttan büyük oluyor bunu da LZ ile ekstra küçültmeye çalışıyorsun.
Sen müneccim misin? Burada bahsi geçen konulara değinmeden bana neyi anlatacaksın? Kendinizi ne sanıyorsunuz? Kolmogorov karmaşası ve entropi konusunda ben zaten yeterince şey öğrendim fakat bunlar benim motivasyonumu tüketmedi daha efektif sonuçlar almamı sağladı. Siz siz olun bir şeyin olamayacağını yapılamayacağını söyleyenlere asla kulak asmayın. Belki insanlık tarihinin milyonda birini geride bıraktık. Bundan sonra neler olabileceğini ya da keşfedileceğini kim bilebilir?

"sıkıştırma algoritman o kadar iyiki çıktı boyutu orijinal boyuttan büyük oluyor bunu da LZ ile ekstra küçültmeye çalışıyorsun."

Defalarca yinelenebilen ve 1 kaç saniyede sonuç veren bir sıkıştırma algoritması için bu bir sorun değildir. Belirli sayıda yinelemeyi sağladığınızda oran çok ciddi artıyor. Elbette dosyanın boyutu artıncaya dek buna devam etmek gerekiyor. Bu tekrar sayısını kim bilebilir. İyi olmayan her algoritma başka algoritmalar ile sıkıştırılabiliyor fakat işlem süresi uzuyor. Böyle bir işlem süresi için çok ideal bir sıkıştırma oranıdır bu! 15 tekrarda hemen %87,5 oluverir.

Bana sıkıştırılamayacağı ile ilgili somut delil veremediğiniz sürece savım geçerli olacaktır.


Bu mesaja 1 cevap geldi.
A
6 yıl
Onbaşı

Ayrıca her dosyayı sıkıştırabileceğimi iddia etmiyorum. Frekans tablosu ortalama değere büyük uzaklıklar içeren dosyaları kesinlikle sıkıştırabilirim. Hem bununla 10 zip, rar, ya da 7zip dosyasından birini sıkıştırsam bu bile büyük başarıdır. Öyle değil mi?

Rastgele seçilen her N byte'ın %21'i asaldır. Sonra frekans tablosundaki her byte ın frekansı eşit olsa bile ki - bu mümkün değil - 10 / 256 = %4 de buradan gelecektir

Her 4 byte ın 1'ini 6 bite indirgeyebiliyorum ve haritada her 4 bitten 3'ü 0 ve 1'i 1 dolayısıyla sıkıştırılabilir, burada iki kere düşünüp, hesap yapıp bir kere yazın.





< Bu mesaj bu kişi tarafından değiştirildi ayhanarican -- 1 Ocak 2020; 23:23:14 >

O
6 yıl
Teğmen

Konudaki hiçbir şeyi okumadım ama sonsuz sıkıştırma imkansız diye biliyorum. Minimum entropi var bir veriyi max sikistirabilecegin ve kanıtı var bunun. Sonsuz değil ama belki optimal yolu bulmuş olabilirsin bakmak lazım.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
A
6 yıl
Onbaşı

quote:

Orijinalden alıntı: owoselammicsuedcheck

Konudaki hiçbir şeyi okumadım ama sonsuz sıkıştırma imkansız diye biliyorum. Minimum entropi var bir veriyi max sikistirabilecegin ve kanıtı var bunun. Sonsuz değil ama belki optimal yolu bulmuş olabilirsin bakmak lazım.
Sonsuz kelimesini asla kullanmadım, defalarca, tekrar tekrar dedim evet fakat zaten oran çok düşük bu çok normal böyle bir çok algoritma var zaten. Oranı düşük fakat sıkıştırma tekrarlanabiliyor.

Compression(byte[] bytes) 
{
BytelarınTekrarTablosunuYaniFrekansTablosunuOluştur();
var repeatBytes = BuradanEnçokTekrarEdenAsalOlmayan10tanesiniÇek()
var byteCount = DosyanınByteUzunluğunuGetir();
var current = 0;
while(current < byteCount)
{
var oneByte = DosyadanBirByteOku()
var writingByte = 0;
if(oneByte in repeatBytes) // En çok ekrar eden 10 byte dan biri mi?
{
// 54-63 arası indeksleri kullan
writingByte = repeatBytes.IndexOf(oneByte) + 54; index maksimum 9 olabilir
write6BitToBitStack(writingByte); // Dosyaya 6 bit olarak işle maksimum sayı 63 olabilir
}
else if(ISPrime(oneByte)) // Sayı asal mı?
{
// 0-53 arası indeksleri kullan zaten 0-255 aralığında 54 asal sayı var.
writingByte = PrimeIndex(oneByte); // Maksimum index 53 olabilir
write6BitToBitStack(writingByte); // Önce BitStack te tut en son kayıt edersin
}
else {
writingByte = oneByte;
write8BitToBitStack(writingByte); // 8 bit olarak aynen kayıt et.
}
current++;
}
// Yalnızca bit haritası sıkıştırılacak.
// Stack e kayıt yaparken her 6bit kayıt edilirken 1 diğer durumda 0 olarak kayıt yapıldı
// BitMap için Minumum %50 sıkıştırma oranı bekleniyor
CalculateBitMapBytesAndCompress() // Using Huffman or LZ4

Bitmap_in_Sıkıştırılmış_Boyutunu_Ençok_Tekrar_Eden_10_Byte_i_BitMap_i_BitStack_i_Dosyaya_Yaz(fileName+".ari") // Repeat Bytes only 10 bytes
}


Decompress i kendiniz hayal edin veri kaybı yok.





< Bu mesaj bu kişi tarafından değiştirildi ayhanarican -- 2 Ocak 2020; 1:27:53 >
Bu mesaja 1 cevap geldi.
T
6 yıl
Yarbay

Uzun uzun anlatmak yerine geliştirdiğin kodu GNU kodlama standartlarına uygun şekilde paketleyip yayınlamalısın.

program derlendiğinde oluşan binary ismi yenizip, format uzantısı .yz sıkıştırılacak örnek dosya adı da dizin.tar olsun, 2 temel opsiyonla (-c compress, -e extract) çalışması yeterli:

yenizip -c dizin.tar ==> dizin.tar.yz
yenizip -e dizin.tar.yz ==> dizin.tar

Herhangi bir sebepten (vakit yokluğu, motivasyon eksikliği, vs) yayınlayamıyorsan şöyle olur böyle olur diye anlatman gereksiz. sorunsuz derlenip deneyebileceğimiz birşey olmadığı sürece örnek / temsili kod vermen de gereksiz.



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @ayhanarican
A
6 yıl
Onbaşı

quote:

Orijinalden alıntı: Tuğkan-0153

Uzun uzun anlatmak yerine geliştirdiğin kodu GNU kodlama standartlarına uygun şekilde paketleyip yayınlamalısın.

program derlendiğinde oluşan binary ismi yenizip, format uzantısı .yz sıkıştırılacak örnek dosya adı da dizin.tar olsun, 2 temel opsiyonla (-c compress, -e extract) çalışması yeterli:

yenizip -c dizin.tar ==> dizin.tar.yz
yenizip -e dizin.tar.yz ==> dizin.tar

Herhangi bir sebepten (vakit yokluğu, motivasyon eksikliği, vs) yayınlayamıyorsan şöyle olur böyle olur diye anlatman gereksiz. sorunsuz derlenip deneyebileceğimiz birşey olmadığı sürece örnek / temsili kod vermen de gereksiz.
Neden gereksiz? Yapmadan önce tartışmak neden gereksiz olsun? Belki yapmadan önce biri işe yaramayacağını matematiksel olarak kesin bir ifadeyle dile getirir ve boşuna uğraşmamış olurum. Neden yapmadan önce tartışmayalım? Bu yanlış mı?

Kormogolov diye bir deli bir kuyuya taş atar ve sonra 40 akıllı çıkaramaz. Yine entropi taşları da öyle, bu konuda fikri olduğunu söyleyip ürün verenler değil, olamayacağını ezberlerinden söyleyenler çatlak, pesimist ve düşük zekalıdır.





< Bu mesaj bu kişi tarafından değiştirildi ayhanarican -- 2 Ocak 2020; 1:46:15 >
Bu mesaja 1 cevap geldi.