Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… LZW

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw

ОглавлСниС

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Бсылки: Π“Π΄Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС

ΠžΠ±Π·ΠΎΡ€

Если Π±Ρ‹ Π²Ρ‹ взглянули ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° любой Ρ„Π°ΠΉΠ» Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, просматривая символ Π·Π° символом, Ρ‚ΠΎ навСрняка ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π±Ρ‹ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° мноТСство ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтов. LZW β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ сТатия Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ воспользовался этим ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ΠΌ. ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ вСрсия ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Ρ‹Π»Π° создана Π›Π΅ΠΌΠΏΠ΅Π»Π΅ΠΌ ΠΈ Π—ΠΈΠ²ΠΎΠΌ Π² 1978 Π³ΠΎΠ΄Ρƒ (LZ78) ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π° УэлчСм Π² 1984 Π³ΠΎΠ΄Ρƒ, ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Π° LZW (Lempel, Ziv and Welch). Как ΠΈ Π² любом Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΌ/динамичСском ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ сТатия, идСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ (1) Π½Π°Ρ‡Π°Ρ‚ΡŒ с исходной ΠΌΠΎΠ΄Π΅Π»ΠΈ, (2) Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ частям, (3) ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ модСль ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ продвиТСния. LZW β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия Π½Π° основС «ΡΠ»ΠΎΠ²Π°Ρ€Ρ». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вмСсто свСдСния Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ количСства символов ΠΈ построСния Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² (ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Ρƒ), LZW ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΡΠ»ΠΎΠ²Π°Ρ€ΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ подстроку, Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ число, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ индСксу этой подстроки Π² словарС. Π₯отя LZW часто рассматриваСтся Π² контСкстС сТатия тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ², Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для любого Ρ‚ΠΈΠΏΠ° Ρ„Π°ΠΉΠ»ΠΎΠ². Однако, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ Π»ΡƒΡ‡ΡˆΠ΅ всСго справляСтся с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ подстроки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с тСкстовыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅

LZW Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ со словаря ΠΈΠ· 256 символов (Π² случаС 8 Π±ΠΈΡ‚) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡ… Π² качСствС «ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ³ΠΎ» Π½Π°Π±ΠΎΡ€Π° символов. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ считываСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ 8 Π±ΠΈΡ‚ Π·Π° Ρ€Π°Π· (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ‘t’, ‘r’ ΠΈ Ρ‚.Π΄.) ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… Π² Π²ΠΈΠ΄Π΅ числа, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт собой индСкс Π² словарС. Всякий Ρ€Π°Π·, встрСчая Π½ΠΎΠ²ΡƒΡŽ подстроку (скаТСм, «tr»), ΠΎΠ½ добавляСт Π΅Π΅ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ; ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π΅ΠΌΡƒ попадаСтся подстрока, которая Ρ€Π°Π½Π΅Π΅ ΡƒΠΆΠ΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»Π°ΡΡŒ, ΠΎΠ½ просто считываСт Π½ΠΎΠ²Ρ‹ΠΉ символ ΠΈ выполняСт Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΡŽ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строкой, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ подстроку. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° LZW вновь обратится ΠΊ подстрокС, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ числа. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ для словаря задаСтся максимальноС количСство записСй (скаТСм, 4096), Ρ‡Ρ‚ΠΎΠ±Ρ‹ процСсс Π½Π΅ исчСрпал ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ΄Ρ‹, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ мСсто подстрок Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π»ΠΈΠ½Ρƒ 12 Π±ΠΈΡ‚ (2^12 = 4096). Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄Ρ‹ Π±Ρ‹Π»ΠΈ Π΄Π»ΠΈΠ½Π½Π΅Π΅ Π² Π±ΠΈΡ‚Π°Ρ…, Ρ‡Π΅ΠΌ символы (12 ΠΏΡ€ΠΎΡ‚ΠΈΠ² 8 Π±ΠΈΡ‚), Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вмСсто большого количСства часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ подстрок Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ΄, Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ достигаСтся сТатиС.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² псСвдокодС:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ наш Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΆΠ°Ρ‚ΡŒ, это «banana_bandana», ΠΈ ΠΏΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ:

Π­Ρ‚Π°ΠΏΡ‹ кодирования Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Ρ…ΠΎΠ΄

ВСкущая строка

Π’ΠΈΠ΄Π΅Π»ΠΈ это Ρ€Π°Π½ΡŒΡˆΠ΅?

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ

Π²Ρ‹Ρ…ΠΎΠ΄

Новая словарная запись/индСкс

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ послС считывания послСднСго символа, «a», Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π° послСдняя подстрока, «ana».

Распаковка

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π”Π΅ΠΊΠΎΠ΄Π΅Ρ€ LZW сначала считываСт индСкс (Ρ†Π΅Π»ΠΎΠ΅ число), ΠΈΡ‰Π΅Ρ‚ этот индСкс Π² словарС ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ подстроку, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с этим индСксом. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ символ этой подстроки конкатСнируСтся с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ строкой. Π­Ρ‚Π° новая конкатСнация добавляСтся Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ подстроки Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π²ΠΎ врСмя сТатия). Π—Π°Ρ‚Π΅ΠΌ дСкодированная строка становится Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ строкой (Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ индСкс, Ρ‚.Π΅. подстрока, запоминаСтся), ΠΈ процСсс повторяСтся.

Π•Ρ‰Π΅ Ρ€Π°Π·, Π²ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ:

Π•ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚; это происходит, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π·ΠΎΠ² индСкса 31, ΠΊΠΎΠ³Π΄Π° индСкс 31 Π² настоящСС врСмя обрабатываСтся ΠΈ поэтому Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚ Π² словарС). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Sayood ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ строка ababababab. ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, состоящий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· a ΠΈ b с индСксами 0 ΠΈ 1 соотвСтствСнно. НачинаСтся процСсс кодирования:

Π’Ρ…ΠΎΠ΄

ВСкущая строка

Π’ΠΈΠ΄Π΅Π»ΠΈ это Ρ€Π°Π½ΡŒΡˆΠ΅?

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄

Новая словарная запись/индСкс

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ словаря

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

ВСкущая строка

Новая словарная запись/индСкс

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ для понимания: Π Π°ΡΡˆΠΈΡ„Ρ€ΡƒΠΉΡ‚Π΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈ посмотритС, смоТСтС Π»ΠΈ Π²Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ «banana_bandana». ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ с Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ словаря (Ρ‚.Π΅. ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ находится Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ индСксном слотС, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅). Для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ дСкодирования, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ свой ΠΎΡ‚Π²Π΅Ρ‚ здСсь

Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подсказки ΠΈ совСты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ LZW.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ кодирования ΠΈ дСкодирования ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ ΡΠ»ΠΎΠ²Π°Ρ€ΡŽ бСсчислСнноС количСство Ρ€Π°Π· Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм слоТности поиска 0(1) Π±Ρ‹Π»Π° Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π°. Однако ΠΎΠ±Π΅ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Π° ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ структура Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠ΄Π΅Ρ€ ΠΈΡ‰Π΅Ρ‚ индСксы Π² словарС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ строк (какая структура ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ для этого?), Π° Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ ΠΈΡ‰Π΅Ρ‚ строки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСксов (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСксов? ΠΊΠ°ΠΊ это Π·Π²ΡƒΡ‡ΠΈΡ‚?)

ПсСвдо-EOF. Π’ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° псСвдо-EOF (End Of File) выводится Π² ΠΊΠΎΠ½Ρ†Π΅ Π²Ρ‹Π²ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ Π·Π½Π°Π», ΠΊΠΎΠ³Π΄Π° достигаСтся ΠΊΠΎΠ½Π΅Ρ† Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°. Π₯отя LZW, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ псСвдо-eof (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ смоТСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ большС), Π΅Π³ΠΎ использованиС являСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ. Π’ частности, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для сТатия Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Π°ΠΌ понадобится срСдство для обозначСния Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ВСроятно, самый простой способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это β€” Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСсто Π² словарС (скаТСм, послСдний индСкс) для псСвдо-eof (Π½Π° самом Π΄Π΅Π»Π΅ Ρ‚Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ хранится). Когда Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, просто Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ индСкс псСвдо-eof. Π‘Π°ΠΌΠΎ собой разумССтся, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дСкодирования Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот индСкс для сигнала псСвдо-eof.

Flush Character. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ функция. И снова Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ слот Π² словарС. Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° распаковки ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚ индСкс для символа flush, ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² исходноС состояниС. Π’ΠΈΠ΄ΠΈΡ‚Π΅ Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ становится ΠΏΠΎΠ»Π½Ρ‹ΠΌ, ΠΎΠ½ пСрСстаСт Π±Ρ‹Ρ‚ΡŒ динамичСским ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, пСрСстаСт ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ характСристики. Однако, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ символ flush, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° коэффициСнтом сТатия ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° этот коэффициСнт ΠΏΠ°Π΄Π°Π΅Ρ‚ Π½ΠΈΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΠΎΠ³Π°. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с этим, ΠΈ Π² вашСм распоряТСнии окаТСтся нСплохая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сТатия.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… курса «Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β».

ВсСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ Β«Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ алгСбраичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π§Π°ΡΡ‚ΡŒ-1 «Π§ΠΈΡΠ»Π° Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ»Β». На ΠΏΠ΅Ρ€Π²ΠΎΠΌ мастСр-классС ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ слоТности Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ возвСдСния числа Π² Ρ†Π΅Π»ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΈ поиска чисСл Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами, измСняя ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΡ‚ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎ логарифмичСской.
>> Π Π•Π“Π˜Π‘Π’Π ΠΠ¦Π˜Π―

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

Алгоритм 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

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

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw

БловоНомСр Π² словарС
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 ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия.

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw

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

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

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

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

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw

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’)Β»

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw

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

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° 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:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ сТатиС lzw

Π›Π΅ΠΌΠΏΠ΅Π»ΡŒ-Π—ΠΈΠ²-Π’Π΅Π»Ρ‡, 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. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ процСсс.

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

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

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