Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу ТИПИС (1).doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
4.47 Mб
Скачать

1.2. Коды по законам комбинаторики

Способы комбинирования позволяют строить комбинаторные коды. Различают коды, использующие все возможные комбинации с их частичным использованием [11].

1.2.1. Коды по закону размещений. Закон соединений предусматривает, что кодовая комбинация включает n символов из их общего числа k. Длина кодовой комбинации может быть 2nk-1. Комбинации различаются либо составом символов, либо порядком их следования.

Мощность кода определится по формуле

.

Пример. Пусть k=4, k={0,1,2,3}, N= . Построить код по закону размещений.

Множество кодовых комбинаций {01, 02, 03, 12, 13, 23, 10, 20, 30, 21, 31, 32}.

1.2.2. Коды по закону сочетаний. Закон соединений определяет построение кодовых комбинаций с включением в них n символов из К в алфавите. Кодовые комбинации различается только составом символов.

Мощность кода определится по формуле

.

Пример. Пусть k=4, k={0,1,2,3}, n=2 .

Множество кодовых комбинаций {01, 01, 03, 12, 13, 23} или {10, 20, 30, 21, 31, 32}.

1.2.3. Коды по закону перестановок. Закон перестановок характеризуется тем, что все k символов алфавита однократно входят в каждую кодовую комбинацию, т.е. n=k. Кодовые комбинации различаются порядком следования символов. Мощность кода определится по формуле N=PK=k!.

Пример. Пусть k=3, k={0,1,2}, N=PK=3!=6.

Множество кодовых комбинаций {012, 021, 102, 120, 201, 210}.

Очевидно, что для данного кода с ростом N необходимо очень быстро увеличивать k. Это недостаток кода.

Уменьшить алфавит кода при заданном числе N можно за счет увеличения длины кодовой комбинации, т.е. r–кратного повторения одного или нескольких символов в кодовой комбинации.

Пусть каждая кодовая комбинация содержит ri число символов i, тогда мощность кода определится по формуле

.

Данный код называется кодом по закону перестановок с повторением.

Пример. Пусть k=3, k={0,1,2}, r0=2, r1=r1=1, N=12.

Множество кодовых комбинаций {0012, 0021, 0102, 0120, 0201, 0210, 1002, 1020, 1200, 2001, 2010, 2100}.

1.2.4. Сменно–качественные коды. Это разновидность кодов на соединения. В данных кодах соседние символы не должны быть одинаковы. Основание должно быть k>2. Если k=2, то получим при n=4 только две кодовые комбинации 0101 и 1010. Мощность кода определится по формуле N=k(k-1)n-1.

Пример. Пусть k=3, n=3, N=3x22=12.

Множество кодовых комбинаций {010, 012, 020, 021, 101, 102, 120, 121, 201, 202, 212, 210}.

2. Помехоустойчивые коды

2.1. Основные понятия

Ошибки в принятой кодовой комбинации можно обнаружить и исправить с помощью помехоустойчивого кода.

Коды реализуются для режимов обнаружения ошибок, исправления ошибок и одновременного обнаружения и исправления ошибок.

Корректирующие возможности кода определяются его избыточностью, понятие которой состоит в следующем [15,17].

Равномерный (простой) двоичный код имеет множество кодовых комбинаций B={bi}, мощность которых определяется как N=2n, где n - разрядность (длина) кода.

Для передачи сообщений из множества B выбирают по определенному закону подмножество AB мощностью M кодовых комбинаций, причем M<N. Эти M кодовых комбинаций объявляют разрешенными, а M-N кодовых комбинаций – запрещенными.

Избыточность кода оценивают по формуле

=1-log2M/ log2N.

Множество A разрешенных кодовых комбинаций является помехоустойчивым кодом.

Аналогично можно ошибки записать в виде кодовых комбинаций, причем множество возможных ошибок E={ei} будет иметь мощность E=N, т.е. E=B.

Число ненулевых разрядов в кодовых комбинациях называется весом комбинации. Обозначим кодовую комбинацию через bi, а вес di этой кодовой комбинации – через (di). Если bi=0101101, то (di)=4.

Кратность ошибки равна весу комбинации ошибок ei.

Пусть передается кодовая комбинация aiA, а принимается кодовая комбинация biB, причем bi может принадлежать и не принадлежать множеству A. Кодовая комбинация bi есть результат воздействия ошибки на кодовую комбинацию ai, т.е. bi=ai ei. Безошибочной будет передача в том случае, если bi=ai, т.е. (ei)=0. При (ei)0biai и возможно, что biA - необнаруженная ошибка или biA - обнаруженная ошибка в принятой кодовой комбинации.

Идея обнаружения ошибок состоит в следующем.

Принятая кодовая комбинация декодируется автоматическим устройством – декодером. В результате декодирования принимается решение, содержит или нет кодовая комбинация ошибки. При этом проверяются условия: а) biA и biВ/A; б) biВ/A и biA. При выполнении условия б) считается, что кодовая комбинация содержит ошибку.

Очевидно, что возможно обнаружить те ошибки, которые переводят кодовую комбинацию ai в множество В/A, причем число этих комбинаций ошибок равно N-M. Остальные M комбинации ошибок не обнаруживаются, т.к. они переводят одну разрешенную кодовую комбинацию в другую кодовую комбинацию.

Пример. Пусть n=4. Множество простого кода В={0000, 0001, 0010, 0011, 0100, …, 1111}. Выберем множество A по закону . Тогда множество A={0011, 0101, 0110, 1001, 1010, 1100}, а множество В/A содержит оставшиеся комбинации из множества простого кода. Множество E=В. Пусть e=0110, a=1000, тогда при поразрядном суммировании e и a по модулю два получим b=ae=1110. Так как кодовая комбинация biВ/A, то ошибка обнаружена.

Идея исправления ошибок состоит в следующем. Множество простого кода В разбивается на M=2m подмножеств Вi, причем Вi=2n-m. В каждое множество Вi входит одна разрешенная кодовая комбинация aiВi и (2n-m-1) запрещенных кодовых комбинаций.

При декодировании принятой кодовой комбинаций bi проверяется, какому из подмножеств Вj (j=1,1,…, 2n-m) принадлежит комбинация bi. Если biВj, то принимается решение, что передавалась кодовая комбинация aj. Исправляются все ошибки, в результате которых biВj, причем их количество 2n-m-1. Все остальные ошибки, которые “выводят” bi из множества Вj (biВj), не исправляются.

Пример. Множество простого кода В={0000, 0001, 0010, 0011, 0100, …, 1111}. M=21, Вi=23-1=22=4. Построим множества В1={101, 001, 111, 100} и В2={010, 110, 011, 000}. Разрешенные кодовые комбинации 101 и 010.

Если ai=101 и e=111, то bj=aie=010. Следовательно, ошибка не обнаружена.

Если ai=101 и e=001, то bj=aie=100, ошибка обнаружена.

При построении кода решаются две задачи:

1) как выбрать множество А (задача кодирования);

2) как разбить множество В на подмножества Вi (задача декодирования).