Принципы построения кодов, исправляющих ошибки.
Так как ваш учебный план, возможно, еще не содержал теории вероятностей, то везде ниже будет, по сути, использоваться та же конструкция, что и при доказательстве теоремы о длине минимального теста для «почти всех» матриц. Дано множество W. Задано свойство S, которым обладает часть элементов этого множества Ws. Под вероятностью того, что объект обладает свойством s будем понимать отношение |Ws||/|W| или его асимптотику. Итак, у нас есть двоичный симметричный канал. (См. определение выше). Он характеризуется единственным параметром p – вероятностью ошибки при передаче символа. Опредиление. Пропускная способность канала – это число C (p) = 1 – H (p), где - энтропия канала. Как раз для случая p=1/2 энтропия равна единице, что соответствует полной неопределенности (абсолютному беспорядку), а пропускная способность канала нулевая. Если p>1/2, то поменяем 0 и 1 местами в определении конала. Поэтому всюду в дальнейшем считаем, что p<1/2. В качестве защиты от ошибок мы используем некоторую конструкцию. Это (n,M,d) – код. Как мы видим, у него три параметра. Пусть t - максимальный радиус шаров с центрами в кодовых точках таких, что они не пересекаются. Очевидно, что t выражается через d и наоборот. Схемы кодирования могут быть самые разные. Рассмотрим одну из самых известных. (Она считается наиболее естественной и соответствующей практическим задачам.) В ее основе лежит два принципа:
pn < pn- 1(1 -p) < pn- 2(1 -p)2 < … < (1 -p) n и говорит о том, что вероятность k ошибок в кодовом слове меньше, чем вероятность s ошибок для всех s>k.
Мы в нашем рассмотрении не затрагиваем протокольные вопросы, а ограничиваемся чисто алгоритмическими, т.е кодер и декодер в процессе передачи не ведут между собой никакого диалога (например, не могут перезапрашивать один раз уже переданные символы и т.п.) В этом случае алгоритм декодирования по принятой информации должен исправлять ошибки, которые возникли при передаче. Но, если кодер просто передает в канал информацию, подлежащую передаче, ничего к ней не добавляя, то у декодера нет никакой возможности исправить ошибки. Таким образом, принцип избыточности заключается в том, что для защиты передаваемой информации используется дополнительная информация. И тут возникает уже знакомая конструкция: нужно уметь отделять кодовые точки друг от руга определенным расстоянием. А это и будут (n,M,d)- коды.
Мы считаем, что все кодовые слова имеют одинаковую длину. (Это вектора пространства Bn). Информация, подлежащая передаче может быть представлена в виде последовательности двоичных слов длины k (k<n). Кодер берет эти слова и преобразует в слова длины n. Здесь и возникает избыточность за счет (n-k) символов. Если кодер просто добавляет к словам, подлежащим передаче эти (n-k) символов, то они называются проверочными символами, а исходные k символов – информационными. Так построенный код называется систематическим кодом. Однако, надо заметить, что далеко не всегда избыточность реализуется столь простым способом. Поэтому принцип избыточности заключается в том, что для защиты от ошибок в канале к информации, подлежащей передаче, что-то добавляется. За счет этой добавки декодер имеет возможность выяснить, произошли ли ошибки и, если произошли, то исправить их. Проиллюстрируем сказанное. Пусть, например, информация, подлежащая передаче, - это битовый поток, подающийся на вход кодера. Кодер нарезает ее в виде последовательности слов длины k. Таким образом можно считать, что передаче в канал подлежат все возможные слова длины k, т.е. вектора пространства Bk, таких словам M=2 k . (Случай 2 k-1 <M<2 k –можно “технически свести» к рассматриваемому, поэтому наше предположение не ограничивает общности). Кодер преобразует вектора пространства Bk в вектора пространства Bn. Таким образом реализуется принцип избыточности.
В общем случае мы имеем M слов, подлежащих передаче, которые могут быть идентифицированы с помощью битовых векторов, длины меньшей n. Обозначим эти слова через α1,α2,…,αM, а сопоставленные им вектора пространства Bn (кодовые вектора) через x1,x2,…,xM. Определение. Отображение φ, ставящее в соответствие αi, i=1,…,M, вектор из Bn и называется кодированием или просто кодом. Из контекста всегда видно, что понимается под кодом: множество или отображение. Так как мы рассматриваем ситуацию защиты информации от помех в канале, то для таких кодов используются следующие названия: корректирующий код, код с исправлением ошибок, код с обнаружением ошибок и т.п. К нему предъявляются естественные требования дешифруемости и неизбыточности. То есть, если φ(αi)=xi, то кодер и декодер всегда «знают» (умеют вычислять), что Но не это является основной проблемой при построении кодов, исправляющих ошибки. Дело в том, что переданное кодером в канал слово xi в результате искажения может превратиться в какое-то слово Yi (это тоже вектор из Bn). Основная задача кодирования. Отображение φ должно быть построено таким образом, чтобы можно было сконструировать алгоритм преобразования Yi в αi. И это должно приводить к исправлению ошибок. Поэтому под декодированием (дешифруемостью) в коде, исправляющем ошибки понимается именно данное преобразование. (Обозначим это преобразование через ψ). Построение каждого такого кода – это отдельное достижение в математике, поэтому принято кодам давать имена их создателей: код Хэмминга, код Боуза- Чаудхури-Хоквингема (БЧХ-код), коды Гоппа и т.д. Интуитивно ясно, что чем хуже канал (больше вероятность ошибки), тем большая требуется избыточность. Поэтому каждый код может исправить только ограниченное количество ошибок в слове определенной длины. Например, если код может исправлять не более двух ошибок в слове длины n=10, то при передаче информации по каналу с p=1/3 этот код не сможет всегда исправлять все ошибки (ниже будет показано, что среднее количество ошибок в слове в таком канале равно 3). Если же этот код используется в канале с p=1/1000, то такой код свои задачи выполнит (с «вероятностью, близкой к единице»). Таким образом, коды подбираются в соответствии с характеристиками канала.
Пример. Мажоритарное кодирование – схема, где передатчик просто повторяет слово, подлежащее передаче в канал, p=2 q+1 >1 раз. Приемник – декодер берет экземпляров полученного слова и каждую позицию в слове дешифрует в тот символ (0 или 1). Который встречается в большей части экземпляров. Например, двухбитовой слово a = 11 → 11|10|11|00|11|11|11 – передали по каналу 7 раз. На первой позиции 6 раз «1» и 1 раз «0» a = 1х. На второй позиции 5 раз «1» и 2 раза «0» a = 11. Избыточность этой схемы очень большая.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|