бит в секунду.
Такова максимальная скорость передачи информации в канале с шумом при
указанном отношении сигнал/шум . Отношение сигнал/шум измеряется в
децибелах (точнее, в белах, деци- - приставка, означающая одну десятую). Данная
единица – логарифмическая, изменение на 1 бел = в 10 раз. Отношение сигнал/шум
в 1 бел означает, что сигнал имеет мощность, большую, чем шум в 10 раз, 2 бел – в
100 раз и т.д. Отношение сигнал/шум в белах бел, в децибелах
дБ.
Число изменений (новых значений) сигнала в секунду измеряется в бодах. Эту
единицу часто путают с битами в секунду. Если сигнал у нас имеет вид «включено-
выключено» или «одна частота - другая частота» (такой сигнал использовался на
начальном этапе соединения модемов), то число изменений сигнала в секунду
совпадает с числом бит в секунду, но как видно из рассуждений выше, за одну
подачу сигнала мы можем передать, если канал позволяет, гораздо больше -
бит информации, так что скорость передачи бит в секунду может быть
значительно больше числа значений сигнала в секунду.
Отметим, что иллюстрация, с помощью которой мы получили формулу выше,
конечно, не доказательство, а именно иллюстрация. Два сигнала, в принципе, можно
различить, даже если разность их мощностей меньше мощности шума, но для этого
их надо передавать достаточно долго. Сигналы различаются не только текущей
мощностью, но и частотой и фазой, и по этим параметрам их тоже можно различать
и передавать сигналы на достаточном «расстоянии» по этим параметрам друг от
друга. Однако, сама формула верна, доказательство, с помощью геометрических
рассуждений, вы можете найти в работе Шеннона. Обратите внимание, кстати, даже
для случая когда и наше рассуждение-иллюстрация не работает, формула
даёт определённое значение для скорости передачи не равное нулю. В
оригинальной формуле под понимается ширина полосы частот, занимаемая
сигналом. Отметим также, что под шумом выше понимается именно белый шум –
значения которого для каждого следующего сигнала никак не связаны с
предыдущим, иначе мы могли бы воспользоваться характеристиками шума для
лучшей передачи сигнала.
Рассуждение о расстоянии между сигналами – по мощности или по частоте или
фазе, напоминает рассуждение о расстоянии Хэмминга между кодовыми словами, о
котором мы говорили выше. Суть та же – в том или ином пространстве разнести
разные сигналы или коды на достаточное расстояние, чтобы отличить их друг от
друга даже при некотором уровне шума.
Вернёмся к вопросам кодирования. В прошлый раз мы познакомились с одним
из корректирующих кодов – кодом Хэмминга и, отдельно, поговорили о расстоянии
между кодовыми последовательностями, о шарах в пространстве таких расстояний с
«радиусом», равным максимальной ошибке, вокруг кодов передаваемых данных.
Напомню, что расстоянием Хэмминга между двумя битовыми
последовательностями называется количество позиций, в которых у этих
последовательностей биты отличаются, например, расстояние между 11100 и 10001
равно 3 – различающиеся позиции подчёркнуты. Шарами радиуса вокруг данной
кодовой последовательности, как и в обычной геометрии, называется множество
точек (т.е. множество кодовых последовательностей), расстояние от которых до
данной меньше или равно . Например, шар радиуса 1 вокруг последовательности
000 включает в себя 100, 010 и 001, остальные 3-битные кодовые
последовательности - «дальше», не попадают внутрь шара.
Мы рассмотрели эти две темы отдельно. Отметили только, что при обсуждении
расстояний между кодовыми последовательностями мы нигде не выделяли биты
исходных данных и контрольные биты, а в коде Хэмминга эти биты были чётко
разделены. Действительно, коды не обязательно содержат отдельно биты исходных
данных, отдельно контрольные – лишь бы по кодовой последовательности в целом
мы могли определить, какие биты данных были закодированы. Коды, в которых
присутствуют отдельно биты данных и контрольные биты в явном виде называются
систематическими кодами, те, в которых биты данных и контрольные не разделены, -
несистематическими,
Мы хотим подбирать кодовые последовательности так, чтобы шары вокруг них
с заданным радиусом не пересекались, при этом мы теряем (не используем в
кодировании) последовательности внутри шаров, кроме центральной, вокруг которой
построен шар. Чем больше последовательностей мы теряем, тем меньше их
остаётся для кодирования и тем на меньшие порции придётся разбивать исходные
данные, чтобы закодировать их данным кодом, т.е. тем больше кодовых
последовательностей придётся передать, чтобы передать одно и то же число
данных.
Но последовательности внутри шаров мы исключаем специально – чтобы код
исправлял ошибки, но что насчёт последовательностей вне шаров? В обычной
геометрии, как бы плотно мы шары (или круги на плоскости) ни расположили,
останутся ещё промежутки между ними, не входящие ни в один шар. Есть ли такие
кодовые последовательности, которые не исключаются ради корректирующей
способности кода, но всё-таки не используются в кодировании?
Пусть мы используем кодовые слова длины . И хотим, чтобы наш код
исправлял ошибок ( , конечно). Значит, мы исключаем вокруг каждого
используемого кодового слова все кодовые слова, отличающиеся от него в и
менее позициях. Количество комбинаций, отличающихся от данного слова ровно в
позициях равно, что называется в комбинаторике, числу сочетаний из по , .
т.к. общее количество слов длины станет равным , а число слов на расстоянии
вокруг используемого слова увеличится в раз, т.к. заменить каждый символ
мы сможем не на 1 другой (1 на 0 и 0 на 1 в двоичном коде), а на .
Что означает «линейность» вы помните – «сумма переходит в сумму,
умножение на константу переходит в умножение на константу», например,
производная – линейный оператор, т.к. и
. А уравнение линейно, т.к. если и его решения, то и
- тоже решение, и - тоже решение.
Линейные коды – такие, что сумма двух используемых кодовых слов тоже
используется в коде и произведение на константу (по модулю! все операции по
модулю) тоже используемое кодовое слово.
Линейные коды – самые распространённые.
Код Хэмминга – линейный, что видно просто из того, что мы выписывали для
него матрицу – такую, что произведение исходного слова на такую матрицу давало
кодовое слово для данного исходного:
Задачи