Kompresja danych przy użyciu liczb pierwszych


22

Niedawno natknąłem się na następujący interesujący artykuł, który twierdzi, że skutecznie kompresuje losowe zestawy danych o zawsze ponad 50%, niezależnie od rodzaju i formatu danych.

Zasadniczo używa liczb pierwszych do unikalnego skonstruowania reprezentacji 4-bajtowych fragmentów danych, które są łatwe do zdekompresowania, biorąc pod uwagę, że każda liczba jest unikalnym produktem liczb pierwszych. W celu powiązania tych sekwencji z liczbami pierwszymi wykorzystuje słownik.

Moje pytanie brzmi:

  • Czy to naprawdę możliwe, jak sugerują autorzy? Według artykułu ich wyniki są bardzo wydajne i zawsze kompresują dane do mniejszego rozmiaru. Czy rozmiar słownika nie będzie ogromny?
  • Czy nie można tego użyć do iteracyjnego ponownego skompresowania skompresowanych danych przy użyciu tego samego algorytmu? Jest oczywiste i zostało wykazane, że takie techniki (w których skompresowane dane są ponownie kompresowane tyle razy, ile to możliwe, radykalnie zmniejszając rozmiar pliku) są niemożliwe; w istocie nie byłoby bijectu między zbiorem wszystkich danych losowych a danymi skompresowanymi. Dlaczego więc wydaje się to możliwe?
  • Nawet jeśli technika ta nie jest jeszcze doskonała, można ją oczywiście zoptymalizować i znacznie ulepszyć. Dlaczego nie jest to bardziej znane / badane? Jeśli rzeczywiście te twierdzenia i wyniki eksperymentów są prawdziwe, czy nie zrewolucjonizuje to przetwarzania?

5
Jak zauważyłeś, gazeta wysuwa bardzo mocne twierdzenia. Zawsze bądź bardzo podejrzliwy wobec takich twierdzeń, szczególnie jeśli artykuł jest publikowany w dziwnym miejscu (niesamowite artykuły „rewolucjonizujące komputery” powinny pojawić się w szanowanych, dobrze znanych miejscach, prawda?).
Juho,

2
niemożliwe jest „zawsze kompresowanie danych losowych” na podstawie np . teorii złożoności Kołmogorowa . a dyspozycja jest podobna do tego, co naszkicowałeś. nie jestem pewien, czy jest to błędna interpretacja papieru lub oryginału. dlaczego nie wyróżniasz, skąd bierze się to konkretne roszczenie?
vzn

6
„Czy nie można tego użyć do iteracyjnego ponownego skompresowania skompresowanych danych przy użyciu tego samego algorytmu?” - Tak. Każdy algorytm, który twierdzi, że jest w stanie skompresować wszystkie dowolne dane, może być rekurencyjnie stosowany do własnych danych wyjściowych, tak że wszelkie dane są kompresowane do 0 bitów. Dlatego twierdzenie to jest niemożliwe.
Jörg W Mittag

1
@ JörgWMittag Mam algorytm, który pozwala wielokrotnie kompresować plik do niewielkiej liczby bitów, ale jest to bardzo niepraktyczne. Działa również tylko z plikami rozpoczynającymi się od 1 bitu: Traktuj cały plik jako dużą liczbę binarną, zmniejsz go, a następnie odrzuć początkowe zera. Aby zdekompresować, zwiększ go, w razie potrzeby dodając 1.
user253751,

3
Uwaga do siebie: nigdy nie zawracaj sobie głowy przesyłaniem dokumentów do czasopism Elsevier - nigdy.
500 - Błąd wewnętrznego serwera

Odpowiedzi:


34

zawsze kompresuj losowe zestawy danych o ponad 50%

To niemożliwe. Nie możesz kompresować losowych danych, potrzebujesz struktury, aby z nich skorzystać. Kompresja musi być odwracalna, więc nie można kompresować wszystkiego o 50%, ponieważ łańcuchów o długości jest znacznie mniej niż o długości .nn/2n

Z papierem wiąże się kilka poważnych problemów:

  • Używają 10 plików testowych bez wskazania ich zawartości. Czy dane są naprawdę losowe? Jak zostały wygenerowane?

  • Twierdzą, że osiągają współczynniki kompresji co najmniej 50%, podczas gdy ich dane testowe pokazują, że osiągają co najwyżej 50%.

Algorytm ten definiuje bezstratną strategię, która wykorzystuje liczby pierwsze występujące w systemie liczb dziesiętnych

  • Co? Liczby pierwsze to liczby pierwsze niezależnie od podstawy.

  • Problem nr 1 z dekompresją: rozkład na czynniki pierwsze jest trudnym problemem, jak to zrobić skutecznie?

  • Problem nr 2 z dekompresją ( to jest kicker ): mnożą liczby pierwsze razem, ale w ten sposób tracisz informacje o kolejności, ponieważ . Nie sądzę, że można w ogóle dekompresować za pomocą ich techniki.25=10=52

Nie sądzę, że ten papier jest bardzo dobry.


Z tego, co zrozumiałem, przechowują w słowniku kolejność ciągów o tej samej wielokrotności. Ale czy w losowych zestawach danych nie powinno to generować ogromnego słownika, biorąc pod uwagę, że istnieje wiele łańcuchów 4-bajtowych o wielokrotności 1 (lub równej wielokrotności)?
Klangen,

@Pickle Ich przykład ciąg „@THE” ma wielości 2. Nie widzę w jaki sposób można je zrekonstruować, w którym dwa miejsca słowo „ten” powinien iść.
Tom van der Zanden,

1
O, rozumiem. Dobra obserwacja. Rzeczywiście jest to poważny problem. Jak przyjęto ten artykuł do publikacji w czasopiśmie? Czy nie powinno być bardziej rygorystycznych recenzji?
Klangen,

4
@ Wybierz Tak, powinna być bardziej rygorystyczna recenzja. Jednak nie zawsze tak jest, czasami niedoświadczeni / leniwi / niekompetentni organizatorzy konferencji nie potrafią znaleźć na czas recenzentów. Istnieje wiele publikacji zawierających losowo generowane bełkoty, a jeden dziennik opublikował nawet artykuł zatytułowany „Usuń mnie ze swojej pieprzonej listy mailingowej” .
Tom van der Zanden

Hahaha, to niesamowite. Ale jednocześnie smutny.
Klangen,

15

Przejdę do Toma van der Zandena, który zdaje się czytać gazetę i odkrył słabość metody. Chociaż nie czytałem szczegółowo artykułu, wychodząc z abstraktu i tabeli wyników, wydaje się, że jest to całkowicie wiarygodne twierdzenie.

Twierdzą, że utrzymują spójny 50% współczynnik kompresji plików tekstowych (nie „wszystkich plików”), które, jak zauważają, są mniej więcej takie same jak LZW i około 10% gorsze niż (przypuszczalnie zerowego rzędu) kodowanie Huffmana. Kompresowanie plików tekstowych o 50% nie jest trudne do osiągnięcia przy użyciu stosunkowo prostych metod; jest to praca licencjacka na wielu kursach informatyki.

Zgadzam się, że artykuł nie jest zbyt dobry w stosunku do opublikowanych badań i nie sądzę, by dobrze oceniał recenzentów, że zostało to zaakceptowane. Poza oczywistymi brakującymi szczegółami, które uniemożliwiają odtworzenie wyników (np. Jakie były pliki tekstowe) i brak próby powiązania go z dziedziną kompresji, nie ma sensu, aby naprawdę rozumieli, co robi ich algorytm.

Witryna konferencji twierdzi, że przyjmuje współczynnik akceptacji 1: 4, co sprawia, że ​​zastanawiasz się, co odrzucili.


12

