- •1.6. Кодирование текстовых и символьных данных
- •1.7. Кодирование графических данных
- •1.8. Кодирование звуковой информации
- •1.9. Структуры данных
- •1.10. Файлы и файловая структура
- •1.11. Измерение и представление информации
- •1.12. Теоремы Шеннона
- •1.13. Математические основы информатики
- •1.13.1. Алгебра высказываний (алгебра логики)
- •1.13.2. Элементы теории множеств
- •1.13.3. Элементы теории графов
1.12. Теоремы Шеннона
При передаче сообщений по каналам связи всегда возникают помехи, приводящие к искажению принимаемых сигналов. Исключение помех при передаче сообщений является очень серьезной теоретической и практической задачей. Ее значимость только возрастает в связи с повсеместным внедрением компьютерных телекоммуникаций. Все естественные человеческие языки обладают большой избыточностью, что позволяет сообщениям, составленным из знаков таких языков, иметь заметную помехоустойчивость.
Избыточность могла бы быть использована и при передаче кодированных сообщений в технических системах. Самый простой способ повышение избыточности — передача текста сообщения несколько раз в одном сеансе связи. Однако большая избыточность приводит к большим временным затратам при передаче информации и требует большого объема памяти. К настоящему времени вопрос об эффективности кодирования изучен достаточно полно.
Пусть задан алфавит , состоящий из конечного числа букв, конечная последовательность символов из называется словом, а множество всех непустых слов в алфавите обозначим через . Аналогично для алфавита слово обозначим , а множество всех непустых слов .
Рассмотрим соответствие между буквами алфавита и словами алфавита : . Это соответствие называется схемой алфавитного кодирования и обозначается . Алфавитное кодирование определяется следующим образом: каждому слову ставится в соответствие слово , называемое кодом слова . Слова называются элементарными кодами. Ограничением задачи передачи кодов является отсутствие помех. Требуется оценить минимальную среднюю длину кодовой комбинации.
При разработке различных систем кодирования данных получены теоретические результаты, позволяющие получить сообщение с минимальной длиной кодов. Два положения из теории эффективности кодирования известны как теоремы Шеннона.
Первая теорема говорит о существовании системы эффективного кодирования дискретных сообщений, у которой среднее число двоичных символов (букв алфавита ) на единицу сообщения (букву алфавита ) асимптотически стремится к энтропии источника сообщения, т. е. кодирование в пределе не имеет избыточности.
Рассмотрим вновь пример 1 из раздела 1.11, закодировав анализированное сообщение по алгоритму Фано3. В таблице . 1.12 приведены коды букв в сообщении (слова ), длина кода , вероятности букв сообщения , величины и .
Таблица 1.12
-
Но-
мер
Бук-
ва
Код
1
ж
10110
5
0.0294
0.1470
–0.1496
2
и
000
3
0.1176
0.3528
–0.3632
3
л
0111
4
0.0883
0.3532
–0.3092
4
-
10111
5
0.0294
0.1470
–0.1496
5
б
0110
4
0.0883
0.3532
–0.3092
6
ы
10101
5
0.0294
0.1470
–0.1496
7
пробел
001
3
0.1176
0.3528
–0.3632
8
а
10100
5
0.0294
0.1470
–0.1496
9
у
1000
4
0.0589
0.2356
–0.2406
10
ш
11000
5
0.0294
0.1470
–0.1496
11
к
010
3
0.1176
0.3528
–0.3632
12
с
11001
5
0.0294
0.1470
–0.1496
13
е
1001
4
0.0589
0.2356
–0.2406
14
р
11010
5
0.0294
0.1470
–0.1496
15
н
11011
5
0.0294
0.1470
–0.1496
Продолжение таблицы 1.12
-
Но
мер
Бук
ва
Код
16
ь
11100
5
0.0294
0.1470
–0.1496
17
й
11101
5
0.0294
0.1470
–0.1496
18
о
11110
5
0.0294
0.1470
–0.1496
19
з
11111
5
0.0294
0.1470
–0.1496
Математическое ожидание количества символов из алфавита при кодировании равно . Этому среднему числу символов соответствует максимальная энтропия . Для обеспечения передачи информации, содержащейся в сообщении, должно выполняться условие . В этом случае закодированное сообщение имеет избыточность. Коэффициент избыточности определяется следующим образом:
, (1.12.1)
. В нашем случае , т. е. код практически не имеет избыточности. Видно, что среднее число двоичных символов стремится к энтропии сообщения.
Вторая теорема Шеннона устанавливает принципы помехоустойчивого кодирования. Оказывается, что даже при наличии помех в канале связи всегда можно найти такую систему кодирования, при которой сообщение будет передано с заданной достоверностью. Основная идея всех таких кодов заключается в следующем: для исправления возможных ошибок вместе с основным сообщением нужно передавать какую-то дополнительную информацию. Для реализации контроля возможных ошибок используются так называемые самокорректирующие коды, а по каналу связи вместе с символами основного сообщения передаются ещё дополнительных символов, обеспечивающих избыточность кодирования и позволяющих противодействовать помехам.