Для двоичного источника с вероятностью p единицы найдите выражение для энтропии H(p) и проанализируйте, как изменяется оптимальная длина кода при переходе к каналу с шумом (битовая ошибка с вероятностью ε); опишите, как теоретические пределы связаны с практическими алгоритмами сжатия и исправления ошибок
Энтропия бинарного источника (вероятность единицы ppp): H(p)=−plog2p−(1−p)log2(1−p),
H(p)=-p\log_2 p-(1-p)\log_2(1-p), H(p)=−plog2p−(1−p)log2(1−p),
максимум при p=12p=\tfrac12p=21 равен 111 бит на символ. Оптимальная длина кода (асимптотически): - Теорема Шеннона (сжатие): средняя длина кода на символ LLL удовлетворяет L≥H(p)L\ge H(p)L≥H(p). При блочном кодировании при увеличении блока можно получить L→H(p)L\to H(p)L→H(p). - Практические оценки: префиксный (Хаффман) код даёт H(p)≤LHuffman<H(p)+1,
H(p)\le L_{\text{Huffman}}<H(p)+1, H(p)≤LHuffman<H(p)+1,
арифметическое и контекстно-адаптивное кодирование (или LZ-методы) приближают H(p)H(p)H(p) сколь угодно близко при больших блоках. Добавление шума (BSC с вероятностью ошибки ε\varepsilonε): - Ёмкость бинарного симметричного канала (BSC): C=1−H(ε)=1−(−εlog2ε−(1−ε)log2(1−ε)).
C=1-H(\varepsilon)=1-\bigl(-\varepsilon\log_2\varepsilon-(1-\varepsilon)\log_2(1-\varepsilon)\bigr). C=1−H(ε)=1−(−εlog2ε−(1−ε)log2(1−ε)).
- Условие возможности безошибочной (с вероятностью ошибки стремящейся к нулю) передачи: скорость источника не должна превышать ёмкость канала, т.е. H(p)≤C=1−H(ε).
H(p)\le C=1-H(\varepsilon). H(p)≤C=1−H(ε).
Если это выполняется, то по теореме разделённого кодирования возможно сначала сжать до скорости R≈H(p)R\approx H(p)R≈H(p), затем передать с кодом исправления ошибок с кодовой скоростью R≤CR\le CR≤C. Если H(p)>CH(p)>CH(p)>C, то при любом кодировании нельзя обеспечить надёжную передачу всех исходных битов без потерь. В практических единицах: минимальное число каналных использований на символ источника (асимптотически) не меньше H(p)C=H(p)1−H(ε).
\frac{H(p)}{C}=\frac{H(p)}{1-H(\varepsilon)}. CH(p)=1−H(ε)H(p). Связь теоретических пределов с практическими алгоритмами: - Сжатие: Huffman, arithmetic coding, LZ-семейство приближают среднюю длину к H(p)H(p)H(p) при конечной вычислимости и ресурсах; при малых блоках наблюдается избыточность порядка O(lognn)O\bigl(\tfrac{\log n}{n}\bigr)O(nlogn). - Исправление ошибок: современные коды (LDPC, turbo, polar) приближают ёмкость CCC при больших блоках и умеренной сложности; для конечной длины существует штраф (finite-blocklength) — отклонение от CCC порядка O(1/n)O(1/\sqrt{n})O(1/n). - Разделённое кодирование (сжатие затем кодирование по Шеннону) асимптотически оптимально, но в практических конечных длинах иногда выигрывает совместное кодирование (joint source–channel), особенно при жёстких задержках или малых блоках. Кратко: энтропия H(p)H(p)H(p) задаёт нижнюю границу средней длины сжатого кода; при наличии шума канал имеет ёмкость 1−H(ε)1-H(\varepsilon)1−H(ε), и для надёжной передачи требуется H(p)≤1−H(ε)H(p)\le 1-H(\varepsilon)H(p)≤1−H(ε). Практические алгоритмы стремятся достигнуть этих пределов, но в конечной длине наблюдается неизбежная потеря эффективности, компенсируемая выбором конкретных кодов и блоковых размеров.
H(p)=−plog2p−(1−p)log2(1−p), H(p)=-p\log_2 p-(1-p)\log_2(1-p),
H(p)=−plog2 p−(1−p)log2 (1−p), максимум при p=12p=\tfrac12p=21 равен 111 бит на символ.
Оптимальная длина кода (асимптотически):
- Теорема Шеннона (сжатие): средняя длина кода на символ LLL удовлетворяет L≥H(p)L\ge H(p)L≥H(p). При блочном кодировании при увеличении блока можно получить L→H(p)L\to H(p)L→H(p).
- Практические оценки: префиксный (Хаффман) код даёт
H(p)≤LHuffman<H(p)+1, H(p)\le L_{\text{Huffman}}<H(p)+1,
H(p)≤LHuffman <H(p)+1, арифметическое и контекстно-адаптивное кодирование (или LZ-методы) приближают H(p)H(p)H(p) сколь угодно близко при больших блоках.
Добавление шума (BSC с вероятностью ошибки ε\varepsilonε):
- Ёмкость бинарного симметричного канала (BSC):
C=1−H(ε)=1−(−εlog2ε−(1−ε)log2(1−ε)). C=1-H(\varepsilon)=1-\bigl(-\varepsilon\log_2\varepsilon-(1-\varepsilon)\log_2(1-\varepsilon)\bigr).
C=1−H(ε)=1−(−εlog2 ε−(1−ε)log2 (1−ε)). - Условие возможности безошибочной (с вероятностью ошибки стремящейся к нулю) передачи: скорость источника не должна превышать ёмкость канала, т.е.
H(p)≤C=1−H(ε). H(p)\le C=1-H(\varepsilon).
H(p)≤C=1−H(ε). Если это выполняется, то по теореме разделённого кодирования возможно сначала сжать до скорости R≈H(p)R\approx H(p)R≈H(p), затем передать с кодом исправления ошибок с кодовой скоростью R≤CR\le CR≤C. Если H(p)>CH(p)>CH(p)>C, то при любом кодировании нельзя обеспечить надёжную передачу всех исходных битов без потерь.
В практических единицах: минимальное число каналных использований на символ источника (асимптотически) не меньше
H(p)C=H(p)1−H(ε). \frac{H(p)}{C}=\frac{H(p)}{1-H(\varepsilon)}.
CH(p) =1−H(ε)H(p) .
Связь теоретических пределов с практическими алгоритмами:
- Сжатие: Huffman, arithmetic coding, LZ-семейство приближают среднюю длину к H(p)H(p)H(p) при конечной вычислимости и ресурсах; при малых блоках наблюдается избыточность порядка O(lognn)O\bigl(\tfrac{\log n}{n}\bigr)O(nlogn ).
- Исправление ошибок: современные коды (LDPC, turbo, polar) приближают ёмкость CCC при больших блоках и умеренной сложности; для конечной длины существует штраф (finite-blocklength) — отклонение от CCC порядка O(1/n)O(1/\sqrt{n})O(1/n ).
- Разделённое кодирование (сжатие затем кодирование по Шеннону) асимптотически оптимально, но в практических конечных длинах иногда выигрывает совместное кодирование (joint source–channel), особенно при жёстких задержках или малых блоках.
Кратко: энтропия H(p)H(p)H(p) задаёт нижнюю границу средней длины сжатого кода; при наличии шума канал имеет ёмкость 1−H(ε)1-H(\varepsilon)1−H(ε), и для надёжной передачи требуется H(p)≤1−H(ε)H(p)\le 1-H(\varepsilon)H(p)≤1−H(ε). Практические алгоритмы стремятся достигнуть этих пределов, но в конечной длине наблюдается неизбежная потеря эффективности, компенсируемая выбором конкретных кодов и блоковых размеров.