Ty pytasz:

  • Czy to naprawdę możliwe, jak sugerują autorzy? Według artykułu ich wyniki są bardzo wydajne i zawsze kompresują dane do mniejszego rozmiaru. Czy rozmiar słownika nie będzie ogromny?

Tak oczywiście. Nawet w przypadku ręcznie wybranego przykładu („SZYBKI SREBRNY lis skacze nad leniwym psem”) nie osiągają kompresji, ponieważ słownik zawiera każdy 4-bajtowy ciąg tekstu (minus 4 bajty za jedno powtórzenie „ THE „)… i„ skompresowana ”wersja tekstu musi zawierać cały słownik oraz wszystkie te bzdury z liczbami pierwszymi.

  • Czy nie można tego użyć do iteracyjnego ponownego skompresowania skompresowanych danych przy użyciu tego samego algorytmu? Jest oczywiste i zostało wykazane, że takie techniki (w których skompresowane dane są ponownie kompresowane tyle razy, ile to możliwe, radykalnie zmniejszając rozmiar pliku) są niemożliwe; w istocie nie byłoby żadnego bijectu między zbiorem wszystkich danych losowych a danymi skompresowanymi. Dlaczego więc wydaje się to możliwe?

Znowu wydaje się, że masz dobrą intuicyjną wiedzę na temat sytuacji. Intuicyjnie zorientowałeś się, że żaden schemat kompresji nie może być skuteczny na wszystkich wejściach, ponieważ gdyby tak było, moglibyśmy go stosować w kółko, aby skompresować dane wejściowe do jednego bitu - a potem do nicości!

Innymi słowy: po skompresowaniu wszystkich plików .wav do .mp3, nie uzyskasz żadnej poprawy ich rozmiaru poprzez skompresowanie ich. Jeśli Twój kompresor MP3 wykonał swoją pracę, nie będzie żadnych wzorów do wykorzystania przez kompresor ZIP.

(To samo dotyczy szyfrowania: jeśli wezmę plik zer i zaszyfruję go zgodnie z moim wybranym algorytmem kryptograficznym, wynikowy plik lepiej nie będzie podlegał kompresji , w przeciwnym razie mój algorytm szyfrowania wycieknie „wzorzec” na wyjście!)

  • Nawet jeśli technika ta nie jest jeszcze doskonała, można ją oczywiście zoptymalizować i znacznie ulepszyć. Dlaczego nie jest to bardziej znane / badane? Jeśli rzeczywiście te twierdzenia i wyniki eksperymentów są prawdziwe, czy nie zrewolucjonizuje to przetwarzania?

Te twierdzenia i wyniki eksperymentów nie są prawdziwe.

Jak już zauważył Tom van der Zanden, „algorytm kompresji” Chakraborty, Kar i Guchait ma wadę polegającą na tym, że nie tylko nie osiąga żadnego współczynnika kompresji, ale jest również nieodwracalny (w matematyce „nie bijective”): istnieją mnogość tekstów, które wszystkie „kompresują” do tego samego obrazu, ponieważ ich algorytm to w zasadzie mnożenie, a mnożenie jest przemienne.

Powinieneś czuć się dobrze, że intuicyjne zrozumienie tych pojęć doprowadziło cię natychmiast do właściwego wniosku. A jeśli możesz poświęcić czas, powinieneś współczuć autorom artykułu, którzy wyraźnie spędzili dużo czasu na myśleniu na ten temat, nie rozumiejąc go wcale.

Katalog plików jeden poziom powyżej opublikowanego adresu URL zawiera 139 „artykułów” o tej samej jakości, wszystkie najwyraźniej przyjęte w „Postępach międzynarodowej konferencji na temat nowych badań w dziedzinie informatyki, informacji, komunikacji i aplikacji”. Wydaje się, że jest to pozorna konferencja zwykłego typu. Celem takich konferencji jest umożliwienie nieuczciwym naukowcom domagania się „publikacji w czasopiśmie”, a jednocześnie pozbawienie skrupułów organizatorów do zarobienia mnóstwo pieniędzy. (Aby uzyskać więcej informacji na temat fałszywych konferencji, sprawdź ten wątek reddit lub różne posty StackExchange na ten temat .) W każdej dziedzinie istnieją fałszywe konferencje . Naucz się ufać swoim instynktom i nie wierzyć we wszystko, co czytasz w „postępowaniu konferencyjnym”, a wszystko będzie dobrze.


