If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Bezstratna kompresja tekstu

Jak komputer może skompresować tekst? Oto wskazówka: wiele osób codziennie kompresuje tekst, kiedy piszą SMS-y i nie chcą dużo pisać.
Na przykład: jeśli chcę powiedzieć "Great, see you later!", mógłbym wpisać Gr8, see u l8r!"
Skróciłem ten tekst, szukając powtarzających się ciągów i zastępując je krótszymi ciągami ("8" i "u").

Algorytm kompresji

Komputery mogą skompresować tekst w podobny sposób, poprzez znalezienie powtarzających się sekwencji i zastąpienie ich krótszymi reprezentacjami. Nie muszą się martwić, czy wynik końcowy będzie brzmiał tak samo, więc mogą skompresować go jeszcze bardziej.
Spróbujmy z tym cytatem Williama Shakespeare'a:
to be or not to be, that is the question
Najbardziej oczywiste powtarzające się sekwencje to "to" i "be", więc komputer może je przedstawić za pomocą znaku, który nie jest częścią oryginalnego tekstu, jak:
⊜ ⬗ or not ⊜ ⬗, that is the question
Każda powtarzająca się sekwencja może zostać zastąpiona, nawet jeśli nie jest to całe słowo, więc komputer może również zastąpić "th":
⊜ ⬗ or not ⊜ ⬗, ⟡at is ⟡e question
Komputer musi również przechowywać tabelę wykonanych przez siebie zamienników, aby móc zrekonstruować oryginał.
zastąpienieoryginał
to
be
th
Sprawdź swoją wiedzę
Zobacz, czy znajdziesz sposób na skompresowanie tego fragmentu z Dr. Seussa:
I am Sam, 
Sam I am.
That Sam-I-am! That Sam-I-am!
I do not like that Sam-I-am! 
Do you like green eggs and ham?
I do not like them, Sam-I-am.
I do not like green eggs and ham.
Którą sekwencję można by zastąpić, aby skompresować tekst?
Zaznacz wszystkie odpowiedzi, które pasują:

Wielkość kompresji

Jak widzisz, niektóre teksty mogą być dość mocno skompresowane - więcej powtórzeń oznacza większą kompresję.
Niektóre teksty nie mogą być w ogóle skompresowane, jak alfabet:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
W rzeczywistości "skompresowana" wersja alfabetu może zajmować więcej bajtów niż wersja oryginalna, w zależności od tego, czy algorytm umieści w pliku dodatkowe metadane.
🤔 Czy możesz sobie wyobrazić inne przykłady tekstu, który nie zmniejszyłby się w wyniku kompresji? A co z przykładami, które naprawdę dobrze by się skompresowały?
Nie mamy nic przeciwko temu, że kompresja nie gwarantuje mniejszego pliku, ponieważ ogólnie rzecz biorąc, większość plików zawiera powtarzające się sekwencje i korzysta z kompresji.
🔍 Jeśli chciałbyś dowiedzieć się więcej na temat tego typu kompresji, możesz zbadać algorytm Lempel-Ziv-Welch (LZW).

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Masz pytania związane z tym zagadnieniem? Możesz zadać swoje pytanie poniżej!

Chcesz dołączyć do dyskusji?

Na razie brak głosów w dyskusji
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.