Автор работы: Пользователь скрыл имя, 19 Января 2012 в 14:21, курсовая работа
В этой работе речь пойдет о том, без чего в настоящее время трудно представить какую-либо деятельность. Современный человек на столько
привык к использованию «чудо-техники» в своей повседневной жизни, что вряд-ли задумывается о том, как протекают процессы записи, передачи или хранения информации. Все это основано на понятии кодирования.
Кодирование - это преобразование сообщения в форму, удобную для передачи по каналу связи.
Теория кодирования представляет собой один из разделов дискретной математики, в котором рассматривается процесс представления инфор¬мации в определенной стандартной форме и обратный процесс восстано¬вления информации по этому представлению.
Дискретная математика – одна из областей математики, начала которой возникли в глубокой древности. Основной отличительной чертой её классической математики, которая в основном занимается изучением свойств объектов непрерывного характера с использованием основного понятия – предел, является дискретность, противоположность непрерывности. Предметом дискретной математики является изучение свойств произвольных структур (множеств с операциями, отношения и аксиомами), которые появляются как в самой математике, так и в области её приложений.
Дискретная математика включает в себя такие разделы как теорию чисел, алгебру, математическую логику, теорию графов и сетей, теорию кодирования, комбинаторный анализ и теорию конечных автоматов.
Особенностью дискретной математики является, наряду с задачами типа существования, имеющими общематематический характер, наличие задач, связанных с алгоритмической разрешимостью и построением конкретных решающих алгоритмов. При этом по существу впервые возникла необходимость полного исследования так называемых многоэкстремальных задач.
Введение…………………………………………………………………………..3
§ 1. Базовые понятия теории кодирования……………………………………...5
§ 2. Алфавитное кодирование……………………………………………………9
§ 3. Двоичный алфавит………………………………………………………….14
§ 4. Кодирование и обработка чисел компьютером…………………………...20
§ 5. Решение практических задач……………………………………………..25
Заключение………………………………………………………………………35
Литература……………………………………………………………………….36
§ 2. Алфавитное кодирование
2. 1. Понятие алфавитного кодирования
В различных задачах, связанных с обработкой, передачей и хранением информации, а также в связи с потребностями техники возникает необходимость преобразования информации в более удобной форме. Кодирование, применяемое для этих целей, называется алфавитным кодированием. Алфавитное кодирование — это представление информации в стандартной форме, при которой элементарным синтаксическим единицам языка сообщений (буквам алфавита) последовательно сопоставляются кодовые комбинации символов из некоторого заданного алфавита. Под информацией здесь понимаем линейную последовательность букв (слова). Примером алфавитного кодирования может служить известный код Морзе (азбука Морзе), в котором слова кодируются побуквенно. А буквам сопоставляются слова в алфавите из трех символов {•, —, ˄}, где ˄ — пробел.
Другим примером алфавитного кодирования является десятичная система счисления.
В современных компьютерах в основном применяется двоичное кодирование, при котором любому символу исходного алфавита (буква, цифра, символы арифметических операций, специальные знаки и т. д.) ставится в соответствие их двоичный код. Кроме того, алфавитное кодирование применяется в криптологии для маскировки конфиденциальной информации.
2. 2. Математическое изучение алфавитного кодирования
Пусть задан алфавит сообщений А = {а1,a2, ...,an}, состоящий из конечного числа букв: конечное множество. Конечная последовательность букв из А α = аi1ai2…aik называется словом в алфавите А, а число k — длиной слова а; если k = 0, то слово называют пустым и обозначают ˄.
Множество всех непустых слов конечной длины в алфавите А обозначим через А*.
Если S — подмножество множества А*, то слова из S называются сообщениями, а объект, порождающий слова из S, — источником сообщений. Источником сообщений может быть человек, автомат и т. д.
Пусть, кроме алфавита А, задан еще алфавит В = {b1, b1,…, bт}. Зададим отображение f, которое каждому слову α ϵ S ставит в соответствие словоβϵ В*, где В* — множество всех непустых слов конечной длины в В.
Слово β будем называть кодом сообщения α, а процесс перехода от слова α к слову β — кодированием.
Алфавитное кодирование определяется следующим образом. В множестве В* выбираются некоторым образом r слов β1 , β2 ,…,βr , называемых элементарными кодами.
По определению получаем, что f(ai) = βi , i = 1, 2,…,r. Тогда код любого слова α = ai1ai2…aik ϵ A* есть следующее слово:
Β(α) = f(ai1)f(ai2)…f(aik) = βi1βi2…βip.
Схема, определяющая отображение f на буквах алфавита А, называется схемой кодирования, обозначается ∑ и оформляется в виде таблицы:
а1 | а2 | ... | аr-1 | аr |
β1 | β2 | … | βr-1 | βr |
Множество кодовых слов {β1, β2,…, βr} будем обозначать С(∑).
2. 3. Проблема взаимной однозначности
Одним из основных вопросов в кодировании является проблема взаимной однозначности, т. е. возможность по коду β сообщения α однозначно восстановить α.
Возникает вопрос: возможно ли по схеме
алфавитного кодирования узнать, обладает
ли алфавитное кодирование свойством
однозначности или нет? Если решать эту
задачу, исходя из определения, то нужно
перебрать бесконечное число слов, так
как для каждого кода нужно установить,
допускает или не допускает этот код однозначное
кодирование.
2. 4. Достаточный признак взаимной однозначности алфавитного кодирования
Прежде, чем устанавливать общий критерий взаимной однозначности алфавитного кодирования, приведём простой достаточный признак взаимной однозначности.
Введем следующие понятия.
Если β = β҆ β”, то β҆ называется началом, или постфиксом, слова β.
Если β҆ ≠ ˄, то β҆ называется собственным началом.
Если β” ≠˄, то β” называется собственным окончанием слова β.
Определение: алфавитного кодирования обладает свойствами префикса, если ни один элементарный код не является префиксом другого элементарного кода.
Теорема 1: Если схема ∑ алфавитного кодирования обладает свойством префикса, то алфавитное кодирование взаимно однозначно.
Доказательство: Допустим, что некоторое слово β ϵ В* допускает два декодирования. Это значит, что β можно представить в двух видах: β1 = βi1 βi2 … βik; β2 = βj1 βj2 … βjl.
Так как эти представления различны, то существует такое р, что 1 ≤ р ≤ min(k, l), для которого βip ^ βip. Но тогда одно из слов β1 и β2 есть префикс другого. Это противоречит условию теоремы. Следовательно, наше утверждение о существовании двух декодирований неверно. Теорема доказана.
Заметим, что условие префиксности не является необходимым, т. е. другими словами, схема алфавитного кодирования может не обладать свойствами префиксности, но алфавитное кодирование, задаваемое этой схемой, будет взаимно однозначным.
Определение: Слово bin bin-1… bi1 будем называть обратным к слову β = bi1bi2bin и обозначать β-1.
Определение: Схема кодирования, полученную из схемы кодирования ∑{β1,…, βr} заменой каждого элементарного кода βi на βi-1,будем называть обратной к схеме ∑ и обозначать ∑-1. Введённое понятие позволяет усилить теорему 1.
Теорема 2: Если схема ∑ или схема ∑-1 обладает свойством префикса, то тогда алфавитное кодирование, определяемое схемой ∑(∑-1), будет взаимно однозначным.
Доказательство: Очевидно, что алфавитные кодирования, задаваемые схемами Z и Z-1, одновременно или обладают, или не обладают свойством взаимной однозначности. Отсюда немедленно следует справедливость теоремы 2.
Заметим, что условие теоремы 2 не является необходимым, так как существуют схемы кодирования ∑, со свойством взаимной однозначности, но такие, что ни ∑, ни ∑-1 не обладают свойством префиксности.
2. 5. Общий критерий взаимной однозначности
Для вывода общего критерия взаимной однозначности
понадобится
следующее понятие.
Представление элементарного кода Р;
схемы алфавитного кодирова-
ния ∑ в виде βi
= β҆ βi1… βik β”, где
слово β҆ не может оканчиваться на элементарный
код, а слово Р" начинаться с элементарного
кода, будем называть нетривиальным
разложением элементарного кода. При
этом одно из слов β҆ или β” может быть
пустым (˄).
Для определения однозначности или неоднозначности
схемы алфавитного кодирования существует
эффективный алгоритм, использующий понятие
нетривиального разложения элементарных
кодов.
Опишем этот алгоритм.
6. По разложениям,
полученным в пункте 5, строится ориентиро-
ванный граф G∑
следующим образом. Вершины графа отождествляют
с
элементами множества М.
Пара вершин β' и β" соединяются ориентиро-
ванными ребрами в том и только в том случае,
если существует разло-
жение β'βi1…βikβ".
При этом ребру (β',β") приписывается
слово βi1…βik,
соответствующее этому разложению.
7. По полученному
графу G∑ легко проверить, обладает
или нет исход-
ная схема кодирования свойством взаимной
однозначности.
Справедлива следующая теорема.
Теорема 3: Алфавитное кодирование со схемой ∑ не обладала свойством взаимной однозначности тогда и только тогда, когда граф G∑ содержит ориентированный цикл (контур), проходящий через вершину ˄. Т.е. алфавитное кодирование является взаимно однозначным тогда и только тогда, когда в графе G∑ отсутствуют контуры и петли, проходящие через вершины ˄.
Замечание: Напомним, что если схема алфавитного кодирования ∑ не обладает свойством взаимной однозначности, то это означает, что существуют слова из В*, допускающие два кодирования. Одно из таких слов β легко находится по графу ∑.
Для записи слова β нужно посмотреть ориентированный
цикл, проходящий через вершину ˄, начиная
с ˄, и выписать последовательно все слова,
приписанные ребрам и вершинам, входящим
в этот цикл.
§ 3. Двоичный алфавит
3. 1. Понятие двоичного алфавита
В современных компьютерах любая информация представляется в виде двоичных кодов, т. е. упорядоченных наборов двух различных символов, которые обычно обозначаются через 0 и 1. Таким образом, алфавит, в котором записываются сообщения, считаем состоящим из двух символов {0,1}. Он называется двоичным алфавитом.
Тогда сообщение есть конечная последовательность символов этого алфавита.
Это простейшее алфавитное кодирование, которое является взаимнооднозначным, так как каждому символу исходного алфавита ставится в соответствие определенное двоичное число.
A = an2n-1 + an-12n-2 + an-22n-3 + …+ a221 + a120 , где: a0, a1, a2,…, an – цифры, n – количество цифр в записи числа.
Например, натуральному числу 23 соответствует двоичное число 10111,поскольку
23 = 1 • 24 + 0 • 23 + 1 • 22 + 1 • 21 + 1 • 2°.
Полезно запомнить запись в двоичной системе первых шестнадцати натуральных чисел