Dziękujemy za jasne określenie, dlaczego ten artykuł jest zwykłym gównem, i wyjaśnienie, jak to możliwe, że napisano go przede wszystkim i że udało mu się przejrzeć każdy rodzaj recenzji.
vaab

Dziękuję za zwięzłą odpowiedź. To naprawdę smutne, gdy nie można nawet ufać, że wpisy do dziennika zostaną przynajmniej przejrzane przez jakiegoś kolegę. To naprawdę rzuca dużo światła na fakt, że trzeba być czujnym nawet podczas czytania „rzekomych” publikacji w czasopismach naukowych. Można by pomyśleć, że takie artykuły podlegają nie tylko wzajemnej „analizie”, ale także minimalnej „analizie” rówieśniczej, jak to byłoby zwyczajowo w takich dziedzinach. Mam nadzieję, że stanie się to otwieraczem dla wielu osób.
Klangen

Dowiedziałem się dzisiaj, że istnieją co najmniej dwa amerykańskie patenty na podobne „nieskończone algorytmy kompresji”. Zobacz gailly.net/05533051.html
Quuxplusone

5

Entropia skutecznie ogranicza wydajność najsilniejszej możliwej kompresji bezstratnej. Dlatego nie ma algorytmu, który mógłby kompresować losowe zestawy danych o zawsze więcej niż 50%.


8
Nie istnieje nawet algorytm, który mógłby kompresować losowe zestawy danych o zawsze więcej niż 0,0000001%.
David Richerby

1

Metody kompresji, które można odtworzyć, na ogół znajdują wzór i wyrażają go w uproszczony sposób. Niektóre są bardzo sprytne, niektóre bardzo proste. W pewnym momencie nie ma wzorca. Proces (y) „zagotował” zestaw danych do najprostszego unikalnego wzorca. Wszelkie próby kompresji od tego momentu do przodu skutkują większym zestawem danych lub osłabiają wyjątkowość. W schematach kompresji liczb magicznych zawsze występuje wada, niewielka ręka lub strata. uważaj na każdy proces, który twierdzi, że nie wykonujesz najnowszej wersji WinZip lub RAR.


2
sss

1
@DavidRicherby, a następnie kompresja pustego ciągu powoduje utworzenie większego zestawu danych, jak twierdzi SkipBerne. Mimo to uważam, że jego odpowiedź powinna wyjaśnić, że mówi on o ponownej kompresji poprzednich danych wyjściowych przy użyciu tego samego algorytmu .
Ángel

2
@ Ángel SkipBerne twierdzi, że istnieją ciągi, których żaden algorytm nie może skompresować („ każda próba kompresji od tego momentu do przodu”, moje podkreślenie). To jest niepoprawne z tego powodu, który podam: dla każdego łańcucha istnieje algorytm, który kompresuje ten łańcuch.
David Richerby

Sposób, w jaki to interpretuję, SkipBerne twierdzi, że dla każdego algorytmu kompresji istnieje ciąg znaków, którego nie można wyrazić. Co jest prawdą. Ten nieściśliwy łańcuch będzie oczywiście różny dla różnych algorytmów.
Jose Antonio przywraca Monikę

@DavidRicherby Zgubiłeś kwantyfikatory - jest całkiem jasne, że SkipBerne napisał, że (dla każdej metody kompresji istnieje punkt, po którym nie ma kompresji), a nie to (jest punkt, po którym dla dowolnej metody kompresji występuje bez kompresji). Ta odpowiedź jest prawidłowa, ale nie dodaje niczego do starszych, lepiej napisanych odpowiedzi.
Gilles 'SO - przestań być zły'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.