- •Содержание
- •Тема 1. Информация и информатика
- •Понятие информации
- •Свойства информации
- •Объективность информации
- •Полнота информации. Моделирование
- •Достоверность информации
- •Адекватность информации
- •Актуальность информации
- •Доступность информации
- •Информационные процессы и системы
- •Информационные ресурсы и технологии
- •Информатика и её предыстория
- •Структура информатики и её связь с другими науками
- •Тема 2. Количество и качество информации
- •Уровни проблем передачи информации
- •Меры информации
- •Меры информации синтаксического уровня
- •Меры информации семантического уровня
- •Меры информации прагматического уровня
- •Качество информации
- •Виды и формы представления информации в информационных системах
- •Тема 3. Представление числовой информации в ЭВМ
- •Системы счисления
- •Позиционные системы счисления
- •Перевод чисел из одной системы счисления в другую
- •Двоичная, восьмеричная и шестнадцатеричная системы счисления
- •Двоично-десятичная система счисления
- •Представление числовой информации в ЭВМ
- •Прямой, обратный и дополнительный коды
- •Выполнение арифметических операций над целыми числами
- •Смещённый код и код Грея
- •Представление вещественных чисел в ЭВМ
- •Выполнение арифметических действий над нормализованными числами
- •Погрешности представления числовой информации в ЭВМ
- •Тема 4. Кодирование символьной, графической и мультимедийной информации в ЭВМ
- •Кодирование и запись информации
- •Принципы кодирования информации
- •Аналоговое кодирование
- •Табличное кодирование
- •Цифровое кодирование
- •Аналого-цифровое преобразование
- •Основы цифрового кодирования
- •Двоичный разряд и его особенности
- •Байт
- •Правила записи чисел в различных системах счисления
- •Ранние системы кодирования текстов
- •Двоичное кодирование текста. Система Бэкона
- •Двоичный код переменной длины. Система Морзе
- •Система Бодо. Введение управляющих кодов
- •Система Мюррея. Введение кодов форматирования
- •Система FIELDDATA. Введение кодов-разделителей.
- •Схема кодирования ASCII
- •Отечественные схемы 8-разрядного кодирования текстов
- •Схема кодирования ISO-8859
- •Схема кодирования CP 866
- •Схема кодирования Windows-1251
- •Схема кодирования КОИ-8Р
- •Технология кодирования Unicode
- •Значение стандарта Unicode
- •Механизмы трансформации Unicode
- •Механизм UTF-8
- •Механизм UTF-16
- •Механизм UTF-7
- •Цифровое кодирование изображений
- •Растровая модель компьютерной графики
- •Векторная модель
- •Трёхмерная графическая модель
- •Характеристика графических моделей
- •Кодирование растровых изображений
- •Оптическое разрешение изображения
- •Глубина цвета
- •Кодирование цвета
- •Механизмы образования цвета
- •Теоретические модели RGB и CMY
- •Практические модели sRGB и CMYK
- •Разрядность кодирования цвета
- •Оценка объёма выборки данных
- •Кодирование звукозаписей
- •Цифровое кодирование сигнала
- •Дискретизация сигнала
- •Квантование импульсов сигнала
- •Оценка размера звуковой выборки данных
- •Поток данных
- •Кодирование видеозаписей
- •Оценка размера выборки видеоданных
- •Поток данных при видеозаписи
- •Сжатие данных при кодировании
- •Теоретические аспекты сжатия данных
- •Как измерить данные?
- •Минимальная выборка данных
- •Избыточность кодирования
- •Снижение избыточности данных
- •Обратимость методов сжатия данных
- •Обратимые методы сжатия данных
- •Групповое сжатие
- •Сжатие по словарю
- •Необратимые методы сжатия данных
- •Необратимое сжатие графики. Технология JPEG
- •Необратимое сжатие видео. Технология MPEG
- •Необратимое сжатие звука (технология МР3)
- •Тема 5. Логические функции
- •Основные законы и постулаты алгебры логики
- •Аксиомы (постулаты) алгебры логики
- •Законы алгебры логики
- •Представление функций алгебры логики
- •Тема 6. Помехоустойчивое кодирование
- •Основные определения теории помехоустойчивого кодирования
- •Общий подход к обнаружению ошибок
- •Общий подход к исправлению ошибок
- •Информационная избыточность помехоустойчивых кодов
- •Код Хэмминга
- •Линейные групповые коды
- •Циклические коды
- •Тема 7. Компьютерная обработка информации
- •Поколения электронных вычислительных машин
- •Классификация средств обработки информации
- •Классификация программного обеспечения
- •Системное программное обеспечение ЭВМ
- •Инструментарий технологии программирования
- •Пакеты прикладных программ
- •Тема 8. Автоматизация работы с документами
- •Оформление электронных документов
- •Размер листа
- •Ориентация листа
- •Печатные поля
- •Группировка страниц
- •Колонтитулы
- •Работа с разделами документа
- •Текстовые абзацы, их функции и свойства
- •Свойства шрифта абзаца
- •Выравнивание и переносы
- •Отступы и интервалы
- •Оформление списков, записей и таблиц
- •Оформление списков
- •Оформление записей
- •Параметры табуляции
- •Способ заполнения полей
- •Оформление таблиц
- •Взаимодействие изображений с текстом
- •Способы вставки изображений в документ
- •Режимы взаимодействия изображений и текста
- •Представление нетекстовых объектов в документе
- •Управление представлением изображений
- •Представление невизуальных объектов
- •Визуализация гиперссылкой
- •Визуализация изображением
- •Визуализация значком
- •Числовые диаграммы
- •Структура диаграммы
- •Основные элементы диаграммы
- •Типы диаграмм
- •Автоматизация документооборота
- •Стадии документооборота
- •Принципы стилевого оформления документов
- •Стиль как информационный объект
- •Принцип единства функционального оформления
- •Принцип наследования свойств стилей
- •Применение шаблонов документов
- •Автоматизация настройки программ с помощью шаблонов
- •Принцип наследования шаблонов
- •Корневой шаблон
- •Технология подготовки документов слияния
- •Тема 9. Защита информации
- •Информационные угрозы. Цели и объекты защиты информации
- •Юридические меры защиты информации
- •Способы защиты информации
- •Защита информации от несанкционированного доступа
- •Средства безопасности операционных систем семейства Windows
- •Способы защиты документов Microsoft Office
- •Защита от потерь информации
- •Действия при сбоях в работе программ
- •Вредоносные программы
- •Источники и основные признаки заражения. Способы защиты
- •Средства защиты от вредоносных программ
- •Принцип достаточности защиты
разрядная операция отрицания равнозначности), и если он отличен от нуля, то его значение и есть номер искажённого информационного разряда.
Применение корректирующего кода Хэмминга означает, что каждое слово памяти содержит не 16 бит, а 21 бит. Пять лишних битов в каждом слове — это биты чётности. Они недоступны пользователю, так как зарезервированы для образования корректирующего кода.
Линейные групповые коды
В практике построения надёжных средств вычислительной техники широкое распространение находят линейные групповые коды, отличающиеся достаточно просто реализуемыми функциями декодирования и несложным способом задания.
Линейным групповым кодом называется конечная аддитивная коммутативная группа , элементами которой являются двоичные векторы, в качестве операции группы выбрана операция суммы по модулю 2.
Линейные групповые коды могут быть заданы двумя способами:
перечислением векторов;
матричным представлением.
Матричное представление позволяет компактно описывать линейные коды большой мощности и однозначно задавать процедуру их декодирования.
|
Линейно-независимыми двоичными векторами , , …, называются векторы, для кото- |
рых выполняется соотношение |
|
|
, |
где |
{ } — скаляры, а — знак операции суммы по модулю 2. |
Максимальный набор линейно-независимых двоичных векторов образует порождающую матрицу некоторого кода. Любой вектор кода, не принадлежащий матрице, может быть получен как сумма некоторого числа векторов порождающей матрицы.
Линейные групповые коды обычно задаются порождающей матрицей, представленной в так называемой левой канонической форме:
‖ |
|
‖ |
, |
|
где — единичная матрица информационных разрядов линейного кода формата |
(как было по- |
|||
казано выше, такая матрица порождает натуральный двоичный код длины |
); |
— матрица прове- |
||
рочных разрядов линейного кода, содержащая ( |
) столбцов и строк. |
|
|
|
Так как единичная матрица ( |
) порождает натуральный двоичный код длины , мощность |
которого равна , то её формат в матрице определяет мощность линейного группового кода, определяемую по формуле . Структура матрицы влияет на обнаруживающую и корректирующую способность линейного кода.
107
Минимальное расстояние линейного группового кода |
может быть определено в соот- |
ветствии со следующим простым алгоритмом: |
|
1.Выписать все векторы линейного группового кода.
2.Для каждого ненулевого вектора найти его вес в смысле Хэмминга. Минимальный вес нену-
левого вектора и равен .
Справедливость алгоритма вытекает из принадлежности нулевого вектора линейному групповому коду. Действительно, расстояние в смысле Хэмминга между нулевым вектором и вектором с
минимальным числом единиц определяет |
рассматриваемого кода. |
|
||||||
|
Так как минимальный вес в смысле Хэмминга |
, то код имеет |
и позволяет об- |
|||||
наруживать ошибки кратностью |
, корректировать ошибки кратностью |
. Действительно, для |
||||||
обнаружения -кратных ошибок должно выполняться условие |
или |
|||||||
|
. Для коррекции -кратных ошибок должно выполняться условие |
или |
||||||
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
Порождающую матрицу группового линейного кода длины с информационными разрядами можно построить, руководствуясь следующими правилами:
1.Все векторы порождающей матрицы должны быть различны и линейно-независимы.
2.Нулевой вектор не должен входить в число векторов порождающей матрицы.
3. |
Каждый вектор порождающей матрицы должен иметь вес в смысле Хэмминга |
. |
||
4. |
Расстояние в смысле Хэмминга между любыми двумя векторами и порождающей мат- |
|||
|
рицы должно удовлетворять соотношению ( |
) |
. |
|
|
Проверочная часть порождающей матрицы (матрица |
) строится в соответствии со следую- |
||
щими правилами: |
|
|
|
|
1. |
Вес в смысле Хэмминга каждого проверочного вектора должен удовлетворять соотношению |
|||
|
. |
|
|
|
2. |
Вес проверочного вектора , являющегося суммой по модулю 2 двух любых проверочных |
|||
|
векторов, должен удовлетворять соотношению |
|
. |
|
Порождающая матрица линейного кода, построенная в соответствии с приведёнными рекомендациями, должна быть проверена на соответствие полученного кода требуемой обнаруживающей и корректирующей способности. Для этого по полученной матрице выписываются все векторы линейного кода и находится . Отметим, что любой проверочный столбец порождающей матрицы линейного кода представляет собой сумму по модулю 2 некоторого числа информационных столбцов порождающей матрицы.
Приведём рекомендации по построению линейного группового кода заданной мощности с заданной обнаруживающей (корректирующей) способностью (без ограничения на общую длину кода). Такая задача достаточно часто возникает при разработке средств вычислительной техники повышенной надёжности.
1. Если — требуемая мощность линейного кода |
, то формат информационной части его по- |
||
рождающей матрицы равен ( |
), где |
] |
[. |
|
|
108 |
|
2. |
Любой проверочный столбец порождающей матрицы формируется как сумма по модулю 2 |
||||
|
некоторого числа её информационных столбцов. При этом любой информационный столбец |
||||
|
должен присутствовать в качестве компоненты суммы хотя бы для организации одного про- |
||||
|
верочного столбца. |
|
|
|
|
3. |
Каждый вектор |
порождающей матрицы должен иметь вес в смысле Хэмминга |
. |
||
4. |
Кодовое расстояние в смысле Хэмминга между двумя любыми векторами и |
порождаю- |
|||
|
щей матрицы должно быть ( |
) |
, а между любыми двумя проверочными векто- |
||
|
рами и — ( |
) |
. |
|
|
5. |
Для проверки правильности получения кода по построенной порождающей матрице следует |
||||
|
выписать все векторы и определить |
|
полученного кода. |
|
Для декодирования линейных кодов, т.е. для обнаружения ошибок заданной кратности, возникающих в векторе линейного кода, необходимо построить аналитическое соотношение, устанавливающее связь между информационными и проверочными разрядами линейного кода. При отсутствии ошибок в векторе это соотношение, очевидно, должно обращаться в тождество. Имея такое соотношение, легко построить схему, сигнализирующую о появлении ошибок в векторах кода. Задача вывода такого соотношения может быть поставлена так: задана порождающая матрица линейного группового кода, представленная в левой канонической форме; для любого вектора линейного кода необходимо записать аналитическое выражение любого проверочного разряда этого вектора через известные информационные.
Решение задачи можно произвести следующим образом. Как известно, любой вектор линейного кода образуется в результате суммирования некоторых векторов его порождающей матрицы.
Для упрощения объяснения в порождающей матрице |
произвольного линейного кода информаци- |
онные разряды любого вектора обозначим буквами |
с соответствующими индексами, а провероч- |
ные разряды — буквами с одномерными индексами. Очевидно, любой проверочный разряд не-
которого вектора линейного кода удовлетворяет соотношению
p |
j |
|
pij i 1k
, где ∑ — знак операции
«сумма mod 2»; — значение соответствующих проверочных разрядов векторов порождающей матрицы из проверочного столбца, соответствующего символу , при условии, что пробегает толь-
ко те значения из ̅̅̅̅̅, которые соответствуют складываемым векторам порождающей матрицы. Так как каждый проверочный столбец порождающей матрицы образуется как сумма некоторых информационных её столбцов, а каждый информационный столбец содержит только одну единицу, то
справедливо соотношение
k |
|
k |
p |
a |
|
ij |
|
i |
i 1 |
|
i 1 |
, или
j |
|
k |
|
i |
|
p |
a |
|
|
|
i 1 |
,
̅̅̅̅̅̅̅̅̅̅, где принимает только те
значения, которые соответствуют единицам рассматриваемого проверочного столбца. Полученные уравнения определяют операцию декодирования линейных кодов и для каждой порождающей матрицы линейного кода имеют конкретный вид. Формальная процедура их построения по конкретной порождающей матрице заданного линейного кода следующая.
Выбрать проверочный столбец порождающей матрицы. Записать уравнение для , заменяя все значения этого проверочного столбца (в правой части уравнения) через информационные разряды . Замену осуществить следующим образом: каждую единицу проверочного столбца за-
менить на информационный разряд , единица которого расположена на пересечении информационного столбца и строки со значением , равным единице. Указанную процедуру проделать для каждого .
109
В ходе вычислений находят вектор ( ), который в общем случае называется синдромом и его вид характеризует наличие или отсутствие ошибок в векторе кода. Если синдром нулевой, то ошибок нет, если синдром ненулевой, то ошибки есть.
Исправление ошибок осуществляется по виду ненулевого вектора синдрома. Для линейных кодов, исправляющих -кратную ошибку, каждому вектору ошибки кратности соответствует свой вектор синдрома. Для установления однозначного соответствия между номером ошибочного разряда и видом вектора синдрома достаточно построить матрицу ошибок, которая получается из проверочной части матрицы и приписанной снизу единичной матрицы соответствующего размера.
Значение синдрома совпадает с одной из строк проверочной матрицы. Номер этой строки и
является номером искажённого разряда. |
|
Исправление ошибок кратности большей, чем |
, связано со значительными расчётами, |
требующими построения матриц ошибок всех кратностей и сопоставления каждому вектору ошибки своего вектора синдрома.
Циклические коды
Циклические коды являются разновидностью линейных групповых кодов и относятся к систематическим кодам. Первоначально были созданы для упрощения процедуры декодирования. Однако высокая эффективность к обнаружению ошибок таких кодов обеспечила их широкое применение на практике. Двоичный вектор циклического кода удобно рассматривать не как комбинацию нулей и единиц, а в виде полинома некоторой степени
( ) |
, |
где — основание системы счисления, а |
— коэффициенты, принадлежащие множеству { } в |
случае двоичной системы счисления. |
|
Представление двоичных векторов в виде полиномов позволяет свести действие над векторами к действиям над многочленами. При этом:
сложение многочленов сводится к сумме по модулю 2 коэффициентов при равных степенях переменной ;
умножение производится по обычному правилу умножения степенных функций, однако полученные коэффициенты при данной степени складываются по модулю 2;
деление осуществляется по правилам деления степенных функций, при этом операция вычитания заменяется суммированием по модулю 2.
Основным свойством циклических кодов является следующее: если вектор принадлежит циклическому коду, то любой вектор, полученный из рассматриваемого с помощью циклических сдвигов, также принадлежит циклическому коду.
Идея построения циклических кодов базируется на понятии неприводимого многочлена. Многочлен называется неприводимым, если он делится только на самого себя и на единицу, и не делится ни на какой другой многочлен. Иными словами, неприводимый многочлен нельзя представить в виде произведения многочленов низших степеней. На неприводимый многочлен без остатка делится многочлен . Неприводимые многочлены играют в теории циклических кодов роль образующих полиномов.
110
Векторы циклического кода строятся в соответствии со следующими правилами. Пусть ( ) |
|
— любой двоичный вектор некоторого натурального кода; — одночлен степени ; |
( ) неприво- |
димый полином степени . Тогда любой вектор ( ) циклического кода образуется с |
помощью соот- |
ношения: |
|
|
|
|
|
|
|
|
|
|
( ) |
( ) |
( |
), |
|
где ( |
) — остаток от деления |
( |
) |
. |
|
|
|
( |
) |
|
|
|
|||
|
|
|
|
|
|
Таким образом, любой вектор циклического кода может быть образован умножением некоторого вектора натурального двоичного кода на одночлен степени с добавлением к полученному
произведению остатка от деления |
( |
) |
. При построении циклических кодов указанным способом |
( |
) |
расположение информационных разрядов в каждом векторе кода строго упорядочено — они зани-
мают |
старших разрядов вектора кода, а остальные |
|
|
разрядов являются проверочными. |
||
|
Циклический код, как и всякий систематический код, удобно задавать в матричном виде с |
|||||
помощью порождающей матрицы , имеющей вид: |
|
|
|
|
|
|
|
( ) ‖ ( ) |
( |
|
)‖, |
|
|
где ( |
) — транспонированная единичная матрица формата ( |
); ( |
) — матрица прове- |
|||
рочных разрядов, образованная остатком от деления |
( ) |
. |
|
|
|
|
( ) |
|
|
|
Любой вектор циклического кода получается как сумма по модулю 2 векторов его порождающей матрицы. Так как циклический код является групповым, то нулевой вектор всегда приписывается циклическому коду как единичный элемент группы.
Необходимо отметить, что каждый циклический код, заданный некоторой порождающей матрицей, можно представить в нескольких вариантах, отличающихся друг от друга длиной и количеством информационных разрядов (при одинаковых обнаруживающих способностях). Эти варианты так называемых укороченных циклических кодов получаются вычёркиванием последних строк и такого же количества столбцов слева в порождающей матрице ( ) циклического кода. При этом число проверочных разрядов остаётся неизменным, а длина кода и число его информационных разрядов уменьшаются соответственно на величину, равную числу вычеркнутых строк и столбцов порождающей матрицы.
Построение циклических кодов с заданными параметрами связано с выбором образующего неприводимого полинома. Образующий полином выбирается исходя из следующего условия: степень полинома должна быть равна числу проверочных разрядов циклического кода.
На практике часто возникает задача построения циклического кода заданной мощности и заданной обнаруживающей и корректирующей способностей.
Рекомендации для построения кода следующие:
1. |
Так как мощность |
циклического кода задана, |
то число его информационных разрядов |
|
|
определяется в соответствии с формулой |
. |
|
|
2. |
Оптимальное число проверочных разрядов |
|
циклического кода определяется по |
|
|
специальным таблицам. |
|
|
|
|
|
111 |
|
|
3. |
По справочникам находятся все неприводимые полиномы степени . |
4. |
Для одного из неприводимых многочленов (следует выбирать многочлен с максимальным |
|
числом членов) степени строится порождающая матрица циклического кода. Каждый век- |
тор ( ) кода вычисляется по формуле |
|
|
|
|
|
( ) |
( ) |
( |
( |
) |
) |
|
|
||||
( |
) |
где ( ) — полином информационного вектора порождающей матрицы; — одночлен степени ;
— остаток от деления |
( |
) |
. |
|
|
||
( |
) |
5. Построенная порождающая матрица проверяется на выполнение следующих условий:
а) вес в смысле Хэмминга любого вектора порождающей матрицы должен удовлетворять соотношению , где — минимальное расстояние в смысле Хэмминга рассматриваемого циклического кода;
б) вес в смысле Хэмминга проверочного вектора, являющегося суммой по модулю 2 любых двух проверочных векторов и порождающей матрицы, должен удовлетворять соот-
ношению
6. Если порождающая матрица циклического кода удовлетворяет всем приведённым условиям, то выписываются все векторы циклического кода и определяется в соответствии с известными правилами для линейных групповых кодов. Если код не соответствует требованиям, то выбирается другой порождающий полином той же степени , и процедура образования циклического кода повторяется для нового полинома.
Обнаружение ошибок с помощью циклических кодов производится следующим образом. Любой вектор циклического кода делится на образующий полином без остатка. Поэтому критерием наличия ошибки в векторе циклического кода является появление ненулевого остатка от деления вектора циклического кода на образующий полином. Ненулевой остаток является опознавателем ошибки в векторе циклического кода, однако его вид не указывает на место расположения ошибки в кодовом векторе. Исправление ошибок базируется на следующем алгоритме:
1.Принятый кодовый вектор разделить на образующий полином.
2.Подсчитать число единиц в полученном остатке. Если число единиц не превышает корректирующей способности кода, то принятый вектор сложить по модулю 2 с полученным остатком. Результат суммирования даст исправленный кодовый вектор. Если число единиц остатка больше корректирующей способности кода, то осуществить циклический сдвиг искажённого вектора влево на один разряд, а затем произвести деление на образующий полином. Если полученный остаток содержит единиц не больше корректирующей способности циклического кода, то произвести суммирование сдвинутого циклически вектора с остатком. Результат суммирования сдвинуть циклически на один разряд вправо. Полученный вектор уже не содержит ошибок и является вектором циклического кода.
3.Если после первого циклического сдвига и последующего деления остаток содержит единиц больше, чем корректирующая способность кода, то повторять процедуру п. 2 алгоритма до тех пор, пока не будет получен остаток с числом единиц, не превышающим корректирующей способности кода. В этом случае результат последнего циклического сдвига суммируется с остатком, и полученный вектор циклически сдвигается на столько разрядов вправо, на сколь-
112
ко был сдвинут влево исходный принятый вектор с ошибкой. В итоге получается исправленный кодовый вектор.
113