Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°

Алгоритм LZW

НСпосрСдствСнным ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠΌ LZW являСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ LZ78, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Абрахамом Π›Π΅ΠΌΠΏΠ΅Π»Π΅ΠΌ (Abraham Lempel) ΠΈ Π―ΠΊΠΎΠ±ΠΎΠΌ Π—ΠΈΠ²ΠΎΠΌ (Jacob Ziv) Π² 1978 Π³. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ воспринимался ΠΊΠ°ΠΊ матСматичСская абстракция Π΄ΠΎ 1984 Π³., ΠΊΠΎΠ³Π΄Π° Π’Π΅Ρ€Ρ€ΠΈ Уэлч (Terry A. Welch) ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» свою Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΌ Π² дальнСйшСм Π½Π°Π·Π²Π°Π½ΠΈΠ΅ LZW (Lempelβ€”Zivβ€”Welch).

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZW ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΎ большоС Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ Π½Π° всСх спСциалистов ΠΏΠΎ ΡΠΆΠ°Ρ‚ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π—Π° этим послСдовало большоС количСство ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΡ… стСпСнСй сТатия срСди Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сТатия графичСских Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌ отсутствии ΠΏΠΎΡ‚Π΅Ρ€ΡŒ ΠΈΠ»ΠΈ искаТСний Π² исходных Ρ„Π°ΠΉΠ»Π°Ρ…. Π’ настоящСС врСмя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π°Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° TIFF, PDF, GIF, PostScript ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ отчасти Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… популярных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ… (ZIP, ARJ, LHA).

