Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman’s algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Алгоритм построСния Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° сводится ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ:

ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

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

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. 400px Huffman abracadabra. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-400px Huffman abracadabra. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 400px Huffman abracadabra. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

Π’ Π΄Π΅Ρ€Π΅Π²Π΅ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π±ΡƒΠ΄Π΅Ρ‚ [math]5[/math] ΡƒΠ·Π»ΠΎΠ²:

УзСлabrсd
ВСс52211
Π£Π·Π΅Π»abrcd
ВСс5222

Π—Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡΡ‚ΡŒ объСдиним Π² ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» Π΄Π²Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎ вСсу ΡƒΠ·Π»Π° β€” [math]r[/math] ΠΈ [math]cd[/math] :

Π£Π·Π΅Π»arcdb
ВСс542

Π•Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ эту ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Π½ΠΎ для ΡƒΠ·Π»ΠΎΠ² [math]rcd[/math] ΠΈ [math]b[/math] :

Π£Π·Π΅Π»brcda
ВСс65

На послСднСм шагС объСдиним Π΄Π²Π° ΡƒΠ·Π»Π° β€” [math]brcd[/math] ΠΈ [math]a[/math] :

Π£Π·Π΅Π»abrcd
ВСс11

ΠžΡΡ‚Π°Π»ΡΡ ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π», Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ ΠΊΠΎΡ€Π½ΡŽ Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (смотри рисунок). Π’Π΅ΠΏΠ΅Ρ€ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слово (бинарная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ ΠΏΡƒΡ‚ΡŒ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΊ этому символу ΠΎΡ‚ корня):

Бимволabrсd
Код01110110001001

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π·Π°Π΄Π°Ρ‡Π΅ ΠΎ построСнии ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ свойства ΠΆΠ°Π΄Π½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ подструктуры. Π’ сформулированной Π½ΠΈΠΆΠ΅ Π»Π΅ΠΌΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ соблюдСниС свойства ΠΆΠ°Π΄Π½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°.

[math]f[x]d_T(x) + f[y]d_T(y) = (f[x] + f[y])(d_(z) + 1) = f[z]d_(z) + (f[x] + f[y])[/math]

ΠΈΠ· Ρ‡Π΅Π³ΠΎ слСдуСт, Ρ‡Ρ‚ΠΎ

[math] B(T) = B(T’) + f[x] + f[y] [/math]

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

Код Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° β€” Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΆΠ°Π΄Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° с минимальной ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ настоящСС врСмя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ….

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π¨Π΅Π½Π½ΠΎΠ½Π° β€” Π€Π°Π½ΠΎ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° остаётся всСгда ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ для Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Ρ„Π°Π²ΠΈΡ‚ΠΎΠ² m2 с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ двумя символами.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ кодирования состоит ΠΈΠ· Π΄Π²ΡƒΡ… основных этапов:

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

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

Один ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² эффСктивного кодирования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π”. А. Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ Π² 1952 Π³ΠΎΠ΄Ρƒ. ИдСя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° состоит Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: зная вСроятности символов Π² сообщСнии, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ построСния ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, состоящих ΠΈΠ· Ρ†Π΅Π»ΠΎΠ³ΠΎ количСства Π±ΠΈΡ‚ΠΎΠ². Π‘ΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ с большСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ставятся Π² соотвСтствиС Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹. ΠšΠΎΠ΄Ρ‹ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ свойством прСфиксности (Ρ‚.Π΅. Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ слово Π½Π΅ являСтся прСфиксом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ), Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΡ… Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ частот встрСчаСмости символов Π² сообщСнии. Π”Π°Π»Π΅Π΅ Π½Π° основании этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ строится Π΄Π΅Ρ€Π΅Π²ΠΎ кодирования Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Н-Π΄Π΅Ρ€Π΅Π²ΠΎ). [1]

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° частот:

157665
АБВГД

Π­Ρ‚ΠΎΡ‚ процСсс ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ построСниС Π΄Π΅Ρ€Π΅Π²Π°, ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ β€” символ с суммой вСроятностСй ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Ρ… символов, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ ΠΏΡ€ΠΈ объСдинСнии символов ΠΈΠ· послСднСго шага, Π΅Π³ΠΎ n0 ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ² β€” символы ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ шага ΠΈ Ρ‚. Π΄.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· символов, входящих Π² сообщСниС, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ листа Π΄Π΅Ρ€Π΅Π²Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ символу, Π΄ΠΎ Π΅Π³ΠΎ корня, накапливая Π±ΠΈΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΏΠΎ вСтвям Π΄Π΅Ρ€Π΅Π²Π° (пСрвая Π²Π΅Ρ‚Π²ΡŒ Π² ΠΏΡƒΡ‚ΠΈ соотвСтствуСт ΠΌΠ»Π°Π΄ΡˆΠ΅ΠΌΡƒ Π±ΠΈΡ‚Ρƒ). ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ² являСтся ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ символа, записанным Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

Для Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ символов ΠΊΠΎΠ΄Ρ‹ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

АБВГД
0100101110111

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² Π½Π΅ являСтся прСфиксом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΡ… ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ частый символ сообщСния А Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ наимСньшим количСством Π±ΠΈΡ‚, Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π΄ΠΊΠΈΠΉ символ Π” β€” наибольшим.

