Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1119
Добавлен:
02.02.2015
Размер:
2.13 Mб
Скачать

157

6.Элементы теории кодирования

6.1.Двоичное кодирование

Винформационных системах для двоичной записи целых чисел обычно используют фиксированное число двоичных разрядов (позиций для двоичных цифр) n. Если число имеет в своей записи mn двоичных цифр, в первые nm позиций вписываются нули, а в оставшиеся m позиций цифры числа. Таким образом, используя n двоичных разрядов, можно представить все числа от 0 до 2n1.

Всякое сообщение, записанное с использованием символов некоторого алфавита, можно представить в виде некоторой последовательности из нулей и единиц. В самом деле, пусть A={a,b,…} – конечный алфавит. Выберем число n так, чтобы 2n было не меньше, чем число его символов. Перенумеруем символы алфавита (начиная нумерацию с нуля) и припишем каждому из них его двоичный код – двоичную запись номера символа с использованием n двоичных разрядов (битов). Текст ab…, представляется последовательностью блоков

αn1αn2α1α0βn1βn2β1β0…,

где αn1αn2α1α0 – двоичная запись номера символа a, βn1βn2β1β0 – двоичная запись номера символа b, и т.д.

В информатике распространены системы кодирования символов алфавита с использованием 8-разрядных блоков –

158

байтов. Это позволяет работать с алфавитами, содержащими до 256 символов. Обычно используемые алфавиты содержат латинские буквы, буквы национального алфавита, цифры, знаки препинания и некоторые специальные знаки.

6.2. Векторное пространство {0,1}n

На множестве n-мерных двоичных векторов определим операцию – сложение по модулю 2. Сумма двоичных векторов α=(α1,α2,…,αn) и β=(β1,β2,…,βn) определяется формулой

α β = (α1 β1, α1 β1,…, αn βn).

Вектор α β содержит единицы на тех местах, где координаты векторов α и β различаются, и нули – на тех, где совпадают.

Примеры. (0,1,0,1) (0,0,1,1) = (0,1,1,0); (0,1,0,1) (1,1,1,1) = (1,0,1,0); (0,1,0,1) (0,1,0,1) = (0,0,0,0).

Операция обладает важными свойствами обычного сложения: она коммутативна и ассоциативна, нулевой вектор является нейтральным элементом. Кроме того, α α является нулевым вектором для любого вектора α.

Система n-мерных двоичных векторов линейно зависима, если сумма (по модулю 2) нескольких векторов из этой системы равна 0 (мы используем один и тот же символ «0» для обозначения числа «ноль» и нулевого вектора, когда из контекста ясно, о чем идет речь). На двоичные векторы

159

распространяются стандартные свойства линейной зависимости:

в пространстве {0,1}n любая система, содержащая более n векторов, линейно зависима;

любые n линейно независимых векторов образуют базис пространства {0,1}n; всякий вектор из {0,1}n может быть единственным образом представлен в виде суммы нескольких базисных векторов.

Двоичные векторы (0,0,…,0,1), (0,0,…,1,0),…, (1,0,…,0,0)

образуют базис пространства {0,1}n, называемый каноническим. Число единичных координат двоичного вектора

α=(α1,α2,…,αn) обозначают через w(α) и называют весом

вектора α. Очевидно,

w(α) = α1+α2+…+αn.

Формулой

d(α,β) = w(α β)

определяется расстояние d(α,β) между двоичными векторами α и β, называемое расстоянием Хемминга. Расстояние Хемминга обладает следующими свойствами:

1)d(α,α)=0 и d(α,β)>0 при α≠β;

2)d(α,β)=d(β,α);

3)d(α,β)+d(β,γ)d(α,γ) (неравенство треугольника).

6.3. Отображения {0,1}n в {0,1}m

Произвольное отображение из {0,1}n в {0,1}m,

160

(x1,x2,…,xn) (y1,y2,…,ym),

задается набором булевых функций

y1=f1(x1,x2,…,xn), y2=f2(x1,x2,…,xn), …, ym=fm(x1,x2,…,xn).

Чтобы задать такое отображение, требуется указать m двоичных векторов размерности 2n. Таким образом, для задания произвольного отображения необходимо m×2n бит информации. Например, отображение из {0,1}2 в {0,1}3 задается вектором размерности 12 (составленным из трех векторов размерности 4). Общее число отображений из {0,1}2 в {0,1}3 равно 212=4096.

Напомним, что линейной называется функция вида f(x1,x2,…,xn) = c1x1 c2x2 cnxn,

где c=(c1,c2,…,cn) – произвольный двоичный вектор.

Булева функция f:{0,1}n {0,1} является линейной, если

f(α β)=f(α) f(β)

для любых α и β из {0,1}n.

В самом деле, так как

(x1,x2,…,xn) = x1 (1,0,…,0) x2 (0,1,…,0) … xn (0,0,…,1),

то

f(x1,x2,…,xn) = x1 f(1,0,…,0) x2 f(0,1,…,0) … xn f(0,0,…,1).

Вектор c=(c1,c2,…,cn) имеет следующий вид:

c1 = f(1,0,…,0), c2= f(0,1,…,0), …, cn= f(0,0,…,1).

Общее число линейных функций от n переменных равно числу n-мерных двоичных векторов, то есть равно 2n.

{0,1}m

161

Как видно из предыдущего, линейная функция f является суммой нескольких своих аргументов. Например, x1 входит слагаемым в эту сумму, если f(1,0,…,0)=1, и не входит, если f(1,0,…,0)=0.

Пример. Перечислим все линейные функции y=f(x1,x2,x3) от трех переменных:

y=0 (тождественный 0); y=x1; y=x2; y=x3;

y=x1 x2; y=x1 x3; y=x2 x3; y=x1 x2 x3.

Отображение f:{0,1}n {0,1}m называется линейным, если f(α β)=f(α) f(β) для любых α и β из {0,1}n. Отображение

f:{0,1}n {0,1}m , (x1,x2,…,xn) (y1,y2,…,ym),

линейно тогда и только тогда, когда линейны все его компоненты

y1=f1(x1,x2,…,xn), y2=f2(x1,x2,…,xn),…, ym=fm(x1,x2,…,xn).

Отсюда следует, что линейное отображение из {0,1}n в однозначно определяется набором, содержащим m двоичных векторов размерности n, то есть некоторой матрицей из нулей и единиц размера m×n. Для задания линейного отображения необходимо m×n бит информации. Общее число

линейных функций из {0,1}n в {0,1}m равно 2mn.

Пример. Рассмотрим линейное отображение f из {0,1}2 в {0,1}3. Задать его можно, указав матрицу из нулей и единиц

(cij), i=1,2,3, j=1,2:

y1=c11x1 c12x2, y2=c21x1 c22x2, y3=c31x1 c32x2.