Изменения
→Взаимосвязь и практическое использование: Частично исправлен и дополнен перевод с англовики; формулы в TeX.
<math>E(l) = \frac{6}{\pi^2} \sum_{l=1}^\infty \frac{1}{l} = \infty .</math>
<math>E(l) = \frac{6}{\pi^2} \sum_{l=1}^\infty \frac{1}{l} = \infty .</math>
== Взаимосвязь и практическое использование ==
== Практическое использование в сжатии данных ==
Использование [[код Хаффмана|кода Хаффмана]] и [[арифметическое кодирование|арифметического кодирования]] (когда они могут использоваться вместе) дают лучший результат, чем любой другой универсальный код.
Использование [[код Хаффмана|кода Хаффмана]] и [[арифметическое кодирование|арифметического кодирования]] (когда они могут использоваться вместе) даёт лучший результат, чем любой другой универсальный код.
Однако, универсальные коды полезны, когда код Хаффмана не может использоваться — например, когда невозможно определить точную вероятность каждого сообщения, но известно ранжирование их вероятностей.
Однако, универсальные коды полезны, когда код Хаффмана не может использоваться — например, когда невозможно определить точную вероятность каждого сообщения, но известно ранжирование их вероятностей.
Универсальные коды также полезны, когда код Хаффмана отрабатывает не совсем корректно. Например, когда отправитель знает вероятности сообщений, а получатель — нет, код Хаффмана требует передачи вероятностей к получателю. Использование универсального кода избавляет от таких неудобств.
Универсальные коды также полезны, когда код Хаффмана отрабатывает не совсем корректно. Например, когда отправитель знает вероятности сообщений, а получатель — нет, код Хаффмана требует передачи вероятностей к получателю. Использование универсального кода избавляет от таких неудобств.
Каждый универсальный код дает собственное «подразумеваемое распределение» вероятностей ''p''(''i'')=2<sup>-''l''(''i'')</sup>, где l(i) — длина i-го ключевого слова и p(i) — вероятность символа передачи. Если фактические вероятности сообщения — q(i) и [[расстояние Кульбака — Лейблера]] DKL(q||p) минимизирует код с l(i), затем оптимальный код Хаффмана для этого множества сообщений будет эквивалентен к этому коду. С тех пор, как универсальные коды стали работать быстрее, чтобы кодировать и декодировать, чем код Хаффмана, универсальный код был бы предпочтителен в случаях, где DKL(q||p) достаточно маленький.
Каждый универсальный код дает собственное «подразумеваемое распределение» вероятностей <math>p(i) = 2^{-l(i)}</math>, где <math>l(i)</math> — длина i-го ключевого слова и <math>p(i)</math> — вероятность символа передачи. Если фактические вероятности сообщения — <math>q(i)</math> и [[расстояние Кульбака — Лейблера]] <math>DKL(q||p)</math> минимизирует код с <math>l(i)</math>, оптимальный код Хаффмана для этого множества сообщений будет эквивалентен к этому коду. Поскольку универсальные коды быстрее, чем код Хаффмана, универсальный код предпочтителен в случаях, где <math>DKL(q||p)</math> достаточно мало.
Для любого [[геометрическое распределение|геометрического распределения]] [[кодирование Голомба]] оптимально. С универсальными кодами, подразумеваемое распределение — приблизительно энергетический закон как например 1 / n2. Для [[код Фибоначчи|кода Фибоначчи]], подразумеваемое распределение составляет приблизительно 1 / nq.
Для любого [[геометрическое распределение|геометрического распределения]] [[кодирование Голомба]] оптимально. Для универсальных кодов подразумеваемое распределение приблизительно подчиняется [[Степенной закон|степенному закону]], например <math>1/n^2</math>, а точнее, [[Закон Ципфа|закону Ципфа]]. Для [[код Фибоначчи|кода Фибоначчи]] подразумеваемое распределение приблизительно подчиняется закону <math>1/n^q</math> при <math>q = 1/\log_2(\varphi) \approx 1{,}44</math>, где <math>\varphi</math> — отношение [[Золотое сечение|золотого сечения]].
== Ссылки ==
== Ссылки ==