ΠŸΡ€ΠΈ этом общая Π΄Π»ΠΈΠ½Π° сообщСния, состоящСго ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ символов, составит 87 Π±ΠΈΡ‚ (Π² срСднСм 2,2308 Π±ΠΈΡ‚Π° Π½Π° символ). ΠŸΡ€ΠΈ использовании Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ кодирования общая Π΄Π»ΠΈΠ½Π° сообщСния составила Π±Ρ‹ 117 Π±ΠΈΡ‚ (Ρ€ΠΎΠ²Π½ΠΎ 3 Π±ΠΈΡ‚Π° Π½Π° символ). Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ энтропия источника, нСзависимым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ символы с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ частотами составляСт

2,1858 Π±ΠΈΡ‚Π° Π½Π° символ, Ρ‚.Π΅. ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ построСнного для Ρ‚Π°ΠΊΠΎΠ³ΠΎ источника ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, понимаСмая, ΠΊΠ°ΠΊ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ срСднСго числа Π±ΠΈΡ‚ Π½Π° символ ΠΎΡ‚ энтропии, составляСт ΠΌΠ΅Π½Π΅Π΅ 0,05 Π±ΠΈΡ‚ Π½Π° символ.

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ряд сущСствСнных нСдостатков. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, для восстановлСния содСрТимого сТатого сообщСния Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ частот, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пользовался ΠΊΠΎΠ΄Π΅Ρ€. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π»ΠΈΠ½Π° сТатого сообщСния увСличиваСтся Π½Π° Π΄Π»ΠΈΠ½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ частот, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ свСсти Π½Π° Π½Π΅Ρ‚ всС усилия ΠΏΠΎ ΡΠΆΠ°Ρ‚ΠΈΡŽ сообщСния. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ наличия ΠΏΠΎΠ»Π½ΠΎΠΉ частотной статистики ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ собствСнно кодирования Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ: ΠΎΠ΄Π½ΠΎΠ³ΠΎ для построСния ΠΌΠΎΠ΄Π΅Π»ΠΈ сообщСния (Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ частот ΠΈ Н-Π΄Π΅Ρ€Π΅Π²Π°), Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ для собствСнно кодирования. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ кодирования обращаСтся Π² ноль лишь Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° вСроятности ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… символов ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ стСпСнями числа 2. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, для источника с энтропиСй, Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰Π΅ΠΉ 1 (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ источника), нСпосрСдствСнноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° бСссмыслСнно.

АдаптивноС сТатиС

АдаптивноС сТатиС позволяСт Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ модСль сообщСния вмСстС с Π½ΠΈΠΌ самим ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠΌ ΠΏΠΎ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π’ создании Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ кодирования Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° наибольшиС слоТности Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ обновлСния ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹ΠΌ символом. ВСорСтичСски ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ просто Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΠΎΠ»Π½ΠΎΠ΅ построСниС Π΄Π΅Ρ€Π΅Π²Π° кодирования Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ, Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия ΠΈΠΌΠ΅Π» Π±Ρ‹ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π½ΠΈΠ·ΠΊΠΎΠ΅ быстродСйствиС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ построСниС Н-Π΄Π΅Ρ€Π΅Π²Π° β€” это слишком большая Ρ€Π°Π±ΠΎΡ‚Π° ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа Π½Π΅Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, сущСствуСт способ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Н-Π΄Π΅Ρ€Π΅Π²ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½ΠΎΠ²ΠΎΠ³ΠΎ символа.

ОбновлСниС Π΄Π΅Ρ€Π΅Π²Π° ΠΏΡ€ΠΈ считывании ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ символа сообщСния состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

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

Вторая опСрация β€” пСрСстановка ΡƒΠ·Π»ΠΎΠ² Π΄Π΅Ρ€Π΅Π²Π° β€” трСбуСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ вСса ΡƒΠ·Π»Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡŽ свойства упорядочСнности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ вСс ΡƒΠ·Π»Π° стал большС, Ρ‡Π΅ΠΌ вСс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎ порядку ΡƒΠ·Π»Π°. Если ΠΈ дальшС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ вСса, двигаясь ΠΊ ΠΊΠΎΡ€Π½ΡŽ Π΄Π΅Ρ€Π΅Π²Π°, Ρ‚ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ пСрСстанСт Π±Ρ‹Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π΅Ρ€Π΅Π²Π° кодирования, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠŸΡƒΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ вСс ΡƒΠ·Π»Π° Ρ€Π°Π²Π΅Π½ W+1. Π’ΠΎΠ³Π΄Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ списку Π² сторону увСличСния вСса, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ послСдний ΡƒΠ·Π΅Π» с вСсом W. ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π²ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΡƒΠ·Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π² спискС, восстанавливая Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ порядок Π² Π΄Π΅Ρ€Π΅Π²Π΅ (ΠΏΡ€ΠΈ этом Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² Ρ‚ΠΎΠΆΠ΅ измСнятся). На этом опСрация пСрСстановки заканчиваСтся.