ОписаниС [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠŸΡ€ΠΎΡ†Π΅ΡΡ сТатия выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ символы Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, сущСствуСт Π»ΠΈ Π² созданной Ρ‚Π°Π±Π»ΠΈΡ†Π΅ строк такая строка. Если такая строка сущСствуСт, считываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ, Π° Ссли строка Π½Π΅ сущСствуСт, Π² ΠΏΠΎΡ‚ΠΎΠΊ заносится ΠΊΠΎΠ΄ для ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ строки, строка заносится Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π° поиск начинаСтся снова.

Для дСкодирования Π½Π° Π²Ρ…ΠΎΠ΄ подаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСкст, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ LZW ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ прСобразования нСпосрСдствСнно ΠΏΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ тСксту. Алгоритм Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄ Π·Π° счСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° гСнСрируСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, новая строка добавляСтся Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ строк. LZW постоянно провСряСт, являСтся Π»ΠΈ строка ΡƒΠΆΠ΅ извСстной, ΠΈ, Ссли Ρ‚Π°ΠΊ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, каТдая строка Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² СдинствСнном экзСмплярС ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΠΎ врСмя получСния Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° гСнСрируСтся новая строка, Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΡƒΠΆΠ΅ извСстного, строка извлСкаСтся ΠΈΠ· словаря.

Алгоритм [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π‘ΠΈΠΌΠ²ΠΎΠ»Π‘ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ кодКод
a0000
b0011
c0102
d0113
e1004

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π·Π°Ρ€Π°Π½Π΅Π΅ извСстно ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСго [math]5[/math] Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… символов, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, для ΠΈΡ… хранСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ минимальноС количСство Π±ΠΈΡ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π½Π°ΠΌ ΠΈΡ… Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ [math]3[/math] ( [math]8[/math] Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ).

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π—Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΆΠ΅ сообщСниС Ρ‚Π°ΠΊ ΠΆΠ΅ сначала ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Ρ‚Ρ€Π΅Ρ…Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ, Π° ΠΏΡ€ΠΈ появлСнии Π² словарС восьмого слова β€” Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ, ΠΈΡ‚ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π° сообщСния составила [math]4 \cdot 3 + 7 \cdot 4 = 40[/math] Π±ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π° [math]8[/math] Π±ΠΈΡ‚ ΠΊΠΎΡ€ΠΎΡ‡Π΅ исходного.

Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ LZW Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для дСкомпрСссии Π½Π°ΠΌ Π½Π΅ Π½Π°Π΄ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ строк Π² Ρ„Π°ΠΉΠ» для распаковки. Алгоритм построСн Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π² состоянии Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ строк, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ ΠΊΠΎΠ΄ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ сообщСниС, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅, ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи словаря ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π° Ρ…ΠΎΠ΄Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… записСй. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² процСссС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Ρ‹ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ символа, Ρ‚.Π΅. это происходит β€œΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎβ€.

ДанныСНа выходСНовая запись
Π‘ΠΈΡ‚Ρ‹ΠšΠΎΠ΄ΠŸΠΎΠ»Π½Π°ΡΠ§Π°ΡΡ‚ΠΈΡ‡Π½Π°Ρ
0000a5:a?
0011b5:ab6:b?
0000a6:ba7:a?
0102c7:ac8:c?
01015ab8:ca9:ab?
00000a9:aba10:a?
00113d10:ad11:d?
10019aba11:da12:aba?
10008ca12:abac13:ca?
01106ba13:cab14:ba?
01004e14:bae

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ дСйствия:

ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ строку, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°ΠΌ строки ΠΈ символа, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅.

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π€ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°

БловоНомСр Π² словарС
a[math]\langle0\rangle[/math]
b[math]\langle1\rangle[/math]
c[math]\langle2\rangle[/math]
d[math]\langle3\rangle[/math]
e[math]\langle4\rangle[/math]
ВСкущая строкаВСкущий ΡΠΈΠΌΠ²ΠΎΠ»Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Π’Ρ‹Π²ΠΎΠ΄Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ
ΠšΠΎΠ΄Π‘ΠΈΡ‚Ρ‹
aaaa00005:aa
aaaa
aaaaa51016:aaa
aaa
aaaa
aaaaa
aaaaaa61107:aaaa
aaa
aaaa
aaaaa
aaaaaa71118:aaaaa

Мало Ρ‚ΠΎΠ³ΠΎ, описанноС Π²Ρ‹ΡˆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ кодирования ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ подряд ΠΈΠ΄ΡƒΡ‰ΠΈΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ символам, Π½ΠΎ ΠΈ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ добавляСмый символ Ρ€Π°Π²Π΅Π½ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ символу Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Алгоритмы сТатия Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ, Ρ‡Π°ΡΡ‚ΡŒ 2

Π’Π΅Ρ…Π½ΠΈΠΊΠΈ сТатия Π΄Π°Π½Π½Ρ‹Ρ…

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½ сСрий (RLE)

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Он замСняСт сСрии ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов числом, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΌ Π΄Π»ΠΈΠ½Ρƒ сСрии, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ΄Ρ‘Ρ‚ сам символ. ПолСзСн для сильно ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΈΠΏΠ° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ с большим количСством ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… пиксСлСй, ΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° BWT.

На Π²Ρ…ΠΎΠ΄Π΅: AAABBCCCCDEEEEEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅: 3A2B4C1D6E38A

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π‘Π°Ρ€Ρ€ΠΎΡƒΠ·Π°-Π£ΠΈΠ»Π΅Ρ€Π° (BWT)

Алгоритм, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹ΠΉ Π² 1994 Π³ΠΎΠ΄Ρƒ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠΎ трансформируСт Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ повторСния ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов. Π‘Π°ΠΌ ΠΎΠ½ Π½Π΅ сТимаСт Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ… для Π±ΠΎΠ»Π΅Π΅ эффСктивного сТатия Ρ‡Π΅Ρ€Π΅Π· RLE ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия.

β€” создаём массив строк
β€” создаём всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ прСобразования входящСй строки Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сохраняСм Π² массивС
β€” сортируСм массив
β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ послСдний столбСц

Алгоритм Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ со мноТСством ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ символов. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° подходящСм массивС Π΄Π°Π½Π½Ρ‹Ρ… (& ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°)

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π€ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°

Благодаря Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов, Π²Ρ‹Π²ΠΎΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ для сТатия RLE, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Ρ‘Ρ‚ Β«3H&3AΒ». Но Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊ соТалСнию, Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ получаСтся.

Π­Π½Ρ‚Ρ€ΠΎΠΏΠΈΠΉΠ½ΠΎΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Энтропия Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ минимальноС количСство Π±ΠΈΡ‚, Π² срСднСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для прСдставлСния символа. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ЭК ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ модСль ΠΈ сам ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ. Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» парсится для построСния стат.ΠΌΠΎΠ΄Π΅Π»ΠΈ, состоящСй ΠΈΠ· вСроятностСй появлСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… символов. Π—Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ модСль, опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ символу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ самыС часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π±Ρ‹Π»ΠΈ прСдставлСны самыми ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Алгоритм Π¨Π΅Π½Π½ΠΎΠ½Π° β€” Π€Π°Π½ΠΎ

Одна ΠΈΠ· самых Ρ€Π°Π½Π½ΠΈΡ… Ρ‚Π΅Ρ…Π½ΠΈΠΊ (1949 Π³ΠΎΠ΄). Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ для прСдставлСния вСроятностСй появлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· символов. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ самыС часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π°Π²Π΅Ρ€Ρ…Ρƒ Π΄Π΅Ρ€Π΅Π²Π°, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Код для символа получаСтся поиском ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ, ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ 0 ΠΈΠ»ΠΈ 1, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ΄Ρ‘ΠΌ ΠΌΡ‹ Π½Π°Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΎ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡƒΡ‚ΡŒ ΠΊ β€œΠβ€ – Π΄Π²Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π½Π°Π»Π΅Π²ΠΎ ΠΈ ΠΎΠ΄Π½Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ, Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Β«110Β». Алгоритм Π½Π΅ всСгда Π΄Π°Ρ‘Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΈΠ·-Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ построСния Π΄Π΅Ρ€Π΅Π²Π° снизу Π²Π²Π΅Ρ€Ρ…. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, подходящий для Π»ΡŽΠ±Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π€ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°

1. парсим Π²Π²ΠΎΠ΄, считаСм количСство Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ всСх символов
2. опрСдСляСм Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ появлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…
3. сортируСм символы ΠΏΠΎ вСроятности появлСния
4. Π΄Π΅Π»ΠΈΠΌ список ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сумма вСроятностСй Π² Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π²Π½ΡΠ»ΠΎΡΡŒ суммС Π² ΠΏΡ€Π°Π²ΠΎΠΉ
5. добавляСм 0 ΠΈΠ»ΠΈ 1 для Π»Π΅Π²Ρ‹Ρ… ΠΈ ΠΏΡ€Π°Π²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² соотвСтствСнно
6. повторяСм шаги 4 ΠΈ 5 для ΠΏΡ€Π°Π²Ρ‹Ρ… ΠΈ Π»Π΅Π²Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ «листом»

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Π­Ρ‚ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ энтропийного кодирования, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ схоТим с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ строится свСрху Π²Π½ΠΈΠ·, для достиТСния ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

1. ΠŸΠ°Ρ€ΡΠΈΠΌ Π²Π²ΠΎΠ΄, считаСм количСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ символов
2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ появлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа
3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ список ΠΏΠΎ вСроятностям (самыС частыС Π²Π½Π°Ρ‡Π°Π»Π΅)
4. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ листы для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа, ΠΈ добавляСм ΠΈΡ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ
5. ΠΏΠΎΠΊΠ° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ состоит Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа:
β€” Π±Π΅Ρ€Ρ‘ΠΌ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π΄Π²Π° листа с наимСньшими вСроятностями
β€” ΠΊ ΠΊΠΎΠ΄Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠΉ прибавляСм 0, ΠΊ ΠΊΠΎΠ΄Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ – 1
β€” создаём ΡƒΠ·Π΅Π» с Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ, Ρ€Π°Π²Π½ΠΎΠΉ суммС вСроятностСй Π΄Π²ΡƒΡ… Π½ΠΎΠ΄
β€” ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π½ΠΎΠ΄Ρƒ вСшаСм Π½Π° Π»Π΅Π²ΡƒΡŽ сторону, Π²Ρ‚ΠΎΡ€ΡƒΡŽ – Π½Π° ΠΏΡ€Π°Π²ΡƒΡŽ
β€” добавляСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ
6. ПослСдняя Π½ΠΎΠ΄Π° Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Π½Π΅ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°.

АрифмСтичСскоС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1979 Π³ΠΎΠ΄Ρƒ Π² IBM для использования Π² ΠΈΡ… ΠΌΠ΅ΠΉΠ½Ρ„Ρ€Π΅ΠΉΠΌΠ°Ρ…. ДостигаСт ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ стСпСни сТатия, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ большСй, Ρ‡Π΅ΠΌ Ρƒ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТСн ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌΠΈ.

ВмСсто разбиСния вСроятностСй ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½ΠΎ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 1.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ‚Π°ΠΊΠΎΠ²:

1. считаСм количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… символов Π½Π° Π²Ρ…ΠΎΠ΄Π΅. Π­Ρ‚ΠΎ количСство Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ основаниС для счислСния b (b=2 – Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅, ΠΈ Ρ‚.ΠΏ.).
2. подсчитываСм ΠΎΠ±Ρ‰ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ Π²Ρ…ΠΎΠ΄Π°
3. Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ Β«ΠΊΠΎΠ΄Ρ‹Β» ΠΎΡ‚ 0 Π΄ΠΎ b ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… символов Π² порядкС ΠΈΡ… появлСния
4. замСняСм символы ΠΊΠΎΠ΄Π°ΠΌΠΈ, получая число Π² систСмС счислСния с основаниСм b
5. ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ число Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ систСму

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. На Π²Ρ…ΠΎΠ΄Π΅ строка Β«ABCDAABDΒ»

1. 4 ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… символа, основаниС = 4, Π΄Π»ΠΈΠ½Π° Π΄Π°Π½Π½Ρ‹Ρ… = 8
2. Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ ΠΊΠΎΠ΄Ρ‹: A=0, B=1, C=2, D=3
3. ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ число β€œ0.01230013”
4. ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Β«0.01231123Β» ΠΈΠ· Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ систСму: 0.01101100000111

Если ΠΌΡ‹ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с Π²ΠΎΡΡŒΠΌΠΈΠ±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ символами, Ρ‚ΠΎ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Ρƒ нас 8Ρ…8=64 Π±ΠΈΡ‚Π°, Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ – 15, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия 24%.

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

Алгоритмы, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°Β»

Всё Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZ77 (1977 Π³ΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставил Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Β«ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ²ΡˆΡƒΡŽ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сТатиС Π΄Π°Π½Π½Ρ‹Ρ…. LZ77 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, содСрТащий Ρ‚Ρ€ΠΎΠΉΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… – смСщСниС, Π΄Π»ΠΈΠ½Π° сСрии ΠΈ символ расхоТдСния. Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ – ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Ρ„Π°ΠΉΠ»Π° находится Ρ„Ρ€Π°Π·Π°. Π”Π»ΠΈΠ½Π° сСрии – сколько символов, считая ΠΎΡ‚ смСщСния, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ„Ρ€Π°Π·Π΅. Π‘ΠΈΠΌΠ²ΠΎΠ» расхоТдСния ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π° новая Ρ„Ρ€Π°Π·Π°, похоТая Π½Π° Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° смСщСниСм ΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ этого символа. Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ мСняСтся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ парсинга Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 64Мб, Ρ‚ΠΎΠ³Π΄Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· послСдних 64 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, для Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Β«abbadabbaΒ» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Β«abb(0,1,’d’)(0,3,’a’)Β»

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π€ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получился Π΄Π»ΠΈΠ½Π½Π΅Π΅ Π²Ρ…ΠΎΠ΄Π°, Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ получаСтся ΠΊΠΎΡ€ΠΎΡ‡Π΅.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZ77, прСдлоТСнная Майклом Π ΠΎΡƒΠ΄Π΅ Π² 1981 Π³ΠΎΠ΄Ρƒ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ LZ77 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ врСмя, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большСго ΠΎΠ±ΡŠΡ‘ΠΌΠ° памяти. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ LZ78 Π² сТатии.

DEFLATE

ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ Π€ΠΈΠ»ΠΎΠΌ ΠšΠ°Ρ†Π΅ΠΌ Π² 1993 Π³ΠΎΠ΄Ρƒ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΎΠ². ЯвляСтся ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ LZ77 ΠΈΠ»ΠΈ LZSS с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

DEFLATE64

ΠŸΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ²Π°Π½Π½Π°Ρ вариация DEFLATE с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ словаря Π΄ΠΎ 64 Кб. Π‘ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ быстрСС, Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ повсСмСстно, Ρ‚.ΠΊ. Π½Π΅ являСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ.

Алгоритм ЛСмпСля-Π—ΠΈΠ²Π°-Π‘Ρ‚ΠΎΡ€Π΅Ρ€Π°-Цимански Π±Ρ‹Π» прСдставлСн Π² 1982 Π³ΠΎΠ΄Ρƒ. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ вСрсия LZ77, которая просчитываСт, Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π·Π°ΠΌΠ΅Π½Π° исходных Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² популярных Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ RAR. Иногда – для сТатия Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎ сСти.

Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1987 Π³ΠΎΠ΄Ρƒ, Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«Π›Π΅ΠΌΠΏΠ΅Π»ΡŒ-Π—ΠΈΠ²-Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Β». Вариация LZSS, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° для сТатия ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Π‘ΠΆΠΈΠΌΠ°Π΅Ρ‚ Ρ‡ΡƒΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅, Π½ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1987 Π³ΠΎΠ΄Ρƒ Π’ΠΈΠΌΠΎΡ‚ΠΈ Π‘Π΅Π»Π»ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ LZSS. Как ΠΈ LZH, LZB ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»ΠΎΠ², эффСктивно кодируя ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. ДостигаСтся это ΠΏΡƒΡ‚Ρ‘ΠΌ постСпСнного увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ получаСтся Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρƒ LZSS ΠΈ LZH, Π½ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСньшС.

Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«Π›Π΅ΠΌΠΏΠ΅Π»ΡŒ-Π—ΠΈΠ² с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½Ρ‹ΠΌ смСщСниСм», ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ LZ77, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ смСщСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для кодирования ΠΏΠ°Ρ€Ρ‹ смСщСниС-Π΄Π»ΠΈΠ½Π°. Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π» прСдставлСн Π² 1991 Π³ΠΎΠ΄Ρƒ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ LZRW4 ΠΎΡ‚ Росса Π’ΠΈΠ»ΡŒΡΠΌΡΠ°. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ β€” BALZ, QUAD, ΠΈ RZM. Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ROLZ достигаСт ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΆΠ΅ стСпСнСй сТатия, ΠΊΠ°ΠΊ ΠΈ LZMA – Π½ΠΎ популярности ΠΎΠ½ Π½Π΅ снискал.

Β«Π›Π΅ΠΌΠΏΠ΅Π»ΡŒ-Π—ΠΈΠ² с прСдсказаниСм». Вариация ROLZ со смСщСниСм = 1. Π•ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², ΠΎΠ΄Π½ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сТатия, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ – Π½Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ. Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ LZW4 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ арифмСтичСскоС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ сТатия.

LZRW1

Алгоритм ΠΎΡ‚ Π ΠΎΠ½Π° Π’ΠΈΠ»ΡŒΡΠΌΡΠ° 1991 Π³ΠΎΠ΄Π°, Π³Π΄Π΅ ΠΎΠ½ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π²Π²Ρ‘Π» ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ смСщСния. ДостигаСт высоких стСпСнСй сТатия ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΉ скорости. ΠŸΠΎΡ‚ΠΎΠΌ Π’ΠΈΠ»ΡŒΡΠΌΡ сдСлал Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ LZRW1-A, 2, 3, 3-A, ΠΈ 4

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΡ‚ Π”ΠΆΠ΅Ρ„Ρ„Π° Π‘ΠΎΠ½Π²ΠΈΠΊΠ° (ΠΎΡ‚ΡΡŽΠ΄Π° β€œJB”) ΠΎΡ‚ 1998 Π³ΠΎΠ΄Π°, для использования Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Solaris Z File System (ZFS). Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZRW1, ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для высоких скоростСй, ΠΊΠ°ΠΊ этого Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использованиС Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ дисковых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Lempel-Ziv-Stac, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² Stac Electronics Π² 1994 для использования Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия дисков. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ LZ77, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰Π°Ρ символы ΠΈ ΠΏΠ°Ρ€Ρ‹ Π΄Π»ΠΈΠ½Π°-смСщСниС, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ встрСчСнного символа. ΠžΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° LZSS.

Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1995 Π³ΠΎΠ΄Ρƒ Π”ΠΆ. Ѐорбсом ΠΈ Π’.ΠŸΠΎΡ‚Π°Π½Π΅Π½ΠΎΠΌ для Амиги. Ѐорбс ΠΏΡ€ΠΎΠ΄Π°Π» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft Π² 1996, ΠΈ устроился Ρ‚ΡƒΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Π½ΠΈΠΌ, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ Π΅Π³ΠΎ вСрсия стала ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ»Π°Ρ… CAB, CHM, WIM ΠΈ Xbox Live Avatars.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1996 ΠœΠ°Ρ€ΠΊΡƒΡΠΎΠΌ ΠžΠ±Π΅Ρ€Ρ…ΡŒΡŽΠΌΠ΅Ρ€ΠΎΠΌ с ΠΏΡ€ΠΈΡ†Π΅Π»ΠΎΠΌ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сТатия ΠΈ распаковки. ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ компрСссии, потрСбляСт ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ памяти. ΠŸΠΎΡ…ΠΎΠΆ Π½Π° LZSS.

β€œLempel-Ziv Markov chain Algorithm”, появился Π² 1998 Π³ΠΎΠ΄Ρƒ Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€Π΅ 7-zip, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСмонстрировал сТатиС Π»ΡƒΡ‡ΡˆΠ΅ практичСски всСх Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΎΠ². Алгоритм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сТатия для достиТСния Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π’Π½Π°Ρ‡Π°Π»Π΅ слСгка ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΉ LZ77, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±ΠΈΡ‚ΠΎΠ² (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°ΠΉΡ‚Π°ΠΌΠΈ), парсит Π΄Π°Π½Π½Ρ‹Π΅. Π•Π³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ подвСргаСтся арифмСтичСскому ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ°Ρ компрСссия срСди всСх Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΎΠ².

LZMA2

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ вСрсия LZMA, ΠΎΡ‚ 2009 Π³ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‡ΡƒΡ‚ΡŒ эффСктивнСС Ρ…Ρ€Π°Π½ΠΈΡ‚ нСсТимаСмыС Π΄Π°Π½Π½Ρ‹Π΅.

БтатистичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ЛСмпСля-Π—ΠΈΠ²Π°

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ, созданная Π² 2001 Π³ΠΎΠ΄Ρƒ, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ статистичСский Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с LZ77 для оптимизирования ΠΊΠΎΠ΄ΠΎΠ², Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π² словарС.

Алгоритмы с использованиСм словаря

Алгоритм 1978 Π³ΠΎΠ΄Π°, Π°Π²Ρ‚ΠΎΡ€Ρ‹ – Π›Π΅ΠΌΠΏΠ΅Π»ΡŒ ΠΈ Π—ΠΈΠ². ВмСсто использования ΡΠΊΠΎΠ»ΡŒΠ·ΡΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π° для создания словаря, ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ составляСтся ΠΏΡ€ΠΈ парсингС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π°. ΠžΠ±ΡŠΡ‘ΠΌ словаря ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ измСряСтся Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π°Ρ…. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ Π² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° строятся Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½.

ΠŸΡ€ΠΈ парсингС Ρ„Π°ΠΉΠ»Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ добавляСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ символ ΠΈΠ»ΠΈ ΠΈΡ… сочСтаниС Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа Π½Π° Π²Ρ…ΠΎΠ΄Π΅ создаётся словарная Ρ„ΠΎΡ€ΠΌΠ° (индСкс + нСизвСстный символ) Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅. Если ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ строки ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² словарС, ΠΈΡ‰Π΅ΠΌ Π² словарС подстроки Π΄Π°Π½Π½ΠΎΠΉ строки, ΠΈ самая длинная ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для построСния индСкса. Π”Π°Π½Π½Ρ‹Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ индСкс, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ послСднСму символу нСизвСстной подстроки. Если Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, индСкс устанавливаСтся Π² 0, показывая, Ρ‡Ρ‚ΠΎ это Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ символа Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ. Записи Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ связанный список.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Β«abbadabbaabaadΒ» Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π΄Π°Π΄ΡƒΡ‚ «(0,a)(0,b)(2,a)(0,d)(1,b)(3,a)(6,d)»

An input such as Β«abbadabbaabaadΒ» would generate the output «(0,a)(0,b)(2,a)(0,d)(1,b)(3,a)(6,d)». You can see how this was derived in the following example:

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°. Π€ΠΎΡ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ кодирования лСмпСля Π·ΠΈΠ²Π°

Π›Π΅ΠΌΠΏΠ΅Π»ΡŒ-Π—ΠΈΠ²-Π’Π΅Π»Ρ‡, 1984 Π³ΠΎΠ΄. Π‘Π°ΠΌΡ‹ΠΉ популярный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ LZ78, нСсмотря Π½Π° Π·Π°ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ. Алгоритм избавляСтся ΠΎΡ‚ Π»ΠΈΡˆΠ½ΠΈΡ… символов Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ состоят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ сохраняСт всС символы словаря ΠΏΠ΅Ρ€Π΅Π΄ сТатиСм ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Ρ€ΡŽΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ сТатиС – ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ послСднСго символа ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ„Ρ€Π°Π·Ρ‹ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² GIF, Ρ€Π°Π½Π½ΠΈΡ… вСрсиях ZIP ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… прилоТСниях. ΠžΡ‡Π΅Π½ΡŒ быстр, Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² сТатии Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ.

ΠšΠΎΠΌΠΏΡ€Π΅ΡΡΠΈΡ ЛСмпСля-Π—ΠΈΠ²Π°. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ LZW, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°ΡΡΡ Π² ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ… UNIX. Π‘Π»Π΅Π΄ΠΈΡ‚ Π·Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ сТатия, ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π΅Π» – ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ пСрСдСлываСтся Π·Π°Π½ΠΎΠ²ΠΎ.

Π›Π΅ΠΌΠΏΠ΅Π»ΡŒ-Π—ΠΈΠ²-Π’ΠΈΡ‰Π΅Ρ€. Когда ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ заполняСтся, удаляСт Ρ„Ρ€Π°Π·Ρ‹, использовавшиСся Ρ€Π΅ΠΆΠ΅ всСх, ΠΈ замСняСт ΠΈΡ… Π½ΠΎΠ²Ρ‹ΠΌΠΈ. НС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» популярности.

Π’ΠΈΠΊΡ‚ΠΎΡ€ ΠœΠΈΠ»Π»Π΅Ρ€ ΠΈ ΠœΠ°Ρ€ΠΊ Π’Π΅Π³ΠΌΠ°Π½, 1984 Π³ΠΎΠ΄. ДСйствуСт, ΠΊΠ°ΠΊ LZT, Π½ΠΎ соСдиняСт Π² словарС Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π΄Π²Π΅ послСдниС Ρ„Ρ€Π°Π·Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ растёт быстрСС, ΠΈ приходится Ρ‡Π°Ρ‰Π΅ ΠΈΠ·Π±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Ρ€Π°Π·. Π’Π°ΠΊΠΆΠ΅ нСпопулярСн.

ДТСймс Π‘Ρ‚ΠΎΡ€Π΅Ρ€, 1988 Π³ΠΎΠ΄. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ LZMW. β€œAP” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «всС прСфиксы» β€” вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½Ρƒ Ρ„Ρ€Π°Π·Ρƒ, Π² словарС сохраняСтся ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли послСдняя Ρ„Ρ€Π°Π·Π° Π±Ρ‹Π»Π° β€œlast”, Π° тСкущая – Β«next”, Ρ‚ΠΎΠ³Π΄Π° Π² словарС ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ β€žlastnβ€œ, β€žlastneβ€œ, β€žlastnexβ€œ, β€žlastnextβ€œ.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ LZW ΠΎΡ‚ 2006 Π³ΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с сочСтаниями символов, Π° Π½Π΅ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами. УспСшно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ часто ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ сочСтания символов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ XML. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с прСпроцСссором, Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° сочСтания.

1985 Π³ΠΎΠ΄, ΠœΠ°Ρ‚Ρ‚ΠΈ Якобсон. Один ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² LZ78, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚ LZW. БохраняСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ строку Π² ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ всСм ΠΈΠΌ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. ΠŸΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ словаря ΠΈΠ· Π½Π΅Π³ΠΎ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ вхоТдСния.

Алгоритмы, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠΎ частичному совпадСнию – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ символ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ ΡΠ½Ρ‚Ρ€ΠΎΠΏΠΈΡŽ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ комбинируСтся с арифмСтичСским ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°. Вариация PPMd ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² RAR ΠΈ 7-zip

bzip2

РСализация BWT с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. ΠŸΡ€ΠΈ простотС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ достигаСт Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ компромисса ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ сТатия, Π² связи с Ρ‡Π΅ΠΌ популярСн Π² UNIX. Π‘Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ RLE, Π·Π°Ρ‚Π΅ΠΌ BWT, ΠΏΠΎΡ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов, послС Ρ‡Π΅Π³ΠΎ ΠΊ Π½ΠΈΠΌ снова примСняСтся RLE. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ процСсс.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Алгоритм ЛСмпСля β€” Π—ΠΈΠ²Π° β€” Π’Π΅Π»Ρ‡Π°

Алгоритм ЛСмпСля β€” Π—ΠΈΠ²Π° β€” Π’Π΅Π»Ρ‡Π°

Алгори́тм ЛС́мпСля β€” Зи́ва β€” ВС́лча (Lempel-Ziv-Welch, LZW) β€” это ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ, созданный Абрахамом Π›Π΅ΠΌΠΏΠ΅Π»Π΅ΠΌ (Abraham Lempel), Π―ΠΊΠΎΠ±ΠΎΠΌ Π—ΠΈΠ²ΠΎΠΌ (Jacob Ziv) ΠΈ Π’Π΅Ρ€Ρ€ΠΈ Π’Π΅Π»Ρ‡Π΅ΠΌ (Terry Welch). Он Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π’Π΅Π»Ρ‡Π΅ΠΌ Π² 1984 Π³ΠΎΠ΄Ρƒ, Π² качСствС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZ78, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π›Π΅ΠΌΠΏΠ΅Π»Π΅ΠΌ ΠΈ Π—ΠΈΠ²ΠΎΠΌ Π² 1978 Π³ΠΎΠ΄Ρƒ. Алгоритм Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ быстро Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ОписаниС

Π”Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΈ сТатии (ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ) динамичСски создаёт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ прСобразования строк: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌ символов (словам) ставятся Π² соотвСтствиС Π³Ρ€ΡƒΠΏΠΏΡ‹ Π±ΠΈΡ‚ фиксированной Π΄Π»ΠΈΠ½Ρ‹ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 12-Π±ΠΈΡ‚Π½Ρ‹Π΅). Π’Π°Π±Π»ΠΈΡ†Π° инициализируСтся всСми 1-ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ строками (Π² случаС 8-Π±ΠΈΡ‚Π½Ρ‹Ρ… символов β€” это 256 записСй). По ΠΌΠ΅Ρ€Π΅ кодирования, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ просматриваСт тСкст символ Π·Π° символом, ΠΈ сохраняСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΠ²ΡƒΡŽ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ 2-ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€Ρ‹ ΠΊΠΎΠ΄/символ, Π³Π΄Π΅ ΠΊΠΎΠ΄ ссылаСтся Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ новая 2-символьная строка сохранСна Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ пСрСдаётся ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа. Когда Π½Π° Π²Ρ…ΠΎΠ΄Π΅ читаСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ символ, для Π½Π΅Π³ΠΎ ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ находится ΡƒΠΆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π²ΡˆΠ°ΡΡΡ строка максимальной Π΄Π»ΠΈΠ½Ρ‹, послС Ρ‡Π΅Π³ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сохраняСтся ΠΊΠΎΠ΄ этой строки со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ символом Π½Π° Π²Ρ…ΠΎΠ΄Π΅; Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ выдаётся ΠΊΠΎΠ΄ этой строки, Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС Π½Π°Ρ‡Π°Π»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки.

Алгоритму дСкодирования Π½Π° Π²Ρ…ΠΎΠ΄Π΅ трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ тСкст, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ прСобразования нСпосрСдствСнно ΠΏΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ тСксту.

Алгоритм

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

На ΠΌΠΎΠΌΠ΅Π½Ρ‚ своСго появлСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ LZW Π΄Π°Π²Π°Π» Π»ΡƒΡ‡ΡˆΠΈΠΉ коэффициСнт сТатия, для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Π΅ΠΌ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстный ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Он стал ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сТатия Π΄Π°Π½Π½Ρ‹Ρ….

Алгоритм Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ compress, которая стала Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ стандартной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ Unix-систСм ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² 1986 Π³ΠΎΠ΄Ρƒ. НСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… популярных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚-Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΊ Π½Π΅ΠΌΡƒ.

Π’ 1987 Π³ΠΎΠ΄Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ стал Ρ‡Π°ΡΡ‚ΡŒΡŽ стандарта Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ GIF. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ TIFF.

Π’ настоящСС врСмя, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ содСрТится Π² стандартС PDF.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ LZW Π² дСйствии, показывая состояниС Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ словаря Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стадии, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ раскодировании сообщСния. Π‘ Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‰Π΅, ΠΌΡ‹ ограничимся простым Π°Π»Ρ„Π°Π²ΠΈΡ‚ΠΎΠΌ β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹, Π±Π΅Π· Π·Π½Π°ΠΊΠΎΠ² прСпинания ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΆΠ°Ρ‚ΡŒ, выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠœΠ°Ρ€ΠΊΠ΅Ρ€ # ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния ΠΊΠΎΠ½Ρ†Π° сообщСния. Π’Π΅ΠΌ самым, Π² нашСм Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅ 27 символов (26 Π·Π°Π³Π»Π°Π²Π½Ρ‹Ρ… Π±ΡƒΠΊΠ² ΠΎΡ‚ A Π΄ΠΎ Z ΠΈ #). ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ прСдставляСт это Π² Π²ΠΈΠ΄Π΅ Π³Ρ€ΡƒΠΏΠΏ Π±ΠΈΡ‚, для прСдставлСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° Π½Π°ΠΌ достаточно Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠ· 5 Π±ΠΈΡ‚ Π½Π° символ. По ΠΌΠ΅Ρ€Π΅ роста словаря, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π³Ρ€ΡƒΠΏΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ расти, с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты. 5-Π±ΠΈΡ‚Π½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π΄Π°ΡŽΡ‚ 2 5 = 32 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π±ΠΈΡ‚, поэтому, ΠΊΠΎΠ³Π΄Π° Π² словарС появится 33-Π΅ слово, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ 6-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΈΠ· всСх Π½ΠΎΠ»Π΅ΠΉ 00000, Ρ‚ΠΎ 33-я Π³Ρ€ΡƒΠΏΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ΄ 32. ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ:

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π‘Π΅Π· использования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° LZW, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ сообщСния ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ β€” 25 символов ΠΏΠΎ 5 Π±ΠΈΡ‚ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ β€” ΠΎΠ½ΠΎ Π·Π°ΠΉΠΌΡ‘Ρ‚ 125 Π±ΠΈΡ‚. Π‘Ρ€Π°Π²Π½ΠΈΠΌ это с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ получаСтся ΠΏΡ€ΠΈ использовании LZW:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ LZW ΠΌΡ‹ сократили сообщСниС Π½Π° 29 Π±ΠΈΡ‚ ΠΈΠ· 125 β€” это ΠΏΠΎΡ‡Ρ‚ΠΈ 22 %. Если сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π»ΠΈΠ½Π½Π΅Π΅, Ρ‚ΠΎ элСмСнты словаря Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ всё Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ части тСкста, благодаря Ρ‡Π΅ΠΌΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ слова Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎ.

Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ сообщСниС, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅, ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи словаря ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π° Ρ…ΠΎΠ΄Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ просто ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… записСй.

ЕдинствСнная нСбольшая Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, Ссли Π½ΠΎΠ²ΠΎΠ΅ слово словаря пСрСсылаСтся Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСкодирования, ΠΊΠΎΠ³Π΄Π° Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ встрСчаСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ, T, ΠΎΠ½ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слово 27 начинаСтся с T, Π½ΠΎ Ρ‡Π΅ΠΌ ΠΎΠ½ΠΎ заканчиваСтся? ΠŸΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ. ΠœΡ‹ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ сообщСниС ABABA:

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, для Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° это Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΠ°Ρ ситуация. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ Π½Π°ΠΏΠ΅Ρ€Ρ‘Π΄, Ρ‡Ρ‚ΠΎ словом 47 Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ABA, Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ ΡƒΠ·Π½Π°Π΅Ρ‚ ΠΎΠ± этом? Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ слово 47 состоит ΠΈΠ· слова 29 плюс символ ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, слово 47 заканчиваСтся Π½Π° «символ ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΒ». Но, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это слово посылаСтся Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с «символа ΠΈΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΒ», ΠΈ поэтому ΠΎΠ½ΠΎ заканчиваСтся Ρ‚Π΅ΠΌ ΠΆΠ΅ символом Ρ‡Ρ‚ΠΎ ΠΈ начинаСтся, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС β€” A. Π­Ρ‚ΠΎΡ‚ Ρ‚Ρ€ΡŽΠΊ позволяСт Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ слово 47 это ABA.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС, такая ситуация появляСтся, ΠΊΠΎΠ³Π΄Π° кодируСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΈΠ΄Π° cScSc, Π³Π΄Π΅ c β€” это ΠΎΠ΄ΠΈΠ½ символ, Π° S β€” строка, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ слово cS ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π² словарС.

ΠŸΠ°Ρ‚Π΅Π½Ρ‚Ρ‹

Unisys, GIF ΠΈ PNG

20 июня 2003 Π³ΠΎΠ΄Π° истёк срок ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ амСриканского ΠΏΠ°Ρ‚Π΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Unisys Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ большС ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎ Π½Π΅ΠΌΡƒ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Π΅ отчислСния. АналогичныС ΠΏΠ°Ρ‚Π΅Π½Ρ‚Ρ‹ Π² Π•Π²Ρ€ΠΎΠΏΠ΅, Π―ΠΏΠΎΠ½ΠΈΠΈ ΠΈ КанадС истСкли Π² 2004 Π³ΠΎΠ΄Ρƒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *