Основы теории информации и криптографии

Основы теории информации и криптографии Автор: [ Cкачайте файл, чтобы посмотреть ссылку ]

Информация о курсе В курсе излагаются основные понятия и факты теории информации. Рассмотрены способы измерения, передачи и обработки информации. Значительное внимание уделено свойствам меры информации, характеристикам канала связи, помехозащитному, уплотняющему и криптографическому кодированию. Кроме того, рассмотрены вопросы формализации информации, в частности, в документах Internet. Изложение сопровождается большим количеством примеров и упражнений.

0. Лекция: Введение
Учебное пособие написано на основе односеместрового 108 часового курса лекций и материалов для практических занятий, используемых автором в учебной работе со студентами-третьекурсниками в течении 5 лет на кафедре "Моделирование систем и информационные технологии" "МАТИ" - Российского государственного технологического университета им.К.Э.Циолковского.
Настоящее пособие достаточно полно освещает основные положения теории информации в соответствии с Государственным образовательным стандартом РФ от 1995 г. по специальности "Автоматизированные системы обработки информации и управления" (220200). Содержание некоторых лекций (1, 3, 12) пособия выходит за рамки стандарта для означенной специальности, но затронутые в них темы актуальны и органично вписываются в материал пособия.
Программой курса предусмотрено изучение следующих тем: фундаментальные положения теории информации, количественная мера информации, понятие энтропии случайных событий. скорость передачи информации и пропускная способность канала связи при отсутствии и наличии помех, прямая и обратная теоремы Шеннона, информационные пределы избыточности, методика построения кодов, проблемы передачи непрерывной информации.
Содержание пособия во многом базируется на некоторых вводных понятиях курса "Теория вероятностей": дискретная случайная величина (д.с.в.), закон распределения вероятностей, математическое ожидание (м. о.) и т.п. Кроме того, от читателя требуется умение выполнять соответствующие операции с матрицами, многочленами и булевыми величинами.
В лекциях с 1 по 3 рассмотрены общие вопросы, определяющие практические подходы к использованию понятия информация, т.е. дано определение основных терминов, используемых при работе с информацией, очерчен круг вопросов, рассматриваемых в теории информации, приведены способы хранения, обработки, преобразования, передачи и измерения информации.
В лекциях 4-6 рассматриваются способы сжатия информации. Рассмотрены как статистические методы (Шеннона-Фэно, Хаффмена, арифметический), так и словарные методы Лемпела-Зива. Для статистических методов приведены варианты адаптивных алгоритмов кодирования. Приводятся формулы для оценки предельной степени сжатия информации. Обзорно рассматриваются способы сжатия информации с потерями и типы файлов, содержащих сжатые данные.
Лекция 7 посвящена физическому уровню передачи информации по каналам связи. Рассматриваются методы расчета пропускной способности (емкости) канала, теорема Шеннона и обратная ей теорема, способы кодирования дискретной информации для передачи. Полное раскрытие названных тем требует привлечения мощного аппарата средств теории вероятностей и теории связи, выходящих за рамки соответствующих курсов студентов втузов, поэтому эти темы раскрыты лишь частично, в обзорном порядке.
В лекциях 8-10 рассматриваются способы построения и использования избыточных кодов для защиты от помех. Приводятся фундаментальные характеристики таких кодов. Для понимания материала 9-й лекции необходимо знакомство с начальными элементами теории групп.
Лекция 11 посвящена вопросам теории защиты информации. Рассматриваются как классические криптографические системы, так и системы, построенные на идеях Диффи и Хеллмана. Кратко математический фундамент этих методов излагается в Приложении.
В заключительных лекциях рассмотрены некоторые вопросы использования информации в Internet.
Используемые обозначения, не определенные явно в основном материале, приводятся в Приложении.
Ссылки на литературу, содержащую обоснования приведенных фактов или дополнительные подробности, заключаются в квадратные скобки.
Высокая требовательность студенческой аудитории является постоянным стимулом в поиске более простых, доходчивых и ясных способов изложения. Автор надеется, что это учебное пособие, формировавшееся в процессе живого общения со студентами, не получилось чрезмерно сложным.
Автор считает необходимым выразить искреннюю благодарность всем тем, кто помог ему в создании этого пособия, в особенности, Пантелееву П.А., Лидовской В.В. и Бурашникову С.Р.
1. Лекция: Предмет и основные разделы кибернетики
Теория информации рассматривается как существенная часть кибернетики.
Кибернетика - это наука об общих законах получения, хранения, передачи и переработки информации. Ее основной предмет исследования - это так называемые кибернетические системы, рассматриваемые абстрактно, вне зависимости от их материальной природы. Примеры кибернетических систем: автоматические регуляторы в технике, ЭВМ, мозг человека или животных, биологическая популяция, социум. Часто кибернетику связывают с методами искусственного интеллекта, т.к. она разрабатывает общие принципы создания систем управления и систем для автоматизации умственного труда. Основными разделами (они фактически абсолютно самостоятельны и независимы) современной кибернетики считаются: теория информации, теория алгоритмов, теория автоматов, исследование операций, теория оптимального управления и теория распознавания образов.
Родоначальниками кибернетики (датой ее рождения считается 1948 год, год соответствующей публикации) считаются американские ученые Норберт Винер (Wiener, он - прежде всего) и Клод Шеннон (Shannon, он же основоположник теории информации).
Винер ввел основную категорию кибернетики - управление(основная категория кибернетики), показал существенные отличия этой категории от других, например, энергии, описал несколько задач, типичных для кибернетики, и привлек всеобщее внимание к особой роли вычислительных машин, считая их индикатором наступления новой НТР. Выделение категории управления позволило Винеру воспользоваться понятием информации, положив в основу кибернетики изучение законов передачи и преобразования информации.
Сущность принципа управления заключается в том, что движение и действие больших масс или передача и преобразование больших количеств энергии направляется и контролируется при помощи небольших количеств энергии, несущих информацию. Этот принцип управления лежит в основе организации и действия любых управляемых систем: автоматических устройств, живых организмов и т.п. Подобно тому, как введение понятия энергии позволило рассматривать все явления природы с единой точки зрения и отбросило целый ряд ложных теорий, так и введение понятия информации позволяет подойти с единой точки зрения к изучению самых различных процессов взаимодействия в природе.
В СССР значительный вклад в развитие кибернетики внесли академики БергА.И. и ГлушковВ.М.
В нашей стране в 50-е годы кибернетика была объявлена лженаукой и была практически запрещена, что не мешало, однако, развиваться всем ее важным разделам (в том числе и теории информации) вне связи с обобщающим словом "кибернетика". Это было связано с тем, что сама по себе кибернетика представляет собой род философии, в кое-чем конфликтной с тогдашней официальной доктриной (марксистско-ленинской диалектикой).
Теория информации тесно связана с такими разделами математики как теория вероятностей и математическая статистика, а также прикладная алгебра, которые предоставляют для нее математический фундамент. С другой стороны теория информации исторически и практически представляет собой математический фундамент теории связи. Часто теорию информации вообще рассматривают как одну из ветвей теории вероятностей или как часть теории связи. Таким образом, предмет "Теория информации" весьма узок, т.к. зажат между "чистой" математикой и прикладными (техническими) аспектами теории связи.
Теория информации представляет собой математическую теорию, посвященную измерению информации, ее потока, "размеров" канала связи и т.п., особенно применительно к радио, телеграфии, телевидению и к другим средствам связи. Первоначально теория была посвящена каналу связи, определяемому длиной волны и частотой, реализация которого была связана с колебаниями воздуха или электромагнитным излучением. Обычно соответствующий процесс был непрерывным, но мог быть и дискретным, когда информация кодировалась, а затем декодировалась. Кроме того, теория информации изучает методы построения кодов, обладающих полезными свойствами.
Формальное представление знаний
При формальном представлении знаний каждому описываемому объекту или понятию ставится в соответствие некоторый числовой код. Связи между кодируемыми сущностями также представляются кодами (адресами и указателями). Для такого перевода неформальных данных в формальный, цифровой вид должны использоваться специальные таблицы, сопоставляющие кодируемым сущностям их коды и называемые таблицами кодировки. Простейший пример такой таблицы - это ASCII (American Standard Code for Information Interchange), используемая повсеместно с вычислительной техникой. Она сопоставляет печатным и управляющим символам (управляющими являются, например, символы, отмечающие конец строки или страницы) числа от 0 до 127. Следующая программа на языке Паскаль выведет на экран все печатные символы этой таблицы и их коды:
[ Cкачайте файл, чтобы посмотреть картинку ]
На практике обычно используют не сам исходный ASCII, а так называемый расширенный ASCII (ASCII+), описывающий коды 256 символов (от 0 до 255). Первые 128 позиций расширенного ASCII совпадают со стандартом, а дополнительные 128 позиций определяются производителем оборудования или системного программного обеспечения. Кроме того, некоторым управляющим символам ASCII иногда назначают другое значение.
Хотя таблицы кодировки используются для формализации информации, сами они имеют неформальную природу, являясь мостом между реальными и формальными данными. Например, коду 65 в ASCII соответствует заглавная латинская буква A, но не конкретная, а любая. Этому коду будет соответствовать буква A, набранная жирным прямым шрифтом, и буква [ Cкачайте файл, чтобы посмотреть картинку ], набранная нежирным с наклоном вправо на [ Cкачайте файл, чтобы посмотреть картинку ]шрифтом, и даже буква [ Cкачайте файл, чтобы посмотреть картинку ]готического шрифта. Задача сопоставления реальной букве ее кода в выбранной таблице кодировки очень сложна и частично решается программами распознания символов (например, Fine Reader).
Упражнение 1 Каков код букв W и w в ASCII?
Виды информации
Информация может быть двух видов: дискретная информация и непрерывная(аналоговая). Дискретная информация характеризуется последовательными точными значениями некоторой величины, а непрерывная - непрерывным процессом изменения некоторой величины. Непрерывную информацию может, например, выдавать датчик атмосферного давления или датчик скорости автомашины. Дискретную информацию можно получить от любого цифрового индикатора: электронных часов, счетчика магнитофона и т.п.
Дискретная информация удобнее для обработки человеком, но непрерывная информация часто встречается в практической работе, поэтому необходимо уметь переводить непрерывную информацию в дискретную (дискретизация) и наоборот. Модем (это слово происходит от слов модуляция и демодуляция) представляет собой устройство для такого перевода: он переводит цифровые данные от компьютера в звук или электромагнитные колебания-копии звука и наоборот.
При переводе непрерывной информации в дискретную важна так называемая частота дискретизации [ Cкачайте файл, чтобы посмотреть картинку ], определяющая период ([ Cкачайте файл, чтобы посмотреть картинку ]) между измерениями значений непрерывной величины (См. [ Cкачайте файл, чтобы посмотреть ссылку ]).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 1.1. 
Чем выше частота дискретизации, тем точнее происходит перевод непрерывной информации в дискретную. Но с ростом этой частоты растет и размер дискретных данных, получаемых при таком переводе, и, следовательно, сложность их обработки, передачи и хранения. Однако для повышения точности дискретизации необязательно безграничное увеличение ее частоты. Эту частоту разумно увеличивать только до предела, определяемого теоремой о выборках, называемой также теоремой Котельникова или законом Найквиста (Nyquist).
Любая непрерывная величина описывается множеством наложенных друг на друга волновых процессов, называемых гармониками, определяемых функциями вида [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- это амплитуда, [ Cкачайте файл, чтобы посмотреть картинку ]- частота, [ Cкачайте файл, чтобы посмотреть картинку ]- время и [ Cкачайте файл, чтобы посмотреть картинку ]- фаза.
Теорема о выборках утверждает, что для точной дискретизации ее частота должна быть не менее чем в два раза выше наибольшей частоты гармоники, входящей в дискретизируемую величину[ Cкачайте файл, чтобы посмотреть ссылку ] .
Примером использования этой теоремы являются лазерные компакт-диски, звуковая информация на которых хранится в цифровой форме. Чем выше будет частота дискретизации, тем точнее будут воспроизводиться звуки и тем меньше их можно будет записать на один диск, но ухо обычного человека способно различать звуки с частотой до 20КГц, поэтому точно записывать звуки с большей частотой бессмысленно. Согласно теореме о выборках частоту дискретизации нужно выбрать не меньшей 40КГц (в промышленном стандарте на компакт-диске используется частота 44.1КГц).
При преобразовании дискретной информации в непрерывную, определяющей является скорость этого преобразования: чем она выше, с тем более высокочастотными гармониками получится непрерывная величина. Но чем большие частоты встречаются в этой величине, тем сложнее с ней работать. Например, обычные телефонные линии предназначены для передачи звуков частотой до 3КГц. Связь скорости передачи и наибольшей допустимой частоты подробнее будет рассмотрена далее.
Устройства для преобразования непрерывной информации в дискретную обобщающе называются АЦП (аналого-цифровой преобразователь) или ADC (Analog to Digital Convertor, A/D), а устройства для преобразования дискретной информации в аналоговую - ЦАП (цифро-аналоговый преобразователь) или DAC (Digital to Analog Convertor, D/A).
Упражнение 2 В цифровых магнитофонах DAT частота дискретизации - 48КГц. Какова максимальная частота звуковых волн, которые можно точно воспроизводить на таких магнитофонах?
Хранение, измерение, обработка и передача информации
Для хранения информации используются специальные устройства памяти. Дискретную информацию хранить гораздо проще непрерывной, т.к. она описывается последовательностью чисел. Если представить каждое число в двоичной системе счисления, то дискретная информация предстанет в виде последовательностей нулей и единиц. Присутствие или отсутствие какого-либо признака в некотором устройстве может описывать некоторую цифру в какой-нибудь из этих последовательностей. Например, позиция на дискете описывает место цифры, а полярность намагниченности - ее значение. Для записи дискретной информации можно использовать ряд переключателей, перфокарты, перфоленты, различные виды магнитных и лазерных дисков, электронные триггеры и т.п. Одна позиция для двоичной цифры в описании дискретной информации называется битом (bit, binary digit). Бит служит для измерения информации. Информация размером в один бит содержится в ответе на вопрос, требующий ответа "да" или "нет". Непрерывную информацию тоже измеряют в битах.
Бит - это очень маленькая единица, поэтому часто используется величина в 8 раз большая - байт (byte), состоящая из двух 4-битных полубайт или тетрад. Байт обычно обозначают заглавной буквой B или Б. Как и для прочих стандартных единиц измерения для бита и байта существуют производные от них единицы, образуемые при помощи приставок кило (K), мега (M), гига (G или Г), тера (T), пета (P или П) и других. Но для битов и байтов они означают не степени 10, а степени двойки: кило - 210=1024
·103, мега - 220
·106, гига - 230
·109, тера - 240
·1012, пета - 250
·1015. Например, 1KB = 8Кbit = 1024B = 8192bit, 1МБ = 1024КБ = 1048576Б = 8192Кбит.
Для обработки информации используют вычислительные машины, которые бывают двух видов: ЦВМ (цифровая вычислительная машина) - для обработки дискретной информации, АВМ (аналоговая вычислительная машина) - для обработки непрерывной информации. ЦВМ - универсальны, на них можно решать любые вычислительные задачи с любой точностью, но с ростом точности скорость их работы уменьшается. ЦВМ - это обычные компьютеры.
Каждая АВМ предназначена только для узкого класса задач, например, интегрирования или дифференцирования. Если на вход такой АВМ подать сигнал, описываемый функцией [ Cкачайте файл, чтобы посмотреть картинку ], то на ее выходе появится сигнал [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ]. АВМ работают очень быстро, но их точность ограничена и не может быть увеличена без аппаратных переделок. Программа для АВМ - это электрическая схема из заданного набора электронных компонент, которую нужно физически собрать.
Бывают еще и гибридные вычислительные машины, сочетающие в себе элементы как ЦВМ, так и АВМ.
На [ Cкачайте файл, чтобы посмотреть ссылку ] изображена схема передачи информации.
Кодированием, например, является шифровка сообщения, декодированием - его дешифровка.
Процедуры кодирования и декодирования могут повторяться много раз. Ошибки при передаче информации происходят из-за шума в канале (атмосферные и технические помехи), а также при кодировании и декодировании. Теория информации изучает, в частности, способы минимизации количества таких ошибок.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 1.2. 
Скорость передачи информации измеряется в количестве переданных за одну секунду бит или в бодах (baud): 1бод = 1бит/сек (bps). Производные единицы для бода такие же как и для бита и байта, например, 10Kbaud = 10240baud.
Информацию можно передавать последовательно, т.е. бит за битом, и параллельно, т.е. группами фиксированного количества бит. Параллельный способ быстрее, но он часто технически сложнее и дороже особенно при передаче данных на большие расстояния. Параллельный способ передачи используют, как правило, только на расстоянии не более 5 метров.
Упражнение 3 Сколько бит в одном килобайте?
2. Лекция: Базовые понятия теории информации
Изучать любую теорию невозможно без неких базовых принципов, на которых строятся дальнейшие исследования. Для теории информации такими понятиями являются: информация, канал связи, шум, кодирование. Способы измерения информации и ее количество являются важными составляющими дальнейшего обучения. Клод Шеннон предложил вероятностный подход к измерению дискретной и непрерывной информации. Предлагаются различные математические выкладки, примеры задач. Много задач для самостоятельной проверки знаний
Информация - нематериальная сущность, при помощи которой с любой точностью можно описывать реальные (материальные), виртуальные (возможные) и понятийные сущности. Информация - противоположность неопределенности.
Канал связи - это среда передачи информации, которая характеризуется в первую очередь максимально возможной для нее скоростью передачи данных (емкостью канала связи).
Шум - это помехи в канале связи при передаче информации.
Кодирование - преобразование дискретной информации одним из следующих способов: шифрование, сжатие, защита от шума.
Общая схема передачи информации изображена на [ Cкачайте файл, чтобы посмотреть ссылку ].
Емкость канала связи без шума можно приблизительно вычислить, зная максимальную частоту волновых процессов, допустимую в этом канале. Можно считать, что скорость передачи данных может быть не меньше, чем эта частота. Например, при предельной частоте, равной 1000Гц, можно обеспечить скорость передачи данных не меньше 1Кбод.
Примеры каналов связи и связанных с ними предельных частот: телеграф - 140Гц, телефон - до 3.1КГц, короткие волны (10-100м) - 3-30МГц, УКВ (1-10м) - 30-300МГц, спутник (сантиметровые волны) - до 30ГГц, оптический (инфракрасный диапазон) - 0.15-400ТГц, оптический (видимый свет) - 400-700ТГц, оптический (ультрафиолетовый диапазон) - 0.7-1.75ПГц.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 2.1. 
Типичные современные каналы: телеграфный и телефонный. Перспективные, внедряемые ныне: оптоволоконный (терабоды) и цифровой телефонный (ISDN, Integrated Services Digital Networks) - 57-128 Кбод.
В реальных оптоволоконных системах скорость гораздо ниже теоретических пределов (редко превосходит 1-10Гбод).
Наиболее широко пока используются телефонные линии связи. Здесь достигнута скорость более 50 Кбод!
Способы измерения информации
Понятие количества информации естественно возникает, например, в следующих типовых случаях:
Равенство вещественных переменных [ Cкачайте файл, чтобы посмотреть картинку ], заключает в себе информацию о том, что [ Cкачайте файл, чтобы посмотреть картинку ]равно [ Cкачайте файл, чтобы посмотреть картинку ]. Про равенство [ Cкачайте файл, чтобы посмотреть картинку ]можно сказать, что оно несет меньшую информацию, чем первое, т.к. из первого следует второе, но не наоборот. Равенство [ Cкачайте файл, чтобы посмотреть картинку ]несет в себе информацию по объему такую же, как и первое;
Пусть происходят некоторые измерения с некоторой погрешностью. Тогда чем больше будет проведено измерений, тем больше информации об измеряемой сущности будет получено;
Математическое ожидание некоторой случайной величины, содержит в себе информацию о самой случайной величине, Для случайной величины, распределенной по нормальному закону, с известной дисперсией знание математического ожидания дает полную информацию о случайной величине;
Рассмотрим схему передачи информации. Пусть передатчик описывается случайной величиной, [ Cкачайте файл, чтобы посмотреть картинку ], тогда из-за помех в канале связи на приемник будет приходить случайная величина, [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- это случайная величина, описывающая помехи. В этой схеме можно говорить о количестве информации, содержащейся в случайной величине, [ Cкачайте файл, чтобы посмотреть картинку ], относительно [ Cкачайте файл, чтобы посмотреть картинку ]. Чем ниже уровень помех (дисперсия [ Cкачайте файл, чтобы посмотреть картинку ]мала), тем больше информации можно получить из [ Cкачайте файл, чтобы посмотреть картинку ]. При отсутствии помех [ Cкачайте файл, чтобы посмотреть картинку ]содержит в себе всю информацию об [ Cкачайте файл, чтобы посмотреть картинку ].
В 1865 г. немецкий физик Рудольф Клаузиус ввел в статистическую физику понятие энтропии или меры уравновешенности системы.
В 1921 г. основатель большей части математической статистики, англичанин Роналд Фишер впервые ввел термин "информация" в математику, но полученные им формулы носят очень специальный характер.
В 1948 г. Клод Шеннон в своих работах по теории связи выписывает формулы для вычисления количества информация и энтропии. Термин энтропия используется Шенноном по совету патриарха компьютерной эры фон Неймана, отметившего, что полученные Шенноном для теории связи формулы для ее расчета совпали с соответствующими формулами статистической физики, а также то, что "точно никто не знает" что же такое энтропия.
Упражнение 4 Какое из соотношений несет в себе больше информации [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ]?
Вероятностный подход к измерению дискретной и непрерывной информации
В основе теории информации лежит предложенный Шенноном способ измерения количества информации, содержащейся в одной случайной величине, относительно другой случайной величины, Этот способ приводит к выражению количества информации числом.
Для дискретных случайных величи [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], заданных законами распределения [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и совместным распределением [ Cкачайте файл, чтобы посмотреть картинку ], количество информации, содержащейся в [ Cкачайте файл, чтобы посмотреть картинку ]относительно [ Cкачайте файл, чтобы посмотреть картинку ], равно
[ Cкачайте файл, чтобы посмотреть картинку ]
Для непрерывных случайных величин, [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], заданных плотностями распределения вероятностей [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], аналогичная формула имеет вид
[ Cкачайте файл, чтобы посмотреть картинку ]
Очевидно, что
[ Cкачайте файл, чтобы посмотреть картинку ]
и, следовательно,
[ Cкачайте файл, чтобы посмотреть картинку ]
Энтропия дискретной случайной величины [ Cкачайте файл, чтобы посмотреть картинку ]в теории информации определяется формулой
[ Cкачайте файл, чтобы посмотреть картинку ]
Свойства меры информации и энтропии:
[ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]независимы;
[ Cкачайте файл, чтобы посмотреть картинку ];
[ Cкачайте файл, чтобы посмотреть картинку ]- константа;
[ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ];
[ Cкачайте файл, чтобы посмотреть картинку ]. Если [ Cкачайте файл, чтобы посмотреть картинку ], то [ Cкачайте файл, чтобы посмотреть картинку ]- функция от [ Cкачайте файл, чтобы посмотреть картинку ]. Если [ Cкачайте файл, чтобы посмотреть картинку ]- инъективная функция[ Cкачайте файл, чтобы посмотреть ссылку ] от [ Cкачайте файл, чтобы посмотреть картинку ], то [ Cкачайте файл, чтобы посмотреть картинку ].
Логарифмированием из очевидного для всех [ Cкачайте файл, чтобы посмотреть картинку ]неравенства [ Cкачайте файл, чтобы посмотреть картинку ](равенство устанавливается только при [ Cкачайте файл, чтобы посмотреть картинку ]) получается неравенство [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
т.е. [ Cкачайте файл, чтобы посмотреть картинку ]только при [ Cкачайте файл, чтобы посмотреть картинку ]для всех [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], т.е. при независимости [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]. Если [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]независимы, то [ Cкачайте файл, чтобы посмотреть картинку ]и, следовательно, аргументы логарифмов равны 1 и, следовательно, сами логарифмы равны 0, что означает, что [ Cкачайте файл, чтобы посмотреть картинку ];
Следует из симметричности формул относительно аргументов;
Если [ Cкачайте файл, чтобы посмотреть картинку ], то все члены суммы, определяющей [ Cкачайте файл, чтобы посмотреть картинку ], должны быть нули, что возможно тогда и только тогда, когда [ Cкачайте файл, чтобы посмотреть картинку ]- константа;
Из четырех очевидных соотношений
13 INCLUD
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·получается
[ Cкачайте файл, чтобы посмотреть картинку ]
Нужно доказать [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]
но [ Cкачайте файл, чтобы посмотреть картинку ], а значит аргументы у всех логарифмов не больше 1 и, следовательно, значения логарифмов не больше 0, а это и значит, что вся сумма не больше 0.
Если [ Cкачайте файл, чтобы посмотреть картинку ], то для каждого [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]равно либо [ Cкачайте файл, чтобы посмотреть картинку ], либо 0. Но из [ Cкачайте файл, чтобы посмотреть картинку ]следует [ Cкачайте файл, чтобы посмотреть картинку ], что возможно только в случае, когда [ Cкачайте файл, чтобы посмотреть картинку ]- функция от [ Cкачайте файл, чтобы посмотреть картинку ].
При независимости случайных величин, [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]одна из них ничем не описывает другую, что и отражается в том, что для таких случайных величин, [ Cкачайте файл, чтобы посмотреть картинку ].
Рассмотрим пример измерения количества информации при подбрасывании двух игральных костей.
Пусть заданы дискретное случайные величины [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]. [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]- количества очков, выпавших соответственно на 1-й и 2-й игральной кости, а [ Cкачайте файл, чтобы посмотреть картинку ]. Найти [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]совпадают, т.к. кости одинаковые и без изъянов.
[ Cкачайте файл, чтобы посмотреть картинку ]
Закон распределения вероятностей для дискретной случайной величины [ Cкачайте файл, чтобы посмотреть картинку ],
[ Cкачайте файл, чтобы посмотреть картинку ]
вследствие того, что [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]- независимы и поэтому
[ Cкачайте файл, чтобы посмотреть картинку ]
будет
[ Cкачайте файл, чтобы посмотреть картинку ]
Таблицы, определяющие [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]будет
[ Cкачайте файл, чтобы посмотреть картинку ]
например,
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]В общем случае получится
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Тогда
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Здесь [ Cкачайте файл, чтобы посмотреть картинку ], что соответствует свойствам информации.
Подчеркнутый член [ Cкачайте файл, чтобы посмотреть картинку ]в расчете [ Cкачайте файл, чтобы посмотреть картинку ]соответствует информации о двух случаях из 36, когда [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], которые однозначно определяют [ Cкачайте файл, чтобы посмотреть картинку ]. Шесть случаев, когда [ Cкачайте файл, чтобы посмотреть картинку ], не несут никакой информации об [ Cкачайте файл, чтобы посмотреть картинку ], что соответствует подчеркнутому члену [ Cкачайте файл, чтобы посмотреть картинку ].
Расчеты можно проводить, используя 4-е свойство информации, через энтропию.
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Расчет количества информации с использованием 4-го свойства, а не определения, обычно требует меньше вычислений.
Рассмотрим более простой пример. Пусть дискретная случайная величина [ Cкачайте файл, чтобы посмотреть картинку ]равна количеству очков, выпавших на игральной кости, а дискретная случайная величина [ Cкачайте файл, чтобы посмотреть картинку ]равна 0, если выпавшее количество очков нечетно, и 1, если выпавшее количество очков четно. Найти [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
Составим законы распределения вероятностей дискретной случайной величины [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]
Таким образом, при [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]и, соответственно, при [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ].
Составим также закон совместного распределения вероятностей этих дискретных случайных величин
[ Cкачайте файл, чтобы посмотреть картинку ]
Таким образом,
[ Cкачайте файл, чтобы посмотреть картинку ]бит/сим и 3-го свойства информации следует, что информация об [ Cкачайте файл, чтобы посмотреть картинку ]полностью определяет [ Cкачайте файл, чтобы посмотреть картинку ], но не наоборот, т.к. [ Cкачайте файл, чтобы посмотреть картинку ]бит/сим. Действительно, [ Cкачайте файл, чтобы посмотреть картинку ]функционально зависит от [ Cкачайте файл, чтобы посмотреть картинку ], а [ Cкачайте файл, чтобы посмотреть картинку ]от [ Cкачайте файл, чтобы посмотреть картинку ]функционально не зависит.
Расчеты через энтропию будут следующими
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 5 Найти энтропию дискретной случайной величины [ Cкачайте файл, чтобы посмотреть картинку ], заданной распределением
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 6 Значения дискретной случайной величины [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]определяются подбрасыванием двух идеальных монет, а дискретная случайная величина [ Cкачайте файл, чтобы посмотреть картинку ]равна сумме количества "гербов", выпавших при подбрасывании этих монет. Сколько информации об [ Cкачайте файл, чтобы посмотреть картинку ]содержится в [ Cкачайте файл, чтобы посмотреть картинку ]?
Упражнение 7 Сколько информации об [ Cкачайте файл, чтобы посмотреть картинку ]содержится в дискретной случайной величине [ Cкачайте файл, чтобы посмотреть картинку ], где независимые дискретные случайные величины [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]могут с равной вероятностью принимать значение либо 0, либо 1? Найти [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]. Каков характер зависимости между [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]?
Упражнение 8 Дискретные случайные величины [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]- зависимы и распределены также как и соответствующие дискретные случайные величины из предыдущей задачи. Найти [ Cкачайте файл, чтобы посмотреть картинку ], если совместное распределение вероятностей [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]описывается законом
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 9 Дискретные случайные величины [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]определяются подбрасыванием двух идеальных тетраэдров, грани которых помечены числами от 1 до 4. дискретная случайная величина [ Cкачайте файл, чтобы посмотреть картинку ]равна сумме чисел, выпавших при подбрасывании этих тетраэдров, т.е. [ Cкачайте файл, чтобы посмотреть картинку ]. Вычислить [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
Упражнение 10 Подсчитать сколько информации об [ Cкачайте файл, чтобы посмотреть картинку ]содержится в дискретной случайной величине [ Cкачайте файл, чтобы посмотреть картинку ], а также [ Cкачайте файл, чтобы посмотреть картинку ]. Дискретные случайные величины [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]берутся из предыдущего упражнения.
Упражнение 11 Дискретная случайная величина [ Cкачайте файл, чтобы посмотреть картинку ]может принимать три значения [ Cкачайте файл, чтобы посмотреть картинку ], 0 и 1 с равными вероятностями. Дискретная случайная величина [ Cкачайте файл, чтобы посмотреть картинку ]с равными вероятностями может принимать значения 0, 1 и 2. [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]- независимы. [ Cкачайте файл, чтобы посмотреть картинку ]. Найти [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и количество информации, содержащейся в [ Cкачайте файл, чтобы посмотреть картинку ]относительно [ Cкачайте файл, чтобы посмотреть картинку ]. [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]- независимы и задаются распределениями
[ Cкачайте файл, чтобы посмотреть картинку ]
3. Лекция: Смысл энтропии Шеннона
Вводится понятие энтропии. На нескольких примерах показывается, как вычисляется энтропия дискретной случайной величины. Вводится понятие префиксного кодирования. Задачи на самостоятельную работу улучшают восприятие материала. Также много различных математических исследований
Энтропия д.с.в. - это минимум среднего количества бит, которое нужно передавать по каналу связи о текущем значении данной д.с.в.
Рассмотрим пример (скачки). В заезде участвуют 4 лошади с равными шансами на победу, т.е. вероятность победы каждой лошади равна 1/4. Введем д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ], равную номеру победившей лошади. Здесь [ Cкачайте файл, чтобы посмотреть картинку ]. После каждого заезда по каналам связи достаточно будет передавать два бита информации о номере победившей лошади. Кодируем номер лошади следующим образом: 1-00, 2-01, 3-10, 4-11. Если ввести функцию [ Cкачайте файл, чтобы посмотреть картинку ], которая возвращает длину сообщения, кодирующего заданное значение [ Cкачайте файл, чтобы посмотреть картинку ], то м. о. [ Cкачайте файл, чтобы посмотреть картинку ]- это средняя длина сообщения, кодирующего [ Cкачайте файл, чтобы посмотреть картинку ]. Можно формально определить [ Cкачайте файл, чтобы посмотреть картинку ]через две функции [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]каждому значению [ Cкачайте файл, чтобы посмотреть картинку ]ставит в соответствие некоторый битовый код, причем, взаимно однозначно, а [ Cкачайте файл, чтобы посмотреть картинку ]возвращает длину в битах для любого конкретного кода. В этом примере [ Cкачайте файл, чтобы посмотреть картинку ].
Пусть теперь д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]имеет следующее распределение
[ Cкачайте файл, чтобы посмотреть картинку ]
т.е. лошадь с номером 1 - это фаворит. Тогда
[ Cкачайте файл, чтобы посмотреть картинку ]
Закодируем номера лошадей: 1-0, 2-10, 3-110, 4-111, - т.е. так, чтобы каждой код не был префиксом другого кода (подобное кодирование называют префиксным). В среднем в 16 заездах 1-я лошадь должна победить в 12 из них, 2-я - в 2-х, 3-я - в 1-м и 4-я - в 1-м. Таким образом, средняя длина сообщения о победителе равна [ Cкачайте файл, чтобы посмотреть картинку ]бит/сим или м. о. [ Cкачайте файл, чтобы посмотреть картинку ]. Действительно, [ Cкачайте файл, чтобы посмотреть картинку ]сейчас задается следующим распределением вероятностей: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]. Следовательно,
[ Cкачайте файл, чтобы посмотреть картинку ]
Итак, [ Cкачайте файл, чтобы посмотреть картинку ].
Можно доказать, что более эффективного кодирования для двух рассмотренных случаев не существует.
То, что энтропия Шеннона соответствует интуитивному представлению о мере информации, может быть продемонстрировано в опыте по определению среднего времени психических реакций. Опыт заключается в том, что перед испытуемым человеком зажигается одна из [ Cкачайте файл, чтобы посмотреть картинку ]лампочек, которую он должен указать. Проводится большая серия испытаний, в которых каждая лампочка зажигается с определенной вероятностью [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- это номер лампочки. Оказывается, среднее время, необходимое для правильного ответа испытуемого, пропорционально величине энтропии [ Cкачайте файл, чтобы посмотреть картинку ], а не числу лампочек [ Cкачайте файл, чтобы посмотреть картинку ], как можно было бы подумать. В этом опыте предполагается, что чем больше информации будет получено человеком, тем дольше будет время ее обработки и, соответственно, реакции на нее.
Упражнение 13 Найти энтропию д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]и среднюю длину каждого из приведенных кодов для этой д.с.в.
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 14 д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]равна количеству "гербов", выпавших на двух идеальных монетках. Найти энтропию [ Cкачайте файл, чтобы посмотреть картинку ]. Придумать минимальный код для [ Cкачайте файл, чтобы посмотреть картинку ], вычислить его среднюю длину и обосновать его минимальность.
Упражнение 15 д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]задана распределением [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]Найти энтропию этой д.с.в. Придумать минимальный код для [ Cкачайте файл, чтобы посмотреть картинку ], вычислить его среднюю длину и обосновать его минимальность.
Упражнение 16 Про д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]известно, что ее значениями являются буквы кириллицы. Произведен ряд последовательных измерений [ Cкачайте файл, чтобы посмотреть картинку ], результат которых - "ТЕОРИЯИНФОРМАЦИИ". Составить на основании этого результата приблизительный закон распределения вероятностей этой д.с.в. и оценить минимальную среднюю длину кодов для [ Cкачайте файл, чтобы посмотреть картинку ].
Семантическая информация
В 50-х годах XX века появились первые попытки определения абсолютного информационного содержания предложений естественного языка. Стоит отметить, что сам Шеннон однажды заметил, что смысл сообщений не имеет никакого отношения к его теории информации, целиком построенной на положениях теории вероятностей. Но его способ точного измерения информации наводил на мысль о возможности существования способов точного измерения информации более общего вида, например, информации из предложений естественного языка. Примером одной из таких мер является функция [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- это предложение, смысловое содержание которого измеряется, [ Cкачайте файл, чтобы посмотреть картинку ]- вероятность истинности [ Cкачайте файл, чтобы посмотреть картинку ]. Вот некоторые свойства этой функции-меры:
если [ Cкачайте файл, чтобы посмотреть картинку ](из [ Cкачайте файл, чтобы посмотреть картинку ]следует [ Cкачайте файл, чтобы посмотреть картинку ]) - истинно, то [ Cкачайте файл, чтобы посмотреть картинку ];
[ Cкачайте файл, чтобы посмотреть картинку ];
если [ Cкачайте файл, чтобы посмотреть картинку ]- истинно, то [ Cкачайте файл, чтобы посмотреть картинку ];
[ Cкачайте файл, чтобы посмотреть картинку ], т.е. независимости [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
Значение этой функция-меры больше для предложений, исключающих большее количество возможностей. Пример: из [ Cкачайте файл, чтобы посмотреть картинку ]- "[ Cкачайте файл, чтобы посмотреть картинку ]" и [ Cкачайте файл, чтобы посмотреть картинку ]- "[ Cкачайте файл, чтобы посмотреть картинку ]" следует, что [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ]; ясно, что [ Cкачайте файл, чтобы посмотреть картинку ]исключает больше возможностей, чем [ Cкачайте файл, чтобы посмотреть картинку ].
Для измерения семантической информации также используется функция-мера [ Cкачайте файл, чтобы посмотреть картинку ]. Ясно, что [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ].
Упражнение 17 Вычислить [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]предложения [ Cкачайте файл, чтобы посмотреть картинку ], про которое известно, что оно достоверно на 50%, и предложения [ Cкачайте файл, чтобы посмотреть картинку ], достоверность которого 25%.
4. Лекция: Сжатие информации
Сжатие информации – важнейший аспект передачи данных, что дает возможность более оперативно передавать данные. Доказывается основная теорема о кодировании при отсутствии помех. Также в лекции рассматривается метод блокирования, который используется на практике для повышения степени сжатия. Дается также математическое обоснование метода Шеннона-Фэно. Некоторое количество примеров для проверки полученных знаний
Цель сжатия - уменьшение количества бит, необходимых для хранения или передачи заданной информации, что дает возможность передавать сообщения более быстро и хранить более экономно и оперативно (последнее означает, что операция извлечения данной информации с устройства ее хранения будет проходить быстрее, что возможно, если скорость распаковки данных выше скорости считывания данных с носителя информации). Сжатие позволяет, например, записать больше информации на дискету, "увеличить" размер жесткого диска, ускорить работу с модемом и т.д. При работе с компьютерами широко используются программы-архиваторы данных формата ZIP, GZ, ARJ и других. Методы сжатия информации были разработаны как математическая теория, которая долгое время (до первой половины 80-х годов), мало использовалась в компьютерах на практике.
Сжатие данных не может быть большим некоторого теоретические предела. Для формального определения этого предела рассматриваем любое информационное сообщение длины [ Cкачайте файл, чтобы посмотреть картинку ]как последовательность независимых, одинаково распределенных д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]или как выборки длины [ Cкачайте файл, чтобы посмотреть картинку ]значений одной д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ].
Доказано[ Cкачайте файл, чтобы посмотреть ссылку ] , что среднее количество бит, приходящихся на одно кодируемое значение д.с.в., не может быть меньшим, чем энтропия этой д.с.в., т.е. [ Cкачайте файл, чтобы посмотреть картинку ]для любой д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]и любого ее кода.
Кроме того, Доказано[ Cкачайте файл, чтобы посмотреть ссылку ] утверждение о том, что существует такое кодирование (Шеннона-Фэно, Fano), что [ Cкачайте файл, чтобы посмотреть картинку ].
Рассмотрим д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], независимые и одинаково распределенные. [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], следовательно,
[ Cкачайте файл, чтобы посмотреть картинку ]
Вместо [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]можно говорить о двумерной д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]. Аналогичным образом для [ Cкачайте файл, чтобы посмотреть картинку ]-мерной д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]можно получить, что [ Cкачайте файл, чтобы посмотреть картинку ].
Пусть [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ], т.е. [ Cкачайте файл, чтобы посмотреть картинку ]- это количество бит кода на единицу сообщения [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда [ Cкачайте файл, чтобы посмотреть картинку ]- это среднее количество бит кода на единицу сообщения при передаче бесконечного множества сообщений [ Cкачайте файл, чтобы посмотреть картинку ]. Из [ Cкачайте файл, чтобы посмотреть картинку ]для кода Шеннона-Фэно для [ Cкачайте файл, чтобы посмотреть картинку ]следует [ Cкачайте файл, чтобы посмотреть картинку ]для этого же кода.
Таким образом, доказана основная теорема о кодировании при отсутствии помех, а именно то, что с ростом длины [ Cкачайте файл, чтобы посмотреть картинку ]сообщения, при кодировании методом Шеннона-Фэно всего сообщения целиком среднее количество бит на единицу сообщения будет сколь угодно мало отличаться от энтропии единицы сообщения. Подобное кодирование практически не реализуемо из-за того, что с ростом длины сообщения трудоемкость построения этого кода становится недопустимо большой. Кроме того, такое кодирование делает невозможным отправку сообщения по частям, что необходимо для непрерывных процессов передачи данных. Дополнительным недостатком этого способа кодирования является необходимость отправки или хранения собственно полученного кода вместе с его исходной длиной, что снижает эффект от сжатия. На практике для повышения степени сжатия используют метод блокирования.
По выбранному значению [ Cкачайте файл, чтобы посмотреть картинку ]можно выбрать такое [ Cкачайте файл, чтобы посмотреть картинку ], что если разбить все сообщение на блоки длиной [ Cкачайте файл, чтобы посмотреть картинку ](всего будет [ Cкачайте файл, чтобы посмотреть картинку ]блоков), то кодированием Шеннона-Фэно таких блоков, рассматриваемых как единицы сообщения, можно сделать среднее количество бит на единицу сообщения большим энтропии менее, чем на [ Cкачайте файл, чтобы посмотреть картинку ]. Действительно, пусть [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и т.д., т.е. [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], следовательно,
[ Cкачайте файл, чтобы посмотреть картинку ]
т.е. достаточно брать [ Cкачайте файл, чтобы посмотреть картинку ]. Минимум [ Cкачайте файл, чтобы посмотреть картинку ]по заданному [ Cкачайте файл, чтобы посмотреть картинку ]может быть гораздо меньшим [ Cкачайте файл, чтобы посмотреть картинку ].
Пример. Пусть д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]независимы, одинаково распределены и могут принимать только два значения [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ]от 1 до [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда
[ Cкачайте файл, чтобы посмотреть картинку ]
Минимальное кодирование здесь - это коды 0 и 1 с длиной 1 бит каждый. При таком кодировании количество бит в среднем на единицу сообщения равно 1. Разобьем сообщение на блоки длины 2. Закон распределения вероятностей и кодирование для 2-мерной д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]-
[ Cкачайте файл, чтобы посмотреть картинку ]
Тогда при таком минимальном кодировании количество бит в среднем на единицу сообщения будет уже
[ Cкачайте файл, чтобы посмотреть картинку ]
т.е. меньше, чем для неблочного кодирования. Для блоков длины 3 количество бит в среднем на единицу сообщения можно сделать [ Cкачайте файл, чтобы посмотреть картинку ], для блоков длины 4 - [ Cкачайте файл, чтобы посмотреть картинку ]и т.д.
Все изложенное ранее подразумевало, что рассматриваемые д.с.в. кодируются только двумя значениями (обычно 0 и 1). Пусть д.с.в. кодируются [ Cкачайте файл, чтобы посмотреть картинку ]значениями. Тогда для д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]и любого ее кодирования верно, что [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]. Кроме того, существует кодирование такое, что [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ].
Формулы теоретических приделов уровня сжатия, рассмотренные ранее, задают предел для средней длины кода на единицу сообщений, передаваемых много раз, т.е. они ничего не говорят о нижней границе уровня сжатия, которая может достигаться на некоторых сообщениях и быть меньшей энтропии д.с.в., реализующей сообщение.
Простейшие алгоритмы сжатия информации
Метод Шеннона-Фэно состоит в следующем, значения д.с.в. располагают в порядке убывания их вероятностей, а затем последовательно делят на две части с приблизительно равными вероятностями, к коду первой части добавляют 0, а к коду второй - 1.
Для предшествующего примера получим
[ Cкачайте файл, чтобы посмотреть картинку ]
Еще один пример. Код составляется после сортировки, т.е. после перестановки значений B и C.
[ Cкачайте файл, чтобы посмотреть картинку ]
Метод Хаффмена (Huffman) разработан в 1952 г. Он более практичен и никогда по степени сжатия не уступает методу Шеннона-Фэно, более того, он сжимает максимально плотно. Код строится при помощи двоичного (бинарного) дерева. Вероятности значений д.с.в. приписываются его листьям; все дерево строится, опираясь на листья. Величина, приписанная к узлу дерева, называется весом узла. Два листа с наименьшими весами создают родительский узел с весом, равным сумме их весов; в дальнейшем этот узел учитывается наравне с оставшимися листьями, а образовавшие его узлы от такого рассмотрения устраняются. После постройки корня нужно приписать каждой из ветвей, исходящих из родительских узлов, значения 0 или 1. Код каждого значения д.с.в. - это число, получаемое при обходе ветвей от корня к листу, соответствующему данному значению.
Для методов Хаффмена и Шеннона-Фэно каждый раз вместе с собственно сообщением нужно передавать и таблицу кодов. Например, для случая из примера 2 нужно сообщить, что коду 10 соответствует символ C, коду 0 - A и т.д.
Построим коды Хаффмена для значений д.с.в. из двух предыдущих примеров.
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 18 Вычислить [ Cкачайте файл, чтобы посмотреть картинку ]для блочного кода Хаффмена для [ Cкачайте файл, чтобы посмотреть картинку ]. Длина блока - 2 бита. д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]берется из последнего примера.
Упражнение 19 Вычислить [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]для кодов Хаффмена и Шеннона-Фэно для [ Cкачайте файл, чтобы посмотреть картинку ]. д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]задается следующим распределением вероятностей:
[ Cкачайте файл, чтобы посмотреть картинку ]
5. Лекция: Арифметическое кодирование