ПослС пСрСстановки опСрация увСличСния вСса ΡƒΠ·Π»ΠΎΠ² продолТаСтся дальшС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠ·Π΅Π», вСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ, β€” это Π½ΠΎΠ²Ρ‹ΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΡƒΠ·Π»Π°, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ вСса ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Π·Π²Π°Π»ΠΎ пСрСстановку.

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сТатия вСс ΡƒΠ·Π»ΠΎΠ² Π² Π΄Π΅Ρ€Π΅Π²Π΅ кодирования Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π½Π΅ΡƒΠΊΠ»ΠΎΠ½Π½ΠΎ растСт. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° вСс корня Π΄Π΅Ρ€Π΅Π²Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ячСйки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ хранится. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это 16-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС, Ρ‡Π΅ΠΌ 65535. Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π΅Ρ‰Ρ‘ большСго внимания, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ самого Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° прСвосходит Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ячСйки, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ. Π”Π΅ΠΊΠΎΠ΄Π΅Ρ€Ρƒ всС Ρ€Π°Π²Π½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΠ΄ ΠΎΠ½ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ двиТСтся свСрху Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ кодирования, выбирая ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±ΠΈΡ‚Ρƒ. ΠšΠΎΠ΄Π΅Ρ€ ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΎΡ‚ листа Π΄Π΅Ρ€Π΅Π²Π° ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²Π²Π΅Ρ€Ρ… ΠΊ ΠΊΠΎΡ€Π½ΡŽ, собирая Π±ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это происходит с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° Β«Ρ†Π΅Π»ΠΎΠ΅Β», ΠΈ, ΠΊΠΎΠ³Π΄Π° Π΄Π»ΠΈΠ½Π° ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° прСвосходит Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Β«Ρ†Π΅Π»ΠΎΠ΅Β» Π² Π±ΠΈΡ‚Π°Ρ…, наступаСт ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

МоТно Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° для сообщСний с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π°Π»Ρ„Π°Π²ΠΈΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ, Ссли частоты символов ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с частотами символов, Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ числам Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π΄ΠΎ Fib (18), β€” это ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сТатия ΠΏΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Ρƒ.

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вСсов ΡƒΠ·Π»ΠΎΠ² Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

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

Однако ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ вСса ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, связанная с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ послС выполнСния этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свою Ρ„ΠΎΡ€ΠΌΡƒ. ΠžΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ это Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»ΠΈΠΌ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈ ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ отбрасываСм Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° послС ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰ΡƒΡŽΡΡ ΠΎΡ‚ исходной. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ точности нашСй статистики. Но со сбором Π½ΠΎΠ²ΠΎΠΉ статистики послСдствия этих «ошибок» практичСски сходят Π½Π° Π½Π΅Ρ‚. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вСса β€” довольно дорогостоящая опСрация, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости Π·Π°Π½ΠΎΠ²ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС Π΄Π΅Ρ€Π΅Π²ΠΎ кодирования. Но, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π½Π΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ, Ρ‚ΠΎ с этим ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΈΡ€ΠΈΡ‚ΡŒΡΡ.

Π’Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΎΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вСса ΡƒΠ·Π»ΠΎΠ² Π΄Π΅Ρ€Π΅Π²Π° Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ происходит потСря точности статистики, тСсты ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π»ΡƒΡ‡ΡˆΠΈΠΌ показатСлям сТатия, Ρ‡Π΅ΠΌ Ссли Π±Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π»ΠΎΡΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ символы сТимаСмого ΠΏΠΎΡ‚ΠΎΠΊΠ° большС Β«ΠΏΠΎΡ…ΠΎΠΆΠΈΒ» Π½Π° своих Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠ², Ρ‡Π΅ΠΌ Π½Π° Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ влияния Β«Π΄Π°Π²Π½ΠΈΡ…Β» символов Π½Π° статистику ΠΈ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ влияния Π½Π° Π½Π΅Ρ‘ Β«Π½Π΅Π΄Π°Π²Π½ΠΈΡ…Β» символов. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ слоТно ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ количСствСнно, Π½ΠΎ, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ влияниС Π½Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ЭкспСримСнты с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… процСсса сТатия ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия сильно зависит ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ вСса, Π½ΠΎ Π½Π΅ сущСствуСт ΠΏΡ€Π°Π²ΠΈΠ»Π° Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° сТатиС Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

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

Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Ρƒ примСняСтся ΠΏΡ€ΠΈ сТатии Ρ„ΠΎΡ‚ΠΎ- ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (JPEG, стандарты сТатия MPEG), Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€Π°Ρ… (PKZIP, LZH ΠΈ Π΄Ρ€.), Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… MNP5 ΠΈ MNP7.

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

Алгоритм сТатия Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Π’ ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса «Алгоритмы для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²Β» ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ для вас ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. image loader. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° – это Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ идСю сТатия Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ фиксированной ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠΎΠ΄Π°Ρ…, прСфиксных ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… ΠΈ построСнии Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ хранится Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· 0 ΠΈ 1 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 8 Π±ΠΈΡ‚. Π­Ρ‚ΠΎ называСтся ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ фиксированной Π΄Π»ΠΈΠ½Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ фиксированноС количСство Π±ΠΈΡ‚ΠΎΠ² для хранСния.

Допустим, Π΄Π°Π½ тСкст. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство мСста, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для хранСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа?

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

Как, зная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΡ‚ΠΎΠ², Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ?

Рассмотрим строку Β«aabacdabΒ». Π’ Π½Π΅ΠΉ 8 символов, ΠΈ ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ фиксированной Π΄Π»ΠΈΠ½Ρ‹ для Π΅Π΅ хранСния понадобится 64 Π±ΠΈΡ‚Π°. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ частота символов Β«aΒ», Β«bΒ», Β«cΒ» ΠΈ Β«dΒ» равняСтся 4, 2, 1, 1 соотвСтствСнно. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Β«aabacdabΒ» мСньшим количСством Π±ΠΈΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Β«aΒ» встрСчаСтся Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Β«bΒ», Π° Β«bΒ» встрСчаСтся Ρ‡Π°Ρ‰Π΅, Ρ‡Π΅ΠΌ Β«cΒ» ΠΈ Β«dΒ». НачнСм ΠΌΡ‹ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ Β«aΒ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΈΡ‚Π°, Ρ€Π°Π²Π½ΠΎΠ³ΠΎ 0, Β«bΒ» ΠΌΡ‹ присвоим Π΄Π²ΡƒΡ…Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ 11, Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Ρ€Π΅Ρ… Π±ΠΈΡ‚ΠΎΠ² 100 ΠΈ 011 Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ Β«cΒ» ΠΈ Β«dΒ».

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ нас получится:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ строку Β«aabacdabΒ» ΠΌΡ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠ°ΠΊ 00110100011011 (0|0|11|0|100|011|0|11), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄Ρ‹, прСдставлСнныС Π²Ρ‹ΡˆΠ΅. Однако основная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π² Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Когда ΠΌΡ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку 00110100011011, Ρƒ нас получится Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой нСоднозначности, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ нашС ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ удовлСтворяСт Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ, ΠΊΠ°ΠΊ прСфиксноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всСго ΠΎΠ΄Π½ΠΈΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом. ΠŸΡ€Π΅Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ прСфиксом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Под ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌ Π±ΠΈΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для прСдставлСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ символа. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 0 – это прСфикс 011, Ρ‡Ρ‚ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ прСфиксноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ. Π˜Ρ‚Π°ΠΊ, Ссли наши ΠΊΠΎΠ΄Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ прСфиксному ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ провСсти Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚).

Π”Π°Π²Π°ΠΉΡ‚Π΅ пСрСсмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅. На этот Ρ€Π°Π· ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ для символов Β«aΒ», Β«bΒ», Β«cΒ» ΠΈ Β«dΒ» ΠΊΠΎΠ΄Ρ‹, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ прСфиксному ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ.

Π‘ использованиСм Ρ‚Π°ΠΊΠΎΠ³ΠΎ кодирования, строка Β«aabacdabΒ» Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ 00100100011010 (0|0|10|0|100|011|0|10). А Π²ΠΎΡ‚ 00100100011010 ΠΌΡ‹ ΡƒΠΆΠ΅ смоТСм ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ нашСй исходной строкС Β«aabacdabΒ».

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈ прСфиксным ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ основываСтся Π½Π° создании Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π². Π’ Π½Π΅ΠΌ ΡƒΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ, Π»ΠΈΠ±ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС ΡƒΠ·Π»Ρ‹ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π»ΠΈΡΡ‚ΡŒΡΠΌΠΈ (ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ сам символ ΠΈ Π΅Π³ΠΎ вСс (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ частоту появлСния). Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ содСрТат вСс символа ΠΈ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π° ΡƒΠ·Π»Π°-наслСдника. По ΠΎΠ±Ρ‰Π΅ΠΌΡƒ соглашСнию, Π±ΠΈΡ‚ Β«0Β» прСдставляСт слСдованиС ΠΏΠΎ Π»Π΅Π²ΠΎΠΉ Π²Π΅Ρ‚Π²ΠΈ, Π° Β«1Β» β€” ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΉ. Π’ ΠΏΠΎΠ»Π½ΠΎΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ N Π»ΠΈΡΡ‚ΡŒΠ΅Π² ΠΈ N-1 Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ². РСкомСндуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ построСнии Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π»ΠΈΡΡŒ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ символы для получСния ΠΊΠΎΠ΄ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ для построСния Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, Π³Π΄Π΅ ΡƒΠ·Π»Ρƒ с наимСньшСй частотой Π±ΡƒΠ΄Π΅Ρ‚ присвоСн Π²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. НиТС описаны шаги построСния:

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. image loader. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. image loader. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. image loader. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. image loader. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. image loader. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.

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

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. image loader. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.
Π”Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

НиТС Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сТатия Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π½Π° языках C++ ΠΈ Java:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строкой, составляСт 47 * 8 = 376 Π±ΠΈΡ‚, Π° закодированная строка Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всСго 194 Π±ΠΈΡ‚Π°, Ρ‚.Π΅. Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΆΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 48%. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° Π‘++ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ класс string для хранСния Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΉ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эффСктивныС структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π° вставку O(log(N)) Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° Π² ΠΏΠΎΠ»Π½ΠΎΠΌ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ с N Π»ΠΈΡΡ‚ΡŒΡΠΌΠΈ присутствуСт 2N-1 ΡƒΠ·Π»ΠΎΠ², ΠΈ Π΄Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° – это ΠΏΠΎΠ»Π½ΠΎΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° O(Nlog(N)) Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π³Π΄Π΅ N – количСство символов.

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

Код Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых распространСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сТатия Π΄Π°Π½Π½Ρ‹Ρ…. Π Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ ΠΊΠΎΠ΄Π΅ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Huffman code) ΠΈΠ»ΠΈ минимально-ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΌ прСфиксном ΠΊΠΎΠ΄Π΅ (minimum-redundancy prefix code). ΠœΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с основных ΠΈΠ΄Π΅ΠΉ ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, исслСдуСм ряд Π²Π°ΠΆΠ½Ρ‹Ρ… свойств ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΠΎΠ»Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π΅Ρ€Π° ΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π°, построСнных Π½Π° идСях, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ИдСя, лСТащая Π² основС ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, достаточно проста. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС символы ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ числом Π±ΠΈΡ‚ (ΠΊΠ°ΠΊ это сдСлано, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ASCII ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, Π³Π΄Π΅ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ отводится Ρ€ΠΎΠ²Π½ΠΎ ΠΏΠΎ 8 Π±ΠΈΡ‚), Π±ΡƒΠ΄Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅, мСньшим числом Π±ΠΈΡ‚, Ρ‡Π΅ΠΌ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅ΠΆΠ΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Π±Ρ‹Π» ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΈΠ»ΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, минимально-ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π΅Π½.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Ρ‚Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Дэвид Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ (David Huffman) [1] Π² 1952 Π³ΠΎΠ΄Ρƒ. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π΄Π²ΡƒΡ…ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΉ. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ строится частотный ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ΄Ρ‹. На Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ происходит нСпосрСдствСнно ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π° 50 Π»Π΅Ρ‚ со дня опубликования, ΠΊΠΎΠ΄ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π½ΠΈΡ‡ΡƒΡ‚ΡŒ Π½Π΅ потСрял своСй Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ значимости. Π’Π°ΠΊ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сталкиваСмся с Π½ΠΈΠΌ, Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ (Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Π°Ρ‰Π΅ работая Π² связкС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ), практичСски ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹, смотрим Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, Ρ„ΠΈΠ»ΡŒΠΌΡ‹, посылаСм факс ΠΈΠ»ΠΈ ΡΠ»ΡƒΡˆΠ°Π΅ΠΌ ΠΌΡƒΠ·Ρ‹ΠΊΡƒ.

