Автор: Пользователь скрыл имя, 24 Марта 2011 в 13:40, курсовая работа
Объект исследования: кодирование информации.
Предмет исследования: основные алгоритмы экономичного и помехоустойчивого кодирования.
Целью нашего исследования является изучение теоретических основ и процесса кодирования информации, формирования экономичных и помехоустойчивых кодов на примере алгоритмов Хемминга, Хаффмана и Шеннона – Фано.
Введение…………………………………….....2
Кодирование информации…………………3
Задача кодирования……………………...3
Экономичное кодирование……………...8
Помехоустойчивое кодирование………16
Практическая реализация кодирования….22
Реализация программы кодирования
по методу Хаффмана………………………...22
Реализация программы – эмулятора
терминала азбуки Морзе…………………….28
Заключение…………………………………...32
Список литературы…………………………..33
СОДЕРЖАНИЕ
Введение…………………………………….....2
по методу Хаффмана………………………...22
терминала азбуки Морзе…………………….28
Заключение…………………………………...32
Список литературы…………………………..
Приложения…………………………………..34
ВВЕДЕНИЕ
Любое сообщение, подлежащее передаче по каналу связи, записи в память или переработке, должно быть представлено в виде некоторой последовательности символов или, другими словами, закодировано.
Кодирование информации может преследовать так же и другие цели, такие как: сжатие информации, увеличение скорости передачи информации, основой для которого является принцип экономичного кодирования. С другой стороны кодирование с целью обеспечения достоверности передачи, хранения и обработки информации, называемое помехоустойчивым кодированием, а так же с целью засекречивания передаваемой информации и ограничение доступа - криптография.
Теоретической основой кодирования информации явились фундаментальные работы в области математической теории информации Клода Шеннона, а так же Дэвида Хаффмана, Ричарда Хемминга и др.
Несмотря на то, что с момента разработки кодов Хаффмана и Хемминга прошло уже более полувека, и было разработано огромное количество всевозможных кодов, алгоритмы, предложенные Хаффманом и Хеммингом, до сих пор являются наиболее востребованными в системах передачи, хранения и обработки информации.
Объект исследования: кодирование информации.
Предмет
исследования: основные алгоритмы экономичного
и помехоустойчивого
Целью
нашего исследования является изучение
теоретических основ и процесса кодирования
информации, формирования экономичных
и помехоустойчивых кодов на примере алгоритмов
Хемминга, Хаффмана и Шеннона – Фано.
1.
КОДИРОВАНИЕ ИНФОРМАЦИИ
Прежде чем рассмотреть задачу кодирования, необходимо рассмотреть ряд определений, использующихся в теории кодирования :
Код – правило, описывающее соответствие знаков или их сочетаний одного алфавита знакам или их сочетаниям другого алфавита;[1; c.32] - знаки вторичного алфавита, используемые для представления знаков или их сочетаний первичного алфавита.
Кодирование – перевод информации, представленной посредством первичного алфавита, в последовательность кодов.
Декодирование - операция, обратная кодированию, т.е. восстановление информации в первичном алфавите по полученной последовательности кодов. [4;c. 190]
Операции кодирования и декодирования называются обратимыми, если их последовательное применение обеспечивает возврат к исходной информации без каких-либо ее потерь.
Примером обратимого кодирования является представление знаков в телеграфном коде и их восстановление после передачи. Примером кодирования необратимого может служить перевод с одного естественного языка на другой – обратный перевод, вообще говоря, не восстанавливает исходного текста. Безусловно, для практических задач, связанных со знаковым представлением информации, возможность восстановления информации по ее коду является необходимым условием применения кода, поэтому в дальнейшем изложении будет рассматриваться только обратимое кодирования.
Таким образом, кодирование предшествует передаче и хранению информации. [3, c. 50]
Без технических сторон передачи и хранения сообщения (т.е. того, каким образом фактически реализованы передача-прием последовательности сигналов или фиксация состояний), математическая постановка задачи кодирования, дается следующим образом.
Пусть
первичный алфавит A содержит N знаков
со средней информацией на знак,
определенной с учетом вероятностей
их появления, I1(A) (нижний индекс
отражает то обстоятельство, что рассматривается
первое приближение, а верхний индекс
в скобках указывает алфавит). Вторичный
алфавит B пусть содержит M знаков со средней
информационной емкостью I1(B).
Пусть также исходное сообщение, представленное
в первичном алфавите, содержит n знаков,
а закодированное сообщение – m знаков.
Если исходное сообщение содержит I(A)
информации, а закодированное – I(B),
то условие обратимости кодирования, т.е.
неисчезновения информации при кодировании,
очевидно, может быть записано следующим
образом:
I(A)
≤ I(B),
смысл
которого в том, что операция обратимого
кодирования может увеличить количество
формальной информации в сообщении, но
не может его уменьшить. Однако каждая
из величин в данном неравенстве может
быть заменена произведением числа знаков
на среднюю информационную емкость знака,
т.е.:
n*I1(A)
≤ m*I1 (B),
или
I1(A)
≤ m/n*I1 (B)
Отношение m/n, очевидно, характеризует среднее число знаков вторичного алфавита, которое приходится использовать для кодирования одного знака первичного алфавита – будем называть его длиной кода или длиной кодовой цепочки и обозначим K(B) (верхний индекс указывает алфавит кодов).
В
частном случае, когда появление
любых знаков вторичного алфавита равновероятно,
согласно формуле Хартли I1(B)=log2M,
и тогда
I1(A) /log2M≤ K(B) (1)
По
аналогии с величиной R, характеризующей
избыточность языка, можно ввести относительную
избыточность кода (Q):
Q=
1 – I(A) / I(B) = 1- I1(A)
/ K(B)*I1(B) (2)
Данная величина показывает, насколько операция кодирования увеличила длину исходного сообщения. Очевидно, чем меньше Q (т.е. чем ближе она к 0 или, что то же, I(B) ближе к I(A)), тем более выгодным оказывается код и более эффективной операция кодирования. Выгодность кодирования при передаче и хранении – это экономический фактор, поскольку более эффективный код позволяет затратить на передачу сообщения меньше энергии, а также времени и, соответственно, меньше занимать линию связи; при хранении используется меньше площади поверхности (объема) носителя. При этом следует сознавать, что выгодность кода не идентична временной выгодности всей цепочки кодирование – передача – декодирование; возможна ситуация, когда за использование эффективного кода при передаче придется расплачиваться тем, что операции кодирования и декодирования будут занимать больше времени и иных ресурсов (например, места в памяти технического устройства, если эти операции производятся с его помощью). [1; c. 34]
Различают
побуквенное и блочное
При блочном кодировании слову из знаков внешнего алфавита ставиться в соответствие кодовое слово из знаков внутреннего алфавита.
Cлова
из знаков внутреннего
Процесс, обратный кодированию, заключается в восстановлении из кодовой комбинации Br=b1b2…bmr слова Ar=a1a2…anr из входного алфавита и называется декодированием. Если процесс кодирования осуществляется с использованием правила G, то процесс декодирования основан на применении правила G-1, где G-1 есть отображение, обратное отображению G.
Операции кодирования и декодирования называют обратимыми, если их последовательное применение обеспечивает возврат к исходной форме сообщения без потери информации.
Пусть Ar — слово в алфавите А и Br =G(Ar) — слово в алфавите В. Код называется обратимым, если для любого слова Br =G(Ar) в алфавите В существует единственное преобразование G-1(Br)= Ar . То есть, по слову Br в алфавите В, всегда однозначно восстанавливается слово Ar в алфавите А, из которого было образовано слово Br. [5; c. 14]
Примером обратимого кодирования является представление знаков в телеграфном коде при передаче сообщений и восстановление их при приеме.
Примером необратимого кодирования является перевод текста с одного естественного языка на другой. (Обратный перевод побуквенно обычно не соответствует исходному тексту.)
Чтобы код был обратимым, необходимо:
1)
чтобы разным символам
2) чтобы никакая кодовая комбинация не составляла начальной части какой-нибудь другой кодовой комбинации.
Наиболее простым правилом кодирования является сопоставление каждому символу входного алфавита А слова конечной длины в выходном алфавите В. Код может быть задан в форме таблицы, графа, аналитического выражения, то есть в тех же формах, что и отображение.
Итак, под кодированием в общем случае понимают преобразование алфавита сообщения A{ λi }, ( i = 1,2…K ) в алфавит некоторым образом выбранных кодовых символов Â{ xj }, ( j = 1,2…N ). Обычно (но не обязательно) размер алфавита кодовых символов dim Â{ xj } меньше или намного меньше размера алфавита источника dimA{ λi }.
Кодирование сообщений может преследовать различные цели. Например, это кодирование с целью засекречивания передаваемой информации. При этом элементарным сообщениям li из алфавита A{ λi } ставятся в соответствие последовательности, к примеру, цифр или букв из специальных кодовых таблиц, известных лишь отправителю и получателю информации.
Другим примером кодирования может служить преобразование дискретных сообщений li из одних систем счисления в другие (из десятичной в двоичную, восьмеричную и т. п., из непозиционной в позиционную, преобразование буквенного алфавита в цифровой и т. д.).
Кодирование в канале, или помехоустойчивое кодирование информации, может быть использовано для уменьшения количества ошибок, возникающих при передаче по каналу с помехами.
Наконец,
кодирование сообщений может
производиться с целью сокращен
Впервые теоретическое исследование эффективного кодирования предпринял К. Шеннон.
Прежде
чем перейти к вопросу экономно
Любое дискретное сообщение li из алфавита источника A{ λi } объемом в K символов можно закодировать последовательностью соответствующим образом выбранных кодовых символов xj из алфавита Â{xj}.
Например, любое число (а li можно считать числом) можно записать в заданной позиционной системе счисления следующим образом:
li = M = xn-1×m n-1 + xn-2×m n-2 +… + x0×m 0, (1)