В лекции подробно рассматривается арифметическое кодирование. Математическое доказательство его "выгодности" по отношению к другим методам кодирования. Проводится сравнение с другими методами кодирования. Очень хорошо освещены адаптивные алгоритмы сжатия информации, адаптивное арифметическое кодирование. Характерно большое количество примеров и заданий для самостоятельного изучения
Алгоритм кодирования Хаффмена, в лучшем случае, не может передавать на каждый символ сообщения менее одного бита информации. Предположим, известно, что в сообщении, состоящем из нулей и единиц, единицы встречаются в 10 раз чаще нулей. При кодировании методом Хаффмена и на 0 и на 1 придется тратить не менее одного бита. Но энтропия д.с.в., генерирующей такие сообщения
·0.469 бит/сим. Неблочный метод Хаффмена дает для минимального среднего количества бит на один символ сообщения значение 1 бит. Хотелось бы иметь такую схему кодирования, которая позволяла бы кодировать некоторые символы менее чем одним битом. Одной из лучших среди таких схем является арифметическое кодирование, разработанное в 70-х годах XX века.
По исходному распределению вероятностей для выбранной для кодирования д.с.в. строится таблица, состоящая из пересекающихся только в граничных точках отрезков для каждого из значений этой д.с.в.; объединение этих отрезков должно образовывать отрезок [ Cкачайте файл, чтобы посмотреть картинку ], а их длины должны быть пропорциональны вероятностям соответствующих значений д.с.в. Алгоритм кодирования заключается в построении отрезка, однозначно определяющего данную последовательность значений д.с.в. Затем для построенного отрезка находится число, принадлежащее его внутренней части и равное целому числу, деленному на минимально возможную положительную целую степень двойки. Это число и будет кодом для рассматриваемой последовательности. Все возможные конкретные коды - это числа строго большие нуля и строго меньшие одного, поэтому можно отбрасывать лидирующий ноль и десятичную точку, но нужен еще один специальный код-маркер, сигнализирующий о конце сообщения. Отрезки строятся так. Если имеется отрезок для сообщения длины [ Cкачайте файл, чтобы посмотреть картинку ], то для построения отрезка для сообщения длины [ Cкачайте файл, чтобы посмотреть картинку ], разбиваем его на столько же частей, сколько значений имеет рассматриваемая д.с.в. Это разбиение делается совершенно также как и самое первое (с сохранением порядка). Затем выбирается из полученных отрезков тот, который соответствует заданной конкретной последовательности длины [ Cкачайте файл, чтобы посмотреть картинку ].
Принципиальное отличие этого кодирования от рассмотренных ранее методов в его непрерывности, т.е. в ненужности блокирования. Код здесь строится не для отдельных значений д.с.в. или их групп фиксированного размера, а для всего предшествующего сообщения в целом. Эффективность арифметического кодирования растет с ростом длины сжимаемого сообщения (для кодирования Хаффмена или Шеннона-Фэно этого не происходит). Хотя арифметическое кодирование дает обычно лучшее сжатие, чем кодирование Хаффмена, оно пока используется на практике сравнительно редко, т.к. оно появилось гораздо позже и требует больших вычислительных ресурсов.
При сжатии заданных данных, например, из файла все рассмотренные методы требуют двух проходов. Первый для сбора частот символов, используемых как приближенные значения вероятностей символов, и второй для собственно сжатия.
Пример арифметического кодирования. Пусть д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]может принимать только два значения 0 и 1 с вероятностями 2/3 и 1/3 соответственно. Сопоставим значению 0 отрезок [ Cкачайте файл, чтобы посмотреть картинку ], а 1 - [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда для д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ],
[ Cкачайте файл, чтобы посмотреть картинку ]
таблица построения кодов -
[ Cкачайте файл, чтобы посмотреть картинку ]
Среднее количество бит на единицу сообщения для арифметического кодирования получилось меньше, чем энтропия. Это связано с тем, что в рассмотренной простейшей схеме кодирования, не описан код-маркер конца сообщения, введение которого неминуемо сделает это среднее количество бит большим энтропии.
Получение исходного сообщения из его арифметического кода происходит по следующему алгоритму.
Шаг 1. В таблице для кодирования значений д.с.в. определяется интервал, содержащий текущий код, - по этому интервалу однозначно определяется один символ исходного сообщения. Если этот символ - это маркер конца сообщения, то конец.
Шаг 2. Из текущего кода вычитается нижняя граница содержащего его интервала, полученная разность делится на длину этого же интервала. Полученное число считается новым текущим значением кода. Переход к шагу 1.
Рассмотрим, например, распаковку сообщения 111. Этому сообщению соответствует число [ Cкачайте файл, чтобы посмотреть картинку ], что означает, что первый знак декодируемого сообщения - это 1. Далее от 7/8 вычитается 2/3 и результат делится на 1/3, что дает [ Cкачайте файл, чтобы посмотреть картинку ], что означает, что следующий знак - 0. Теперь, вычислив [ Cкачайте файл, чтобы посмотреть картинку ], получим следующий знак - 1, т.е. все исходное сообщение 101 декодировано. Однако, из-за того, что условие остановки не определенно, алгоритм декодирования здесь не остановится и получит "следующий символ" 1 и т.д.
Упражнение 20 Вычислить среднее количество бит на единицу сжатого сообщения о значении каждой из д.с.в., из заданных следующими распределениями вероятностей, при сжатии методами Шеннона-Фэно, Хаффмена и арифметическим. Арифметический код здесь и в следующих упражнениях составлять, располагая значения д.с.в. в заданном порядке слева-направо вдоль отрезка от 0 до 1.
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 21 Вычислить длины кодов Хаффмена и арифметического для сообщения AAB, полученного от д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]со следующим распределением вероятностей [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
Упражнение 22 Декодировить арифметический код 011 для последовательности значений д.с.в. из предыдущего упражнения. Остановиться, после декодирования третьего символа.
Упражнение 23 Составить арифметический код для сообщения BAABC, полученного от д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]со следующим распределением вероятностей 13 INCLUDEPICTUR
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·. Каков будет арифметический код для этого же сообщения, если [ Cкачайте файл, чтобы посмотреть картинку ]распределена по закону [ Cкачайте файл, чтобы посмотреть картинку ]может принимать три различных значения. При построении блочного кода с длиной блока 4 для [ Cкачайте файл, чтобы посмотреть картинку ]необходимо будет рассмотреть д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]- выборку четырех значений [ Cкачайте файл, чтобы посмотреть картинку ]. Сколько различных значений может иметь [ Cкачайте файл, чтобы посмотреть картинку ]? Если считать сложность построения кода пропорциональной количеству различных значений кодируемой д.с.в., то во сколько раз сложнее строить блочный код для [ Cкачайте файл, чтобы посмотреть картинку ]по сравнению с неблочным?
Упражнение 25 Составить коды Хаффмена, блочный Хаффмена (для блоков длины 2 и 3) и арифметический для сообщения ABAAAB, вычислить их длины. Приблизительный закон распределения вероятностей д.с.в., сгенерировавшей сообщение, определить анализом сообщения.
Адаптивные алгоритмы сжатия. Кодирование Хаффмена
Является практичным, однопроходным, не требующим передачи таблицы кодов. Его суть в использовании адаптивного алгоритма, т.е. алгоритма, который при каждом сопоставлении символу кода, кроме того, изменяет внутренний ход вычислений так, что в следующий раз этому же символу может быть сопоставлен другой код, т.е. происходит адаптация алгоритма к поступающим для кодирования символам. При декодировании происходит аналогичный процесс.
В начале работы алгоритма дерево кодирования содержит только один специальный символ, всегда имеющий частоту 0. Он необходим для занесения в дерево новых символов: после него код символа передается непосредственно. Обычно такой символ называют escape-символом, . Расширенный ASCII кодируют каждый символ 8-битным числом, т.е. числом от 0 до 255. При построении дерева кодирования необходимо для возможности правильного декодирования как-то упорядочивать структуру дерева. Расположим листья дерева в порядке возрастания частот и затем в порядке возрастания стандартных кодов символов. Узлы собираются слева направо без пропусков. Левые ветви помечаются 0, а правые - 1.
Рассмотрим процесс построения кодов по адаптивному алгоритму Хаффмена для сообщения ACCBCAAABC, которое соответствует выборке 10-и значений д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]из 2-го примера на построение неадаптивного кода Хаффмена:
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Здесь L1(ACCBCAAABC)=4.1 бит/сим. Если не использовать сжатия, то L1(ACCBCAAABC)=8 бит/сим. Для рассматриваемой д.с.в. ранее были получены значения [ Cкачайте файл, чтобы посмотреть картинку ]бит/сим и [ Cкачайте файл, чтобы посмотреть картинку ]бит/сим. С ростом длины сообщения среднее количество бит на символ сообщения при адаптивном алгоритме кодирования будет мало отличаться от значения, полученного при использовании неадаптивного метода Хаффмена или Шеннона-Фэно, т.к. алфавит символов ограничен и полный код каждого символа нужно передавать только один раз.
Теперь рассмотрим процесс декодирования сообщения 'A'0'C'100'B'1001010100101. Здесь и далее символ в апостофах означает восемь бит, представляющих собой запись двоичного числа, номера символа, в таблице ASCII+. В начале декодирования дерево Хаффмена содержит только escape-символ с частотой 0. С раскодированием каждого нового символа дерево заново перестраивается.
[ Cкачайте файл, чтобы посмотреть картинку ]
Выбранный способ адаптации алгоритма очень неэффективный, т.к. после обработки каждого символа нужно перестраивать все дерево кодирования. Существуют гораздо менее трудоемкие способы, при которых не нужно перестраивать все дерево, а нужно лишь незначительно изменять.
Бинарное дерево называется упорядоченным, если его узлы могут быть перечислены в порядке неубывания веса и в этом перечне узлы, имеющие общего родителя, должны находиться рядом, на одном ярусе. Причем перечисление должно идти по ярусам снизу-вверх и слева-направо в каждом ярусе.
На [ Cкачайте файл, чтобы посмотреть ссылку ] приведен пример упорядоченного дерева Хаффмена.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 5.1. 
Если дерево кодирования упорядоченно, то при изменении веса существующего узла дерево не нужно целиком перестраивать - в нем достаточно лишь поменять местами два узла: узел, вес которого нарушил упорядоченность, и последний из следующих за ним узлов меньшего веса. После перемены мест узлов необходимо пересчитать веса всех их узлов-предков.
Например, если в дереве на [ Cкачайте файл, чтобы посмотреть ссылку ] добавить еще две буквы A, то узлы A и D должны поменяться местами (См. [ Cкачайте файл, чтобы посмотреть ссылку ]).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 5.2. 
Если добавить еще две буквы A, то необходимо будет поменять местами сначала узел A и узел, родительский для узлов D и B, а затем узел E и узел-брат E (рис.6).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 5.3. 
Дерево нужно перестраивать только при появлении в нем нового узла-листа. Вместо полной перестройки можно добавлять новый лист справа к листу и упорядочивать, если необходимо, полученное таким образом дерево.
Процесс работы адаптивного алгоритма Хаффмена с упорядоченным деревом можно изобразить следующей схемой:
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 26 Закодировать сообщение BBCBBC, используя адаптивный алгоритм Хаффмена с упорядоченным деревом.
Упражнение 27 Закодировать сообщения "AABCDAACCCCDBB", "КИБЕРНЕТИКИ" и "СИНЯЯ СИНЕВА СИНИ", используя адаптивный алгоритм Хаффмена с упорядоченным деревом. Вычислить длины в битах исходного сообщения в коде ASCII+ и его полученного кода.
Упражнение 28 Распаковать сообщение 'A'0'F'00'X'0111110101011011110100101, полученное по адаптивному алгоритму Хаффмена с упорядоченным деревом, рассчитать длину кода сжатого и несжатого сообщения в битах.
Адаптивное арифметическое кодирование
Для арифметического кодирования, как и для кодирования методом Хаффмена, существуют адаптивные алгоритмы. Реализация одного из них запатентована фирмой IBM.
Построение арифметического кода для последовательности символов из заданного множества можно реализовать следующим алгоритмом. Каждому символу сопоставляется его вес: вначале он для всех равен 1. Все символы располагаются в естественном порядке, например, по возрастанию. Вероятность каждого символа устанавливается равной его весу, деленному на суммарный вес всех символов. После получения очередного символа и постройки интервала для него, вес этого символа увеличивается на 1 (можно увеличивать вес любым регулярным способом).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 5.4. 
Заданное множество символов - это, как правило, ASCII+. Для того, чтобы обеспечить остановку алгоритма распаковки вначале сжимаемого сообщения надо поставить его длину или ввести дополнительный символ-маркер конца сообщения. Если знать формат файла для сжатия, то вместо начального равномерного распределения весов можно выбрать распределение с учетом этих знаний. Например, в текстовом файле недопустимы ряд управляющих символов и их вес можно занулить.
Пример. Пусть заданное множество - это символы A, B, C. Сжимаемое сообщение - ACCBCAAABC. Введем маркер конца сообщения - E. Кодирование согласно приведенному алгоритму можно провести согласно схеме, приведенной на [ Cкачайте файл, чтобы посмотреть ссылку ].
Вследствие того, что
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Поэтому L1(ACCBCAAABC)=2.2 бит/сим. Результат, полученный адаптивным алгоритмом Хаффмена - 4.1 бит/сим, но если кодировать буквы не 8 битами, а 2, то результат будет 2.3 бит/сим. В первой строчке схемы выписаны суммарные веса символов, а во второй - длины текущих отрезков.
Способ распаковки адаптивного арифметического кода почти аналогичен приведенному для неадаптивного. Отличие только в том, что на втором шаге после получения нового кода нужно перестроить разбиение единичного отрезка согласно новому распределению весов символов. Получение маркера конца или заданного началом сообщения числа символов означает окончание работы.
Пример. Распакуем код 0010111001010011101101, зная, что множество символов сообщения состоит из A, B, C и E, причем последний - это маркер конца сообщения.
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 29 Составить адаптивный арифметический код с маркером конца для сообщения BAABC.
6. Лекция: Подстановочные или словарно-ориентированные алгоритмы сжатия информации. Методы Лемпела-Зива
История происхождения, положительные и отрицательные стороны, сравнение и применение на практике таких алгоритмов, как: LZ77, LZ78, LZSS, LZW. Практические задания для укрепления основного материала лекции. Особенности программ архиваторов. Непосредственное применение алгоритмов кодирования в архиваторах для обеспечения продуктивной работы в MS-DOS и WINDOWS
Методы Шеннона-Фэно, Хаффмена и арифметическое кодирование обобщающе называются статистическими методами. Словарные алгоритмы носят более практичный характер. Их частое преимущество перед статистическими теоретически объясняется тем, что они позволяют кодировать последовательности символов разной длины. Неадаптивные статистические алгоритмы тоже можно использовать для таких последовательностей, но в этом случае их реализация становится весьма ресурсоемкой.
Алгоритм LZ77 был опубликован в 1977 г. Разработан израильскими математиками Якобом Зивом (Ziv) и Авраамом Лемпелом (Lempel). Многие программы сжатия информации используют ту или иную модификацию LZ77. Одной из причин популярности алгоритмов LZ является их исключительная простота при высокой эффективности сжатия.
Основная идея LZ77 состоит в том, что второе и последующие вхождения некоторой строки символов в сообщении заменяются ссылками на ее первое вхождение.
LZ77 использует уже просмотренную часть сообщения как словарь. Чтобы добиться сжатия, он пытается заменить очередной фрагмент сообщения на указатель в содержимое словаря.
LZ77 использует "скользящее" по сообщению окно, разделенное на две неравные части. Первая, большая по размеру, включает уже просмотренную часть сообщения. Вторая, намного меньшая, является буфером, содержащим еще незакодированные символы входного потока. Обычно размер окна составляет несколько килобайт, а размер буфера - не более ста байт. Алгоритм пытается найти в словаре (большей части окна) фрагмент, совпадающий с содержимым буфера.
Алгоритм LZ77 выдает коды, состоящие из трех элементов:
смещение в словаре относительно его начала подстроки, совпадающей с началом содержимого буфера;
длина этой подстроки;
первый символ буфера, следующий за подстрокой.
Пример. Размер окна - 20 символ, словаря - 12 символов, а буфера - 8. Кодируется сообщение "ПРОГРАММНЫЕ ПРОДУКТЫ ФИРМЫ MICROSOFT". Пусть словарь уже заполнен. Тогда он содержит строку "ПРОГРАММНЫЕ ", а буфер - строку "ПРОДУКТЫ". Просматривая словарь, алгоритм обнаружит, что совпадающей подстрокой будет "ПРО", в словаре она расположена со смещением 0 и имеет длину 3 символа, а следующим символом в буфере является "Д". Таким образом, выходным кодом будет тройка <0,3,'Д'>. После этого алгоритм сдвигает влево все содержимое окна на длину совпадающей подстроки [ Cкачайте файл, чтобы посмотреть картинку ]и одновременно считывает столько же символов из входного потока в буфер. Получаем в словаре строку "РАММНЫЕ ПРОД", в буфере - "УКТЫ ФИР". В данной ситуации совпадающей подстроки обнаружить не удаться и алгоритм выдаст код <0,0,'У'>, после чего сдвинет окно на один символ. Затем словарь будет содержать "АММНЫЕ ПРОДУ", а буфер - "КТЫ ФИРМ". И т.д.
Декодирование кодов LZ77 проще их получения, т.к. не нужно осуществлять поиск в словаре.
Недостатки LZ77:
с ростом размеров словаря скорость работы алгоритма-кодера пропорционально замедляется;
кодирование одиночных символов очень неэффективно.
Кодирование одиночных символов можно сделать эффективным, отказавшись от ненужной ссылки на словарь для них. Кроме того, в некоторые модификации LZ77 для повышения степени сжатия добавляется возможность для кодирования идущих подряд одинаковых символов.
Пример. Закодировать по алгоритму LZ77 строку "КРАСНАЯ КРАСКА".
[ Cкачайте файл, чтобы посмотреть картинку ]
В последней строчке, буква "А" берется не из словаря, т.к. она последняя.
Длина кода вычисляется следующим образом: длина подстроки не может быть больше размера буфера, а смещение не может быть больше размера словаря [ Cкачайте файл, чтобы посмотреть картинку ]. Следовательно, длина двоичного кода смещения будет округленным в большую сторону [ Cкачайте файл, чтобы посмотреть картинку ]размер словаря[ Cкачайте файл, чтобы посмотреть картинку ], а длина двоичного кода для длины подстроки будет округленным в большую сторону [ Cкачайте файл, чтобы посмотреть картинку ]размер буфера[ Cкачайте файл, чтобы посмотреть картинку ]. А символ кодируется 8 битами (например, ASCII+).
В последнем примере длина полученного кода равна [ Cкачайте файл, чтобы посмотреть картинку ]бит, против [ Cкачайте файл, чтобы посмотреть картинку ]бит исходной длины строки.
В 1982 г. Сторером (Storer) и Шиманским (Szimanski) на базе LZ77 был разработан алгоритм LZSS, который отличается от LZ77 производимыми кодами.
Код, выдаваемый LZSS, начинается с однобитного префикса, различающего собственно код от незакодированного символа. Код состоит из пары: смещение и длина, такими же как и для LZ77. В LZSS окно сдвигается ровно на длину найденной подстроки или на 1, если не найдено вхождение подстроки из буфера в словарь. Длина подстроки в LZSS всегда больше нуля, поэтому длина двоичного кода для длины подстроки - это округленный до большего целого двоичный логарифм от длины буфера.
Пример. Закодировать по алгоритму LZSS строку "КРАСНАЯ КРАСКА".
[ Cкачайте файл, чтобы посмотреть картинку ]
Здесь длина полученного кода равна [ Cкачайте файл, чтобы посмотреть картинку ]бит.
LZ77 и LZSS обладают следующими очевидными недостатками:
невозможность кодирования подстрок, отстоящих друг от друга на расстоянии, большем длины словаря;
длина подстроки, которую можно закодировать, ограничена размером буфера.
Если механически чрезмерно увеличивать размеры словаря и буфера, то это приведет к снижению эффективности кодирования, т.к. с ростом этих величин будут расти и длины кодов для смещения и длины, что сделает коды для коротких подстрок недопустимо большими. Кроме того, резко увеличится время работы алгоритма-кодера.
В 1978 г. авторами LZ77 был разработан алгоритм LZ78, лишенный названных недостатков.
LZ78 не использует "скользящее" окно, он хранит словарь из уже просмотренных фраз. При старте алгоритма этот словарь содержит только одну пустую строку (строку длины нуль). Алгоритм считывает символы сообщения до тех пор, пока накапливаемая подстрока входит целиком в одну из фраз словаря. Как только эта строка перестанет соответствовать хотя бы одной фразе словаря, алгоритм генерирует код, состоящий из индекса строки в словаре, которая до последнего введенного символа содержала входную строку, и символа, нарушившего совпадение. Затем в словарь добавляется введенная подстрока. Если словарь уже заполнен, то из него предварительно удаляют менее всех используемую в сравнениях фразу.
Ключевым для размера получаемых кодов является размер словаря во фразах, потому что каждый код при кодировании по методу LZ78 содержит номер фразы в словаре. Из последнего следует, что эти коды имеют постоянную длину, равную округленному в большую сторону двоичному логарифму размера словаря [ Cкачайте файл, чтобы посмотреть картинку ](это количество бит в байт-коде расширенного ASCII).
Пример. Закодировать по алгоритму LZ78 строку "КРАСНАЯ КРАСКА", используя словарь длиной 16 фраз.
[ Cкачайте файл, чтобы посмотреть картинку ]
Указатель на любую фразу такого словаря - это число от 0 до 15, для его кодирования достаточно четырех бит.
В последнем примере длина полученного кода равна [ Cкачайте файл, чтобы посмотреть картинку ]битам.
Алгоритмы LZ77, LZ78 и LZSS разработаны математиками и могут использоваться свободно.
В 1984 г. Уэлчем (Welch) был путем модификации LZ78 создан алгоритм LZW.
Пошаговое описание алгоритма-кодера.
Шаг 1. Инициализация словаря всеми возможными односимвольными фразами (обычно 256 символами расширенного ASCII). Инициализация входной фразы w первым символом сообщения.
Шаг 2. Считать очередной символ K из кодируемого сообщения.
Шаг 3. Если КОНЕЦ_СООБЩЕНИЯ
Выдать код для w
Конец
Если фраза wK уже есть в словаре
Присвоить входной фразе значение wK
Перейти к Шагу 2
Иначе
Выдать код w
Добавить wK в словарь
Присвоить входной фразе значение K
Перейти к Шагу 2.
Как и в случае с LZ78 для LZW ключевым для размера получаемых кодов является размер словаря во фразах: LZW-коды имеют постоянную длину, равную округленному в большую сторону двоичному логарифму размера словаря.
Пример. Закодировать по алгоритму LZW строку "КРАСНАЯ КРАСКА". Размер словаря - 500 фраз.
[ Cкачайте файл, чтобы посмотреть картинку ]
В этом примере длина полученного кода равна [ Cкачайте файл, чтобы посмотреть картинку ]битам.
При переполнении словаря, т.е. когда необходимо внести новую фразу в полностью заполненный словарь, из него удаляют либо наиболее редко используемую фразу, либо все фразы, отличающиеся от одиночного символа.
Алгоритм LZW является запатентованным и, таким образом, представляет собой интеллектуальную собственность. Его безлицензионное использование особенно на аппаратном уровне может повлечь за собой неприятности.
Любопытна история патентования LZW. Заявку на LZW подали почти одновременно две фирмы - сначала IBM и затем Unisys, но первой была рассмотрена заявка Unisys, которая и получила патент. Однако, еще до патентования LZW был использован в широко известной в мире Unix программе сжатия данных compress.
Упражнение 30 Закодировать сообщения "AABCDAACCCCDBB", "КИБЕРНЕТИКИ" и "СИНЯЯ СИНЕВА СИНИ", вычислить длины в битах полученных кодов, используя алгоритмы,
LZ77 (словарь - 12 байт, буфер - 4 байта),
LZ78 (словарь - 16 фраз),
LZSS (словарь - 12 байт, буфер - 4 байта),
LZW (словарь - ASCII+ и 16 фраз).
Упражнение 31 Может ли для первого символа сообщения код LZ78 быть короче кода LZW при одинаковых размерах словарей? Обосновать. Для LZW в размер словаря не включать позиции для ASCII+.
LZ-алгоритмы распаковки данных. Примеры
1. LZ77, длина словаря - 8 байт (символов). Коды сжатого сообщения -[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
2. LZSS, длина словаря - 8 байт (символов). Коды сжатого сообщения -[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
3. LZ78, длина словаря - 16 фраз. Коды сжатого сообщения - [ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
4. LZW, длина словаря - 500 фраз. Коды сжатого сообщения -[ Cкачайте файл, чтобы посмотреть картинку ]
При распаковке нужно придерживаться следующего правила. Словарь пополняется после считывания первого символа идущего за текущим кода, т.е. из фразы, соответствующей следующему после раскодированного коду, берется первый символ. Это правило позволяет избежать бесконечного цикла при раскодировании сообщений вида wKwK, где w - фраза, а K - символ. Конкретным примером такого сообщения является любая последовательность трех одинаковых символов, пары которых ранее не встречались.
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 32 Распаковать каждое приведенное сообщение и рассчитать длину кода каждого сжатого сообщения в битах. Сообщение, сжатое LZ77 (словарь - 12 байт, буфер - 4 байта), - [ Cкачайте файл, чтобы посмотреть картинку ]. Сообщение, сжатое LZSS (словарь - 12 байт, буфер - 4 байта), - [ Cкачайте файл, чтобы посмотреть картинку ]. Сообщеие, сжатое LZ78 (словарь - 16 фраз), -[ Cкачайте файл, чтобы посмотреть картинку ]. Сообщение, сжатое LZW (словарь - ASCII+ и 16 фраз), - [ Cкачайте файл, чтобы посмотреть картинку ].
Особенности программ-архиваторов
Если коды алгоритмов типа LZ передать для кодирования (адаптивному) алгоритму Хаффмена или арифметическому, то полученный двухшаговый (конвейерный, а не двухпроходный) алгоритм даст результаты сжатия подобные широко известным программам: GZIP, ARJ, PKZIP, ...
Наибольшую степень сжатия дают двухпроходные алгоритмы, которые исходные данные последовательно сжимают два раза, но они работают до двух раз медленнее однопроходных при незначительном увеличении степени сжатия.
Большинство программ-архиваторов сжимает каждый файл по отдельности, но некоторые сжимают файлы в общем потоке, что дает увеличение степени сжатия, но одновременно усложняет способы работы с полученным архивом, например, замена в таком архиве файла на его более новую версию может потребовать перекодирования всего архива. Примером программы, имеющей возможность сжимать файлы в общем потоке, является RAR. Архиваторы ОС Unix (gzip, bzip2, ...) сжимают файлы в общем потоке практически всегда.
В 1992 году фирма WEB Technologies объявила о выходе новой программы сжатия DataFiles/16, которая якобы может при неоднократном использовании сжать любое количество данных до 1024 байт. Информация об этом прошла из солидного издания, журнала Byte.
Конечно же никакой алгоритм сжатия не может уплотнить произвольные данные. Для доказательства этого проделаем следующий мысленный эксперимент. Предположим, что на жестком диске компьютера хранятся все возможные разные файлы длиной ровно 100 байт (таких файлов будет всего [ Cкачайте файл, чтобы посмотреть картинку ]). И пусть существует идеальная программа сжатия данных, которая сожмет каждый из них хотя бы на один байт. Но тогда, так как всего разных файлов длиной меньшей 100 байт существует не более чем [ Cкачайте файл, чтобы посмотреть картинку ], то неизбежно получится, что два разных файла упакуются в идентичные файлы. Следовательно, не может существовать программы сжатия данных, которая может сжать любые исходные данные.
Формат файла, содержащего данные, которые перед использованием требуется распаковать соответствующей программой\h архиватором, как правило, может быть идентифицирован расширением имени файла.
В следующей таблице приводятся некоторые типичные расширения, соответствующие им программы-архиваторы и методы сжатия данных.
[ Cкачайте файл, чтобы посмотреть картинку ]
Практически все форматы файлов для хранения графической информации используют сжатие данных. Формат графического файла также, как правила, идентифицируется расширением имени файла.
В следующей таблице приводятся некоторые типичные расширения графических файлов и соответствующие им методы сжатия данных.
[ Cкачайте файл, чтобы посмотреть картинку ]
Сжатие RLE (Run Length Encoding - кодирование переменной длины) - это простейший метод сжатия, в общем случае очень неэффективный, но дающий неплохие результаты на типичной графической информации. Оно основано в основном на выделении специального кода-маркера, указывающего сколько раз повторить следующий байт.
Сжатие и распаковка в реальном времени используется в программах- драйверах для "уплотнения" носителей информации, позволяющих увеличить емкость носителя приблизительно в 2 раза. Наиболее известной программой такого рода является DriverSpace для MS-DOS и Microsoft Windows.
7. Лекция: Сжатие информации с потерями
Иногда, для обеспечения продуктивной работы, можно сжимать данные с потерями без ущерба для конфиденциальной и важной информации. Такая технология используется для сжатия звука, видео и графики. В лекции описываются стандарты сжатия. Вводятся такие понятия, как информационный канал, устройства канала связи, задержка сигнала во времени. Доказывается основная теорема и кодировании при наличии помех. Описывается помехозащитное кодирование. Несколько заданий для самопроверки только улучшат восприятие материала
Все ранее рассмотренные алгоритмы сжатия информации обеспечивали возможность полного восстановления исходных данных. Но иногда для повышения степени сжатия можно отбрасывать часть исходной информации, т.е. производить сжатие с потерями. Естественно, что такое сжатие нельзя проводить, например, на финансовой базе данных банка. Но в тех случаях, когда сжимается информация, используемая лишь для качественной оценки (это, как правило, аналоговая информация), сжатие с потерями является очень подходящим.
Сжатие с потерями используется в основном для трех видов данных: полноцветная графика ([ Cкачайте файл, чтобы посмотреть картинку ] млн. цветов), звук и видеоинформация.
Сжатие с потерями обычно проходит в два этапа. На первом из них исходная информация приводится (с потерями) к виду, в котором ее можно эффективно сжимать алгоритмами 2-го этапа сжатия без потерь.
Основная идея сжатия графической информации с потерями заключается в следующем. Каждая точка в картинке характеризуется тремя равноважными атрибутами: яркостью, цветом и насыщенностью. Но глаз человека воспринимает эти атрибуты не как равные. Глаз воспринимает полностью только информацию о яркости и в гораздо меньшей степени о цвете и насыщенности, что позволяет отбрасывать часть информации о двух последних атрибутах без потери качества изображения. Это свойство зрения используется, в частности, в цветном телевизоре, в котором на базовое черно-белое изображение наносят цветовую раскраску.
Для сжатия графической информации с потерями в конце 1980-х установлен один стандарт - формат JPEG (Joint Photographic Experts Group - название объединения его разработчиков). В этом формате можно регулировать степень сжатия, задавая степень потери качества.
Сжатие видеоинформации основано на том, что при переходе от одного кадра фильма к другому на экране обычно почти ничего не меняется. Таким образом, сжатая видеоинформация представляет собой запись некоторых базовых кадров и последовательности изменений в них. При этом часть информации может отбрасываться. Сжатую подобным образом информацию можно далее сжимать и другими методами. Хотя существует не один стандарт для сжатия видеоданных, наиболее распространенными являются стандарты MPEG (Motion Picture Experts Group), первый из которых был опубликован в 1988 году. MPEG - практически единственный стандарт для записи видео и звуковой информации на CD-ROM, DVD-ROM и в цифровом спутниковом телевидении. Видеоинформацию можно сжать необыкновенно плотно, до 100 и более раз, что позволяет, например, на одну видеокассету, записать более ста различных художественных фильмов. Но из-за очень сложных проблем, связанных с правами на интеллектуальную собственность, реально возможности сжатия информации таким образом используются сравнительно редко.
Для сжатии звуковой информации с потерями существует несколько стандартов. Наиболее широко используемый из них - это MPEG без видеоданных. Стандарт LPC (Linear Predictive Coding) используется для сжатия речи. Алгоритм LPC пытается промоделировать речевой тракт человека и выдает на выходе буквально текущее состояние участвующих в формировании звуков органов.
Информационный канал
Канал информационный - это совокупность устройств, объединенных линиями связи, предназначенных для передачи информации от источника информации (начального устройства канала) до ее приемника (конечного устройства канала).
Линии связи обеспечивают прохождение информационных сигналов между устройствами канала. Информация обычно передается при помощи электрического тока (по проводам), света (по оптоволокну), электромагнитных волн радиодиапазона (в пространстве) и, редко, звука (в плотной среде: атмосфере, воде и т.п.) и прочих.
Устройства канала связи - это, как правило, репитеры, просто передающие усиленным принятый сигнал (пример, радиорелейные линии). К устройствам канала иногда относят и кодеры/декодеры, но в только тех случаях, когда кодирование/декодирование происходит с высокой скоростью, не требующей ее специального учета, как замедляющего фактора; обычно же кодеры/декодеры относят к источникам или приемникам информации.
Технические характеристики канала определяются принципом действия входящих в него устройств, видом сигнала, свойствами и составом физической среды, в которой распространяются сигналы, свойствами применяемого кода.
Эффективность канала характеризуется скоростью и достоверностью передачи информации, надежностью работы устройств и задержкой сигнала во времени.
Задержка сигнала во времени - это интервал времени от отправки сигнала передатчиком до его приема приемником.
Математически канал задается множеством допустимых сообщений на входе, множеством допустимых сообщений на выходе и набором условных вероятностей [ Cкачайте файл, чтобы посмотреть картинку ]получения сигнала [ Cкачайте файл, чтобы посмотреть картинку ]на выходе при входном сигнале [ Cкачайте файл, чтобы посмотреть картинку ]. Условные вероятности описывают статистические свойства "шумов" (или помех), искажающих сигнал в процессе передачи. В случае, когда [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ], канал называется каналом без "шумов". В соответствии со структурой входных и выходных сигналов выделяют дискретные и непрерывные каналы. В дискретных каналах сигналы на входе и выходе представляют собой последовательность символов одного или двух (по одному для входа и выхода) алфавитов. В непрерывных каналах входной и выходной сигналы представляют собой функции от непрерывного параметра-времени. Бывают также смешанные или гибридные каналы, но тогда обычно рассматривают их дискретные и непрерывные компоненты раздельно. Далее рассматриваются только дискретные каналы.
Способность канала передавать информацию характеризуется числом - пропускной способностью или емкостью канала (обозначение - [ Cкачайте файл, чтобы посмотреть картинку ]).
Для случая канала без шума формула расчета емкости канала имеет вид
[ Cкачайте файл, чтобы посмотреть картинку ]
где [ Cкачайте файл, чтобы посмотреть картинку ]- число всех возможных сигналов за время [ Cкачайте файл, чтобы посмотреть картинку ].
Пример. Пусть алфавит канала без "шумов" состоит из двух символов - 0 и 1, длительность [ Cкачайте файл, чтобы посмотреть картинку ]секунд каждый. За время [ Cкачайте файл, чтобы посмотреть картинку ]успеет пройти [ Cкачайте файл, чтобы посмотреть картинку ]сигналов, всего возможны [ Cкачайте файл, чтобы посмотреть картинку ]различных сообщений длиной [ Cкачайте файл, чтобы посмотреть картинку ]. В этом случае [ Cкачайте файл, чтобы посмотреть картинку ]бод.
На [ Cкачайте файл, чтобы посмотреть ссылку ] приведена схема, на которой изображен процесс прохождения информации по каналу с описанными в примере характеристиками.
Здесь для кодирования используется уровень сигнала: низкий для 0 и высокий для 1. Недостатки этого способа проявляются в случаях, когда нужно передавать много сплошных нулей или единиц. Малейшее рассогласование синхронизации между приемником и передатчиком приводит тогда к неисправимым ошибкам. Кроме того, многие носители информации, в частности, магнитные, не могут поддерживать длительный постоянный уровень сигнала.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 7.1. 
Для передачи информации используется обычно другой способ, когда для представления 0 и 1 используются две разные частоты, отличающиеся друг от друга ровно в два раза (См. [ Cкачайте файл, чтобы посмотреть ссылку ]) - это так называемая частотная модуляция (ЧМ или FM).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 7.2. 
Таким образом, при таком кодировании, если сигнал 1 имеет длительность [ Cкачайте файл, чтобы посмотреть картинку ], то 0 - [ Cкачайте файл, чтобы посмотреть картинку ].
Рассчитаем емкость этого канала. Нужно рассчитать [ Cкачайте файл, чтобы посмотреть картинку ]. Пусть [ Cкачайте файл, чтобы посмотреть картинку ], тогда получается, что нужно рассчитать сколькими способами можно разбить отрезок длины [ Cкачайте файл, чтобы посмотреть картинку ]отрезками длины 2 и 1. Получаем, что [ Cкачайте файл, чтобы посмотреть картинку ], где первое слагаемое - это количество способов, которыми можно разбить отрезок длины [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]отрезками длины 1, второе слагаемое - это количество способов, которыми можно разбить отрезок длины [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]отрезками длины 1 и одним отрезком длины [ Cкачайте файл, чтобы посмотреть картинку ], третье слагаемое - это количество способов, которыми можно разбить отрезок длины [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]отрезками длины 1 и двумя отрезками длины 2 и т.д. Таким образом, [ Cкачайте файл, чтобы посмотреть картинку ]. Вследствие того, что [ Cкачайте файл, чтобы посмотреть картинку ]для любых [ Cкачайте файл, чтобы посмотреть картинку ], получается, что
[ Cкачайте файл, чтобы посмотреть картинку ]
т.е. [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ]. Если положить, что [ Cкачайте файл, чтобы посмотреть картинку ], то [ Cкачайте файл, чтобы посмотреть картинку ]- это последовательность [ Cкачайте файл, чтобы посмотреть картинку ], т.е. числа Фибоначчи. C XIX века для вычисления [ Cкачайте файл, чтобы посмотреть картинку ]-го члена последовательности Фибоначчи известна формула
[ Cкачайте файл, чтобы посмотреть картинку ]
Таким образом, [ Cкачайте файл, чтобы посмотреть картинку ]бод.
При использовании частотной модуляции на практике нули, как правило, кодируются в два раза плотнее. Это достигается тем, что учитываются не уровни сигнала, а смена уровня (полярности). Если частота [ Cкачайте файл, чтобы посмотреть картинку ]соответствует 1, то с частотой [ Cкачайте файл, чтобы посмотреть картинку ]производится проверка уровня сигнала. Если он меняется, то это сигнал 1, если нет, то - 0. На практике частота [ Cкачайте файл, чтобы посмотреть картинку ]- это частота синхронизации, т.е. частота импульса, который независимо от данных меняет полярность сигнала. 0 не генерирует импульса смены полярности, а 1 генерирует (См. [ Cкачайте файл, чтобы посмотреть ссылку ]).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 7.3. 
Для записи информации на первые магнитные диски и ленты использовался метод FM. На гибкие диски 5.25" и 3.5" информация записывается методом MFM (Modified FM) - модификацией метода FM, позволяющей в 2 раза повысить плотность записи. Это достигается тем, что частота синхронизации увеличивается вдвое. MFM можно использовать с теми же физическими каналами, что и FM, потому что импульсы синхронизации не передаются перед 1 и первым 0 в серии нулей (См. [ Cкачайте файл, чтобы посмотреть ссылку ]).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 7.4. 
Метод записи с групповым кодированием, RLL - Run Limited Length, не использует импульсы синхронизации, применяется, в частности, в жестких дисках "винчестер'' и существует в нескольких разновидностях. Одна из них основана на замене тетрад байта на 5-битные группы. Эти группы подбираются таким образом, чтобы при передаче данных нули не встречались подряд более двух раз, что делает код самосинхронизирующимся. Например, тетрада 0000 заменяется группой бит 11001, тетрада 1000 - 11010, тетрада 0001 - 11011, тетрада 1111 - 01111 (См. [ Cкачайте файл, чтобы посмотреть ссылку ]). Существуют разновидности RLL, в которых заменяются последовательности бит различной длины. Кодирование MFM или FM можно представить как частный случай RLL.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 7.5. 
При необходимости передачи записанных с помощью некоторого кода сообщений по данному каналу приходиться преобразовывать эти сообщения в допустимые сигналы канала, т.е. производить надлежащее кодирование, а при приеме данных - декодирование. Кодирование целесообразно производить так, чтобы среднее время, затрачиваемое на передачу, было как можно меньше. Получается, что исходному входному алфавиту нужно однозначно сопоставить новый алфавит, обеспечивающий большую скорость передачи. В этом случае возникает явление задержки или запаздывания.
Поясним последнее на примере. Пусть источник сообщений посылает через промежутки времени длиной [ Cкачайте файл, чтобы посмотреть картинку ](т.е. со скоростью [ Cкачайте файл, чтобы посмотреть картинку ]) независимые символы [ Cкачайте файл, чтобы посмотреть картинку ]с вероятностями 1/2, 1/4, 1/8, 1/8, т.е., можно сказать, что источник характеризуется некоторой д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]. Пусть канал - без шумов. Символ либо передается по каналу, если тот свободен, либо ожидает (помещается в память) до тех пор, пока канал не освободится. Выберем в качестве кода для передачи символов источника по каналу следующий: 13 INCLUDEPICTURE
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·15-11. Пусть время, необходимое для передачи как 0, так и 1, равно [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда если [ Cкачайте файл, чтобы посмотреть картинку ], то за время между появлениями двух последовательных значений [ Cкачайте файл, чтобы посмотреть картинку ]кодовое значение успеет передаться и канал освобождается. Если же [ Cкачайте файл, чтобы посмотреть картинку ], то [ Cкачайте файл, чтобы посмотреть картинку ]-й символ появится в момент [ Cкачайте файл, чтобы посмотреть картинку ], а его кодовое обозначение будет передано по каналу в момент [ Cкачайте файл, чтобы посмотреть картинку ]. Следовательно, промежуток времени между появлением [ Cкачайте файл, чтобы посмотреть картинку ]-го символа и моментом его получения равен [ Cкачайте файл, чтобы посмотреть картинку ], т.е. этот промежуток стремится к бесконечности при [ Cкачайте файл, чтобы посмотреть картинку ]и передача будет вестись с неограниченным запаздыванием. Выбором более удачного кода (например, Хаффмена) можно увеличить скорость передачи.
Следующий, основной факт теории передачи информации или основная теорема о кодировании при наличии помех позволяет при знании емкости канала и энтропии передатчика вычислить максимальную скорость передачи данных в канале.
Теорема Шеннона. Пусть источник характеризуется д.с.в. [ Cкачайте файл, чтобы посмотреть картинку ]. Рассматривается канал с шумом, т.е. для каждого передаваемого сообщения задана вероятность [ Cкачайте файл, чтобы посмотреть картинку ]его искажения в процессе передачи (вероятность ошибки). Тогда существует такая скорость передачи [ Cкачайте файл, чтобы посмотреть картинку ], зависящая только от [ Cкачайте файл, чтобы посмотреть картинку ], что [ Cкачайте файл, чтобы посмотреть картинку ]сколь угодно близкая к [ Cкачайте файл, чтобы посмотреть картинку ]такая, что существует способ передавать значения [ Cкачайте файл, чтобы посмотреть картинку ]со скоростью [ Cкачайте файл, чтобы посмотреть картинку ]и с вероятностью ошибки меньшей [ Cкачайте файл, чтобы посмотреть картинку ], причем
[ Cкачайте файл, чтобы посмотреть картинку ]
Упомянутый способ образует помехоустойчивый код.
Кроме того, Фэно доказана[ Cкачайте файл, чтобы посмотреть ссылку ] следующая обратная теорема о кодировании при наличии помех. Для [ Cкачайте файл, чтобы посмотреть картинку ]можно найти такое положительное число [ Cкачайте файл, чтобы посмотреть картинку ], что в случае передачи информации по линии связи со скоростью [ Cкачайте файл, чтобы посмотреть картинку ]вероятность ошибки [ Cкачайте файл, чтобы посмотреть картинку ]передачи каждого символа сообщения при любом методе кодирования и декодирования будет не меньше [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ] очевидно растет вслед за ростом [ Cкачайте файл, чтобы посмотреть картинку ]).
Упражнение 33 По каналу связи без шума могут передаваться четыре сигнала длительностью 1 мс каждый. Вычислить емкость такого канала.
Упражнение 34 Три передатчика задаются случайными величинами со следующими законами распределениями вероятностей:
13 INCLUDEPICTURE
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·EFORMATINET 1415, [ Cкачайте файл, чтобы посмотреть картинку ];
[ Cкачайте файл, чтобы посмотреть картинку ]
Емкость канала связи с шумом равна 4000 бод. Вычислить максимальную скорость передачи данных по этому каналу каждым из передатчиков, обеспечивающую сколь угодно высокую надежность передачи.
Помехозащитное кодирование
Простейший код для борьбы с шумом - это контроль четности, он, в частности, широко используется в модемах. Кодирование заключается в добавлении к каждому байту девятого бита таким образом, чтобы дополнить количество единиц в байте до заранее выбранного для кода четного (even) или нечетного (odd) значения. Используя этот код, можно лишь обнаруживать большинство ошибок.
Простейший код, исправляющий ошибки, - это тройное повторение каждого бита. Если с ошибкой произойдет передача одного бита из трех, то ошибка будет исправлена, но если случится двойная или тройная ошибка, то будут получены неправильные данные. Часто коды для исправления ошибок используют совместно с кодами для обнаружения ошибок. При тройном повторении для повышения надежности три бита располагают не подряд, а на фиксированном расстоянии друг от друга. Использование тройного повторения естественно значительно снижает скорость передачи данных.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 7.6. 
Двоичный симметричный канал изображен на [ Cкачайте файл, чтобы посмотреть ссылку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- это вероятность безошибочной передачи бита, а [ Cкачайте файл, чтобы посмотреть картинку ]- вероятность передачи бита с ошибкой. Предполагается, что в таком канале ошибки происходят независимо. Далее рассматриваются только такие каналы.
Двоичный симметричный канал реализует схему Бернулли, поэтому вероятность передачи [ Cкачайте файл, чтобы посмотреть картинку ]бит по двоичному симметричному каналу с [ Cкачайте файл, чтобы посмотреть картинку ]ошибками равна
[ Cкачайте файл, чтобы посмотреть картинку ]
Пример. Вероятность передачи одного бита информации с ошибкой равна [ Cкачайте файл, чтобы посмотреть картинку ]и нас интересует вероятность безошибочной передачи 1000 бит (125 байт). Искомую вероятность можно подсчитать по формуле [ Cкачайте файл, чтобы посмотреть картинку ], т.е. она ничтожно мала.
Добиться минимальности вероятности ошибки при передаче данных можно используя специальные коды. Обычно используют помехозащитные коды. Идея систематических кодов состоит в добавлении к символам исходных кодов, предназначенных для передачи в канале, нескольких контрольных символов по определенной схеме кодирования. Принятая такая удлиненная последовательность кодов декодируется по схеме декодирования в первоначально переданную. Приемник способен распознавать и/или исправлять ошибки, вызванные шумом, анализируя дополнительную информацию, содержащуюся в удлиненных кодах.
Двоичным (m,n)-кодом называется пара, состоящая из схемы кодирования [ Cкачайте файл, чтобы посмотреть картинку ]и схемы декодирования [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- множество всех двоичных последовательностей длины [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ](случай [ Cкачайте файл, чтобы посмотреть картинку ]рассматривается в криптографии).
Функции [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]выбираются так, чтобы функция [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- функция ошибок, с вероятностью, близкой к единице, была тождественной. Функции [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]считаются безошибочными, т.е. функция [ Cкачайте файл, чтобы посмотреть картинку ]- тождественная (См. [ Cкачайте файл, чтобы посмотреть ссылку ]).
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 7.7. 
Упражнение 35 Пусть двоичный симметричный канал используется для передачи строк из двух бит. Построить таблицу вероятностей приема.
Упражнение 36 По двоичному симметричному каналу передаются строки длины 14. Какова вероятность того, что ровно пять символов будут приняты неправильно? Какова вероятность того, что менее пяти символов будут приняты неправильно? Сколько имеется строк, отличающихся от данной не больше, чем в четырех позициях?
8. Лекция: Математическая модель системы связи
Рассматриваются такие классы кодов, как коды с исправлением и обнаружением ошибок. Хорошее математическое обоснование материала лекции. Описываются последовательные коды и их применение на практике. Матричное кодирование позволяет использовать меньший объем памяти при кодировании информации. Практические задания помогут лучше разобраться в сложном материале лекции
Коды делятся на два больших класса. Коды с исправлением ошибок имеют целью восстановить с вероятностью, близкой к единице, посланное сообщение. Коды с обнаружением ошибок имеют целью выявить с вероятностью, близкой к единице, наличие ошибок.
Простой код с обнаружением ошибок основан на схеме проверки четности, применимой к сообщениям [ Cкачайте файл, чтобы посмотреть картинку ]любой фиксированной длины [ Cкачайте файл, чтобы посмотреть картинку ]. Схема кодирования определяется следующими формулами: [ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Таким образом, [ Cкачайте файл, чтобы посмотреть картинку ]должна быть четной.
Соответствующая схема декодирования тривиальна:
[ Cкачайте файл, чтобы посмотреть картинку ]
Разумеется, что четность [ Cкачайте файл, чтобы посмотреть картинку ]не гарантирует безошибочной передачи.
Пример. Проверка четности при [ Cкачайте файл, чтобы посмотреть картинку ]реализуется следующим кодом (функцией [ Cкачайте файл, чтобы посмотреть картинку ](три, две или одна ошибка соответственно). Из них незамеченными окажутся только ошибки точно в двух битах, не изменяющие четности. Вероятность таких ошибок [ Cкачайте файл, чтобы посмотреть картинку ]. Вероятность ошибочной передачи сообщения из двух бит равна [ Cкачайте файл, чтобы посмотреть картинку ]. При малых [ Cкачайте файл, чтобы посмотреть картинку ]верно, что [ Cкачайте файл, чтобы посмотреть картинку ].
Рассмотрим [ Cкачайте файл, чтобы посмотреть картинку ]-код с тройным повторением. Коды с повторениями очень неэффективны, но полезны в качестве теоретического примера кодов, исправляющих ошибки. Любое сообщение разбивается на блоки длиной [ Cкачайте файл, чтобы посмотреть картинку ]каждое и каждый блок передается трижды - это определяет функцию [ Cкачайте файл, чтобы посмотреть картинку ]. Функция [ Cкачайте файл, чтобы посмотреть картинку ]определяется следующим образом. Принятая строка разбивается на блоки длиной [ Cкачайте файл, чтобы посмотреть картинку ]. Бит с номером [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]в декодированном блоке получается из анализа битов с номерами [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]в полученном блоке: берется тот бит из трех, который встречается не менее двух раз. Вероятность того, что бит в данной позиции будет принят трижды правильно равна [ Cкачайте файл, чтобы посмотреть картинку ]. Вероятность одной ошибки в тройке равна [ Cкачайте файл, чтобы посмотреть картинку ]. Поэтому вероятность правильного приема одного бита равна [ Cкачайте файл, чтобы посмотреть картинку ]. Аналогичным образом получается, что вероятность приема ошибочного бита равна [ Cкачайте файл, чтобы посмотреть картинку ].
Пример. Предположим [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда вероятность ошибки при передачи одного бита - 0.028, те. этот код снижает вероятность ошибки с 10% до 2.8%. Подобным образом организованная передача с пятикратным повторением даст вероятность ошибки на бит [ Cкачайте файл, чтобы посмотреть картинку ]т.е. менее 1%. В результате вероятность правильной передачи строки длиной 10 возрастет с [ Cкачайте файл, чтобы посмотреть картинку ]до [ Cкачайте файл, чтобы посмотреть картинку ]при тройных повторениях и до [ Cкачайте файл, чтобы посмотреть картинку ]при пятикратных повторениях.
Тройное повторение обеспечивает исправление одной ошибки в каждой позиции за счет трехкратного увеличения времени передачи.
Рассмотрим [ Cкачайте файл, чтобы посмотреть картинку ]-код, используемый при записи данных на магнитофонную ленту компьютерами Apple II. К каждому байту исходных данных прибавляется бит четности и, кроме того, после каждых таких расширенных битом четности 256 байт добавляется специальный байт, также расширенный битом четности. Этот специальный байт, который называют контрольной суммой (check sum), есть результат применения поразрядной логической операции "исключающее ИЛИ" (XOR) к 256 предшествующим расширенным байтам. Этот код способен как обнаруживать ошибки нечетной кратности в каждом из отдельных байт, так и исправлять до 8 ошибок в блоке длиной 256 байт. Исправление ошибок основано на том, что если в одном из бит одного из байт 256 байтового блока произойдет сбой, обнаруживаемый проверкой четности, то этот же сбой проявится и в том, что результат операции "исключающее ИЛИ" над всеми соответствующими битами блока не будет соответствовать соответствующему биту контрольной суммы. Сбойный бит однозначно определяется пересечением сбойных колонки байта и строки бита контрольной суммы. На [ Cкачайте файл, чтобы посмотреть ссылку ] изображена схема участка ленты, содержащего ровно 9 ошибок в позициях, обозначенных [ Cкачайте файл, чтобы посмотреть картинку ]может быть исправлена. Ошибки в позициях [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]можно обнаружить, но не исправить. Ошибки в позициях 13 IN
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·–
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·невозможно даже обнаружить.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рис. 8.1. 
Приведенные ранее примеры простейших кодов принадлежат к классу блочных. По определению, блочный код заменяет каждый блок из [ Cкачайте файл, чтобы посмотреть картинку ]символов более длинным блоком из [ Cкачайте файл, чтобы посмотреть картинку ]символов. Следовательно, [ Cкачайте файл, чтобы посмотреть картинку ]-коды являются блочными. Существуют также древовидные или последовательные коды, в которых значение очередного контрольного символа зависит от всего предшествующего фрагмента сообщения. Работа с древовидным шумозащитным кодом имеет сходство с работой с арифметическим кодом для сжатия информации.
Расстоянием (Хэмминга) между двоичными словами длины [ Cкачайте файл, чтобы посмотреть картинку ]называется количество позиций, в которых эти слова различаются. Это одно из ключевых понятий теории кодирования. Если обозначить двоичные слова как [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], то расстояние между ними обозначается [ Cкачайте файл, чтобы посмотреть картинку ].
Весом двоичного слова [ Cкачайте файл, чтобы посмотреть картинку ]называется количество единиц в нем. Обозначение [ Cкачайте файл, чтобы посмотреть картинку ]. Можно сказать, что [ Cкачайте файл, чтобы посмотреть картинку ].
Пример. Пусть [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], тогда [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
Далее операция [ Cкачайте файл, чтобы посмотреть картинку ]при применении к двоичным словам будет означать поразрядное сложение без переноса, т.е. сложение по модулю 2 или "исключающее ИЛИ" (XOR).
Расстояние между двоичными словами [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]равно весу их поразрядной суммы, т.е. [ Cкачайте файл, чтобы посмотреть картинку ].
Если два слова различаются в каком-либо разряде, то это добавит единицу к весу их поразрядной суммы.
Следовательно, если [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]- слова длины [ Cкачайте файл, чтобы посмотреть картинку ], то вероятность того, что слово [ Cкачайте файл, чтобы посмотреть картинку ]будет принято как [ Cкачайте файл, чтобы посмотреть картинку ], равна [ Cкачайте файл, чтобы посмотреть картинку ].
Наример, вероятность того, что слово 1011 будет принято как 0011, равна [ Cкачайте файл, чтобы посмотреть картинку ].
Для возможности обнаружения ошибки в одной позиции минимальное расстояние между словами кода должно быть большим 1.
Иначе ошибка в одной позиции сможет превратить одно кодовое слово в другое, что не даст ее обнаружить.
Для того, чтобы код давал возможность обнаруживать все ошибки кратности, не большей [ Cкачайте файл, чтобы посмотреть картинку ], необходимо и достаточно, чтобы наименьшее расстояние между его словами было [ Cкачайте файл, чтобы посмотреть картинку ].
Достаточность доказывается конструктивно: если условие утверждения выполнено для [ Cкачайте файл, чтобы посмотреть картинку ], то в качестве декодирующей функции [ Cкачайте файл, чтобы посмотреть картинку ]следует взять функцию, сообщающую об ошибке, если декодируемое слово отличается от любого из слов из образа [ Cкачайте файл, чтобы посмотреть картинку ]. Необходимость доказывается от противного: если минимальное расстояние [ Cкачайте файл, чтобы посмотреть картинку ], то ошибка в [ Cкачайте файл, чтобы посмотреть картинку ]позициях сможет превратить одно кодовое слово в другое.
Для такого кода вероятность того, что ошибки в сообщении останутся необнаруженными, равна
[ Cкачайте файл, чтобы посмотреть картинку ]
13 INCLUDEPICTU
·RE "http://www.intuit.ru/img/tex/1073ef21a26c4c38f56611c5c87f6cf2.png" \* MERGEFORMATINET 1415при малых [ Cкачайте файл, чтобы посмотреть картинку ]и не слишком маленьких [ Cкачайте файл, чтобы посмотреть картинку ].
Для того, чтобы код давал возможность исправлять все ошибки кратности, не большей [ Cкачайте файл, чтобы посмотреть картинку ], необходимо и достаточно, чтобы наименьшее расстояние между его словами было [ Cкачайте файл, чтобы посмотреть картинку ].
Достаточность доказывается конструктивно: если условие утверждения выполнено для [ Cкачайте файл, чтобы посмотреть картинку ], то в качестве декодирующей функции [ Cкачайте файл, чтобы посмотреть картинку ]следует взять функцию, возвращающую ближайшее к декодируемому слово из образа [ Cкачайте файл, чтобы посмотреть картинку ]. Необходимость доказывается от противного. Пусть расстояние между выбранными словами в коде равно [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда если при передаче каждого из этих слов случится [ Cкачайте файл, чтобы посмотреть картинку ]ошибок, которые изменят биты, в которых различаются эти слова, то приемник получит два идентичных сообщения, что свидетельствует о том, что в данной ситуации исправление [ Cкачайте файл, чтобы посмотреть картинку ]ошибок невозможно. Следовательно, минимальное расстояние между словами кода должно быть большим [ Cкачайте файл, чтобы посмотреть картинку ].
Пример. Рассмотрим [ Cкачайте файл, чтобы посмотреть картинку ]-код, состоящий из [ Cкачайте файл, чтобы посмотреть картинку ], задающей отображение [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], и [ Cкачайте файл, чтобы посмотреть картинку ], задающей отображение [ Cкачайте файл, чтобы посмотреть картинку ]. Этот код (с тройным повторением) исправляет ошибки в одной позиции, т.к. минимальное расстояние между словами кода равно 3.
Если код исправляет все ошибки кратности [ Cкачайте файл, чтобы посмотреть картинку ]и меньшей, то вероятность ошибочного приема слова длины [ Cкачайте файл, чтобы посмотреть картинку ]очевидно не превосходит [ Cкачайте файл, чтобы посмотреть картинку ]. Вероятность правильного приема в этом случае не меньше, чем
[ Cкачайте файл, чтобы посмотреть картинку ]
Передачу данных часто удобно рассматривать следующим образом. Исходное сообщение [ Cкачайте файл, чтобы посмотреть картинку ]кодируется функцией [ Cкачайте файл, чтобы посмотреть картинку ]в кодовое слово [ Cкачайте файл, чтобы посмотреть картинку ]. Канал связи при передаче добавляет к нему функцией [ Cкачайте файл, чтобы посмотреть картинку ]строку ошибок [ Cкачайте файл, чтобы посмотреть картинку ]так, что приемник получает сообщение [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]. Система, исправляющая ошибки, переводит [ Cкачайте файл, чтобы посмотреть картинку ]в некоторое (обычно ближайшее) кодовое слово. Система, только обнаруживающая ошибки, лишь проверяет, является ли принятое слово кодовым, и сигнализирует о наличии ошибки, если это не так.
Пример. Пусть передаваемое слово [ Cкачайте файл, чтобы посмотреть картинку ]кодируется словом [ Cкачайте файл, чтобы посмотреть картинку ], а строка ошибок - [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда будет принято слово [ Cкачайте файл, чтобы посмотреть картинку ]. Система, исправляющая ошибки, переведет его в 0110 и затем восстановит переданное слово 01.
Если система только обнаруживает ошибки и расстояние между любыми кодовыми словами [ Cкачайте файл, чтобы посмотреть картинку ], то любая строка ошибок [ Cкачайте файл, чтобы посмотреть картинку ]с единственной единицей приведет к слову [ Cкачайте файл, чтобы посмотреть картинку ], которое не является кодовым.
Пример. Рассмотрим [ Cкачайте файл, чтобы посмотреть картинку ]-код с проверкой четности. Множество кодовых слов - [ Cкачайте файл, чтобы посмотреть картинку ]. Ни одна из строк ошибок 001, 010, 100, 111 не переводит одно кодовое слово в другое. Поэтому однократная и тройная ошибки могут быть обнаружены.
Пример. Следующий [ Cкачайте файл, чтобы посмотреть картинку ]-код обнаруживает две ошибки:
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Этот же код способен исправлять однократную ошибку, потому что любые два кодовых слова отличаются по меньшей мере в трех позициях. Из того, что [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ], следует, что однократная ошибка приведет к приему слова, которое находится на расстоянии 1 от кодового слова, которое было передано. Поэтому схема декодирования, состоящая в том, что принятое слово переводится в ближайшее к нему кодовое, будет исправлять однократную ошибку. В двоичном симметричном канале вероятность правильной передачи одного блока будет не меньше чем [ Cкачайте файл, чтобы посмотреть картинку ].
Установлено [ Cкачайте файл, чтобы посмотреть ссылку ], что в [ Cкачайте файл, чтобы посмотреть картинку ]-коде, минимальное расстояние между кодовыми словами которого [ Cкачайте файл, чтобы посмотреть картинку ], числа [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ](число дополнительных разрядов в кодовых словах) и [ Cкачайте файл, чтобы посмотреть картинку ]должны соответствовать неравенству
[ Cкачайте файл, чтобы посмотреть картинку ]
называемому неравенством или нижней границей Хэмминга. Кроме того, если числа [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]соответствуют неравенству
[ Cкачайте файл, чтобы посмотреть картинку ]
называемому неравенством или верхней границей Варшамова - Гильберта, то существует [ Cкачайте файл, чтобы посмотреть картинку ]-код, исправляющий все ошибки веса [ Cкачайте файл, чтобы посмотреть картинку ]и менее[ Cкачайте файл, чтобы посмотреть ссылку ].
Нижняя граница задает необходимое условие для помехозащитного кода с заданными характеристиками, т.е. любой такой код должен ему соответствовать, но не всегда можно построить код по подобранным, удовлетворяющим условию характеристикам. Верхняя граница задает достаточное условие для существования помехозащитного кода с заданными характеристиками, т.е. по любым подобранным, удовлетворяющим условию характеристикам можно построить им соответствующий код.
Упражнение 37 Имеется [ Cкачайте файл, чтобы посмотреть картинку ]-код с проверкой четности. Вычислить вероятность того, что в случае ошибки этот код ее не обнаружит, если вероятность ошибки при передаче каждого бита равна 1%. Вычислить также вероятность ошибочной передачи без использования кода. Сделать аналогичные расчеты для случая, когда вероятность ошибки в десять раз меньше.
Упражнение 38 Вычислить минимальную и максимальную оценки количества дополнительных разрядов [ Cкачайте файл, чтобы посмотреть картинку ]для кодовых слов длины [ Cкачайте файл, чтобы посмотреть картинку ], если требуется, чтобы минимальное расстояние между ними было [ Cкачайте файл, чтобы посмотреть картинку ]. Рассмотреть случаи [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
Матричное кодирование
Ранее каждая схема кодирования описывалась таблицами, задающими кодовое слово длины [ Cкачайте файл, чтобы посмотреть картинку ]для каждого исходного слова длины [ Cкачайте файл, чтобы посмотреть картинку ]. Для блоков большой длины этот способ требует большого объема памяти и поэтому непрактичен. Например, для [ Cкачайте файл, чтобы посмотреть картинку ]-кода потребуется [ Cкачайте файл, чтобы посмотреть картинку ]бит.
Гораздо меньшего объема памяти требует матричное кодирование. Пусть [ Cкачайте файл, чтобы посмотреть картинку ]матрица размерности [ Cкачайте файл, чтобы посмотреть картинку ], состоящая из элементов [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- это номер строки, а [ Cкачайте файл, чтобы посмотреть картинку ]- номер столбца. Каждый из элементов матрицы [ Cкачайте файл, чтобы посмотреть картинку ]может быть либо 0, либо 1. Кодирование реализуется операцией [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ], где кодовые слова рассматриваются как векторы, т.е как матрицы-строки размера [ Cкачайте файл, чтобы посмотреть картинку ].
Пример. Рассмотрим следующую [ Cкачайте файл, чтобы посмотреть картинку ]-матрицу:
[ Cкачайте файл, чтобы посмотреть картинку ]
Тогда кодирование задается такими отображениями: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
Рассмотренный пример показывает преимущества матричного кодирования: достаточно запомнить [ Cкачайте файл, чтобы посмотреть картинку ]кодовых слов вместо [ Cкачайте файл, чтобы посмотреть картинку ]слов. Это общий факт.
Кодирование не должно приписывать одно и то же кодовое слово разным исходным сообщениям. Простой способ добиться этого состоит в том, чтобы [ Cкачайте файл, чтобы посмотреть картинку ]столбцов (в предыдущем примере - первых) матрицы [ Cкачайте файл, чтобы посмотреть картинку ]образовывали единичную матрицу. При умножении любого вектора на единичную матрицу получается этот же самый вектор, следовательно, разным векторам-сообщениям будут соответствовать разные вектора систематического кода.
Матричные коды называют также линейными кодами. Для линейных [ Cкачайте файл, чтобы посмотреть картинку ]-кодов с минимальным расстоянием Хэмминга [ Cкачайте файл, чтобы посмотреть картинку ]существует нижняя граница Плоткина (Plotkin)[ Cкачайте файл, чтобы посмотреть ссылку ] для минимального количества контрольных разрядов [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ],
[ Cкачайте файл, чтобы посмотреть картинку ]
Упражнение 39 Вычислить минимальную оценку по Плоткину количества дополнительных разрядов [ Cкачайте файл, чтобы посмотреть картинку ]для кодовых слов матричного кода, если требуется, чтобы минимальное расстояние между ними было [ Cкачайте файл, чтобы посмотреть картинку ]. Рассмотреть случаи из предыдущего упражнения.
9. Лекция: Групповые коды
Объясняется, какой блочный код называется групповым. Математическое обоснование выводов. Упражнения для самопроверки. Совершенные и квазисовершенные коды. Их свойства. Полиномиальные коды. Частный случай полиномиальных кодов – циклические коды. Очень хорошее и доходчивое объяснение материала характерно для данной лекции
Множество всех двоичных слов [ Cкачайте файл, чтобы посмотреть картинку ]длины [ Cкачайте файл, чтобы посмотреть картинку ]образует абелеву (коммутативную) группу относительно поразрядного сложения.
Пусть [ Cкачайте файл, чтобы посмотреть картинку ]- кодирующая [ Cкачайте файл, чтобы посмотреть картинку ]-матрица, у которой есть [ Cкачайте файл, чтобы посмотреть картинку ]-подматрица с отличным от нуля определителем, например, единичная. Тогда отображение [ Cкачайте файл, чтобы посмотреть картинку ]переводит группу всех двоичных слов длины [ Cкачайте файл, чтобы посмотреть картинку ]в группу кодовых слов длины [ Cкачайте файл, чтобы посмотреть картинку ].
Предположим, что [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда для [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], получаем
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
т.е. [ Cкачайте файл, чтобы посмотреть картинку ]. Следовательно, взаимно-однозначное отображение группы двоичных слов длины [ Cкачайте файл, чтобы посмотреть картинку ]при помощи заданной матрицы [ Cкачайте файл, чтобы посмотреть картинку ]сохраняет свойства групповой операции, что означает, что кодовые слова образуют группу.
Блочный код называется групповым, если его кодовые слова образуют группу.
Если код является групповым, то наименьшее расстояние между двумя кодовыми словами равно наименьшему весу ненулевого слова.
Это следует из соотношения [ Cкачайте файл, чтобы посмотреть картинку ].
В предыдущем примере наименьший вес ненулевого слова равен 3. Следовательно, этот код способен исправлять однократную ошибку или обнаруживать однократную и двойную.
При использовании группового кода незамеченными остаются те и только те ошибки, которые отвечают строкам ошибок, в точности равным кодовым словам.
Такие строки ошибок переводят одно кодовое слово в другое.
Следовательно, вероятность того, что ошибка останется необнаруженной, равна сумме вероятностей всех строк ошибок, равных кодовым словам.
В рассмотренном примере вероятность ошибки равна [ Cкачайте файл, чтобы посмотреть картинку ].
Рассмотрим задачу оптимизации декодирования группового кода с двоичной матрицей кодирования [ Cкачайте файл, чтобы посмотреть картинку ]. Требуется минимизировать вероятность того, что [ Cкачайте файл, чтобы посмотреть картинку ].
Схема декодирования состоит из группы [ Cкачайте файл, чтобы посмотреть картинку ]всех слов, которые могут быть приняты ([ Cкачайте файл, чтобы посмотреть картинку ]). Так как кодовые слова [ Cкачайте файл, чтобы посмотреть картинку ]образуют нормальную (нормальность следует из коммутативности [ Cкачайте файл, чтобы посмотреть картинку ]) подгруппу [ Cкачайте файл, чтобы посмотреть картинку ], то множеству [ Cкачайте файл, чтобы посмотреть картинку ]можно придать структуру таблицы: будем записывать в одну строку те элементы [ Cкачайте файл, чтобы посмотреть картинку ], которые являются членами одного смежного класса [ Cкачайте файл, чтобы посмотреть картинку ]по [ Cкачайте файл, чтобы посмотреть картинку ]. Первая строка, соответствующая нулевому слову из [ Cкачайте файл, чтобы посмотреть картинку ], будет тогда всеми кодовыми словами из [ Cкачайте файл, чтобы посмотреть картинку ], т.е. [ Cкачайте файл, чтобы посмотреть картинку ]. В общем случае, если [ Cкачайте файл, чтобы посмотреть картинку ], то строка, содержащая [ Cкачайте файл, чтобы посмотреть картинку ](смежный класс [ Cкачайте файл, чтобы посмотреть картинку ]) имеет вид [ Cкачайте файл, чтобы посмотреть картинку ].
Лидером каждого из таких построенных смежных классов называется слово минимального веса.
Каждый элемент [ Cкачайте файл, чтобы посмотреть картинку ]из [ Cкачайте файл, чтобы посмотреть картинку ]однозначно представляется в виде суммы [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- лидер соответствующего смежного класса и [ Cкачайте файл, чтобы посмотреть картинку ].
Множество классов смежности группы образуют фактор-группу, которая есть фактор-множество множества [ Cкачайте файл, чтобы посмотреть картинку ]по отношению эквивалентности-принадлежности к одному смежному классу, а это означает, что множества, составляющие это фактор-множество, образуют разбиение [ Cкачайте файл, чтобы посмотреть картинку ]. Отсюда следует, что строки построенной таблицы попарно либо не пересекаются, либо совпадают.
Если в рассматриваемой таблице в первом столбце записать лидеры, то полученная таблица называется таблицей декодирования. Она имеет вид:
[ Cкачайте файл, чтобы посмотреть картинку ]
То, что строк будет [ Cкачайте файл, чтобы посмотреть картинку ]следует из теоремы Лагранжа[ Cкачайте файл, чтобы посмотреть ссылку ] , т.к. [ Cкачайте файл, чтобы посмотреть картинку ]- это порядок фактор-группы [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
Декодирование слова [ Cкачайте файл, чтобы посмотреть картинку ]состоит в выборе кодового слова [ Cкачайте файл, чтобы посмотреть картинку ]в качестве переданного и последующем применении операции, обратной умножению на [ Cкачайте файл, чтобы посмотреть картинку ]. Такая схема декодирования сможет исправлять ошибки.
Для [ Cкачайте файл, чтобы посмотреть картинку ]-кода из рассматриваемого примера таблица декодирования будет следующей:
[ Cкачайте файл, чтобы посмотреть картинку ]
Первая строка в ней - это строка кодовых слов, а первый столбец - это лидеры.
Чтобы декодировать слово [ Cкачайте файл, чтобы посмотреть картинку ], следует отыскать его в таблице и выбрать в качестве переданного слово в том же столбце и в первой строке.
Например, если принято слово 110011 (2-я строка, 3-й столбец таблицы), то считается, что было передано слово 010011; аналогично, если принято слово 100101 (3-я строка, 4-й столбец таблицы), переданным считается слово 110101, и т.д.
Групповое кодирование со схемой декодирования посредством лидеров исправляет все ошибки, строки которых совпадают с лидерами. Следовательно, вероятность правильного декодирования переданного по двоичному симметричному каналу кода равна сумме вероятностей всех лидеров, включая нулевой.
В рассмотренной схеме вероятность правильной передачи слова будет [ Cкачайте файл, чтобы посмотреть картинку ].
Кодовое слово любого столбца таблицы декодирования является ближайшим кодовым словом ко всем прочим словам данного столбца.
Пусть переданное слово [ Cкачайте файл, чтобы посмотреть картинку ]принято как [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], т.е. это расстояние равно весу соответствующего лидера. Расстояние от [ Cкачайте файл, чтобы посмотреть картинку ]до любого другого кодового слова [ Cкачайте файл, чтобы посмотреть картинку ]равно весу их поразрядной суммы, т.е. [ Cкачайте файл, чтобы посмотреть картинку ]т.к. [ Cкачайте файл, чтобы посмотреть картинку ]- лидер смежного класса, к которому принадлежат как [ Cкачайте файл, чтобы посмотреть картинку ], так и [ Cкачайте файл, чтобы посмотреть картинку ].
Доказано, при схеме декодирования лидерами по полученному слову берется ближайшее к нему кодовое.
Упражнение 40 Для кодирующих матриц
[ Cкачайте файл, чтобы посмотреть картинку ]
, [ Cкачайте файл, чтобы посмотреть картинку ]:
Построить соответственно [ Cкачайте файл, чтобы посмотреть картинку ]-код и [ Cкачайте файл, чтобы посмотреть картинку ]-код.
Найти основные характеристики полученных кодов: минимальное расстояние между словами кода; вероятность необнаружения ошибки; максимальную кратность ошибок, до которой включительно они все исправляются или обнаруживаются.
Построить таблицы декодирования.
Уточнить характеристики полученных кодов, при использовании их для исправления ошибок, т.е. найти вероятность правильной передачи и описать ошибки, исправляемые этими кодами.
Во что будут декодированы слова: 10001, 01110, 10101, 1001, 0110, 1101?
Совершенные и квазисовершенные коды
Групповой [ Cкачайте файл, чтобы посмотреть картинку ]-код, исправляющий все ошибки веса, не большего [ Cкачайте файл, чтобы посмотреть картинку ], и никаких других, называется совершенным.
Свойства совершенного кода[ Cкачайте файл, чтобы посмотреть ссылку ]:
Для совершенного [ Cкачайте файл, чтобы посмотреть картинку ]-кода, исправляющего все ошибки веса, не большего [ Cкачайте файл, чтобы посмотреть картинку ], выполняется соотношение [ Cкачайте файл, чтобы посмотреть картинку ]. Верно и обратное утверждение;
Совершенный код, исправляющий все ошибки веса, не большего [ Cкачайте файл, чтобы посмотреть картинку ], в столбцах таблицы декодирования содержит все слова, отстоящие от кодовых на расстоянии, не большем [ Cкачайте файл, чтобы посмотреть картинку ]. Верно и обратное утверждение;
Таблица декодирования совершенного кода, исправляющего все ошибки в не более чем [ Cкачайте файл, чтобы посмотреть картинку ]позициях, имеет в качестве лидеров все строки, содержащие не более [ Cкачайте файл, чтобы посмотреть картинку ]единиц. Верно и обратное утверждение.
Совершенный код - это лучший код, обеспечивающий максимум минимального расстояния между кодовыми словами при минимуме длины кодовых слов. Совершенный код легко декодировать: каждому полученному слову однозначно ставится в соответствие ближайшее кодовое. Чисел [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ], удовлетворяющих условию совершенности кода очень мало. Но и при подобранных [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]совершенный код можно построить только в исключительных случаях.
Если [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]не удовлетворяют условию совершенности, то лучший групповой код, который им соответствует называется квазисовершенным, если он исправляет все ошибки кратности, не большей [ Cкачайте файл, чтобы посмотреть картинку ], и некоторые ошибки кратности [ Cкачайте файл, чтобы посмотреть картинку ]. Квазисовершенных кодов также очень мало.
Двоичный блочный [ Cкачайте файл, чтобы посмотреть картинку ]-код называется оптимальным, если он минимизирует вероятность ошибочного декодирования. Совершенный или квазисовершенный код - оптимален. Общий способ построения оптимальных кодов пока неизвестен.
Для любого целого положительного числа [ Cкачайте файл, чтобы посмотреть картинку ]существует совершенный [ Cкачайте файл, чтобы посмотреть картинку ]-код, исправляющий одну ошибку, называемый кодом Хэмминга (Hamming), в котором [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
Действительно, [ Cкачайте файл, чтобы посмотреть картинку ].
Порядок построения кода Хэмминга следующий:
Выбираем целое положительное число [ Cкачайте файл, чтобы посмотреть картинку ]. Сообщения будут словами длины [ Cкачайте файл, чтобы посмотреть картинку ], а кодовые слова - длины [ Cкачайте файл, чтобы посмотреть картинку ];
В каждом кодовом слове [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]бит с индексами-степенями двойки [ Cкачайте файл, чтобы посмотреть картинку ]- являются контрольными, остальные - в естественном порядке - битами сообщения. Например, если [ Cкачайте файл, чтобы посмотреть картинку ], то биты [ Cкачайте файл, чтобы посмотреть картинку ]- контрольные, а [ Cкачайте файл, чтобы посмотреть картинку ]- из исходного сообщения;
Строится матрица [ Cкачайте файл, чтобы посмотреть картинку ]из [ Cкачайте файл, чтобы посмотреть картинку ]строк и [ Cкачайте файл, чтобы посмотреть картинку ]столбцов. В [ Cкачайте файл, чтобы посмотреть картинку ]-ой строке стоят цифры двоичного представления числа [ Cкачайте файл, чтобы посмотреть картинку ]. Матрицы для r=2, 3 и 4 таковы: [ Cкачайте файл, чтобы посмотреть картинку ]
Записывается система уравнений [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- матрица из предыдущего пункта. Система состоит из [ Cкачайте файл, чтобы посмотреть картинку ]уравнений. Например, для [ Cкачайте файл, чтобы посмотреть картинку ]:
[ Cкачайте файл, чтобы посмотреть картинку ]
Чтобы закодировать сообщение [ Cкачайте файл, чтобы посмотреть картинку ], берутся в качестве [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]не равно степени двойки, соответствующие биты сообщения и отыскиваются, используя полученную систему уравнений, те [ Cкачайте файл, чтобы посмотреть картинку ], для которых [ Cкачайте файл, чтобы посмотреть картинку ]- степень двойки. В каждое уравнение входит только одно [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]. В выписанной системе [ Cкачайте файл, чтобы посмотреть картинку ]входит в 1-е уравнение, [ Cкачайте файл, чтобы посмотреть картинку ]- во второе и [ Cкачайте файл, чтобы посмотреть картинку ]- в третье. В рассмотренном примере сообщение [ Cкачайте файл, чтобы посмотреть картинку ]будет закодировано кодовым словом [ Cкачайте файл, чтобы посмотреть картинку ].
Декодирование кода Хэмминга проходит по следующей схеме. Пусть принято слово [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- переданное кодовое слово, а [ Cкачайте файл, чтобы посмотреть картинку ]- строка ошибок. Так как [ Cкачайте файл, чтобы посмотреть картинку ], то [ Cкачайте файл, чтобы посмотреть картинку ]. Если результат нулевой, как происходит при правильной передаче, считается, что ошибок не было. Если строка ошибок имеет единицу в [ Cкачайте файл, чтобы посмотреть картинку ]-й позиции, то результатом произведения [ Cкачайте файл, чтобы посмотреть картинку ]будет [ Cкачайте файл, чтобы посмотреть картинку ]-я строка матрицы [ Cкачайте файл, чтобы посмотреть картинку ]или двоичное представление числа [ Cкачайте файл, чтобы посмотреть картинку ]. В этом случае следует изменить символ в [ Cкачайте файл, чтобы посмотреть картинку ]-й позиции слова [ Cкачайте файл, чтобы посмотреть картинку ], считая позиции слева, с единицы.
Пример. [ Cкачайте файл, чтобы посмотреть картинку ]-код Хэмминга имеет в качестве одного из кодовых слов [ Cкачайте файл, чтобы посмотреть картинку ]. Матрица [ Cкачайте файл, чтобы посмотреть картинку ]приведена на шаге 3 хода построения кода Хэмминга. Ясно, что [ Cкачайте файл, чтобы посмотреть картинку ]. Добавим к [ Cкачайте файл, чтобы посмотреть картинку ]строку ошибок [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], т.е. ошибка находится в третьей позиции. Если [ Cкачайте файл, чтобы посмотреть картинку ], то [ Cкачайте файл, чтобы посмотреть картинку ]и позиция ошибки - [ Cкачайте файл, чтобы посмотреть картинку ]и т.п. Если ошибка допущена в более чем в одной позиции, то декодирование даст неверный результат.
Код Хэмминга - это групповой код.
Это следует из того, что [ Cкачайте файл, чтобы посмотреть картинку ]-код Хэмминга можно получить матричным кодированием, при помощи [ Cкачайте файл, чтобы посмотреть картинку ]-матрицы, в которой столбцы с номерами не степенями 2 образуют единичную подматрицу. Остальные столбцы соответствуют уравнениям шага 4 построения кода Хэмминга, т.е. 1-му столбцу соответствует уравнение для вычисления 1-го контрольного разряда, 2-му - для 2-го, 4-му - для 4-го и т.д. Такая матрица будет при кодировании копировать биты сообщения в позиции не степени 2 кода и заполнять другие позиции кода согласно схеме кодирования Хэмминга.
Пример. Кодирующая матрица для [ Cкачайте файл, чтобы посмотреть картинку ]-кода Хэмминга -
[ Cкачайте файл, чтобы посмотреть картинку ]
Ее столбцы с номерами 3, 5, 6 и 7 образуют единичную подматрицу. Столбцы с номерами 1, 2 и 4 соответствуют уравнениям для вычисления контрольных бит, например, уравнению [ Cкачайте файл, чтобы посмотреть картинку ]соответствует столбец 1101, т.е. для вычисления первого контрольного разряда берутся 1, 2 и 4 биты исходного сообщения или биты 3, 5 и 7 кода.
К [ Cкачайте файл, чтобы посмотреть картинку ]-коду Хэмминга можно добавить проверку четности. Получится [ Cкачайте файл, чтобы посмотреть картинку ]-код с наименьшим весом ненулевого кодового слова 4, способный исправлять одну и обнаруживать две ошибки.
Коды Хэмминга накладывают ограничения на длину слов сообщения: эта длина может быть только числами вида [ Cкачайте файл, чтобы посмотреть картинку ]: 1, 4, 11, 26, 57, [ Cкачайте файл, чтобы посмотреть картинку ]Но в реальных системах информация передается байтам или машинными словами, т.е. порциями по 8, 16, 32 или 64 бита, что делает использование совершенных кодов не всегда подходящим. Поэтому в таких случаях часто используются квазисовершенные коды.
Квазисовершенные [ Cкачайте файл, чтобы посмотреть картинку ]-коды, исправляющие одну ошибку, строятся следующим образом. Выбирается минимальное [ Cкачайте файл, чтобы посмотреть картинку ]так, чтобы
[ Cкачайте файл, чтобы посмотреть картинку ]
Каждое кодовое слово такого кода будет содержать [ Cкачайте файл, чтобы посмотреть картинку ]контрольных разрядов. Из предыдущих соотношений следует, что
[ Cкачайте файл, чтобы посмотреть картинку ]
Каждому из [ Cкачайте файл, чтобы посмотреть картинку ]разрядов присваивается слева-направо номер от 1 до [ Cкачайте файл, чтобы посмотреть картинку ]. Для заданного слова сообщения составляются [ Cкачайте файл, чтобы посмотреть картинку ]контрольных сумм [ Cкачайте файл, чтобы посмотреть картинку ]по модулю 2 значений специально выбранных разрядов кодового слова, которые помещаются в позиции-степени 2 в нем: для [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]выбираются разряды, содержащие биты исходного сообщения, двоичные числа-номера которых имеют в [ Cкачайте файл, чтобы посмотреть картинку ]-м разряде единицу. Для суммы [ Cкачайте файл, чтобы посмотреть картинку ]это будут, например, разряды 3, 5, 7 и т.д., для суммы [ Cкачайте файл, чтобы посмотреть картинку ]- 3, 6, 7 и т.д. Таким образом, для слова сообщения [ Cкачайте файл, чтобы посмотреть картинку ]будет построено кодовое слово [ Cкачайте файл, чтобы посмотреть картинку ]. Обозначим [ Cкачайте файл, чтобы посмотреть картинку ]сумму по модулю 2 разрядов полученного слова, соответствующих контрольной сумме [ Cкачайте файл, чтобы посмотреть картинку ]и самой этой контрольной суммы. Если [ Cкачайте файл, чтобы посмотреть картинку ], то считается, что передача прошла без ошибок. В случае одинарной ошибки [ Cкачайте файл, чтобы посмотреть картинку ]будет равно двоичному числу-номеру сбойного бита. В случае ошибки, кратности большей 1, когда [ Cкачайте файл, чтобы посмотреть картинку ], ее можно обнаружить. Подобная схема декодирования не позволяет исправлять некоторые двойные ошибки, чего можно было бы достичь, используя схему декодирования с лидерами, но последняя значительно сложнее в реализации и дает незначительное улучшение качества кода.
Пример построения кодового слова квазисовершенного [ Cкачайте файл, чтобы посмотреть картинку ]-кода, исправляющего все однократные ошибки, для сообщения 100011010.
[ Cкачайте файл, чтобы посмотреть картинку ]
Искомое кодовое слово имеет вид [ Cкачайте файл, чтобы посмотреть картинку ]. Далее нужно вычислить контрольные суммы.
[ Cкачайте файл, чтобы посмотреть картинку ]
Таким образом, искомый код - 0011000111010. Если в процессе передачи этого кода будет испорчен его пятый бит, то приемник получит код 0011100111010. Для его декодирования опять вычисляются контрольные суммы:
[ Cкачайте файл, чтобы посмотреть картинку ]
Приемник преобразует изменением пятого бита полученное сообщение в отправленное передатчиком, из которого затем отбрасыванием контрольных разрядов восстанавливает исходное сообщение.
Совершенный код Хэмминга также можно строить по рассмотренной схеме, т.к. для него [ Cкачайте файл, чтобы посмотреть картинку ].
Для исправление одинарной ошибки к 8-разрядному коду достаточно приписать 4 разряда ([ Cкачайте файл, чтобы посмотреть картинку ]), к 16-разрядному - 5, к 32-разрядному - 6, к 64-разрядному - 7.
Упражнение 41 Может ли [ Cкачайте файл, чтобы посмотреть картинку ]-код, минимальное расстояние между кодовыми словами которого 5, быть совершенным?
Упражнение 42 Построить кодовые слова квазисовершенного [ Cкачайте файл, чтобы посмотреть картинку ]-кода, исправляющего однократные ошибки, для тех сообщений, которые соответствуют числам 55, 200 и декодировать слова 1000001000001, 1100010111100, полученные по каналу связи, использующему этот код.
Полиномиальные коды
При полиномиальном кодировании каждое сообщение отождествляется с многочленом, а само кодирование состоит в умножении на фиксированный многочлен. Полиномиальные коды - блочные и отличаются от рассмотренных ранее только алгоритмами кодирования и декодирования.
Пусть [ Cкачайте файл, чтобы посмотреть картинку ]- двоичное сообщение. Тогда сопоставим ему многочлен [ Cкачайте файл, чтобы посмотреть картинку ]. Все вычисления происходят в поле классов вычетов по модулю 2, т. е. от результата любой арифметической операции берется остаток от его деления на 2.
Например, последовательности 10011 при [ Cкачайте файл, чтобы посмотреть картинку ]соответствует многочлен [ Cкачайте файл, чтобы посмотреть картинку ].
Зафиксируем некоторый многочлен степени [ Cкачайте файл, чтобы посмотреть картинку ],
[ Cкачайте файл, чтобы посмотреть картинку ]
Полиномиальный код с кодирующим многочленом [ Cкачайте файл, чтобы посмотреть картинку ]кодирует слово сообщения [ Cкачайте файл, чтобы посмотреть картинку ]многочленом [ Cкачайте файл, чтобы посмотреть картинку ]или кодовым словом из коэффициентов этого многочлена [ Cкачайте файл, чтобы посмотреть картинку ]. Условия [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]необходимы, потому что в противном случае [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]не будут нести никакой информации, т.к. они всегда будут нулями.
Пример. Рассмотрим кодирующий многочлен [ Cкачайте файл, чтобы посмотреть картинку ]. Сообщение 01011, отвечающее многочлену [ Cкачайте файл, чтобы посмотреть картинку ], будет закодировано коэффициентами многочлена [ Cкачайте файл, чтобы посмотреть картинку ], т.е. [ Cкачайте файл, чтобы посмотреть картинку ].
Полиномиальный код с кодирующим многочленом [ Cкачайте файл, чтобы посмотреть картинку ]степени [ Cкачайте файл, чтобы посмотреть картинку ]является матричным кодом с кодирующей матрицей [ Cкачайте файл, чтобы посмотреть картинку ]размерности [ Cкачайте файл, чтобы посмотреть картинку ]:
[ Cкачайте файл, чтобы посмотреть картинку ]
Т е. ненулевые элементы в [ Cкачайте файл, чтобы посмотреть картинку ]-й строке - это последовательность коэффициентов кодирующего многочлена, расположенных с [ Cкачайте файл, чтобы посмотреть картинку ]-го по [ Cкачайте файл, чтобы посмотреть картинку ]-й столбцах.
Например, [ Cкачайте файл, чтобы посмотреть картинку ]-код с кодирующим многочленом [ Cкачайте файл, чтобы посмотреть картинку ]отвечает матрице
[ Cкачайте файл, чтобы посмотреть картинку ]
или отображению: [ Cкачайте файл, чтобы посмотреть картинку ]; [ Cкачайте файл, чтобы посмотреть картинку ]; [ Cкачайте файл, чтобы посмотреть картинку ]; [ Cкачайте файл, чтобы посмотреть картинку ]; [ Cкачайте файл, чтобы посмотреть картинку ]; [ Cкачайте файл, чтобы посмотреть картинку ]; [ Cкачайте файл, чтобы посмотреть картинку ]; [ Cкачайте файл, чтобы посмотреть картинку ].
Полиномиальные коды являются групповыми.
Это следует из того, что коды, получаемые матричным кодированием, - групповые.
Рассмотрим [ Cкачайте файл, чтобы посмотреть картинку ]-код с кодирующим многочленом [ Cкачайте файл, чтобы посмотреть картинку ]. Строка ошибок [ Cкачайте файл, чтобы посмотреть картинку ]останется необнаруженной в том и только в том случае, если соответствующий ей многочлен [ Cкачайте файл, чтобы посмотреть картинку ]делится на [ Cкачайте файл, чтобы посмотреть картинку ].
Действительно, [ Cкачайте файл, чтобы посмотреть картинку ]делится на [ Cкачайте файл, чтобы посмотреть картинку ]тогда и только тогда, когда [ Cкачайте файл, чтобы посмотреть картинку ]делится на [ Cкачайте файл, чтобы посмотреть картинку ]. Поэтому любая ошибка, многочлен которой не делится на [ Cкачайте файл, чтобы посмотреть картинку ], будет обнаружена и, соответственно, любая ошибка, многочлен которой делится на [ Cкачайте файл, чтобы посмотреть картинку ], не может быть обнаружена.
Таким образом, обнаружение ошибки при использовании полиномиального кода с кодирующим многочленом [ Cкачайте файл, чтобы посмотреть картинку ]может быть реализовано при помощи алгоритма деления многочленов с остатком: если остаток ненулевой, то при передаче произошло искажение данных.
Коды Хэмминга можно строить как полиномиальные, например, кодирующий многочлен [ Cкачайте файл, чтобы посмотреть картинку ]определяет совершенный [ Cкачайте файл, чтобы посмотреть картинку ]-код, отличный от рассмотренного ранее.
Вообще же, если кодирующий многочлен [ Cкачайте файл, чтобы посмотреть картинку ], порождающий соответствующий [ Cкачайте файл, чтобы посмотреть картинку ]-код, не является делителем ни одного из многочленов вида [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ], то минимальное расстояние между кодовыми словами порожденного им кода не меньше 3.
Пусть [ Cкачайте файл, чтобы посмотреть картинку ]- минимальное расстояние между кодовыми словами, оно равно минимуму среди весов ненулевых кодовых слов. Предположим [ Cкачайте файл, чтобы посмотреть картинку ]. Тогда существует [ Cкачайте файл, чтобы посмотреть картинку ]такой, что [ Cкачайте файл, чтобы посмотреть картинку ]и степень [ Cкачайте файл, чтобы посмотреть картинку ]не больше [ Cкачайте файл, чтобы посмотреть картинку ]. Вес [ Cкачайте файл, чтобы посмотреть картинку ]равен 2, поэтому [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]. Следовательно, [ Cкачайте файл, чтобы посмотреть картинку ], что означает, что [ Cкачайте файл, чтобы посмотреть картинку ]должен делиться на [ Cкачайте файл, чтобы посмотреть картинку ], а это невозможно по условию. Если предположить, что [ Cкачайте файл, чтобы посмотреть картинку ], то это приведет к утверждению о том, что [ Cкачайте файл, чтобы посмотреть картинку ]должен делиться на [ Cкачайте файл, чтобы посмотреть картинку ], что тоже противоречит условию. Итак, [ Cкачайте файл, чтобы посмотреть картинку ].
Кодирующий многочлен [ Cкачайте файл, чтобы посмотреть картинку ]определяет совершенный [ Cкачайте файл, чтобы посмотреть картинку ]-код Голея (Golay) с минимальным расстоянием между кодовыми словами 7.
В 1971 году финскими и советскими математиками было доказано[ Cкачайте файл, чтобы посмотреть ссылку ], что кроме кодов Хэмминга и Голея других совершенных кодов нет.
Наиболее интересными среди полиномиальных кодов являются циклические коды, в которых вместе с любым кодовым словом вида [ Cкачайте файл, чтобы посмотреть картинку ]есть кодовое слово [ Cкачайте файл, чтобы посмотреть картинку ].
Упражнение 43 По кодирующему многочлену [ Cкачайте файл, чтобы посмотреть картинку ]построить полиномиальные коды для двоичных сообщений 0100, 10001101, 11110.
Упражнение 44 Принадлежат ли коду Голея кодовые слова 10000101011111010011111 и 11000111011110010011111?
10. Лекция: Понятие о кодах Боуза-Чоудхури-Хоккенгема
Рассказывается методика построения кодов, минимальное расстояние между кодовыми словами которых равно заданному числу. Математическое обосновании кодов Боуза-Чоудхури-Хоккенгема, упражнения для самопроверки. Рассматриваются циклические избыточные коды(CRC) и их применение на практике
Остался открытым вопрос о методике построения кодов, минимальное расстояние между кодовыми словами которых равно заданному числу. В 1960 году независимо Боуз (Bose), Чоудхури (Chaudhuri) и Хоккенгем (Hocquengem) открыли способ построения полиномиальных кодов, удовлетворяющих таким требованиям. Эти коды получили названия кодов Боуза-Чоудхури-Хоккенгема или БЧХ-кодов (BCH codes). БЧХ-коды могут быть не только двоичными, например, на практике достаточно широко используются недвоичные коды Рида-Соломона (Reed, Solomon), но далее будут рассматриваться только двоичные.
Многочлен [ Cкачайте файл, чтобы посмотреть картинку ]степени [ Cкачайте файл, чтобы посмотреть картинку ]называется примитивным, если [ Cкачайте файл, чтобы посмотреть картинку ]делится на [ Cкачайте файл, чтобы посмотреть картинку ]без остатка для [ Cкачайте файл, чтобы посмотреть картинку ]и не делится ни для какого меньшего значения [ Cкачайте файл, чтобы посмотреть картинку ].
Например, многочлен [ Cкачайте файл, чтобы посмотреть картинку ]примитивен: он делит [ Cкачайте файл, чтобы посмотреть картинку ], но не делит [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ]. Примитивен также многочлен [ Cкачайте файл, чтобы посмотреть картинку ]- он делит [ Cкачайте файл, чтобы посмотреть картинку ], но не делит [ Cкачайте файл, чтобы посмотреть картинку ]при [ Cкачайте файл, чтобы посмотреть картинку ].
Кодирующий многочлен [ Cкачайте файл, чтобы посмотреть картинку ]для БЧХ-кода, длина кодовых слов которого [ Cкачайте файл, чтобы посмотреть картинку ], строится так. Находится примитивный многочлен минимальной степени [ Cкачайте файл, чтобы посмотреть картинку ]такой, что [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ]. Пусть [ Cкачайте файл, чтобы посмотреть картинку ]- корень этого многочлена, тогда рассмотрим кодирующий многочлен [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- многочлены минимальной степени, имеющие корнями соответственно [ Cкачайте файл, чтобы посмотреть картинку ].
Построенный кодирующий многочлен производит код с минимальным расстоянием между кодовыми словами, не меньшим [ Cкачайте файл, чтобы посмотреть картинку ], и длиной кодовых слов n [1].
Пример. Нужно построить БЧХ-код с длиной кодовых слов [ Cкачайте файл, чтобы посмотреть картинку ]и минимальным расстоянием между кодовыми словами [ Cкачайте файл, чтобы посмотреть картинку ]. Степень примитивного многочлена равна [ Cкачайте файл, чтобы посмотреть картинку ]и сам он равен [ Cкачайте файл, чтобы посмотреть картинку ]. Пусть [ Cкачайте файл, чтобы посмотреть картинку ]- его корень, тогда [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]- также его корни. Минимальным многочленом для [ Cкачайте файл, чтобы посмотреть картинку ]будет [ Cкачайте файл, чтобы посмотреть картинку ]. Следовательно,
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Степень полученного многочлена равна 8, следовательно, построенный БЧХ-код будет [ Cкачайте файл, чтобы посмотреть картинку ]-кодом. Слово 1000100 или [ Cкачайте файл, чтобы посмотреть картинку ]будет закодировано кодовым словом [ Cкачайте файл, чтобы посмотреть картинку ]или 111001100000100.
Можно построить[ Cкачайте файл, чтобы посмотреть ссылку ] двоичный БЧХ-код с кодовыми словами длины [ Cкачайте файл, чтобы посмотреть картинку ]и нечетным минимальным расстоянием [ Cкачайте файл, чтобы посмотреть картинку ], у которого число контрольных символов не больше [ Cкачайте файл, чтобы посмотреть картинку ].
Первый БЧХ-код, примененный на практике, был [ Cкачайте файл, чтобы посмотреть картинку ]-кодом, исправляющим ошибки кратности до 5, но наиболее широкое распространение получил [ Cкачайте файл, чтобы посмотреть картинку ]-код, обнаруживающий ошибки кратности до 6.
БЧХ-коды умеренной длины не слишком далеки от совершенных или квазисовершенных кодов. Коды Хэмминга, например, являются БЧХ-кодами, а БЧХ-коды с минимальным весом кодового слова 5 - квазисовершенны. Но с ростом длины кодовых слов качество БЧХ-кодов падает. Код Голея, например, - это не код БЧХ.
Упражнение 45 Найти кодирующий многочлен БЧХ-кода [ Cкачайте файл, чтобы посмотреть картинку ]с длиной кодовых слов 15 и минимальным расстоянием между кодовыми словами 7. Использовать примитивный многочлен [ Cкачайте файл, чтобы посмотреть картинку ]с корнем [ Cкачайте файл, чтобы посмотреть картинку ]. Проверить, будут ли [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]корнями соответственно многочленов [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
Циклические избыточные коды
Циклический избыточный код (Cyclical Redundancy Check - CRC) имеет фиксированную длину и используется для обнаружения ошибок. Наибольшее распространения получили коды CRC-16 и CRC-32, имеющие длину 16 и 32 бита соответственно. Код CRC строится по исходному сообщению произвольной длины, т.е. этот код не является блочным в строгом смысле этого слова. Но при каждом конкретном применении этот код - блочный, [ Cкачайте файл, чтобы посмотреть картинку ]-код для CRC-16 или [ Cкачайте файл, чтобы посмотреть картинку ]-код для CRC-32.
Вычисление значения кода CRC происходит посредством деления многочлена, соответствующего исходному сообщению (полином-сообщение), на фиксированный многочлен (полином-генератор). Остаток от такого деления и есть код CRC, соответствующий исходному сообщению. Для кода CRC-16 полином-генератор имеет степень 16, а для CRC-32 - 32. Полиномы-генераторы подбираются специальным образом и для кодов CRC-16/32 стандартизированы Международным консультативным комитетом по телеграфной и телефонной связи (CCITT). Для CRC-16, например, стандартным является полином-генератор [ Cкачайте файл, чтобы посмотреть картинку ].
Пример построения CRC-4 кода для сообщения 11010111, используя полином-генератор [ Cкачайте файл, чтобы посмотреть картинку ]. Исходному сообщению соответствует полином [ Cкачайте файл, чтобы посмотреть картинку ], т.е. нумерация битов здесь начинается справа.
[ Cкачайте файл, чтобы посмотреть картинку ]
Полиному [ Cкачайте файл, чтобы посмотреть картинку ]соответствуют биты 0101 - это и есть CRC-4 код.
Существуют быстрые алгоритмы для расчета CRC-кодов, использующие специальные таблицы, а не деление многочленов с остатком.
CRC-коды способны обнаруживать одиночную ошибку в любой позиции и, кроме того, многочисленные комбинации кратных ошибок, расположенных близко друг от друга. При реальной передаче или хранении информации ошибки обычно группируются на некотором участке, а не распределяются равномерно по всей длине данных. Таким образом, хотя для идеального случая двоичного симметричного канала CRC-коды не имеют никаких теоретических преимуществ по сравнению, например, с простыми контрольными суммами, для реальных систем эти коды являются очень полезными.
Коды CRC используются очень широко: модемами, телекоммуникационными программами, программами архивации и проверки целостности данных и многими другими программными и аппаратными компонентами вычислительных систем.
Упражнение 46 Построить CRC-4 код для сообщений 10000000 и 101111001, используя полином-генератор [ Cкачайте файл, чтобы посмотреть картинку ].
11. Лекция: Основы теории защиты информации
лекции дается понятие криптографии, использование ее на практике, различные методы криптографии, их свойства и методы шифрования. Вводится понятие нераскрываемый шифр. Подробно описываются две системы шифрования: криптосистема без передачи ключей и криптосистема с открытым ключом. Хорошее математическое обоснование систем. Суть электронной подписи. Рассказывается о стандарте шифрования данных DES
Криптография (тайнопись) - это раздел математики, в котором изучаются и разрабатываются системы изменения письма с целью сделать его непонятным для непосвященных лиц. Известно, что еще в V веке до нашей эры тайнопись использовалась в Греции. В современном мире, где все больше и больше услуг предоставляется через использование информационных технологий, проблема защиты информации методами криптографии имеет первостепенное значение. Сегодня большая часть обмена информацией проходит по компьютерным сетям и часто (в бизнесе, военным и прочее) нужно обеспечивать конфиденциальность такого обмена. Теоретические основы классической криптографии впервые были изложены Клодом Шенноном в конце 1940-х годов.
Простейшая система шифрования - это замена каждого знака письма на другой знак по выбранному правилу. Юлий Цезарь, например, заменял в своих секретных письмах первую букву алфавита на четвертую, вторую - на пятую, последнюю - на третью и т.п., т.е. A на D, B на E, Z на C и т.п. Октавиан Август заменял каждую непоследнюю букву алфавита на следующую, а последнюю на первую. Подобные шифры, называемые простой заменой или подстановкой, описаны в рассказах "Пляшущие человечки" А. К. Дойла, "Золотой жук" Э. По и других.
Шифры простой замены легко поддаются расшифровке, при знании исходного языка сообщения, т.к. каждый письменный язык характеризуется частотой встречаемости своих знаков. Например, в английском языке чаще всего встречается буква E, а в русском - О. Таким образом, в шифрованном подстановкой сообщении на русском языке самому частому знаку будет с большой вероятностью соответствовать буква О. Вероятность будет расти с ростом длины сообщения.
Усовершенствованные шифры-подстановки используют возможность заменять символ исходного сообщения на любой символ из заданного для него множества символов, что позволяет выровнять частоты встречаемости различных знаков шифра, но подобные шифры удлиняют сообщение и замедляют скорость обмена информацией.
В шифрах-перестановках знаки сообщения специальным образом переставляются между собой, например, записывая сообщение в строки заданной длины и беря затем последовательность слов в столбцах в качестве шифра. Сообщение "ТЕОРИЯИНФОРМАЦИИ", используя строки длины 4, будет в шифрованном таким методом виде выглядеть как "ТИФАЕЯОЦОИРИРНМИ", потому что при шифровании использовался следующий прямоугольник:
[ Cкачайте файл, чтобы посмотреть картинку ]
Шифры-перестановки в общем случае практически не поддаются дешифровке. Для их дешифровки необходимо знать дополнительную информацию. Крупный недостаток подобных шифров в том, что если удастся каким-то образом расшифровать хотя бы одно сообщение, то в дальнейшем можно расшифровать и любое другое. Модификацией шифров-перестановок являются шифры-перестановки со словом-ключом, которое определяет порядок взятия слов-столбцов. Например, если для рассмотренного шифра взять ключ "РЫБА", то шифрованное сообщение будет выглядеть как "РНМИОИРИТИФАЕЯОЦ".
Системы с ключевым словом или просто ключом, известные с XVI века, широко применяются до сих пор. Их особенностью является два уровня секретности. Первый уровень - это собственно способ составления кода, который постоянно известен лицам, использующим данный шифр. Второй уровень - это ключ, который посылается отдельно от основного сообщения по особо защищенным каналам и без которого расшифровка основного сообщения невозможна.
Наиболее простой способ использования ключа хорошего шифра следующий: под символами сообщения записывается раз за разом ключ, затем номера соответствующих знаков сообщения и ключа складываются. Если полученная сумма больше общего числа знаков, то от нее отнимается это общее число знаков. Полученные числа будут номерами символов кода. С ростом длины ключа трудоемкость дешифровки подобного шифра стремительно растет. Например, рассмотренное ранее сообщение с ключом "КИБЕРНЕТИКА" в шифрованном виде будет выглядеть как "ЮОРЦЪНОБЮЪСШЙШОЪ". Процесс шифровки описывается схемой:
Т
Е
О
Р
И
Я
И
Н
Ф
О
Р
М
А
Ц
И
И

20
6
16
18
10
33
10
15
22
16
18
14
1
24
10
10

К
И
Б
Е
Р
Н
Е
Т
И
К
А
К
И
Б
Е
Р

12
10
2
6
18
15
6
20
10
12
1
12
10
2
6
18

32
16
18
24
28
15
16
2
32
28
19
26
11
26
16
28

Ю
О
Р
Ц
Ъ
Н
О
Б
Ю
Ъ
С
Ш
Й
Ш
О
Ъ

Если в качестве ключа использовать случайную последовательность, то получится нераскрываемый шифр. Проблема этого шифра - это способ передачи ключа.
В информационных сетях использование традиционных систем шифрования с ключом затрудненно необходимостью иметь специальный особо защищенный способ для передачи ключа. В 1976 году У. Диффи (Diffie W.) и М. Хеллман (Hellman M.) - инженеры-электрики из Станфордского университета, а также студент Калифорнийского университета Р. Меркль (Merkle R.), предложили новый принцип построения криптосистем, не требующий передачи ключа принимающему сообщение и сохранения в тайне метода шифрования. В дальнейшем, в качестве примеров, рассмотрим три системы, основанные на идеях Диффи и Хеллмана: без передачи ключей, с открытым ключом и электронную подпись - все они в свою очередь основаны на математическом фундаменте теории чисел.
Упражнение 47 Зашифровать сообщение "КИБЕРНЕТИКА" ключом "ДИСК".

Криптосистема без передачи ключей
Пусть абоненты [ Cкачайте файл, чтобы посмотреть картинку ]условились организовать между собой секретную переписку. Для этой цели они выбирают достаточно большое простое число [ Cкачайте файл, чтобы посмотреть картинку ]такое, что [ Cкачайте файл, чтобы посмотреть картинку ]хорошо разлагается на не очень большие простые множители. Затем каждый из абонентов независимо один от другого выбирает себе некоторое натуральное число, взаимно простое с [ Cкачайте файл, чтобы посмотреть картинку ]. Пусть число абонента [ Cкачайте файл, чтобы посмотреть картинку ]- [ Cкачайте файл, чтобы посмотреть картинку ], абонента [ Cкачайте файл, чтобы посмотреть картинку ]- [ Cкачайте файл, чтобы посмотреть картинку ]и т.д. Числа [ Cкачайте файл, чтобы посмотреть картинку ]составляют первые секретные ключи соответствующих абонентов. Вторые секретные ключи ([ Cкачайте файл, чтобы посмотреть картинку ] для [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]для [ Cкачайте файл, чтобы посмотреть картинку ]и т.д.) находятся из уравнений: для [ Cкачайте файл, чтобы посмотреть картинку ]из [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]; для [ Cкачайте файл, чтобы посмотреть картинку ]- из [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и т.д. Пересылаемые сообщения, коды-числа, должны быть меньше [ Cкачайте файл, чтобы посмотреть картинку ]. В случае, когда сообщение больше или равно [ Cкачайте файл, чтобы посмотреть картинку ], оно разбивается на части таким образом, чтобы каждая часть была числом, меньшим [ Cкачайте файл, чтобы посмотреть картинку ].
Предположим абонент [ Cкачайте файл, чтобы посмотреть картинку ]решил отправить сообщение [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]) [ Cкачайте файл, чтобы посмотреть картинку ]. Для этого он сначала зашифровывает свое сообщение ключом [ Cкачайте файл, чтобы посмотреть картинку ], получая по формуле [ Cкачайте файл, чтобы посмотреть картинку ]шифрованное сообщение [ Cкачайте файл, чтобы посмотреть картинку ], которое отправляется [ Cкачайте файл, чтобы посмотреть картинку ]. [ Cкачайте файл, чтобы посмотреть картинку ], получив [ Cкачайте файл, чтобы посмотреть картинку ], зашифровывает его своим ключом [ Cкачайте файл, чтобы посмотреть картинку ], получая по формуле [ Cкачайте файл, чтобы посмотреть картинку ]шифрованное сообщение [ Cкачайте файл, чтобы посмотреть картинку ], которое отправляется обратно к [ Cкачайте файл, чтобы посмотреть картинку ]. [ Cкачайте файл, чтобы посмотреть картинку ]шифрует полученное сообщение ключом [ Cкачайте файл, чтобы посмотреть картинку ]по формуле [ Cкачайте файл, чтобы посмотреть картинку ]и окончательно отправляет [ Cкачайте файл, чтобы посмотреть картинку ]к [ Cкачайте файл, чтобы посмотреть картинку ]. [ Cкачайте файл, чтобы посмотреть картинку ], используя ключ [ Cкачайте файл, чтобы посмотреть картинку ], сможет теперь расшифровать исходное сообщение [ Cкачайте файл, чтобы посмотреть картинку ]. Действительно, [ Cкачайте файл, чтобы посмотреть картинку ], т.к. [ Cкачайте файл, чтобы посмотреть картинку ], следовательно, [ Cкачайте файл, чтобы посмотреть картинку ]для некоторого целого [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], т.к. [ Cкачайте файл, чтобы посмотреть картинку ]по теореме Эйлера-Ферма.
Пример. Абоненты [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]вместе выбрали [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]), [ Cкачайте файл, чтобы посмотреть картинку ]выбрал [ Cкачайте файл, чтобы посмотреть картинку ], а [ Cкачайте файл, чтобы посмотреть картинку ]- [ Cкачайте файл, чтобы посмотреть картинку ]. Затем из уравнения [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]находит [ Cкачайте файл, чтобы посмотреть картинку ], а [ Cкачайте файл, чтобы посмотреть картинку ]из подобного уравнения находит [ Cкачайте файл, чтобы посмотреть картинку ]. При передаче сообщения [ Cкачайте файл, чтобы посмотреть картинку ]от [ Cкачайте файл, чтобы посмотреть картинку ]к [ Cкачайте файл, чтобы посмотреть картинку ]сначала [ Cкачайте файл, чтобы посмотреть картинку ]отправляет к [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ], из [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]вычисляет [ Cкачайте файл, чтобы посмотреть картинку ]и отправляет его обратно [ Cкачайте файл, чтобы посмотреть картинку ], из [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]вычисляет для [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ], наконец, [ Cкачайте файл, чтобы посмотреть картинку ]может прочитать посланное ему сообщение [ Cкачайте файл, чтобы посмотреть картинку ].
Упражнение 48 Между абонентами [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]установлен секретный канал связи без передачи ключей при заданных [ Cкачайте файл, чтобы посмотреть картинку ]и их первых ключах 15 и 21. Описать процесс передачи сообщений 22 (от [ Cкачайте файл, чтобы посмотреть картинку ]к [ Cкачайте файл, чтобы посмотреть картинку ]) и 17 (от [ Cкачайте файл, чтобы посмотреть картинку ]к [ Cкачайте файл, чтобы посмотреть картинку ]).
Криптосистема с открытым ключом
Первую и наиболее известную систему с открытым ключом разработали в 1978 году американцы Р. Ривест (Rivest R.), Э. Шамир (Shamir A.) и Л. Адлеман (Adleman L.). По их именам эта система получила название RSA.
Пусть абоненты [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]решили организовать для себя возможность секретной переписки. Для этого каждый из них независимо выбирает два больших простых числа ([ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]), находит их произведение ([ Cкачайте файл, чтобы посмотреть картинку ] и [ Cкачайте файл, чтобы посмотреть картинку ]), функцию Эйлера от этого произведения ([ Cкачайте файл, чтобы посмотреть картинку ] и [ Cкачайте файл, чтобы посмотреть картинку ]) и случайное число ([ Cкачайте файл, чтобы посмотреть картинку ] и [ Cкачайте файл, чтобы посмотреть картинку ]), меньшее вычисленного значения функции Эйлера и взаимно простое с ним. Кроме того, [ Cкачайте файл, чтобы посмотреть картинку ]из уравнения [ Cкачайте файл, чтобы посмотреть картинку ]находит [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]), а [ Cкачайте файл, чтобы посмотреть картинку ]из уравнения [ Cкачайте файл, чтобы посмотреть картинку ]находит [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]). Затем [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]печатают доступную всем книгу паролей вида:
[ Cкачайте файл, чтобы посмотреть картинку ]

Теперь кто-угодно может отправлять конфиденциальные сообщения [ Cкачайте файл, чтобы посмотреть картинку ]или [ Cкачайте файл, чтобы посмотреть картинку ]. Например, если пользователь книги паролей хочет отправить сообщение [ Cкачайте файл, чтобы посмотреть картинку ]для [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ] должно быть меньшим [ Cкачайте файл, чтобы посмотреть картинку ], или делиться на куски, меньшие [ Cкачайте файл, чтобы посмотреть картинку ]), то он использует ключ [ Cкачайте файл, чтобы посмотреть картинку ]из книги паролей для получения шифрованного сообщения [ Cкачайте файл, чтобы посмотреть картинку ]по формуле [ Cкачайте файл, чтобы посмотреть картинку ], которое и отправляется [ Cкачайте файл, чтобы посмотреть картинку ]. [ Cкачайте файл, чтобы посмотреть картинку ]для дешифровки [ Cкачайте файл, чтобы посмотреть картинку ]использует ключ [ Cкачайте файл, чтобы посмотреть картинку ]в формуле [ Cкачайте файл, чтобы посмотреть картинку ], т.к. [ Cкачайте файл, чтобы посмотреть картинку ], следовательно, [ Cкачайте файл, чтобы посмотреть картинку ]для некоторого целого [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], т.к. [ Cкачайте файл, чтобы посмотреть картинку ]по теореме Эйлера-Ферма. Доказано[ Cкачайте файл, чтобы посмотреть ссылку ] , что задача нахождения секретного ключа [ Cкачайте файл, чтобы посмотреть картинку ]по данным из книги паролей имеет ту же сложность, что и задача разложения числа [ Cкачайте файл, чтобы посмотреть картинку ]на простые множители.
Пример. Пусть для [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], тогда [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ](из уравнения [ Cкачайте файл, чтобы посмотреть картинку ]). Следовательно, запись в книге паролей для [ Cкачайте файл, чтобы посмотреть картинку ]будет иметь вид [ Cкачайте файл, чтобы посмотреть картинку ]. Если кто-то захочет отправить [ Cкачайте файл, чтобы посмотреть картинку ]секретное сообщение [ Cкачайте файл, чтобы посмотреть картинку ], то он должен сначала превратить его в шифровку [ Cкачайте файл, чтобы посмотреть картинку ]по формуле [ Cкачайте файл, чтобы посмотреть картинку ]. Когда [ Cкачайте файл, чтобы посмотреть картинку ]получит [ Cкачайте файл, чтобы посмотреть картинку ]он дешифрует его по формуле [ Cкачайте файл, чтобы посмотреть картинку ].
Упражнение 49 Нужно послать секретные сообщения 25 и 2 для JB и 14 для CIA, используя следующие записи открытой книги паролей криптосистемы RSA:
JB: 77,7;
CIA: 667,15.
Упражнение 50 Пользователь системы RSA выбрал [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]. Какие из чисел 12, 33, 125, 513 он может выбрать для открытого ключа? Вычислить для них закрытый ключ.
Упражнение 51 Пользователь системы RSA, выбравший [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], получил шифрованное сообщение [ Cкачайте файл, чтобы посмотреть картинку ]. Дешифровать [ Cкачайте файл, чтобы посмотреть картинку ].
Электронная подпись
Криптосистема с открытым ключом открыта для посылки сообщений для абонентов из книги паролей для любого желающего. В системе с электронной подписью сообщение необходимо "подписывать", т.е. явно указывать на отправителя из книги паролей.
Пусть [ Cкачайте файл, чтобы посмотреть картинку ]- абоненты системы с электронной подписью. Все они независимо друг от друга выбирают и вычисляют ряд чисел точно так же как и в системе с открытым ключом. Пусть [ Cкачайте файл, чтобы посмотреть картинку ]-ый абонент ([ Cкачайте файл, чтобы посмотреть картинку ]) выбирает два больших простых числа [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], затем вычисляет их произведение - [ Cкачайте файл, чтобы посмотреть картинку ]и функцию Эйлера от него - [ Cкачайте файл, чтобы посмотреть картинку ], затем выбирает первый ключ [ Cкачайте файл, чтобы посмотреть картинку ]из условий [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и, наконец, вычисляет второй ключ [ Cкачайте файл, чтобы посмотреть картинку ]из уравнения [ Cкачайте файл, чтобы посмотреть картинку ]. Записи в книге паролей будут иметь вид:
[ Cкачайте файл, чтобы посмотреть картинку ]

Если абонент [ Cкачайте файл, чтобы посмотреть картинку ]решает отправить секретное письмо [ Cкачайте файл, чтобы посмотреть картинку ][ Cкачайте файл, чтобы посмотреть картинку ], то ему следует проделать следующую последовательность операций:
Если [ Cкачайте файл, чтобы посмотреть картинку ], то [ Cкачайте файл, чтобы посмотреть картинку ]разбивается на части, каждая из которых меньше меньшего из чисел [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ];
Если [ Cкачайте файл, чтобы посмотреть картинку ], то сообщение [ Cкачайте файл, чтобы посмотреть картинку ]сначала шифруется ключом [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]), а затем - ключом [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]), если же [ Cкачайте файл, чтобы посмотреть картинку ], то сообщение [ Cкачайте файл, чтобы посмотреть картинку ]сначала шифруется ключом [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]), а затем - ключом [ Cкачайте файл, чтобы посмотреть картинку ]([ Cкачайте файл, чтобы посмотреть картинку ]);
Шифрованное сообщение [ Cкачайте файл, чтобы посмотреть картинку ]отправляется [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]для дешифровки сообщения [ Cкачайте файл, чтобы посмотреть картинку ]должен знать, кто его отправил, поэтому к [ Cкачайте файл, чтобы посмотреть картинку ]должна быть добавлена электронная подпись, указывающая на [ Cкачайте файл, чтобы посмотреть картинку ]. Если [ Cкачайте файл, чтобы посмотреть картинку ], то для расшифровки [ Cкачайте файл, чтобы посмотреть картинку ]сначала применяется ключ [ Cкачайте файл, чтобы посмотреть картинку ], а затем - [ Cкачайте файл, чтобы посмотреть картинку ], если же [ Cкачайте файл, чтобы посмотреть картинку ], то для расшифровки [ Cкачайте файл, чтобы посмотреть картинку ]сначала применяется ключ [ Cкачайте файл, чтобы посмотреть картинку ], а затем - [ Cкачайте файл, чтобы посмотреть картинку ]. Рассмотрим случай [ Cкачайте файл, чтобы посмотреть картинку ]: [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]по теореме Эйлера-Ферма.
Пример. Пусть [ Cкачайте файл, чтобы посмотреть картинку ]выбрал и вычислил следующие числа [ Cкачайте файл, чтобы посмотреть картинку ], а [ Cкачайте файл, чтобы посмотреть картинку ]- следующие [ Cкачайте файл, чтобы посмотреть картинку ]. После занесения записей о [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]в открытую книгу паролей, [ Cкачайте файл, чтобы посмотреть картинку ]решает послать сообщение [ Cкачайте файл, чтобы посмотреть картинку ]для [ Cкачайте файл, чтобы посмотреть картинку ]. Т\dsk к. [ Cкачайте файл, чтобы посмотреть картинку ], то сообщение сначала шифруется ключом [ Cкачайте файл, чтобы посмотреть картинку ], а затем ключом [ Cкачайте файл, чтобы посмотреть картинку ]: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]. Сообщение [ Cкачайте файл, чтобы посмотреть картинку ]отправляется [ Cкачайте файл, чтобы посмотреть картинку ]. Получив [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], зная, что оно пришло от [ Cкачайте файл, чтобы посмотреть картинку ], дешифрует его сначала ключом [ Cкачайте файл, чтобы посмотреть картинку ], а затем ключом [ Cкачайте файл, чтобы посмотреть картинку ]: [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
Если подписать сообщение открытым образом, например, именем отправителя, то такая "подпись" будет ничем не защищена от подделки. Защита электронной подписи обычно реализуется с использованием таких же методов, что в криптосистеме с открытым ключом.
Электронная подпись генерируется отправителем по передаваемому сообщению и секретному ключу. Получатель сообщения может проверить его аутентичность по прилагаемой к нему электронной подписи и открытому ключу отправителя.
Стандартные системы электронной подписи считаются настолько надежными, что электронная подпись юридически приравнена к рукописной. Электронная подпись часто используется с открытыми, незашифрованными электронными документами.
Стандарт шифрования данных
В 1977 году в США был предложен стандарт для шифрования данных - DES (Data Encryption Standard), разработанный в IBM. В 1980 он был одобрен ведущей мировой организацией по стандартам - ANSI. В настоящее время алгоритм DES широко используется для защиты коммерческой информации.
DES - это классическая криптосистема с открытым способом шифровки и дешифровки, секретность которой обеспечивается исключительно ключом. Основные достоинства DES:
используется только один ключ фиксированной длины 56 бит (в системах с открытым ключом длина ключа должна быть более 300 бит);
зашифровав сообщение с помощью одной программы, для расшифровки можно использовать другую;
относительная простота алгоритма обеспечивает высокую скорость работы (как минимум, на порядок выше скорости работы алгоритма для криптосистемы с открытым ключом);
достаточно высокая стойкость алгоритма (стойкость конкретного зашифрованного сообщения зависит от выбора ключа).
Главный недостаток DES связан с его классической организацией, т.е. с необходимостью обеспечивать сверхнадежный канал для передачи ключей.
Алгоритм DES предназначен для шифровки ровно 64 бит исходных данных - более длинные сообщения должны разбиваться на части длиной 64 бита, а более короткие дополняться нулями или пробелами. Собственно шифровка и дешифровка обеспечиваются многократными битовыми перестановками в исходном сообщении, определяемыми стандартными перестановочными матрицами и ключом.
Примером программы, реализующей алгоритм DES, является программа DISKREET из пакета Norton Utilities.
12. Лекция: Информация в Internet
В Интернете используется множество различных форматов данных. Некоторые из них используются довольно часто, некоторые реже. Как же связать это бесчисленное множество различных форматов с теорией информации? Данная лекция дает ответы на эти и другие вопросы. Дается понятие сущности компьютерного шрифта, текстов с разметкой и их применение, язык логической разметки HTML. TeX как язык программирования в академических кругах. Также рассматривается формат PDF как самый популярный формат создания, хранения и передачи электронных книг
Самый распространенный тип данных в компьютерном мире - это текстовые файлы, которые непосредственно в той или иной мере понятны для человека, в отличие от бинарных файлов, ориентированных исключительно на компьютерные методы обработки. С использованием текстовых файлов связаны две проблемы.
Первая заключается в сложности единообразного представления символов текста. Для представления английских текстов достаточно ASCII. Для работы с другими языками на основе латинского алфавита, языками на основе кириллицы и некоторыми другими нужно уже несколько десятков наборов расширенного ASCII. Это означает, что одному и тому же коду, большему 127, в каждом наборе соответствует свой символ. Ситуацию усложняет и то, что для некоторых языков, в частности, русского существует несколько наборов ASCII+. Кроме того, необходимо, чтобы все символы каждого языка помещались в один набор, что невозможно для таких языков, как китайский или японский. Таблица кодировки Unicode, предназначенная для постепенной замены ASCII, - 16-разрядная, что позволяет представить 65536 кодов. Она широко используется в Linux и Microsoft Windows. Варианты Unicode позволяют использовать 31-разрядное кодирование. Использование Unicode требует переделки всех программ, рассчитанных для работы с текстами ASCII.
Для того, чтобы увидеть символы, соответствующие кодам из текстового файла, каждому коду нужно сопоставить визуальное представление символа из выбранного шрифта.
Компьютерный шрифт - это набор именованных кодами рисунков знаков.
Таким образом, чтобы интерактивно работать с текстовым файлом необходимо знать его кодировку (из текстовых файлов, как правило, прямой информации о кодировке получить нельзя - ее надо знать или угадать!) и иметь в системе шрифт, соответствующий этой кодировке.
Вторая проблема связана с тем, что такие средства как курсивный, полужирный или подчеркнутый текст, а также графики, диаграммы, примечания, звук, видео и т.п. элементы электронных документов, выходят за рамки естественных, интуитивных элементов текста и требуют соглашений по их использованию, что приводит к возникновению различных форматов текстовых данных. Последние иногда даже не ориентированы на непосредственную работу с ними человека, фактически не отличаясь по назначению в таких случаях, от бинарных данных.
Внесение в простой текст (plain text) дополнительной информации об его оформлении или структуре осуществляется при помощи разметки текста (markup). Различают физическую или процедурную разметку и логическую или обобщенную разметку.
При физической разметке точно указывается, что нужно сделать с выбранным фрагментом текста: показать курсивным, приподнять, центрировать, сжать, подчеркнуть и т.п. При логической разметке указывается структурный смысл выбранного фрагмента: примечание, начало раздела, конец подраздела, ссылка на другой фрагмент и т.п.
Для печати документа на принтере или показе на экране используется физическая разметка. Исторически она появилась первой, но имеет очевидные недостатки. Например, в Америке и Европе существуют разные стандарты на размер писчей бумаги, наборы шрифтов и размер экрана меняются от системы к системе, - подобные обстоятельства требуют трудоемкого изменения физической разметки текста при использовании одного и того же документа на разных компьютерах. Кроме того, физическая разметка, как правило, привязана к конкретным программным средствам, время жизни которых ограничено, что не позволяет вести архивы документации без риска через несколько десятков лет остаться без средств для работы с ними.
Логическую разметку всегда можно преобразовать в физическую, используя таблицу стилей, которая представляет собой перечисление способов отображения каждого логического элемента. Таким образом, имея наборы документов в логической разметке можно всегда при печати придавать им наиболее привлекательный вид, своевременно получая от специалистов-дизайнеров новейшие таблицы стилей. Преобразование физической разметки в логическую формальными средствами практически невозможно.
Основные форматы текста с разметкой:
HTML - Hyper Text Markup Language, язык разметки гипертекста;
XML - eXtensible Markup Language, расширяемый язык разметки;
SGML - Standard Generalized Markup Language, стандартный язык обобщенной разметки;
TeX;
PostScript;
PDF - Portable Document Format, формат для переносимых документов, или Acrobat (частично бинарный).
Документы в Internet часто публикуются в обработанном программами сжатия данных виде. Наиболее используемые форматы сжатия - это zip и tgz (tar.gz). Формат tgz - это результат конвейерного применения команд: сначала tar (собирает файлы и каталоги в один файл с сохранением структуры каталогов) и затем gzip.
Часто в Internet нужно преобразовывать бинарные данные в текстовые (для отправке по электронной почте, например) и затем наоборот. Для этого, в частности, служат программы uuencode (перевести в текст) и uudecode (перевести из текста). В текстовом файле закодированный текстом бинарный файл помещается между строками, начинающимся со слов begin и end. Строка begin должна содержать атрибуты и имя бинарного файла.
HTML, XML и SGML
World Wide Web (WWW, всемирная паутина) базируется на трех стандартах: URI (Universal Resource Identifier, универсальный идентификатор ресурса, раньше назывался URL) - предоставляет стандартный способ задания местоположения любого ресурса Internet, HTTP (Hyper Text Transfer Protocol, протокол передачи гипертекста), HTML - язык страниц WWW.
HTML - язык логической разметки, хотя и допускающий возможность рекомендовать ту или иную физическую разметку выбранного фрагмента текста. Конкретная физическая разметка документа зависит от программы-браузера (browser), используемой для его просмотра. Документы HTML из-за содержащихся в них, как правило, большого количества ссылок на другие документы HTML, с которыми они образуют единое целое, мало приспособлены для распечатки на принтере.
Имя файла с документом HTML имеет обычно расширение html или htm. Существуют ряд программ, позволяющих создавать документы HTML в визуальном режиме и не требующих от их пользователя знания HTML. Но создать сложный интерактивный документ без такого знания непросто.
Элементы разметки HTML состоят из тегов (tag). Теги заключаются в угловые скобки, у них, как правило, есть имя и они могут иметь дополнительные атрибуты. Например, тег имеет имя A (anchor, якорь), атрибут HREF со значением "http://www.linux.org".
Некоторые теги самодостаточны, например, тег разрыва строки
(break), но большинство тегов - это пары из открывающего (start tag) и закрывающего (end tag) тегов. Имя закрывающего тега отличается от имени открывающего только тем, что перед ним ставится наклонная черта (slash). Например, если имя открывающего тега A, то имя закрывающего - /A. Открывающий и закрывающий теги обрамляют некоторый фрагмент текста, вместе с которым они образуют элемент текста. Элементы текста могут быть вложенными.
Парные теги EM (emphasis, выделение), STRONG (особо выделить), CITE (цитата или ссылка), CODE (компьютерная программа), SAMP (sample, текст примера), STRIKE (зачеркнуть) и некоторые другие позволяют логически выделить фрагменты текста, а парные теги B (bold, полужирный), I (italic, курсив), U (undelined, подчеркнутый), TT (typewriter, пишущая машинка), SUB (subscript, нижний индекс), SUP (superscript, верхний индекс) и другие - рекомендовать физически выделить фрагмент текста указанным образом.
Полный документ представляет собой один элемент текста HTML. Заголовки - это элементы H1, H2, H3 и т.д. Число после H (header) - это уровень вложенности заголовка, т.е. H1 - это заголовок всего документа, H2 - заголовок раздела документа, H3 - подраздела и т.д. Абзацы - это элементы P (paragraph). Элементы PRE (preformatted) должны отображаться браузером с таким же разбиением на строки как и в исходном документе.
Специальные символы можно ввести в документ, используя их имена (entity), заключенные между знаками & и точка с запятой. Например, сам знак & можно ввести как &, а знак кавычка - ".
Ссылки и маркеры, объявляются при помощи атрибутов HREF и NAME соответственно. Например, элемент
- это метка, на которую можно ссылаться по имени chapter3, используя, например, ссылку Глава 3.
Тег IMG (image, образ) позволяет вставить графическую картинку в документ, используя два основных атрибута: SRC (source, источник) для указания URI файла с графикой и ALT (alternative, альтернатива) для указания альтернативного текста, показываемого вместо картинки, в случае, когда файл с графикой недоступен или его тип неизвестен браузеру.
Документы HTML могут быть использованы для интерактивной работы. Например, элемент FORM позволяет пользователю web-страницы передать введенную в страницу информацию на HTTP-сервер. Элемент FORM может содержать разнообразные кнопки, списки, всплывающие меню, однострочные и многострочные текстовые поля и другие компоненты. Обработкой введенных, переданных на сервер данных и созданием динамических HTML-документов в ответ на них занимаются специальные программы, CGI-скрипты (common gate interface), установленные на сервере.
Комментарии вводятся между символами .
HTML содержит средства для описания данных в виде таблиц и использования таблиц стилей. HTML использует стандартные системные шрифты, т.е. не существует шрифтов специально для www-страниц.
Имена файлов-документов SGML, как правило, имеют расширение sgml. SGML с начала 1970-х разрабатывался фирмой IBM, а с 1986 года принят в качестве международного стандарта (ISO 8879) для формата документов с логической разметкой. Сначала документ SGML содержит описание вида кодирования и разметки текста и затем сам размеченный текст. HTML - это SGML с фиксированной разметкой. Создатели технологии WWW отказались от полной поддержки SGML только потому, что в начале 1990-х системы, которые могли работать с SGML в реальном времени были очень дороги.
Элементы SGML делятся на четыре категории:
описательные маркеры - определяют структуру документа - им соответствуют элементы разметки HTML типа H1, P, A, IMG и т.п.;
ссылки на данные - им соответствуют элементы разметки HTML типа &
описательные конструкции компонент документа в их структурной взаимосвязи - они не входят в HTML, но определяют его. Их рекомендуется начинать с комбинации знаков >. Примером конструкции, определяющей ссылку &ref; на словосочетание "The Reference" будет ;
инструкции по обработки текста - их рекомендуется заключать между знаками - они вводят элементы текста, ориентированного на конкретную, зависящую от системы обработку (физическую разметку). В HTML с их помощью, например, вставляют код для обработки на сервере WWW страниц.
Документы SGML можно конвертировать как в гипертекст, так и в любой формат, ориентированный на распечатку, например, TeX или Microsoft Word. Ведение документации в формате SGML во многих отношениях оптимально.
С 1996 официально идет разработка формата XML - подмножества SGML, которое предполагается использовать в Internet наряду с HTML. Преимущество XML перед HTML в его четкой связи с SGML, что позволяет стандартным образом вводить в документ новые конструкции, избегая тем самым неконтролируемого введения в язык новых возможностей, как это происходит с HTML.
Упражнение 53 Как на HTML описать заголовок первого уровня "Глава 2", на который можно будет ссылаться по имени "2"?
TeX
Известный американский математик и теоретик программирования Дональд Кнут (D. E. Knuth) более 10 лет с конца 1970-х годов разрабатывал систему верстки книг TeX (произносится "тех"). Существует множество расширений возможностей базового (plain) TeX. TeX популярен прежде всего в академических кругах, т.к. в целом он весьма сложен для изучения. В отличие от систем, ориентированных на интерпретацию разметки, подобных Microsoft Word или Sun Star Writer, TeX - компилирующая система. Результат компиляции документа TeX - это файл в бинарном формате dvi (device independent), который можно, используя драйверы конкретных устройств (принтеров, экрана), распечатать. TeX использует собственную систему масштабируемых шрифтов, которые масштабируются не в реальном времени, интерпретацией как шрифты True Type или PostScript, а компиляцией при помощи программы METAFONT. В Internet доступны тексты программ TeX и METAFONT - они написаны на Паскале. Шрифты METAFONT написаны на специальном языке, с декларативным синтаксисом. TeX позволяет также использовать шрифты True Type и Adobe Type 1 и Type 3. Прочитать и понять содержимое документа TeX несложно, но скомпилировать и распечатать, а тем более создать новый документ без помощи специалиста или основательной подготовки непросто. Однако TeX до сих пор является почти единственной доступной бесплатно системой, позволяющей получать документы типографского качества. В plain TeX используется физическая разметка, а в наиболее популярном его расширении LaTeX также и логическая. TeX - это язык макросов, большинство из которых начинаются с символа обратная косая черта и состоят затем из букв. Например, запись в документе plain TeX \centerline{Это {\ it мой} заголовок} означает центрировать строку-абзац "Это мой заголовок", напечатав слово "мой" в нем курсивом, а запись $$\int_1^{}x\{dt\ over t}=\ln x$$ - формулу
[ Cкачайте файл, чтобы посмотреть картинку ]
TeX - это особый язык программирования. Энтузиасты TeX написали на нем интерпретатор языка Бэйсик. Документы TeX могут иметь очень сложную структуру и из-за этого их в общем случае нельзя конвертировать в другие форматы. Документы HTML или Microsoft Word теоретически можно всегда конвертировать в формат TeX.
Система GNU texinfo основана на TeX, но использует совершенно другой набор макросов. Макросы в этой системе должны начинаться со знака @. Документы texinfo можно преобразовать как в документ HTML, так и в качественную распечатку. В отличие от SGML, средства для такого преобразования - это часть системы texinfo. Возможности texinfo для верстки документов несколько ограниченней по сравнению с другими развитыми TeX-системами.
Расширения имен файлов документов TeX - tex; LaTeX - tex, latex, ltx, sty (стили) и др.; METAFONT - mf (исходные программы шрифтов), tfm (метрики шрифтов, нужны на этапе компиляции документа TeX), pk (матрицы шрифтов, нужны при печати dvi-файла); texinfo - texi, texinfo.
PostScript и PDF
PostScript - это универсальный язык программирования (имеет много общего с языками Форт и Лисп), предоставляющий большой набор команд для работы с графикой и шрифтами. Он является фактическим международным стандартом издательских систем. Разрабатывается фирмой Adobe Systems с первой половины 1980-х. Используется, как встроенный язык принтеров для высококачественной печати, а также некоторыми системами X Window при выводе данных на экран дисплея. Существуют и программы-интерпретаторы языка PostScript. Лучшая из них - это Ghostscript. Программа GhostView предоставляет удобный оконный интерфейс для Ghostscript и существует для большинства ОС.
PostScript-программы можно писать вручную, но обычно текст PostScript генерируется автоматически программами вывода данных. Расширения имен файлов с PostScript-программой - это, как правило, ps, eps (Encapsulated PostScript, файл-картинка с заданными размерами), pfa (шрифт), pfb (бинарное представление pfa), afm (метрики шрифта, могут быть частично получены из соответствующего pfa-файла), pfm (бинарное представление afm).
Преимущество формата PostScript в том, что он, как и формат DVI, независим от физических устройств воспроизведения. Один и тот же PostScript-файл можно выводить как на экран с разрешением 72 dpi (dot per inch, точек на дюйм) или лазерный принтер с разрешением 600 dpi, так и на типографскую аппаратуру с разрешением 2400 dpi, имея гарантии, что изображение будет наилучшего качества, возможного на выбранной аппаратуре. Возможности PostScript перекрывают возможности DVI, поэтому некоторые TeX-системы при компиляции документов производят сразу файлы в формате PostScript или PDF.
Файлы PostScript можно вручную корректировать, но из-за сложности языка - это очень не просто, особенно если используются символы, не входящие в ASCII. Фактически эти файлы можно рассматривать как "только для чтения" и использовать для распространения информации, не подлежащей изменению. Комментарии в PostScript, как и в TeX, начинаются знаком % и заканчиваются концом строки. Первая строчка PostScript-программы обычно содержит точное название формата файла. Собственно программа начинается в файле с символов %! и заканчивается символами %%EOF. PostScript-программы кроме собственной системы шрифтов могут использовать шрифты True Type фирм Apple и Microsoft.
Различают уровни (levels) языка PostScript. Уровень 1 может поддерживать только черно-белую графику. Уровень 2 может работать с цветом. Уровень 3 - это современное состояние языка.
Данные из файла PostScript можно показывать по мере их поступления, что удобно для использования в Internet. Однако есть две причины, по которым документы PostScript сравнительно редко включаются в web-страницы:
они весьма велики по размерам (этот недостаток снимается программами сжатия, работающими в реальном времени);
они могут содержать в себе шрифты, защищенные авторскими правами (шрифты их владелец может использовать при печати, но не распространять).
Файлы в формате PDF лишены двух означенных недостатков: они сжаты и из них сложно извлечь отдельные шрифты, - поэтому они стали фактическим стандартом Internet для обмена документами, не подлежащими изменению. Программы для просмотра PDF-файлов доступны бесплатно. Наиболее используемая из них - это Adobe Acrobat Reader. Первая строчка файла в формате PDF начинается со знака %, за которым следует идентификационная запись версии формата PDF, используемой в этом файле. Далее, как правило, идут бинарные данные. Расширение имени PDF-файла - pdf.
Между документами PostScript и PDF можно осуществлять взаимно-однозначное преобразование, хотя PDF в отличие от PostScript - это не язык программирования, а скорее язык описания документа.
Дополнительные материалы: Управляющие коды ASCII
[ Cкачайте файл, чтобы посмотреть ссылку ][ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ][ Cкачайте файл, чтобы посмотреть ссылку ]
Код
Полное имя кода в Unicode (краткое имя в ASCII)

10-й
16-й
Клавиатурный


Перевод имени кода описание использования кода.

Выше представлен шаблон для следующей далее таблицы управляющих символов. Под клавиатурным кодом подразумевается комбинация двух клавиш, Ctrl (Control, в таблице это знак ^) и приводимой, одновременное нажатие которых должно производить соответствующий код.
0
00
^@
NULL (NUL)

Пусто этот код используется как завершающий в представлении строк многими системами программирования, например, Си, поэтому его использование в текстовых файлах крайне нежелательно.

1
01
^A
START OF HEADING (SOH)

Начало заголовка практически не используется.

2
02
^B
START OF TEXT (STX)

Начало текста практически не используется.

3
03
^C
END OF TEXT (ETX)

Конец текста в Unix и MS-DOS ввод этого символа с клавиатуры служит сигналом для прекращения выполнения программы.

4
04
^D
END OF TRANSMISSION (EOT)

Конец передачи в Unix и PostScript означает конец вводимых данных.

5
05
^E
ENQUIRY (ENQ)

Кто там? практически не используется.

6
06
^F
ACKNOWLEDGE (ACK)

Подтверждение, да практически не используется.

7
07
^G
BELL (BEL)

Звонок при его печати на консоли MS-DOS или Unix должен производиться звуковой сигнал.

8
08
^H
BACKSPACE (BS)

Возврат на шаг означает, что следующий символ следует печатать с предшествующей позиции.

9
09
^I
HORISONTAL TABULATION (TAB)

Горизонтальная табуляция переход на следующую позицию табуляции.

10
0A
^J
LINE FEED (LF)

Подача новой строки - на новую строку. В текстовых файлах MS-DOS и Microsoft Windows с сохранением текущей горизонтальной позицию. В текстовых файлах Unix с переходом на первую горизонтальную позицию.

11
0B
^K
VERTICAL TABULATION (VT)

Вертикальная табуляция используется очень редко, как правило, принтерами.

12
0C
^L
FORM FEED (FF)

Подача новой формы для консоли, как правило, означает очистку экрана, для принтера завершение печати на текущем листе и запрос нового.

13
0D
^M
CARRIAGE RETURN (CR)

Возврат каретки переход на первую горизонтальную позицию строки. В текстовых файлах MS-DOS и Microsoft Windows с сохра- нением текущей строки, а в текстовых файлах Macintosh OS с пере- ходом на новую строку. В текстовых файлах Unix не используется.

14
0E
^N
SHIFT OUT (SO)

Выход используется очень редко, как правило, принтерами.

15
0F
^O
SHIFT IN (SI)

Вход используется очень редко, как правило, принтерами.

16
10
^P
DATA LINK ESCAPE (DLE)

Авторегистр 1 практически не используется.

17
11
^Q
DEVICE CONTROL ONE (DC1)

Используется некоторыми телекоммуникационными протоколами как байт X-ON.

18
12
^R
DEVICE CONTROL TWO (DC2)

Практически не используется.

19
13
^S
DEVICE CONTROL THREE (DC3)

Используется некоторыми телекоммуникационными протоколами как байт X-OFF.

20
14
^T
DEVICE CONTROL FOUR (DC4)

Практически не используется.

21
15
^U
NEGATIVE ACKNOWLEDGE (NAK)

Нет практически не используется.

22
16
^V
SYNCHRONOUS IDLE (SYN)

Синхронизация практически не используется.

23
17
^W
END OF TRANSMISSION BLOCK (ETB)

Конец блока практически не используется.

24
18
^X
CANCEL (CAN)

Аннулирование используется очень редко, как правило, принте- рами.

25
19
^Y
END OF MEDIUM (EM)

Конец носителя практически не используется.

26
1A
^Z
SUBSTITUTE (SUB)

Замена в MS-DOS, Macintosh OS и CP/M это маркер конца текстового файла.

27
1B
^[
ESCAPE (ESC)

Авторегистр 2 указывает на то, что некоторое количество кодов после него и он сам образуют группу, рассматриваемую как один код.

28
1C
^\
FILE SEPARATOR (FS)

Разделитель файлов практически не используется.

29
1D
^]
GROUP SEPARATOR (GS)

Разделитель групп практически не используется.

30
1E
^^
RECORD SEPARATOR (RS)

Разделитель записей практически не используется.

31
1F
^-
UNIT SEPARATOR (US)

Разделитель элементов практически не используется.

127
7F
^
DELETE (DEL)

Забой удаление последнего видимого знака печатаемой строки.

В "чисто" текстовых (plain text) файлах допустимы только управ- ляющие символы, отмечающие концы строк и, как правило, переходы на позиции табуляции (код 9). Маркер конца строки в Unix это код 10, в Macintosh OS 13, в CP/M, MS-DOS и Microsoft Windows последовательность 13, 10.
Кодировка видимых символов ASCII






[ Cкачайте файл, чтобы посмотреть картинку ]

Кодировка букв русского алфавита

В настоящее время наиболее широко используются пять (!) различных таблиц кодировки для формального представления русских букв:
I. ISO 8859-5 - международный стандарт;
II. Кодовая страница 866 (Microsoft CP866) - используется в MS-DOS;
III. Кодовая страница 1251 (Microsoft CP1251) для Microsoft Windows;
IV. На базе ГОСТ КОИ-8, koi8-r - применяется в мире Unix;
V. Unicode - используется в Microsoft Windows, Unix и клонах Unix.
Основная кодировка ГОСТ (государственный стандарт СССР) от 1987 года создана на основе рекомендаций ISO и в дальнейшем стала основой для представления знаков русских букв в Unicode. В ней и в кодировках II, III и V все буквы кроме ё и Ё расположены в алфавитном порядке. На практике эту кодировку можно встретить только на старых IBM PC совместимых компьютерах ЕС-1840 и в некоторых принтерах. Internet браузеры обычно поддерживают ее наряду с кодировками II-IV.
Кодировка CP866, разработанная на основе альтернативной кодировки ГОСТ, создана специально для ОС MS-DOS, в которой часто используются символы псевдографики. В этой кодировке эти символы имеют те же коды, что и в стандартном IBM PC совместимом компьютере.
Альтернативная кодировка ГОСТ, которая имеет два варианта, совпадает с CP866 по позициям для букв русского алфавита и знакам псевдографики. Основная кодировка ГОСТ совпадает с ISO 8859-5 только по всем знакам русских букв, кроме заглавной буквы Ё.
Использование CP1251 обусловлено почти исключительно влиянием на компьютерные технологии разработок фирмы Microsoft. В ней наиболее полно по сравнению с I, II, IV представлены такие символы как ©, ®, №, различные виды кавычек и тире и т. п.
Кодировка koi8-r основана на стандартах по обмену информацией, используемых на компьютерах под управлением ОС Unix, CP/M и некоторых других с середины 1970-х. В 1993 она стандартизирована в Internet документом RFC1489.
Кодировка Unicode опирается на каталог символов UCS (Universal Character Set) стандарта ISO 10646. UCS может содержать до 231 различных знаков. Коды UCS-2 - 2-байтные, UCS-4 - 4-байтные. Используются также коды переменной длины UTF-8 (Unicode Transfer Format) - 1 -6-байтные, наиболее совместимые с ASCII, и UTF-16 - 2 или 4-байтные. Unicode в прикладных программах реализуется лишь частично, и в полном объеме пока нигде не поддерживается. В Linux используется UTF-8.
Достаточно широко используется кодирование на основе ASCII:
VI. На базе КОИ-7 - можно использовать при отсутствии кириллических шрифтов, код получается вычитанием 128 от соответствующего кода в koi8-r, что, как правило, дает код латинской буквы, близкой фонетически к русской.
В кодировке VI нет видимого символа для Ъ.
Далее следует таблица, в которой представлены все перечисленные способы кодирования букв русского алфавита. В этой таблице в колонке 1 находятся символы букв, в колонке 2 часть названия букв в Unicode 3.2 (названия строчных кириллических букв начинается словами CYRILLIC SMALL LETTER, а заглавных - CYRILLIC CAPITAL LETTER, т. о., полное название буквы Д - CYRILLIC CAPITAL LETTER DE), в колонках с I по V коды десятичные и шестнадцатеричные соответствующих таблиц кодировки, а в колонке VI - символ ASCII для КОИ-7.
Кроме перечисленных можно встретить еще используемую до введения кодировок ГОСТ болгарскую кодировку, называемую также MIC, Interprog или "старый вариант ВЦ АН СССР". На компьютерах под управлением Macintosh OS используется также своя собственная таблица кодировки для русских букв, по своему набору знаков почти совпадающая с CP1251.
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]

Элементы теории чисел
Каноническим разложением числа [ Cкачайте файл, чтобы посмотреть картинку ]называется разложение его на простые сомножители в виде [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ]- все различные простые делители числа [ Cкачайте файл, чтобы посмотреть картинку ], а [ Cкачайте файл, чтобы посмотреть картинку ]- целые положительные числа.
Функцией Эйлера называется, отображение [ Cкачайте файл, чтобы посмотреть картинку ],
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]- каноническое разложение [ Cкачайте файл, чтобы посмотреть картинку ].
Например, [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
Числа [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]называются взаимно простыми, если у них нет общих делителей больших 1, т.е. [ Cкачайте файл, чтобы посмотреть картинку ].
Функция Эйлера от числа [ Cкачайте файл, чтобы посмотреть картинку ]равна числу чисел меньших [ Cкачайте файл, чтобы посмотреть картинку ]и взаимно простых с m [6].
Для взаимно простых [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]верно равенство [ Cкачайте файл, чтобы посмотреть картинку ][6].
Число примитивных многочленов степени [ Cкачайте файл, чтобы посмотреть картинку ]над полем [ Cкачайте файл, чтобы посмотреть картинку ]равно [ Cкачайте файл, чтобы посмотреть картинку ][12].
Теорема Эйлера-Ферма[ Cкачайте файл, чтобы посмотреть ссылку ]. Для взаимно простых [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]имеет место соотношение [ Cкачайте файл, чтобы посмотреть картинку ].
Для решения уравнения [ Cкачайте файл, чтобы посмотреть картинку ], где [ Cкачайте файл, чтобы посмотреть картинку ], можно использовать теорему Эйлера-Ферма, т.е. [ Cкачайте файл, чтобы посмотреть картинку ], но это весьма трудоемкий способ. Получим решения искомого уравнения через формулу для решения эквивалентного уравнения [ Cкачайте файл, чтобы посмотреть картинку ].
По алгоритму Евклида для получения НОД двух заданных чисел нужно одно число делить на другое, затем делить делитель на получаемый остаток до тех, пока остаток не станет равным нулю. Последний больший нуля остаток будет искомым НОД.
Для чисел [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]последовательность шагов алгоритма Евклида выглядит как
[ Cкачайте файл, чтобы посмотреть картинку ]
где [ Cкачайте файл, чтобы посмотреть картинку ]- остатки. Разложение [ Cкачайте файл, чтобы посмотреть картинку ]в цепную дробь по последовательности частных
[ Cкачайте файл, чтобы посмотреть картинку ]
имеет вид
[ Cкачайте файл, чтобы посмотреть картинку ]
Обозначим за [ Cкачайте файл, чтобы посмотреть картинку ]дробь, получаемую из приведенной цепной дроби отбрасыванием членов с индексами, большими [ Cкачайте файл, чтобы посмотреть картинку ]. Например, [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ]и т.д. Числитель, [ Cкачайте файл, чтобы посмотреть картинку ], и знаменатель, [ Cкачайте файл, чтобы посмотреть картинку ], можно вычислять рекуррентно по следующим формулам:
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
По определению [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]. Кроме того,
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
или
[ Cкачайте файл, чтобы посмотреть картинку ]
что означает
[ Cкачайте файл, чтобы посмотреть картинку ]
т.е. [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
Процесс получения числителей и знаменателей удобно оформить в виде таблицы:
[ Cкачайте файл, чтобы посмотреть картинку ]
Таким образом, корни уравнения [ Cкачайте файл, чтобы посмотреть картинку ]вычисляются по формуле [ Cкачайте файл, чтобы посмотреть картинку ].
Пример. Решить уравнение [ Cкачайте файл, чтобы посмотреть картинку ]. Сначала по алгоритму Евклида получается следующая цепочка соотношений:
[ Cкачайте файл, чтобы посмотреть картинку ]
Затем составляется таблица для вычисления [ Cкачайте файл, чтобы посмотреть картинку ]
[ Cкачайте файл, чтобы посмотреть картинку ]
Таким образом, искомый [ Cкачайте файл, чтобы посмотреть картинку ]равен 151925.
Гипотеза. Задача разложения целого числа с заданным числом разрядов на множители является труднорешаемой
Задача называется труднорешаемой, если время ее решения зависит от объема входных данных по экспоненциальному закону и не может быть сведено к полиномиальному}.
На сегодняшний день существуют весьма быстрые алгоритмы для проверки данного числа на простоту, но для разложения 200-значного числа на множители лучшим современным компьютерам по лучшим современным алгоритмам может потребоваться миллиарды лет.
Эта гипотеза лежит в основе методов Диффи-Хеллмана.
Используемые обозначения
[ Cкачайте файл, чтобы посмотреть ссылку ][ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть ссылку ][ Cкачайте файл, чтобы посмотреть ссылку ]
[ Cкачайте файл, чтобы посмотреть картинку ]- вероятность события [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- вероятность события [ Cкачайте файл, чтобы посмотреть картинку ], если известно, что событие [ Cкачайте файл, чтобы посмотреть картинку ]произошло. Условная вероятность.
[ Cкачайте файл, чтобы посмотреть картинку ]- вероятность одновременного наступления событий [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- множество натуральных чисел.
[ Cкачайте файл, чтобы посмотреть картинку ]- множество из 0 и 1 - [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- множество вещественных чисел.
[ Cкачайте файл, чтобы посмотреть картинку ]- числовая плоскость.
[ Cкачайте файл, чтобы посмотреть картинку ]- сумма [ Cкачайте файл, чтобы посмотреть картинку ]по всем возможным значениям индекса [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- сумма [ Cкачайте файл, чтобы посмотреть картинку ]по всем возможным значениям пар индексов [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- биномиальный коэффициент в формуле бинома Ньютона
[ Cкачайте файл, чтобы посмотреть картинку ]
или число возможных разных выборок [ Cкачайте файл, чтобы посмотреть картинку ]элементов из множества из [ Cкачайте файл, чтобы посмотреть картинку ]элементов, число сочетаний из [ Cкачайте файл, чтобы посмотреть картинку ]по [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- размерность вектора [ Cкачайте файл, чтобы посмотреть картинку ], число компонент [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- количество элементов в множестве [ Cкачайте файл, чтобы посмотреть картинку ], мощность [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- наибольший общий делитель [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- наименьшее общее кратное [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- числа [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ]сравнимы по модулю [ Cкачайте файл, чтобы посмотреть картинку ], т. е. разность [ Cкачайте файл, чтобы посмотреть картинку ]делится на [ Cкачайте файл, чтобы посмотреть картинку ]нацело.
[ Cкачайте файл, чтобы посмотреть картинку ]- функция [ Cкачайте файл, чтобы посмотреть картинку ]с областью определения [ Cкачайте файл, чтобы посмотреть картинку ]и областью, содержащей все значения [ Cкачайте файл, чтобы посмотреть картинку ], [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- композиция функций [ Cкачайте файл, чтобы посмотреть картинку ]и [ Cкачайте файл, чтобы посмотреть картинку ], т.е. [ Cкачайте файл, чтобы посмотреть картинку ].
[ Cкачайте файл, чтобы посмотреть картинку ]- поле над множеством [ Cкачайте файл, чтобы посмотреть картинку ]с аддитивной операцией [ Cкачайте файл, чтобы посмотреть картинку ]и мультипликативной операцией [ Cкачайте файл, чтобы посмотреть картинку ].

\setbox\bzero=\vbox{\hsize=120pt{\prg var i: byte; begin \ for i := 32 to 126 do \ write(i:6, chr(i):2); \ writeln end\rm.}} \centerline{\box\bzero}A\sin(\omega t+\varphi)HX=0 \xLeftrightarrow XI(X,Y)\le I(X,X)e^{x-1}\ge xHY = -\sum_j q_j \log_2 q_j = -\sum_{i,j} p_{ij} \log_2 q_jHX+HY-H(X,Y) = \sum_{i,j} p_{ij} (\log_2 p_{ij} - \log_2 q_j - \log_2 p_i)= I(X,Y);HY-H(X,Y) = -\sum_{i,j} p_{ij} \log_2 q_j + \sum_{i,j} p_{ij} \log_2 p_{ij} = \sum_{i,j} p_{ij} \log_2(p_{ij}/q_j), \centerline{\hbox{\vbox{\offinterlineskip\halign{&\strut\hfil\ #\ \hfil\cr X_1& \vrule& 1& 2& 3& 4& 5& 6\cr \noalign{\hrule} p& \vrule& \span\span1/6\span\span\span\cr}} \vbox{\hbox{, т.е. при j=1...6 q_j=P(X_1=j)=1/6.}}}} p_i=P(X_1+X_2=i)=\sum\limits_{n+m=i\atop1\le n,m\le6}P(X_1=n) P(X_2=m)=\sum\limits_{n+m=i\atop1\le n,m\le6}1/36. \smallskip \setbox\bzero=\vbox{\offinterlineskip\halign{&\strut\hfil\ $#$\ \hfil\cr _{X_2}\bs^{X_1}& \vrule& 1& 2& 3& 4& 5& 6\cr \noalign{\hrule} 1& \vrule& 2& 3& 4& 5& 6& 7\cr 2& \vrule& 3& 4& 5& 6& 7& 8\cr 3& \vrule& 4& 5& 6& 7& 8& 9\cr 4& \vrule& 5& 6& 7& 8& 9& 10\cr 5& \vrule& 6& 7& 8& 9& 10& 11\cr 6& \vrule& 7& 8& 9& 10& 11& 12,\cr}} \setbox\bone=\vbox{\offinterlineskip \halign{&\strut\hfil\ $#$\ \hfil\cr Y=X_1+X_2& \vrule& 2& 3& 4& 5& 6& 7& 8& 9& 10& 11& 12\cr \noalign{\hrule} \omit& \omit\ \vrule height1pt\hfil\cr p& \vrule& \xfrac1{36}& \xfrac2{36}& \xfrac3{36}& \xfrac4{36}& \xfrac5{36}& \xfrac6{36}& \xfrac5{36}& \xfrac4{36}& \xfrac3{36}& \xfrac2{36}& \xfrac1{36},\cr}} \setbox\btwo=\hbox{\quad т.е.\ при $i=2...12$, $p_i=P(Y=i)=(6-|7-i|)/36$.} \dzero=\wd\bzero \advance\dzero\wd\bone \advance\dzero1em \box\bzero \smallskip \setbox\bone=\vbox{\offinterlineskip \halign{&\strut\hfil\ $#$\ \hfil\cr Y=X_1+X_2& \vrule& 2& 3& 4& 5& 6& 7& 8& 9& 10& 11& 12\cr \noalign{\hrule} \omit& \omit\ \vrule height1pt\hfil\cr p& \vrule& \xfrac1{36}& \xfrac2{36}& \xfrac3{36}& \xfrac4{36}& \xfrac5{36}& \xfrac6{36}& \xfrac5{36}& \xfrac4{36}& \xfrac3{36}& \xfrac2{36}& \xfrac1{36},\cr}} \setbox\btwo=\hbox{\quad то есть при $i=2...12$, $p_i=P(Y=i)=(6-|7-i|)/36$.} \dzero=\wd\bzero \advance\dzero\wd\bone \advance\dzero1em \ifdim \dzero<\hsize \centerline{\hbox{\box\bzero \quad \vbox{\box\bone \vskip4pt \box\btwo \copy\strutbox \copy\strutbox}}} \else \centerline{\box\bzero}\smallskip \centerline{\box\bone}\smallskip \centerline{\box\btwo}\fi \smallskip I(Y,X_1)= \sum^6_{j=1}\sum_{1\le i-j\le6}p_{ij}\log_2{p_{ij}\over p_iq_j}==(10+24\log_23-10\log_25)/36\approx0.69 \hbox{ бит/символ}.I(X_1,X_1)=I(X_2,X_2)=-\sum^6_{j=1}q_j\log_2q_j=\log_26= 1+\log_23\approx2.58 \hbox{ бит/символ}.0 < I(Y,X_1)=I(Y,X_2) < I(X_1,X_1)=I(X_2,X_2) < I(Y,Y){1\over36}2\log_26 = I(X_1,X_1)/18H(Y,X_1) = -\sum_{i,j} p_{ij}\log_2 p_{ij} = \log_236 = 2(1+\log_23) = 2HX_1 \approx 5.17 \hbox{ бит/символ}. \centerline{\vbox{\offinterlineskip\halign{&\strut\hfil\ #\ \hfil\cr X& \vrule& 1& 3& 5& 2& 4& 6&& 1& 3& 5& 2& 4& 6\cr Y& \vrule& 0& 0& 0& 1& 1& 1&& 1& 1& 1& 0& 0& 0\cr \noalign{\hrule} p& \vrule& \span\span1/6\span\span\span&&\span\span0\span\span\span\cr}}} p_{ij}=P(X=i,Y=j)= \begin{cases}0, &\text{\hskip-5.5pt если $i+j$ --- четно,}\\ 1/6, &\text{\hskip-5.5pt иначе.} \end{cases}I(Y,Y) = -\sum^1_{j=0}q_j\log_2q_j = 2{1\over2}\log_22 = 1 \hbox{ бит/символ}.I(X,Y) = HX+HY-HX = HY = 1 \hbox{ бит/символ}. \centerline{\vbox{\offinterlineskip\halign{&\strut\quad#\cr X&\omit\ \vrule& 1& 2& 3& 4& 5& 6& 7& 8\cr \noalign{\hrule} p&\omit\ \vrule& 0.1& 0.2& 0.1& 0.05& 0.1& 0.05& 0.3& 0.1.\cr}}} \smallskip HX={3\over4}\log_2{4\over3}+{1\over8}\log_28+{1\over8}\log_216= {19\over8}-{3\over4}\log_23\approx1.186 \hbox{ бит/сим}.\vbox{\offinterlineskip\halign{&\strut\quad#\cr X& \omit\ \vrule& 1& 3& 4& 5& 6\cr \noalign{\hrule} p& \omit\ \vrule& 0.4& 0.2& 0.1& 0.2& 0.1\cr code1(X)& \omit\ \vrule& 000& 001& 010& 011& 111\cr code2(X)& \omit\ \vrule& 0& 100& 101& 110& 111\cr code3(X)& \omit\ \vrule& 00& 01& 110& 10& 111\cr code4(X)& \omit\ \vrule& 0& 10& 1110&110& 1111.\cr}}inf(s) \ge 0s_2 \Rightarrow s_1ML(X) \ge HXHX \ge ML(X)-1HX_1 = HX_2\vec X=(X_1,X_2)L_1(\vec X)=L(\vec X)/nL_1(\vec X)ML_1(\vec X)\vec XML_1(\vec X)-1/n \le HX_1 \le ML_1(\vec X)\vec Y_1=(X_1,X_2,\ldots,X_s)H\vec Y_1=sHX_1ML_1(\vec Y_1) \le HX_1 + 1/s,X_1,X_2,\ldots X_n\vec X=(X_1,X_2)\vec XML_1(\vec X) \ge HX_1/\log_2mML(\vec X)-1 \le H\vec X/\log_2m\smallskip \setbox\bzero=\vbox{\offinterlineskip\halign{&\strut\hfil\ $#$\ \hfil\cr \noalign{\hrule} \omit\vrule& \vec X& 00&& 01&& 10&& 11& \omit\vrule height11pt\cr \omit\vrule& p& \xfrac9{16}&& \xfrac3{16}&& \xfrac3{16}&& \xfrac1{16}& \omit\vrule\cr \noalign{\hrule} \omit\vrule& & && && _0\!\searrow&& \swarrow_1& \omit\vrule\cr \omit\vrule& & && &&& {4\over16}&& \omit\vrule\cr \omit\vrule& & && \,_0\!\searrow&& \swarrow_1&&& \omit\vrule\cr \omit\vrule& & &&& {7\over16}&&&& \omit\vrule\cr \omit\vrule& & \,_0\!\searrow&& \swarrow_1&&&&& \omit\vrule\cr \omit\vrule& & & 1&&&&&& \omit\vrule\cr \noalign{\hrule} \omit\vrule& code(\vec X)& 0&& 10&& 110&& 111& \omit\vrule height 11pt\cr \noalign{\hrule}}} \setbox\bone=\hbox{ $ML_1(\vec X)=ML(\vec X)/2=27/32=0.84375$ бит/сим.} \dzero=\wd\bzero \advance\dzero\wd\bone \done=0pt \ifdim\hsize<\dzero \vbox{ \centerline{\box\bzero} \break \centerline{\box\bone} } \else \advance\dzero-\hsize \done-\dzero \noindent\hskip\done\hbox{\box\bzero \box\bone} \fi \bigskip \setbox\bzero=\vbox{\offinterlineskip\halign{&\strut\hfil\ #\ \hfil\cr \noalign{\hrule} \omit\vrule& $X$& A && B && C&\omit\vrule\cr \omit\vrule& $p$& 0.4 && 0.2 && 0.4&\omit\vrule\cr \noalign{\hrule} \omit\vrule& & && $_0\!\searrow$ && $\swarrow_1$&\omit\vrule\cr \omit\vrule& & && & 0.6&&\omit\vrule\cr \omit\vrule& & $\,_0\!\searrow$ &&$\,\swarrow_1$&&&\omit\vrule\cr \omit\vrule& & &\ 1&&&&\omit\vrule\cr \noalign{\hrule} \omit\vrule& $code(X)$& 0&& 10&& 11&\omit\vrule\cr \noalign{\hrule}}} \setbox\bone=\hbox{\ $ML_1(X)=ML(X)=1.6$ бит/сим.} \ifdim\done=0pt \centerline{\box\bzero}\centerline{\box\bone} \else \noindent\hskip\done\hbox{\box\bzero \box\bone} \fi \smallskip\dim(\vec X)=3,\; HX=H\vec X/3=\log_23-2/3\approx0.9183\hbox{ бит/сим.},\smallskip \centerline{\vbox{\offinterlineskip\let~\xfrac \halign{\strut\hfil#& $#$& $#$\hfil\vrule height 11pt& \hfil\ #\ \hfil\vrule&\ #\hfil\cr Интервалы и коды \span \span& Вероятность& Код Хаффмена\cr \noalign{\hrule} && 111[{26\over27},1]\ni{31\over32}=0.11111\kern2pt& $~1{27}$& \quad0000\cr & 11[{8\over9},1]\quad& 110[{8\over9},{26\over27}]\ni{15\over16}=0.1111& $~2{27}$& \quad0001\cr && 101[{22\over27},{8\over9}]\ni{7\over8}=0.111& $~2{27}$& \quad010\cr $1[{2\over3},1]$\quad& 10[{2\over3},{8\over9}]\quad& 100[{2\over3},{22\over27}]\ni{3\over4}=0.11& $~4{27}$& \quad001\cr && 011[{16\over27},{2\over3}]\ni{5\over8}=0.101& $~2{27}$& \quad011\cr & 01[{4\over9},{2\over3}]\quad& 010[{4\over9},{16\over27}]\ni{1\over2}=0.1& $~4{27}$& \quad100\cr && 001[{8\over27},{4\over9}]\ni{3\over8}=0.011& $~4{27}$& \quad101\cr $0[0,{2\over3}]$\quad& 00[0,{4\over9}]\quad& 000[0,{8\over27}]\ni{1\over4}=0.01& $~8{27}$& \quad11.\cr}}} $$ML_1(\vec X)=65/81\approx0.8025\hbox{ бит/сим. (арифметическое),}$$ $$ML_1(\vec X)=76/81\approx0.9383\hbox{ бит/сим. (блочный Хаффмена),}$$ $$ML_1(X)=ML(X)=1\hbox{ бит/сим. (Хаффмена).}$$\vec X% \smallskip \Treestyle{\vdist{20pt}} \def\xbnth#1{\bnth{\raise2ex\hbox{#1}}} \noindent{\hbox{\vbox{\offinterlineskip \halign{\strut\vrule\ \hfil#\hfil\ \vrule&&\ \hfil#\hfil\ \vrule\cr \noalign{\hrule} входные& \lowrow{1.2}{код}& длина& \numsign\cr данные& & кода& дерева\cr \noalign{\hrule} \omit\vrule height1pt\hfil\vrule& \omit\hfil\vrule& \omit\hfil\vrule& \omit\hfil\vrule\cr A& 'A'& 8& 1\cr C& 0'C'& 9& 2\cr C& 1& 1& 3\cr B& 00'B'& 10& 4\cr C& 1& 1& 5\cr A& 001& 3& 6\cr A& 01& 2& 7\cr A& 01& 2& 8\cr B& 001& 3& 9\cr C& 01& 2&\cr \noalign{\hrule}}}}% % \smallskip \Treestyle{\vdist{20pt}} \def\xbnth#1{\bnth{\raise2ex\hbox{#1}}} \beginTree%1 \node{\external\type{dot}\xbnth{0/\}} \node{\external\type{dot}\rght{1/A}} \node{\type{dot}\lft{1}} \endTree \setbox1=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%2 \node{\external\type{dot}\xbnth{0/\}} \node{\external\type{dot}\rght{1/A}} \node{\type{dot}\lft{1}} \node{\external\type{dot}\rght{1/C}} \node{\type{dot}\lft{2}} \endTree \setbox2=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%3 \node{\external\type{dot}\xbnth{0/\}} \node{\external\type{dot}\rght{1/A}} \node{\type{dot}\lft{1}} \node{\external\type{dot}\rght{2/C}} \node{\type{dot}\lft{3}} \endTree \setbox3=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%4 \node{\external\type{dot}\xbnth{0/\\ \ }} \node{\external\type{dot}\xbnth{\ \ 1/A}} \node{\type{dot}\lft{1}} \node{\external\type{dot}\xbnth{1/B}} \node{\type{dot}\lft{2}} \node{\external\type{dot}\xbnth{2/C}} \node{\type{dot}\lft{4}} \endTree \setbox4=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%5 \node{\external\type{dot}\xbnth{0/\\ \ }} \node{\external\type{dot}\xbnth{\ \ 1/A}} \node{\type{dot}\lft{1}} \node{\external\type{dot}\xbnth{1/B}} \node{\type{dot}\lft{2}} \node{\external\type{dot}\xbnth{3/C}} \node{\type{dot}\lft{5}} \endTree \setbox5=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%6 \node{\external\type{dot}\xbnth{0/\\ \ }} \node{\external\type{dot}\xbnth{\ \ 1/B}} \node{\type{dot}\lft{1}} \node{\external\type{dot}\xbnth{2/A}} \node{\type{dot}\lft{3}} \node{\external\type{dot}\xbnth{3/C}} \node{\type{dot}\lft{6}} \endTree \setbox6=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%7 \node{\external\type{dot}\xbnth{0/\\ \ }} \node{\external\type{dot}\xbnth{\ \ 1/B}} \node{\type{dot}\lft{1}} \node{\external\type{dot}\xbnth{3/A}} \node{\type{dot}\lft{4}} \node{\external\type{dot}\xbnth{3/C}} \node{\type{dot}\lft{7}} \endTree \setbox7=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%8 \node{\external\type{dot}\xbnth{0/\\ \ }} \node{\external\type{dot}\xbnth{\ \ 1/B}} \node{\type{dot}\lft{1}} \node{\external\type{dot}\xbnth{3/C}} \node{\type{dot}\lft{4}} \node{\external\type{dot}\xbnth{4/A}} \node{\type{dot}\lft{8}} \endTree \setbox8=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \beginTree%9 \node{\external\type{dot}\xbnth{0/\\ \ }} \node{\external\type{dot}\xbnth{\ \ 2/B.}} \node{\type{dot}\lft{2}} \node{\external\type{dot}\xbnth{3/C}} \node{\type{dot}\lft{5}} \node{\external\type{dot}\xbnth{4/A}} \node{\type{dot}\lft{9}} \endTree \setbox9=\hbox{\hskip\leftdist\unhbox\TeXTree\hskip\rightdist}% \ifdim\hsize>17mm\global\dzero24pt\else\dzero8pt\fi \lower\dzero\hbox{\ifdim\hsize>17mm\vbox{% \hbox{\hskip2.4em\box1\hskip1em\box2\hskip1em\box3\hskip1em\box4\hskip2em\box5}% \hbox{\hskip4em\box6\hskip2em\box7\hskip2em\box8\hskip2em\box9}% \hbox{\ }}\else \vbox{\hbox{\hskip5em\box1\hskip1em\box2}% \hbox{\hskip4em\box3\hskip1em\box4}\hbox{\ }}% \fi} \ifdim\hsize<175mm\smallskip \centerline{\box5\hskip4em\box6\hskip4em\box7} \smallskip \centerline{\box8\hskip6em\box9}\fi} \smallskip\baselineskip11.7pt \smallskip {\def\dstrut{\setbox1\hbox{ }\dp1=5pt\ht1=11pt\wd1=0pt\box1\relax} \centerline{\vbox{\offinterlineskip\halign{\vrule\ \hfil#\hfil\ & \vrule\ \hfil#\hfil\ &\vrule\ \hfil#\hfil\ & \vrule\ \hfil#\hfil\ &\vrule\ \hfil$#$\hfil\ & \vrule\ \hfil#\hfil\ &\vrule\ \hfil$#$\hfil\ \vrule\cr \noalign{\hrule} \multispan4\strut\vrule\hfil Веса\hfil&&&\hbox{Длина}\cr \multispan4\vrule\hrulefill\vrule& \lowrow{.4}{Число-код и его интервал}& \lowrow{.4}{Символ}&\cr \strut A& B& C& E&&& \hbox{интервала}\cr \noalign{\hrule} \dstrut1& 1& 1& 1& {759021\over4194304}\in(0,{1\over4})& A& {1\over4}\cr \dstrut2& 1& 1& 1& {759021\over1048576}\in({3\over5},{4\over5})& C& {1\over5}\cr \dstrut2& 1& 2& 1& {649377\over1048576}\in({1\over2},{5\over6})& C& {1\over3}\cr \dstrut2& 1& 3& 1& {375267\over1048576}\in({2\over7},{3\over7})& B& {1\over7}\cr \dstrut2& 2& 3& 1& {529717\over1048576}\in({1\over2},{7\over8})& C& {3\over8}\cr \dstrut2& 2& 4& 1& {5429\over393216}\in(0,{2\over9})& A& {2\over9}\cr \dstrut3& 2& 4& 1& {16287\over262144}\in(0,0.3)& A& 0.3\cr \dstrut4& 2& 4& 1& {27145\over131072}\in(0,{4\over11})& A& {4\over11}\cr \dstrut5& 2& 4& 1& {298595\over524288}\in({5\over12},{7\over12})& B& {1\over6}\cr \dstrut5& 3& 4& 1& {240425\over262144}\in({8\over13},{12\over13})& C& {4\over13}\cr \dstrut5& 3& 5& 1& {1028373\over1048576}\in({13\over14},1)& E&\cr \noalign{\hrule}}}.}} \smallskip \centerline{\vbox{\offinterlineskip\tt \halign{\strut\hfil\ #\ \hfil& \vrule#& \hfil\ #\ \hfil& \vrule#& \hfil\ #\ \hfil& \vrule#& \hfil\ #\ \hfil\cr СЛОВАРЬ(8)&& БУФЕР(5)&& КОД && ДЛИНА КОДА\cr \noalign{\hrule} "........"&& "КРАСН" && 0'К' && 9\cr ".......К"&& "РАСНА" && 0'Р' && 9\cr "......КР"&& "АСНАЯ" && 0'А' && 9\cr ".....КРА"&& "СНАЯ " && 0'С' && 9\cr "....КРАС"&& "НАЯ К" && 0'Н' && 9\cr "...КРАСН"&& "АЯ КР" && 1<5,1>&& 7\cr "..КРАСНА"&& "Я КРА" && 0'Я' && 9\cr ".КРАСНАЯ"&& " КРАС" && 0' ' && 9\cr "КРАСНАЯ "&& "КРАСК" && 1<0,4>&& 7\cr "НАЯ КРАС"&& "КА..." && 1<4,1>&& 7\cr "АЯ КРАСК"&& "А...." && 1<0,1>&& 7\cr}}} \centerline{\vbox{\offinterlineskip\tt \halign{\strut\hfil\ #\ \hfil&& \vrule#& \hfil\ #\ \hfil\cr ВХОДНАЯ ФРАЗА&& \lowrow1{КОД}&& ПОЗИЦИЯ\cr (В СЛОВАРЬ)&& && СЛОВАРЯ\cr \noalign{\hrule} ""&& && 0\cr "К"&& <0,'К'>&& 1\cr "Р"&& <0,'Р'>&& 2\cr "А"&& <0,'А'>&& 3\cr "С"&& <0,'С'>&& 4\cr "Н"&& <0,'Н'>&& 5\cr "АЯ"&& <3,'Я'>&& 6\cr " "&& <0,' '>&& 7\cr "КР"&& <1,'Р'>&& 8\cr "АС"&& <3,'С'>&& 9\cr "КА"&& <1,'А'>&& 10\cr}}} \centerline{\vbox{\offinterlineskip\tt \halign{\strut\hfil\ #\ \hfil&& \vrule#& \hfil\ #\ \hfil\cr ВХОДНАЯ&& && \lowrow{1.2}{ПОЗИЦИЯ}\cr ФРАЗА, wK&& КОД для w&& \lowrow{1.2}{СЛОВАРЯ}\cr (В СЛОВАРЬ)&&&&\cr \noalign{\hrule} ASCII+&& && 0-255\cr "КР"&& 0'К'&& 256\cr "РА"&& 0'Р'&& 257\cr "АС"&& 0'А'&& 258\cr "СН"&& 0'С'&& 259\cr "НА"&& 0'Н'&& 260\cr "АЯ"&& 0'А'&& 261\cr "Я "&& 0'Я'&& 262\cr " К"&& 0' '&& 263\cr "КРА"&& <256>&& 264\cr "АСК"&& <258>&& 265\cr "КА"&& 0'К'&& 266\cr "А"&& 0'А'&&\cr}}} \<0,0,'К'\> \<0,0,'Р'\> \<0,0,'А'\> \<0,0,'С'\> \<0,0,'Н'\> \<5,1,'Я'\> \<0,0,' '\> \<0,4,'К'\> \<0,0,'А'\>. \centerline{\vbox{\offinterlineskip\tt \halign{\strut\hfil\ #\ \hfil& \vrule#& \hfil\ #\ \hfil& \vrule#& \hfil\ #\ \hfil\cr ВХОДНОЙ КОД&& ПЕЧАТЬ&& СЛОВАРЬ\cr \noalign{\hrule} <0,0,'К'> && "К" && ".......К"\cr <0,0,'Р'> && "Р" && "......КР"\cr <0,0,'А'> && "А" && ".....КРА"\cr <0,0,'С'> && "С" && "....КРАС"\cr <0,0,'Н'> && "Н" && "...КРАСН"\cr <5,1,'Я'> && "АЯ" && ".КРАСНАЯ"\cr <0,0,' '> && " " && "КРАСНАЯ "\cr <0,4,'К'> &&"КРАСК"&& "АЯ КРАСК"\cr <0,0,'А'> && "А" && "Я КРАСКА"\cr}}} 0'К' 0'Р' 0'А' 0'С' 0'Н' 1\<5,1\> 0'Я' 0' ' 1\<0,4\> 1\<4,1\> 1\<0,1\>. \centerline{\vbox{\offinterlineskip\tt \halign{\strut\hfil\ #\ \hfil& \vrule#& \hfil\ #\ \hfil& \vrule#& \hfil\ #\ \hfil\cr ВХОДНОЙ КОД&& ПЕЧАТЬ&& СЛОВАРЬ\cr \noalign{\hrule} 0 'К' && "К" && ".......К"\cr 0 'Р' && "Р" && "......КР"\cr 0 'А' && "А" && ".....КРА"\cr 0 'С' && "С" && "....КРАС"\cr 0 'Н' && "Н" && "...КРАСН"\cr 1 <5,1> && "А" && "..КРАСНА"\cr 0 'Я' && "Я" && ".КРАСНАЯ"\cr 0 ' ' && " " && "КРАСНАЯ "\cr 1 <0,4> && "КРАС"&& "НАЯ КРАС"\cr 1 <4,1> && "К" && "АЯ КРАСК"\cr 1 <0,1> && "А" && "Я КРАСКА"\cr}}} \<0,'К'\> \<0,'Р'\> \<0,'А'\> \<0,'С'\> \<0,'Н'\> \<3,'Я'\> \<0,' '\> \<1,'Р'\> \<3,'С'\> \<1,'А'\>.\<0,0,'A'\> \<0,0,'F'\> \<0,0,'X'\> \<9,2,'F'\> \<8,1,'F'\> \<6,2,'X'\> \<4,3,'A'\> \<0,'A'\> \<0,'F'\> \<0,'X'\> \<1,'F'\> \<2,'X'\> \<5,'A'\> \<3,'A'\> \<2,'F'\> \<0,'A'\>1+2^8+2^{16}+\cdots+2^{792} = (2^{800}-1)/255 < 2^{800}\smallskip \centerline{\vbox{\offinterlineskip \halign{\strut#\ \hfil& \vrule#& \ #\hfil\cr Расширения& depth5pt& Тип кодирования\cr \noalign{\hrule} gif& height11pt& LZW\cr png&& LZ77, Хаффмена\cr jpeg, jpg&& сжатие с потерями, Хаффмена или арифметическое\cr bmp, pcx&& RLE\cr tiff, tif&& CCITT/3 для факсов, LZW или другие\cr}}} \smallskipN(T)=S_n=C^n_n + C^{n-2}_{n-1} + C^{n-4}_{n-2} + \cdotsC=\lim\limits_{T\rightarrow\infty}{\log_2N(T)\over T}= \lim\limits_{n\rightarrow\infty}{\log_2S_n\over n\tau}= {\log_2\textstyle{1+\sqrt5\over2}\over\tau}\approx0.69/\tauu={C\over HX}.H=D\circ T\circ Ea_1\ldots a_ma_{m+1}=\begin{cases}0,&\text{если $\sum^m_{i=1}a_i$ --- четная;}\\ 1,&\text{если $\sum^m_{i=1}a_i$ --- нечетная.} \end{cases}D(a_1\ldots a_ma_{m+1})= \begin{cases}a_1\ldots a_m,&\text{если $\sum^{m+1}_{i=1}a_i$ --- четна;}\\ \hbox{\it \<ошибка\>},&\text{если $\sum^{m+1}_{i=1}a_i$ --- нечетна.} \end{cases}a=a_1\ldots a_nk]\approx C^{k+1}_np^{n-k-1}q^{k+1}a=a_1\ldots a_mb=b_1\ldots b_nr=r_1\ldots r_n\{000, 011, 101, 110\}m\times n1\times nE=\left\lbrack\matrix{1&0&0&1&1&0\cr 0&1&0&0&1&1\cr 0&0&1&1&1&1\cr}\right\rbrack.a\rightarrow aEa=a_1\ldots a_m=a'+a"= (a_1'+a_2')e_{1j}+(a_2'+a_2")e_{2j}+\cdots+(a_m'+a_m")e_{mj} = b_j'+b_j",b_0+g_i, b_1+g_i, \ldots, b_{2^m-1}+g_ib_j\in B\centerline{\vbox{\offinterlineskip\halign{&\strut\quad#\hfil\cr b_0& b_1& b_2& \cdots& b_{2^m-1}\cr g_1& g_1+b_1& g_1+b_2& \cdots& g_1+b_{2^m-1}\cr \cdots& \cdots& \cdots& \cdots& \cdots\cr g_{2^{n-m}-1}& g_{2^{n-m}-1}+b_1& g_{2^{n-m}-1}+b_2& \cdots\quad& g_{2^{n-m}-1}+b_{2^m-1}.\cr}}}\centerline{\vbox{\offinterlineskip\halign{&#&\strut\hskip7pt#\cr 000000 && 100110 && 010011 && 110101 && 001111 && 101001 && 011100 && 111010\cr 100000 && 000110 && 110011 && 010101 && 101111 && 001001 && 111100 && 011010\cr 010000 && 110110 && 000011 && 100101 && 011111 && 011001 && 001100 && 101010\cr 001000 && 101110 && 011011 && 111101 && 000111 && 100001 && 010100 && 110010\cr 000100 && 100010 && 010111 && 110001 && 001011 && 101101 && 011000 && 111110\cr 000010 && 100100 && 010001 && 110111 && 001101 && 101011 && 011110 && 111000\cr %}}} %\centerline{\vbox{\offinterlineskip\halign{&#&\strut\hskip7pt#\cr 000001 && 100111 && 010010 && 110100 && 001110 && 101000 && 011101 && 111011\cr 000101 && 100011 && 010110 && 110000 && 001010 && 101100 && 011001 && 111111.\cr }}}E_2=\left\lbrack\matrix{ 1& 0& 0& 1\cr 0& 1& 0& 1\cr 0& 0& 1& 0\cr}\right\rbrackb=b_1b_2\ldots b_nE=\left\lbrack\matrix{1110000\cr 1001100\cr 0101010\cr 1101001\cr}\right\rbrack.S_1, \ldots, S_kS^*_k\ldots S^*_1>n{2^{12}\over13}={4096\over13}<2^9=512\quad\hbox{и}\quad {2^{13}\over14}={4096\over7}>512,\hbox{ т.е. }n=13.a=a_0\ldots a_{m-1}g(x)=g_0+g_1x+\cdots+g_kx^k,\quad g_0\ne0,\quad g_k\ne0.b=b_0\ldots b_{n-1}G=\left\lbrack\matrix{ g_0 & g_1 & g_2 & \cdots & g_k & 0 & 0 & \cdots & 0\cr 0 & g_0 & g_1 & \cdots & g_{k-1} & g_k & 0 & \cdots & 0\cr 0 & 0 & g_0 & \cdots & g_{k-2} & g_{k-1} & g_k & \cdots & 0\cr \cdots&\cdots&\cdots& \cdots &\cdots & \cdots &\cdots& \cdots &\cdots\cr 0 &0 &0 & \cdots &\cdots & \cdots &\cdots& \cdots &g_k\cr} \right\rbrack.G=\left\lbrack\matrix{1&1&0&1&0&0\cr 0&1&1&0&1&0\cr 0&0&1&1&0&1\cr}\right\rbracke=e_0\ldots e_{n-1}b_0\ldots b_{n-2}b_{n-1}b_{n-1}b_0\ldots b_{n-2}A, B, C, \ldotsm_2\equiv m_1^b\pmod pm_3\equiv m_2^\alpha\pmod pm_4\equiv m_3^\beta\equiv m^{a\alpha b\beta}\equiv m\pmod pa\alpha b\beta=k\varphi(p)+1m^{k\varphi(p)+1}\equiv(m^{\varphi(p)})^km\equiv m\pmod pm^{\varphi(p)}\equiv1\pmod pm_2\equiv 21^7\equiv 10\pmod{23}m_3\equiv 10^9\equiv 20\pmod{23}20^{19}\equiv 17\pmod{23}m_1\equiv m^b\pmod{r_B}m\equiv 94^{19} \equiv 3\pmod{161}1\ne i\le n\hbox{НОД}(a_i, \varphi(r_i))=1a_i\alpha_i\equiv 1\pmod{\varphi(r_i)}m_1\equiv m^{\alpha_1}\pmod{r_1}m_2\equiv m_1^{a_2}\pmod{r_2}m_1\equiv m^{a_2}\pmod{r_2}m_2\equiv m_1^{\alpha_1}\pmod{r_1}p_{21}=11, p_{22}=23, r_2=253, \varphi(253)=220, a_2=31, \alpha_2=71m_1\equiv 41^5\equiv 6\pmod{91}m_2\equiv 6^{71}\equiv 94\pmod{253}94^{31}\pmod{253}\equiv 66^{29}\pmod{91}\equiv 41\int_1^x{dt \over t}=\ln x. // \centerline{\vbox{\offinterlineskip \halign{&\strut\vrule\hfil\tt\ #\ \hfil\cr \noalign{\hrule} Код \span\omit& \lowrow{1.4}{Символ}& Имя символа& \omit\vrule\cr \omit\hrulefill\span\omit& \omit\vrule& \omit\vrule& \omit\vrule\cr 10-й& 16-й& & в Unicode 3.2& \omit\vrule height11pt\cr \noalign{\hrule} 96& 60& `& GRAVE ACCENT& \omit\vrule\cr 97& 61& a& LATIN SMALL LETTER A& \omit\vrule\cr 98& 62& b& LATIN SMALL LETTER B& \omit\vrule\cr 99& 63& c& LATIN SMALL LETTER C& \omit\vrule\cr 100& 64& d& LATIN SMALL LETTER D& \omit\vrule\cr 101& 65& e& LATIN SMALL LETTER E& \omit\vrule\cr 102& 66& f& LATIN SMALL LETTER F& \omit\vrule\cr 103& 67& g& LATIN SMALL LETTER G& \omit\vrule\cr 104& 68& h& LATIN SMALL LETTER H& \omit\vrule\cr 105& 69& i& LATIN SMALL LETTER I& \omit\vrule\cr 106& 6A& j& LATIN SMALL LETTER J& \omit\vrule\cr 107& 6B& k& LATIN SMALL LETTER K& \omit\vrule\cr 108& 6C& l& LATIN SMALL LETTER L& \omit\vrule\cr 109& 6D& m& LATIN SMALL LETTER M& \omit\vrule\cr 110& 6E& n& LATIN SMALL LETTER N& \omit\vrule\cr 111& 6F& o& LATIN SMALL LETTER O& \omit\vrule\cr 112& 70& p& LATIN SMALL LETTER P& \omit\vrule\cr 113& 71& q& LATIN SMALL LETTER Q& \omit\vrule\cr 114& 72& r& LATIN SMALL LETTER R& \omit\vrule\cr 115& 73& s& LATIN SMALL LETTER S& \omit\vrule\cr 116& 74& t& LATIN SMALL LETTER T& \omit\vrule\cr 117& 75& u& LATIN SMALL LETTER U& \omit\vrule\cr 118& 76& v& LATIN SMALL LETTER V& \omit\vrule\cr 119& 77& w& LATIN SMALL LETTER W& \omit\vrule\cr 120& 78& x& LATIN SMALL LETTER X& \omit\vrule\cr 121& 79& y& LATIN SMALL LETTER Y& \omit\vrule\cr 122& 7A& z& LATIN SMALL LETTER Z& \omit\vrule\cr 123& 7B& \{& LEFT CURLY BRACKET& \omit\vrule\cr 124& 7C& |& VERTICAL LINE& \omit\vrule\cr 125& 7D& \}& RIGHT CURLY BRACKET& \omit\vrule\cr 126& 7E& \~{}& TILDE& \omit\vrule depth5pt\cr \noalign{\hrule}}}} \centerline{\vbox{\offinterlineskip\halign{&\strut\vrule\hfil \hskip3pt#\hskip3pt\hfil\cr \noalign{\hrule} 1& 2& I\span\omit& II\span\omit& III\span\omit& IV\span\omit& V\span\omit& VI& \omit\vrule height11pt\cr \noalign{\hrule} а& A& 208& D0& 160& A0& 224& E0& 193& C1& 1072& 0430& A& \omit\vrule height11pt\cr б& BE& 209& D1& 161& A1& 225& E1& 194& C2& 1073& 0431& B& \omit\vrule\cr в& VE& 210& D2& 162& A2& 226& E2& 215& D7& 1074& 0432& W& \omit\vrule\cr г& GHE& 211& D3& 163& A3& 227& E3& 199& C7& 1075& 0433& G& \omit\vrule\cr д& DE& 212& D4& 164& A4& 228& E4& 196& C4& 1076& 0434& D& \omit\vrule\cr е& IE& 213& D5& 165& A5& 229& E5& 197& C5& 1077& 0435& E& \omit\vrule\cr ё& IO& 241& F1& 241& F1& 184& B8& 163& A3& 1105& 0451& \#& \omit\vrule\cr ж& ZHE& 214& D6& 166& A6& 230& E6& 214& D6& 1078& 0436& V& \omit\vrule\cr з& ZE& 215& D7& 167& A7& 231& E7& 218& DA& 1079& 0437& Z& \omit\vrule\cr и& I& 216& D8& 168& A8& 232& E8& 201& C9& 1080& 0438& I& \omit\vrule\cr й& SHORT I& 217& D9& 169& A9& 233& E9& 202& CA& 1081& 0439& J& \omit\vrule\cr к& KA& 218& DA& 170& AA& 234& EA& 203& CB& 1082& 043A& K& \omit\vrule\cr л& EL& 219& DB& 171& AB& 235& EB& 204& CC& 1083& 043B& L& \omit\vrule\cr м& EM& 220& DC& 172& AC& 236& EC& 205& CD& 1084& 043C& M& \omit\vrule\cr н& EN& 221& DD& 173& AD& 237& ED& 206& CE& 1085& 043D& N& \omit\vrule\cr о& O& 222& DE& 174& AE& 238& EE& 207& CF& 1086& 043E& O& \omit\vrule\cr п& PE& 223& DF& 175& AF& 239& EF& 208& D0& 1087& 043F& P& \omit\vrule\cr р& ER& 224& E0& 224& E0& 240& F0& 210& D2& 1088& 0440& R& \omit\vrule\cr с& ES& 225& E1& 225& E1& 241& F1& 211& D3& 1089& 0441& S& \omit\vrule\cr т& TE& 226& E2& 226& E2& 242& F2& 212& D4& 1090& 0442& T& \omit\vrule\cr у& U& 227& E3& 227& E3& 243& F3& 213& D5& 1091& 0443& U& \omit\vrule\cr ф& EF& 228& E4& 228& E4& 244& F4& 198& C6& 1092& 0444& F& \omit\vrule\cr х& HA& 229& E5& 229& E5& 245& F5& 200& C8& 1093& 0445& H& \omit\vrule\cr ц& TSE& 230& E6& 230& E6& 246& F6& 195& C3& 1094& 0446& C& \omit\vrule\cr ч& CHE& 231& E7& 231& E7& 247& F7& 222& DE& 1095& 0447& \^{}& \omit\vrule\cr ш& SHA& 232& E8& 232& E8& 248& F8& 219& DB& 1096& 0448& [& \omit\vrule\cr щ& SHCHA& 233& E9& 233& E9& 249& F9& 221& DD& 1097& 0449& ]& \omit\vrule\cr ъ& HARD SIGN& 234& EA& 234& EA& 250& FA& 223& DF& 1098& 044A& \_& \omit\vrule\cr ы& YERU& 235& EB& 235& EB& 251& FB& 217& D9& 1099& 044B& Y& \omit\vrule\cr ь& SOFT SIGN& 236& EC& 236& EC& 252& FC& 216& D8& 1100& 044C& X& \omit\vrule\cr э& E& 237& ED& 237& ED& 253& FD& 220& DC& 1101& 044D& \bs& \omit\vrule\cr ю& YU& 238& EE& 238& EE& 254& FE& 192& C0& 1102& 044E& @& \omit\vrule\cr я& YA& 239& EF& 239& EF& 255& FF& 209& D1& 1103& 044F& Q& \omit\vrule depth5pt\cr \noalign{\hrule}}}}\varphi(m)=p_1^{\alpha_1-1}(p_1-1)p_2^{\alpha_2-1}(p_2-1)\cdots p_k^{\alpha_k-1}(p_k-1),p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_k^{\alpha_k}x\equiv a^{\varphi(m)-1}\pmod m\displaystyle{a\over m}P_{-2}=0, P_{-1}=1, Q_{-2}=1, Q_{-1}=0;\hbox{при }k\ge0\quad P_k=q_kP_{k-1}+P_{k-2},\; Q_k=q_kQ_{k-1}+Q_{k-2}.=-P_{n-1}Q_{n-2}+P_{n-2}Q_{n-1}=-F_{n-1}=\cdots=F_{n-2}=\cdots= (-1)^{n+1}F_{-1}=\smallskip \centerline{\vbox{\offinterlineskip \halign{\strut\hfil#\quad\vrule&&\ \hfil#\ \hfil\cr $k$& $-2$& $-1$& 0& 1& 2& $\cdots$& $n-1$ & $n$\cr \noalign{\hrule} $q_k$& \omit& \omit& $q_0$& $q_1$& $q_2$& $\cdots$& $q_{n-1}$& $q_n$\cr $P_k$& 0& 1& $P_0$& $P_1$& $P_2$& $\cdots$& $P_{n-1}$& $P_n$\cr $Q_k$& 1& 0& $Q_0$& $Q_1$& $Q_2$& $\cdots$& $Q_{n-1}$& $Q_n$.\cr}}} \smallskip\smallskip \centerline{\vbox{\offinterlineskip \halign{\strut\hfil#\quad\vrule&&\ \hfil#\ \hfil\cr $k$& $-2$& $-1$& 0& 1& 2& 3& 4& 5\cr \noalign{\hrule} $q_k$& \omit& \omit& 0& 1092& 1& 68& 2& 8\cr $Q_k$& 1& 0& 1& 1092& 1093& 75416& 151925& 1290816.\cr}}} \smallskipЂЂ // \dim(\vec X)\vec Xf\colon A\rightarrow Bf\circ g Заголовок 2 Заголовок 315

Приложенные файлы

  • doc 8942207
    Размер файла: 3 MB Загрузок: 0

Добавить комментарий