Код Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

(1)ci Π½Π΅ являСтся прСфиксом для cj, ΠΏΡ€ΠΈ i!=j
(2)Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. 127979. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-127979. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 127979. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.минимальна (|ci| Π΄Π»ΠΈΠ½Π° ΠΊΠΎΠ΄Π° ci)

называСтся минимально-ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ прСфиксным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΊΠΎΠ΄ΠΎΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

ЗамСчания:

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌΡƒ прСфиксному ΠΊΠΎΠ΄Ρƒ соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 2: Π‘ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠΎΠ΄Ρƒ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

Π—Π°Π΄Π°Ρ‡Π° построСния ΠΊΠΎΠ΄Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½Π° Π·Π°Π΄Π°Ρ‡Π΅ построСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅ΠΌΡƒ Π΄Π΅Ρ€Π΅Π²Π°. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΎΠ±Ρ‰ΡƒΡŽ схСму построСния Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°:

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: построим Π΄Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° для сообщСния S=»A H F B H C E H E H C E A H D C E E H H H C H H H D E G H G G E H C H H».

Для Π½Π°Ρ‡Π°Π»Π° Π²Π²Π΅Π΄Π΅ΠΌ нСсколько ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

Π’ спискС, ΠΊΠ°ΠΊ ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ, остался всСго ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π». Π”Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° построСно. Π’Π΅ΠΏΠ΅Ρ€ΡŒ запишСм Π΅Π³ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌ для нас Π²ΠΈΠ΄Π΅.

ЛистовыС ΡƒΠ·Π»Ρ‹ Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ символам ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π“Π»ΡƒΠ±ΠΈΠ½Π° листовых ΡƒΠ·Π»ΠΎΠ² Ρ€Π°Π²Π½Π° Π΄Π»ΠΈΠ½Π΅ ΠΊΠΎΠ΄Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… символов.

A=0010binC=000binE=011binG=0101bin
B=01001binD=0011binF=01000binH=1bin

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС S. Достаточно просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π΅ΠΌΡƒ ΠΊΠΎΠ΄ΠΎΠΌ:

S / =»0010 1 01000 01001 1 000 011 1 011 1 000 011 0010 1 0011 000 011 011 1 1 1 000 1 1 1 0011 011 0101 1 0101 0101 011 1 000 1 1″.

ΠžΡ†Π΅Π½ΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ сТатия. Π’ исходном сообщСнии S Π±Ρ‹Π»ΠΎ 36 символов, Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎ [log2|A|]=3 Π±ΠΈΡ‚Π° (здСсь ΠΈ Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [] ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΡƒΡŽ Π² ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ сторону, Ρ‚.Π΅. [3,018]=4). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π·ΠΌΠ΅Ρ€ S Ρ€Π°Π²Π΅Π½ 36*3=108 Π±ΠΈΡ‚

Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΆΠ°Ρ‚ΡŒ 108 Π² 89 Π±ΠΈΡ‚.

Ясно, Ρ‡Ρ‚ΠΎ слСдуя этому Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ ΠΌΡ‹ Π² точности ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ исходноС сообщСниС S.

ΠšΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Как ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°, ΠΊΠΎΠ΄ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π½Π΅ СдинствСнСн. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π»ΡŽΠ±Ρ‹ΠΌ трансформациям Π±Π΅Π· ΡƒΡ‰Π΅Ρ€Π±Π° для эффСктивности ΠΏΡ€ΠΈ соблюдСнии всСго Π΄Π²ΡƒΡ… условий: ΠΊΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ прСфиксными ΠΈ ΠΈΡ… Π΄Π»ΠΈΠ½Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

Π”Π°Π»Π΅Π΅, для краткости, Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ каноничСский ΠΊΠΎΠ΄ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° просто каноничСским ΠΊΠΎΠ΄ΠΎΠΌ.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 4: Π‘ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ каноничСскому ΠΊΠΎΠ΄Ρƒ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°, Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ каноничСским Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ каноничСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° для сообщСния S, ΠΈ сравним Π΅Π³ΠΎ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

Π’Ρ‹ΠΏΠΈΡˆΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ каноничСскиС ΠΊΠΎΠ΄Ρ‹ для всСх символов нашСго Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ ΠΈ дСсятичной Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΡ€ΠΈ этом сгруппируСм символы ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ ΠΊΠΎΠ΄Π°.

