Помехоустойчивое кодирование Линейные коды Некоторые предположения •Блоковый код- код, в котором все слова имеют одинаковую длину. •Кодовое слово – слово из некоторого кода С. Исходные предположения относительно канала 1. Сохранение длины. Слово на выходе канала имеет такую же длину, как кодовое слово на входе канала. 2. Независимость ошибок. Вероятность ошибки любого символа сообщения одна и та же. Исходная стратегия декодирования • При декодировании мы используем принцип максимального правдоподобия, или стратегию ближайшего соседа, согласно которым получатель должен декодировать полученное слово w' как кодовое слово w, ближайшее к w'. Расстояние Хэмминга •Интуитивное понятие “близости'' двух слов формализуется с помощью расстояния Хэмминга d(x, y) слов x, y. •Для двух слов x, y d(x, y) = число символов, в которых они различаются. •Примеры: h(10101, 01100) = 3, h(fourth, eighth) = 4 Свойства расстояния Хэмминга (1) • (1) d(x, y) = 0 x = y • (2) d(x, y) = d(y, x) • (3) d(x, z) d(x, y) + d(y, z) (неравенство треугольника) • Важнейшей характеристикой кодаC является его минимальное расстояние • d(C) = min {d(x, y) | x,y C, x y}, • d (C) дает наименьшее число ошибок, необходимое для перевода одного кодового слова в другое. Свойства расстояния Хэмминга (2) • Теорема (Основная теорема исправления ошибок) • (1) Код C может обнаруживать до s ошибок, если d(C) s + 1. • (2) Код C может исправлять до t ошибок, если d(C) 2t + 1. Доказательство (1) Очевидно. • (2) Предположим d(C) 2t + 1. Пусть передается кодовое слово x и получено слово y так что d(x, y) t. Если x' x является кодовым словом, тогда d(x' ‚ y) t + 1 поскольку в противном случае d(x', y) < t + 1 и следовательно d(x, x') d(x, y) + d(y, x') < 2t + 1 что противоречит предположению d(C) 2t + 1. Кодирование – введение избыточности –алгебраический подход Информационное слово a0 , a1 ,..., ak 1 Кодер Кодовое слово с0 , c1 ,..., cn 1 Систематическое кодирование Информационное слово a0 , a1 ,..., ak 1 Кодер Кодовое слово a0 , a1 ,..., ak 1 , ck ,..., cn Кодирование – введение избыточности (систематическое кодирование) с0 a0 , с1 a1 , информацио нные биты ... сk 1 ak 1 , ck f k (c0 ,..., ck 1 ), ... проверочные биты cn 1 f n 1 (c0 ,..., ck 1 ) Линейное систематические кодирование – линейные функции с0 a0 , с1 a1 , информацио нные биты ... сk 1 ak 1 , ck f k (c0 ,..., ck 1 ), ... проверочные биты, cn 1 f n 1 (c0 ,..., ck 1 ) f k ,..., f n 1 линейные булевы функции Пример линейного систематического кодирования - добавление проверки на четность(1) Пример. Информацио Кодовое нное слово слово 000 0000 001 0011 010 0101 011 0110 100 1001 101 1010 110 1100 111 1111 c0 a0 , с1 a1 , с2 a 2 , с3 c0 c1 c2 . Линейный код (некоторые параметры) - (n,k,d)-код • n – длина кодовых слов (длина кода) • k – число информационных разрядов • d – минимальное кодовое расстояние • k R n - скорость передачи • Комментарий: Хороший (n,k,d)-код имеет маленькое n и большие k и d. Примеры • • C1 = {00, 01, 10, 11} есть (2,2,1)-код. C2 = {000, 011, 101, 110} есть (3,2,2)код. • C3 = {00000, 01101, 10110, 11011} есть (5,2,3)-код. ISBN-код – недвоичный код •Каждая книга имеет International Standard Book Number, которое представляет собой 10разрядное кодовое слово создаваемое издателем и имеющее следующую структуру: • • • •так что l p m w = x1 … x10 язык издатель номер взвешенная контрольная сумма 0 07 709503 0 10 ix i 1 i 0 mod 11 Издатель добавляет X в 10-ю позицию, если x10 = 10. ISBN-код – недвоичный код • Обнаружение одиночной ошибки • Пусть X = x1 … x10 - правильный код и пусть • Y = x1 … xJ-1 yJ xJ+1 … x10 , причем yJ = xJ + a, a0 • В таком случае: 10 10 iy ix i 1 i i 1 i ja 0 mod 11 ISBN-код – недвоичный код • Обнаружение ошибки перестановки • Пусть xJ и xk поменялись местами. 10 10 iy ix k j x j k x k j x x 0 mod 11 i 1 i i 1 i j j k при k j и x j xk . k Пример линейного систематического кодирования - добавление проверки на четность(2) Пример. с0 a0 , Информа ционное слово Кодовое слово 000 0000 001 0011 010 0101 011 0110 100 1001 101 1010 110 1100 111 1111 с1 a1 , с2 a 2 , с3 c0 c1 c2 . c0 1 c 0 1 c2 0 c3 1 0 0 a0 1 0 a1 0 1 a2 1 1 Порождающая матрица Пусть - кодовое слово длины n - информационное слово длины k G G – nxk порождающая матрица кода Систематический код • Первые разрядов кодового слова совпадают с информационными битами Ik G G1 Порождающая матрица • Пример. G 1 с0 с 0 1 0 с2 0 с3 1 с4 1 с5 с 0 6 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 a0 1 a1 1 a2 0 a3 1 • Длина слов n=7, число иформационных разрядов =4, число проверочных разрядов n-k=3 Проверки • Пример. Получаем проверки с4 с0 с2 с3 , с5 с0 с1 с2 , с6 с1 с2 с3 , 1 с0 с 0 1 0 с2 0 с3 1 с4 1 с5 с 0 6 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 a0 1 a1 1 a2 0 a3 1 Проверочная матрица с0 с2 с3 с4 0 • Пример. с0 с 1 1 0 1 1 1 0 0 с2 1 1 1 0 0 1 0 с3 0 0 1 1 1 0 0 1 с 4 с5 с 6 с0 с1 с2 с5 0, с1 с2 с3 с6 0, • H – (n-k)xn проверочная матрица: H 0 Связь порождающей и проверочной матрицы систематического кода • Пример. • 1 0 0 G 0 1 1 0 0 0 0 1 0 0 0 1 0 I4 0 0 1 , P 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 H 1 1 1 0 0 1 0 (P I3 ) 0 1 1 1 0 0 1 G H 0 T Связь порождающей и проверочной матрицы систематического кода • Ik , G nk P ( n k )k H ( P( n k )k I n k ) ( n k )n G H 0 T Сводка результатов по линейным кодам • Линейный код задается порождающей ( G ) или проверочной ( H ) матрицами. • Код (множество кодовых слов) – линейное подпространство, порожденное столбцами G • С другой стороны – линейный код – дуальное подпространство столбцов матрицы H T дуальный код