Articles

Reddit-SiliconValleyHBO-czy ktoś koncepcyjnie rozumie kompresję middle out?

to nie jest prawdziwe, to jest zmyślone.

bezstratne algorytmy kompresji danych nie mogą zagwarantować kompresji dla wszystkich wejściowych zestawów danych. Innymi słowy, dla każdego bezstratnego algorytmu kompresji danych będzie zestaw danych wejściowych, który nie zmniejszy się podczas przetwarzania przez algorytm, a dla każdego bezstratnego algorytmu kompresji danych, który zmniejszy co najmniej jeden plik, będzie co najmniej jeden plik, który zwiększy. Można to łatwo udowodnić w matematyce elementarnej za pomocą argumentu zliczającego, w następujący sposób:

Załóżmy, że każdy plik jest reprezentowany jako ciąg bitów o dowolnej długości.Załóżmy, że istnieje algorytm kompresji, który przekształca każdy plik w plik wyjściowy, który nie jest dłuższy niż oryginalny plik, i że co najmniej jeden plik zostanie skompresowany w plik wyjściowy, który jest krótszy niż oryginalny plik.

niech M będzie najmniejszą liczbą taką, że istnieje plik F o długości bitów M, który kompresuje się do czegoś krótszego. Niech N będzie długością (w bitach) skompresowanej wersji F.

ponieważ N < M, każdy plik o długości N zachowuje swój rozmiar podczas kompresji. Istnieje 2N takich plików. Razem z F, tworzy to pliki 2N + 1, które wszystkie kompresują do jednego z plików 2n o długości N.

ale 2N jest mniejszy niż 2n+1, więc zgodnie z zasadą pigeonhole musi istnieć jakiś plik o długości N, który jest jednocześnie wyjściem funkcji kompresji na dwóch różnych wejściach. Tego pliku nie da się zdekompresować w sposób niezawodny(który z dwóch oryginałów powinien dać?), co przeczy założeniu, że algorytm był bezstratny.

musimy zatem stwierdzić, że nasza pierwotna hipoteza (że funkcja kompresji nie tworzy już pliku) jest z pewnością nieprawdziwa.

https://en.wikipedia.org/wiki/Lossless_compression#Limitations

https://en.wikipedia.org/wiki/Kolmogorov_complexity