B=00000bin=0decA=0001bin=1decC=010bin=2decH=1bin=1dec
F=00001bin=1decD=0010bin=2decE=011bin=3dec
G=0011bin=3dec

УбСдимся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ свойства (1) ΠΈ (2) ΠΈΠ· опрСдСлСния 3 Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ:

Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Ρ€ΠΈ символа: A, D, G. ВсС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ЛСксикографичСски A ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ (ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄Π° 3). Π•Π³ΠΎ порядковый Π½ΠΎΠΌΠ΅Ρ€ Π½Π° этом ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π°Π²Π΅Π½ 2 (учитывая Π΄Π²Π° нСлистовых ΡƒΠ·Π»Π° слСва), Ρ‚.Π΅. числСнно Ρ€Π°Π²Π΅Π½ ΠΊΠΎΠ΄Ρƒ символа C. Π’Π΅ΠΏΠ΅Ρ€ΡŒ запишСм этот Π½ΠΎΠΌΠ΅Ρ€ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π³ΠΎ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π±ΠΈΡ‚ΠΎΠΌ слСва (Ρ‚.ΠΊ. 2 прСдставляСтся двумя Π±ΠΈΡ‚Π°ΠΌΠΈ, Π° ΠΊΠΎΠ΄ символа C трСмя): 2dec=10bin=>0 10bin. ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π² точности ΠΊΠΎΠ΄ символа C.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Ρƒ: каноничСскиС ΠΊΠΎΠ΄Ρ‹ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ своими Π΄Π»ΠΈΠ½Π°ΠΌΠΈ. Π­Ρ‚ΠΎ свойство каноничСских ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. ΠœΡ‹ ΠΊ Π½Π΅ΠΌΡƒ Π΅Ρ‰Π΅ вСрнСмся.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вновь Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅ΠΌ сообщСниС S, Π½ΠΎ ΡƒΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ каноничСских ΠΊΠΎΠ΄ΠΎΠ²:

Z / =»0001 1 00001 00000 1 010 011 1 011 1 010 011 0001 1 0010 010 011 011 1 1 1 010 1 1 1 0010 011 0011 1 0011 0011 011 1 010 1 1″

Π’.ΠΊ. ΠΌΡ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ сообщСния Π½Π΅ измСнился: |S / |=|Z / |=89 Π±ΠΈΡ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСкодирования (CANONICAL_DECODE) [5]:

Z / =»0001 1 00001 00000 1 010 011 1 011 1 010 011 0001 1 0010 010 011 011 1 1 1 010 1 1 1 0010 011 0011 1 0011 0011 011 1 010 1 1″

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ 3 ΠΏΠ΅Ρ€Π²Ρ‹Ρ… символа: A, H, F. Ясно, Ρ‡Ρ‚ΠΎ слСдуя этому Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π² точности сообщСниС S.

Π­Ρ‚ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, самый простой Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для дСкодирования каноничСских ΠΊΠΎΠ΄ΠΎΠ². К Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ массу ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² [5] ΠΈ [9].

ВычислСниС Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ²

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСниС Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠ΄Ρ‹ символов ΠΈ ΠΈΡ… Π΄Π»ΠΈΠ½Ρ‹. Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, каноничСскиС ΠΊΠΎΠ΄Ρ‹ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ своими Π΄Π»ΠΈΠ½Π°ΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, наша главная Π·Π°Π΄Π°Ρ‡Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² вычислСнии Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ².

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ эта Π·Π°Π΄Π°Ρ‡Π°, Π² ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ построСния Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° Π² явном Π²ΠΈΠ΄Π΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ (Π½Π΅ явноС) прСдставлСниС Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π³ΠΎΡ€Π°Π·Π΄ΠΎ эффСктивнСС Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚ памяти.

На сСгодняшний дСнь сущСствуСт мноТСство эффСктивных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² вычислСния Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ² ([3], [4]). ΠœΡ‹ ограничимся рассмотрСниСм лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ достаточно прост, Π½ΠΎ нСсмотря Π½Π° это ΠΎΡ‡Π΅Π½ΡŒ популярСн. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΊΠ°ΠΊ zip, gzip, pkzip, bzip2 ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ….

ВСрнСмся ΠΊ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ построСния Π΄Π΅Ρ€Π΅Π²Π° Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°. На ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск Π΄Π²ΡƒΡ… ΡƒΠ·Π»ΠΎΠ² с наимСньшим вСсом. Ясно, Ρ‡Ρ‚ΠΎ для этой Ρ†Π΅Π»ΠΈ большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ², такая ΠΊΠ°ΠΊ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π° (минимальная). Π£Π·Π΅Π» с наимСньшим вСсом ΠΏΡ€ΠΈ этом Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° сохранСн ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΅Π³ΠΎ родитСля. Π£ корня Π΄Π΅Ρ€Π΅Π²Π° этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ€Π°Π²Π½Ρ‹ΠΌ NULL. Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ листовой ΡƒΠ·Π΅Π» (символ) ΠΈ слСдуя сохранСнным указатСлям Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ станСт Ρ€Π°Π²Π΅Π½ NULL. ПослСднСС условиС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π΄ΠΎ корня Π΄Π΅Ρ€Π΅Π²Π°. Ясно, Ρ‡Ρ‚ΠΎ число ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² с уровня Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ€Π°Π²Π½ΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ листового ΡƒΠ·Π»Π° (символа), Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ Π΄Π»ΠΈΠ½Π΅ Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°. Обойдя Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ всС ΡƒΠ·Π»Ρ‹ (символы), ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Π»ΠΈΠ½Ρ‹ ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ².

