ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Двоичное кодированиеВ информационных системах для двоичной записи целых чисел обычно используют фиксированное число двоичных разрядов (позиций для двоичных цифр) n. Если число имеет в своей записи m≤n двоичных цифр, в первые n−m позиций вписываются нули, а в оставшиеся m позиций цифры числа. Таким образом, используя n двоичных разрядов, можно представить все числа от 0 до 2n−1. Всякое сообщение, записанное с использованием символов некоторого алфавита, можно представить в виде некоторой последовательности из нулей и единиц. В самом деле, пусть A={a,b,…} – конечный алфавит. Выберем число n так, чтобы 2n было не меньше, чем число его символов. Перенумеруем символы алфавита (начиная нумерацию с нуля) и припишем каждому из них его двоичный код – двоичную запись номера символа с использованием n двоичных разрядов (битов). Текст ab…, представляется последовательностью блоков αn−1αn−2…α1α0βn−1βn−2…β1β0…, где αn−1αn−2…α1α0 – двоичная запись номера символа a, βn−1βn−2…β1β0 – двоичная запись номера символа b, и т.д. В информатике распространены системы кодирования символов алфавита с использованием 8-разрядных блоков – байтов. Это позволяет работать с алфавитами, содержащими до 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» для обозначения числа «ноль» и нулевого вектора, когда из контекста ясно, о чем идет речь). На двоичные векторы распространяются стандартные свойства линейной зависимости: в пространстве {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, (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. Как видно из предыдущего, линейная функция 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 в {0,1}m однозначно определяется набором, содержащим 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. Пусть, например, y1=x1, y2=x2, y3=x1⊕x2. Тогда c11=1, c12=0, c21=0, c22=1, c31=1, c32=1. Следующая таблица дает некоторое представление о росте объема информации, необходимой для задания произвольных и линейных отображений из {0,1}n в {0,1}m. Задание отображения из {0,1}n в {0,1}m (бит) n m произвольное линейное 1 1 2 1 1 2 4 2 2 2 8 4 2 3 12 6 3 4 32 12 8 9 2304 72 15 20 655360 300 Не нашли, что искали? Воспользуйтесь поиском:
|