Часто коды рассматривают, как упорядоченные наборы кодовых слов: K={A1, A2, … An}, в которых порядок задается по определенному принципу. Такие коды называют упорядоченными. Самый распространенный принцип упорядочения лексикографический, то есть в соответствии с порядком символов в алфавите (также как слова упорядочиваются в словарях). Коды с лексикографическим упорядочением называются прямыми. К прямым кодам относится упоминавшийся ранее код Трисиме. Если символы кода рассматривать как цифры, то порядок слов в прямом коде соответствует порядку чисел в позиционной системе счисления.
Следующая таблица представляет примеры упорядоченных кодов (взята из книги Ф.Бауэр, Г.Гооз «Информатика», стр. 44):
Д в о и ч н ы е к о д ы
Символ
цифры
Прямой
Грея
Штибица
Грея-Штибица
Айкена
Бикви-
нарный
1 из 10
2 из 5
CCIT-2
0 0 0 0
0 0 0 0
0 0 1 1
0 0 1 0
0 0 0 0
1 1 0 0 0
0 1 1 0 1
0 0 0 1
0 0 0 1
0 1 0 0
0 1 1 0
0 0 0 1
0 0 01 1
1 1 1 0 1
0 0 1 0
0 0 1 1
0 1 0 1
0 1 1 1
0 0 1 0
0 0 1 0 1
1 1 0 0 1
0 0 1 1
0 0 1 0
0 1 1 0
0 1 0 1
0 0 1 1
0 0 1 1 0
1 0 0 0 0
0 1 0 0
0 1 1 0
0 1 1 1
0 1 0 0
0 1 0 0
0 1 0 0 1
0 1 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 1 0 0
1 0 1 1
0 1 0 1 0
0 0 0 0 1
0 1 1 0
0 1 0 1
1 0 0 1
1 1 0 1
1 1 0 0
0 1 1 0 0
1 0 1 0 1
0 1 1 1
0 1 0 0
1 0 1 0
1 1 1 1
1 1 0 1
1 0 0 0 1
1 1 1 0 0
1 0 0 0
1 1 0 0
1 0 1 1
1 1 1 0
1 1 1 0
1 0 0 1 0
0 1 1 0 0
1 0 0 1
1 1 0 1
1 1 0 0
1 0 1 0
1 1 1 1
1 0 1 0 0
0 0 0 1 1
Веса позиций
8 4 2 1
157 31
2 4 2 1
7 4 2 1 0
Задача 13. Чему равны избыточности кодов в указанной выше таблице, если считать передаваемые в сообщениях десятичные цифры равновероятными?
Назовем последовательность из 0 и 1 длины не более 2nn-регулярной, если никакие ее две подпоследовательности, идущих подряд символов, длины nне совпадают. Например, последовательность 00011101 является 3-регулярной, так как все тройки, стоящих рядом символов, отличаются друг от друга. (Двоичная последовательность длины большей, чем 2n, не может быть n-регулярной. Объясните, почему.)
Говорят, последовательность является циклической, если ее рассматривать как бы замкнутой по кругу, то есть продолжением ее является она же сама от своего начала. Например, если последовательность 00011101рассматривать как циклическую, то к шести ее тройкам добавятся еще две тройки: 010 и 100. Теперь все восемь троек оказываются различными.
Двоичная последовательность длины не более 2n называется циклически n-регулярной,
Если, рассматривая ее как циклическую последовательность, никакие в ней две подпоследовательности, идущих подряд символов, длины nне совпадают. Так, рассмотренная выше последовательность 00011101является циклически n-регулярной.
Равномерный двоичный код порядка n называется циклическим, если все его кодовые слова являются подпоследовательностями длины nнекоторой двоичной циклически n-регулярной последовательности. Циклически n-регулярная последовательность по отношению циклическому коду, который из нее получен, называется базовой последовательностью.
Циклический код порядкаn можно получить в виде упорядоченного ряда кодовых слов, двигаясь по циклически n-регулярной последовательности с шагом в один символ и выбирая через «смотровое окошко» слова длины n. Например, двигаясь слева направо по последовательности 00011101и выбирая слова длины3, мы получаем следующий циклический код порядка 3:
{ 000, 001, 011, 111, 110, 101, 010, 100 }.
Следующий код порядка 4, известный как код Джонсона, также является циклическим:
00000001001101111111111011001000Базовая последовательность этого кода: 00001111. (Избыточность этого кода δ =0.25).Другой пример циклического кода – код 1 из 10в представленной выше таблице (первое кодовое слово этого кода уже является базовой последовательностью это кода). Задача 14. Покажите, что если последовательность n-регулярна, то она и (n+1)-регулярна.Задача 15. Максимально удлините последовательность 00011101так, чтобы она осталась циклически 4-регулярной, и постройте по ней циклический код порядка 4. Упорядоченный код называется кодом Грея, если расстояние между любыми рядом стоящими по порядку в коде кодовыми словами равно 1. Код Грея можно построить, обходя вершины n-мерного куба, переходя от вершины к соседней вершине по одномерным ребрам. Например, на следующем рисунке показан обход по стрелкам вершин 3-мерного куба, приводящий к следующему коду Грея порядка 3:{ 000, 001, 011, 010, 110, 111, 101, 100 }.
Если обойти вершины куба по-другому пути, это приведет к другому варианту кода Грея.
Если имеются два кода Грея: K1 порядка n и другой K2 порядка m, то можно построить код Грея Kпорядка n+mследующим образом. Строится клетчатый квадрат размера n·m. Слева напротив каждой строки выписываются nкодовых слов кода K1, а над столбцами квадрата выписываются mкодовых слов кода K2, Каждой клетке квадрата ставится в соответствие кодовое слово длины n+m, левая часть которого берется из строки этой клетки (слева), а правая часть – из столбца этой клетки (сверху). Код Kпорядка n+mполучается обходом клеток квадрата так, чтобы переход от клетки к соседней клетке происходил или по горизонтали, или по вертикали.
Покажем это на примере построения кода Грея порядка 4. На следующем рисунке изображен клетчатый квадрат размера 4·4
Показанный на рисунке обход клеток квадрата приводит к следующему коду Грея:
Этот код как раз соответствует коду Грея, показанному в представленной выше таблице.
Пусть задано двоичное слово длины n A=α1α2…αn . Двоичное слово B=β1β2…βnназовем производной слова A, если βi=0в случае αi= αi-1 и βi=1в противном случае, полагая α0=0. Короче это можно записать так: βi= αi+αi-1 , где сумма берется по модулю 2. Например, для слова 1010101 производным словом будет 1111111, так как в исходном слове никакие два рядом стоящих бита не равны и слово начинается с 1. Для слова 0000000производным словом будет оно же само, так как все рядом стоящие биты равны и слово начинается с 0.
Задача 16. Пусть A=α1α2…αn- двоичное слово, а B=β1β2…βn – его производное слово. Покажите, что восстановить слово A, если известно его производное слово Bможно по правилу: αi= βi+ αi-1 , где α0=0.
Пусть заданы равномерные двоичные коды порядкаn K={A1, A2, … Am}и K’={B1, B2, … Bm}. Код K’называется производным кода K, если Bi (i-ое кодовое слово K’)является производным словом Ai (i-ого кодового слова K).
Задача 17. Доказать, что производный код прямого кода является кодом Грея.
Задача 18. Покажите, что у кода, производного коду Грея, почти все пары соседних кодовых слов находятся на расстоянии 2, кроме некоторых исключений (каких?).
Пусть A - двоичное кодовое слово, обозначим Ā слово, полученное из A заменой всех 0 на 1, а всех 1 на 0. Назовем двоичное кодовое слово четным, если в нем четное число единиц, и нечетным - в противном случае.
Пусть задан двоичный код порядкаn K={A1, A2, … Am}. Образуем новый код порядка2n : KB={B1, B2, … Bm}, где Bi = AiAi , если Ai- четный код, и Bi =AiĀi , если Ai– нечетный ( здесь AiAi и AiĀi- кодовые слова длины 2n, полученные приписыванием одного слова к другому). Полученный таким образом код называется кодом Бауэра.
Теорема. Ширина кода Бауэра, полученного из кода порядкаn, равна 4, еслиn≥4, и равнаn, еслиn<4(то есть ширина кода Бауэра равнаmin(4,n)).
Лемма 1. ρ(Ai, Aj)≥2, если оба словаAiиAjчетны, или оба словаAiиAjнечетны.
Лемма 2. ρ(AiAj, AkAl) = ρ(Ai, Ak)+ρ(Aj, Al).
Лемма 3.Если словаAiиAjдлины n, то ρ(Ai, Aj)+ ρ(Ai, Āj) = n.
Доказательство теоремы.Пусть Biи Bj- два кодовых слова кода Бауэра. Если AiиAjоба четны, то ρ(Bi, Bj) = ρ(AiAi, AjAj) = ρ(Ai, Aj)+ ρ(Ai, Aj) ≥ 2 + 2 = 4(по указанным выше леммам 1 и 2). Если AiиAjоба нечетны, то ρ(Bi, Bj) = ρ(AiĀi, AjĀj) = ρ(Ai, Aj)+ ρ(Āi, Āj) ≥ 2 + 2 = 4(так какĀiи Āj оба четны или оба нечетны).
Пусть теперь AiиAjразной четности, например,Ai- четное слово, а Aj- нечетное.Тогда ρ(Bi, Bj) = ρ(AiAi, AjĀj) = ρ(Ai, Aj)+ ρ(Ai, Āj) = n(по леммам 2 и 3). Теорема доказана.
Из доказанной теоремы следует, что код Бауэра, порядок которого ≥ 8, является кодом с обнаружением двух ошибок.
Задача 19. Является ли код, состоящий из следующих четырех слов: {0000, 0110, 1001, 1111}, кодом Бауэра.