Максимальная длина кода

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊ называСмая кодовая ΠΊΠ½ΠΈΠ³Π° (CodeBook), простая структура Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎ сути Π΄Π²Π° массива: ΠΎΠ΄ΠΈΠ½ с Π΄Π»ΠΈΠ½Π°ΠΌΠΈ, Π΄Ρ€ΡƒΠ³ΠΎΠΉ с ΠΊΠΎΠ΄Π°ΠΌΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠΎΠ΄ (ΠΊΠ°ΠΊ битовая строка) хранится Π² ячСйкС памяти ΠΈΠ»ΠΈ рСгистрС фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (Ρ‡Π°Ρ‰Π΅ 16, 32 ΠΈΠ»ΠΈ 64). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ помСстится Π² рСгистр.

ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π½Π° N-символьном Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ (N-1) Π±ΠΈΡ‚ Π² Π΄Π»ΠΈΠ½Ρƒ. Π˜Π½Π°Ρ‡Π΅ говоря, ΠΏΡ€ΠΈ N=256 (распространСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚) ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² 255 Π±ΠΈΡ‚ Π΄Π»ΠΈΠ½ΠΎΠΉ (ΠΏΡ€Π°Π²Π΄Π° для этого Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π²Π΅Π»ΠΈΠΊ: 2.292654130570773*10^53

=2^177.259)! Ясно, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π² рСгистр Π½Π΅ помСстится ΠΈ с Π½ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Для Π½Π°Ρ‡Π°Π»Π° выясним ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… условиях Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠŸΡƒΡΡ‚ΡŒ частота i-Π³ΠΎ символа Ρ€Π°Π²Π½Π° i-ΠΌΡƒ числу Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ. НапримСр: A-1, B-1, C-2, D-3, E-5, F-8, G-13, H-21. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

Π’Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ называСтся Π²Ρ‹Ρ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ частоты символов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ расти ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΊΠ°ΠΊ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ быстрСС. Π₯отя Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ искусствСнно. Π’ любом случаС эту ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.

Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ двумя ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌΠΈ способами. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… опираСтся Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΠ· свойств каноничСских ΠΊΠΎΠ΄ΠΎΠ². Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² каноничСском ΠΊΠΎΠ΄Π΅ (Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ строкС) Π½Π΅ Π±ΠΎΠ»Π΅Π΅ [log2N] ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Π±ΠΈΡ‚ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСнулями. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ, Ρ‚.ΠΊ. ΠΎΠ½ΠΈ всСгда Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ. Π’ случаС N=256 Π½Π°ΠΌ достаточно ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ лишь младшиС 8 Π±ΠΈΡ‚ΠΎΠ², подразумСвая всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ Π½ΡƒΠ»ΡŽ. Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½ΠΎ лишь отчасти. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТнит ΠΈ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ этот способ Ρ€Π΅Π΄ΠΊΠΎ примСняСтся Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² искусствСнном ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΠ½ ΠΊΠΎΠ΄ΠΎΠ² (Π»ΠΈΠ±ΠΎ Π²ΠΎ врСмя построСния, Π»ΠΈΠ±ΠΎ послС). Π­Ρ‚ΠΎΡ‚ способ являСтся общСпринятым, поэтому ΠΌΡ‹ остановимся Π½Π° Π½Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΠ΄ΠΎΠ². ЭвристичСскиС (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅) ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅. Алгоритмы Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° достаточно слоТны Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ памяти, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Π΅. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ эвристичСски-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° опрСдСляСтся Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ. Π§Π΅ΠΌ мСньшС эта Ρ€Π°Π·Π½ΠΈΡ†Π°, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… эвристичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² эта Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π° ([6], [7], [8]), ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ½ΠΈ ΠΎΡ‡Π΅Π½ΡŒ часто Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ (хотя ΠΈ Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ всСгда). Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚.ΠΊ. Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ случаСтся ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ поставлСно ΠΎΡ‡Π΅Π½ΡŒ ТСсткоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄Π°), ΠΏΡ€ΠΈ нСбольшом Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° цСлСсообразнСС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ простыС ΠΈ быстрыС эвристичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ΠœΡ‹ рассмотрим ΠΎΠ΄ΠΈΠ½ достаточно простой ΠΈ ΠΎΡ‡Π΅Π½ΡŒ популярный эвристичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Он нашСл своС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΊΠ°ΠΊ zip, gzip, pkzip, bzip2 ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ….

НачнСм Ρ€Π°Π±ΠΎΡ‚Ρƒ с уровня L. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠΌ ΡƒΠ·Π΅Π» RNL Π½Π° мСсто своСго родитСля. Π’.ΠΊ. ΡƒΠ·Π»Ρ‹ ΠΈΠ΄ΡƒΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ мСсто ΠΈ для сосСдного с RNL ΡƒΠ·Π»Π°. Для этого Π½Π°ΠΉΠ΄Π΅ΠΌ блиТайший ΠΊ L ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ j, содСрТащий листовыС ΡƒΠ·Π»Ρ‹, Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ j &lt (L-1). На мСстС LNj сформируСм нСлистовой ΡƒΠ·Π΅Π» ΠΈ присоСдиним ΠΊ Π½Π΅ΠΌΡƒ Π² качСствС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π΅Π» LNj ΠΈ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ Π±Π΅Π· ΠΏΠ°Ρ€Ρ‹ ΡƒΠ·Π΅Π» с уровня L. Ко всСм ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΡΡ ΠΏΠ°Ρ€Π°ΠΌ ΡƒΠ·Π»ΠΎΠ² Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ L ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Ясно, Ρ‡Ρ‚ΠΎ пСрСраспрСдСлив Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ·Π»Ρ‹, ΠΌΡ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΈ высоту нашСго Π΄Π΅Ρ€Π΅Π²Π° Π½Π° 1. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° Ρ€Π°Π²Π½Π° (L-1). Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ L / &lt (L-1), Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π΅ΠΌ Ρ‚ΠΎ ΠΆΠ΅ самоС с ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ (L-1) ΠΈ Ρ‚.Π΄. Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнуто.

ВСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π³Π΄Π΅ L=5. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄Π° Π΄ΠΎ L / =4.

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² нашСм случаС RNL=F, j=3, LNj=C. Π‘Π½Π°Ρ‡Π°Π»Π° пСрСмСстим ΡƒΠ·Π΅Π» RNL=F Π½Π° мСсто своСго родитСля.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° мСстС LNj=C сформируСм нСлистовой ΡƒΠ·Π΅Π».

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠΌ ΠΊ сформированному ΡƒΠ·Π»Ρƒ Π΄Π²Π° Π½Π΅ΠΏΠ°Ρ€Π½Ρ‹Ρ…: B ΠΈ C.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄Π° Π΄ΠΎ 4. Ясно, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΠ΄ΠΎΠ², ΠΌΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ потСряли Π² эффСктивности. Π’Π°ΠΊ сообщСниС S, Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ 92 Π±ΠΈΡ‚Π°, Ρ‚.Π΅. Π½Π° 3 Π±ΠΈΡ‚Π° большС ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с минимально-ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

Ясно, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ сильнСС ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄Π°, Ρ‚Π΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ эффСктивСн Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ΄. Выясним насколько ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ ΠΊΠΎΠ΄Π°. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΊΠΎΡ€ΠΎΡ‡Π΅ [log2N] Π±ΠΈΡ‚.

ВычислСниС каноничСских ΠΊΠΎΠ΄ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ присвоим ΠΊΠΎΠ΄Ρ‹ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ символам. Код ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ i Ρ€Π°Π²Π΅Π½ Si, Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Si + 1, Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Si + 2 ΠΈ Ρ‚.Π΄.

Π’Ρ‹ΠΏΠΈΡˆΠ΅ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΊΠΎΠ΄Ρ‹ для нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

B = S5 = 00000binA = S4 = 0001binC = S3 = 010binH = S1 = 1bin
F = S5 + 1 = 00001binD = S4 + 1 = 0010binE = S3 + 1 = 011bin
G = S4 + 2 = 0011bin

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΊΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ явно построили каноничСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ сообщСниС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Ρƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ (Π² Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅), ΠΊΠ°ΠΊΠΎΠ΅ использовалось ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вмСстС с Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ. Ясно, Ρ‡Ρ‚ΠΎ Ρ‡Π΅ΠΌ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅.

МоТно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ список частот символов (Ρ‚.Π΅. частотный ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ). Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° смоТСт Ρ€Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ. Π₯отя этот способ ΠΈ ΠΌΠ΅Π½Π΅Π΅ расточитСлСн Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ, ΠΎΠ½ Π½Π΅ являСтся Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ нСсколько Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ RLE Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Π΄Π»ΠΈΠ½, Π½ΠΎ ΠΈ ΠΊΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ. Π’Π°ΠΊΠΎΠΉ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° являСтся общСпринятым ΠΈ примСняСтся Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ.

РСализация: SHCODEC

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: биография Π”. Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π°

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

[1] D.A. Huffman, «A method for the construction of minimum-redundancy codes», Proc. Inst. Radio Engineers, vol. 40, no. 9, pp. 1098-1101, Sep. 1952. [Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ]

[2] E.S. Schwartz, B. Kallick, «Generating a canonical prefix encoding», Communications of the ACM, vol. 7, no. 3, pp. 166-169, Mar. 1964.

[3] J.V. Leeuwen, «On the construction of Huffman trees», Proc. 3rd International Colloquium on Automata, Languages, and Programming, Edinburgh University, pp. 382-410 July 1976.

[4] J. Katajainen, A. Moffat, «In-place calculation of minimum-redundancy codes», Proc. Workshop on Algorithms and Data Structures, pp. 393-402, Aug. 1995. [Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ]

[5] A. Moffat, A. Turpin, «On the implementation of minimum-redundancy prefix codes», IEEE Transactions on Communications, vol. 45, no. 10, pp. 1200-1207, June 1997. [Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ]

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

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

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

Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. 127978. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π° Ρ„ΠΎΡ‚ΠΎ. Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°-127978. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ΄ Ρ…Π°Ρ„Ρ„ΠΌΠ°Π½Π°. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 127978. Алгоритм Π₯Π°Ρ„Ρ„ΠΌΠ°Π½Π° (Π°Π½Π³Π». Huffman's algorithm) β€” Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ прСфиксного кодирования Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°. Π‘Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1952 Π³ΠΎΠ΄Ρƒ аспирантом ΠœΠ°ΡΡΠ°Ρ‡ΡƒΡΠ΅Ρ‚ΡΠΊΠΎΠ³ΠΎ тСхнологичСского института Дэвидом Π₯Π°Ρ„Ρ„ΠΌΠ°Π½ΠΎΠΌ ΠΏΡ€ΠΈ написании ΠΈΠΌ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… сТатия Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PKZIP 2, LZH ΠΈ Π΄Ρ€.