Изменения

Перейти к: навигация, поиск

Кодирование информации

533 байта убрано, 03:13, 27 ноября 2011
Нет описания правки
В более узком смысле кодированием информации называют представление информации в виде кода.
Средством кодирования служит таблица соответствия знаковых систем, которая устанавливает взаимно однозначное соответствие между знаками или группами знаков двух различных знаковых систем.
 
Рассмотрим пример кодирования с помощью [[http://neerc.ifmo.ru/mediawiki/index.php/Кодирование_информации#.D0.9F.D1.80.D0.B5.D1.84.D0.B8.D0.BA.D1.81.D0.BD.D1.8B.D0.B9_.D0.BA.D0.BE.D0.B4 префиксного кода]].
 
Пусть U {{---}} множество исходных символов, Z {{---}} кодовый алфавит, Z* {{---}} строчки из Z.
Код {{---}} отображение c : U <tex>\rightarrow</tex> Z*. c* : U* <tex>\rightarrow</tex> Z*. c*(x1x2..xn) = c(x1)c(x2)..c(xn)
U = {a,b,c}; Z = {0,1};
c(a) = 00; c(b) = 01; c(c) = 1;
Закодируем строку: abacaba
c*(abacaba) = 0001001000100
== Код ==
|definition='''Код''' — правило (алгоритм) сопоставления каждому конкретному сообщению строго определённой комбинации символов (знаков или сигналов). Кодом также называется отдельная комбинация таких символов (знаков) — слово. Для различия этих терминов, код в последнем значении ещё называется ''кодовым словом''.
}}
Пусть U {{---}} множество исходных символов, Z {{---}} кодовый алфавит, Z* {{---}} строчки из Z.
Код {{---}} отображение c : U <tex>\rightarrow</tex> Z*. c* : U* <tex>\rightarrow</tex> Z*. c*(x1x2..xn) = c(x1)c(x2)..c(xn)
 
==== Виды кодов ====
* [http://neerc.ifmo.ru/mediawiki/index.php/Представление_символов,_таблицы_кодировок '''Код фиксированной длины'''] (fixed-length code) {{---}} кодирование каждого символа производится с помощью строк одинаковой длины. Также он называется ''равномерным'' или ''блоковым'' кодом.
* '''Код переменной длины''' (variable-length code) {{---}} кодирование производится с помощью строк переменной длины. Также называется ''неравномерным кодом''.
* '''Разделимый код''' {{---}} код, в котором любое слово, составленное из элементарных кодов, единственным образом разлагается на элементарные коды.
Предпочтение префиксным кодам отдается из-за того, что они упрощают декодирование. Поскольку никакое кодовое слово не выступает в роли префикса другого, кодовое слово, с которого начинается закодированный файл, определяется однозначно. Начальное кодовое слово, с которого начинается закодированный файл, определяется однозначно. Начальное кодовое слово легко идентифицировать, преобразовать его в исходный символ и продолжить декодирование оставшейся части закодированного файла.
==== Недостатки префиксных кодов ====
* Так как префиксные коды являются кодами переменной длины, а данные, в основном, считываются блочно, код приходится считывать побитово, что значительно значительно замедляет скорость считывания данных
* При появлении ошибок в кодовой комбинации, при определенных обстоятельствах, может привести к неправильному декодированию не только данной, но и последующей кодовой комбинации, в отличии от равномерных кодов, где ошибка в кодовой комбинации приводит к неправильному декодированию только ее.
Пример:
Возьмём U = {a,b,c}; Z = {0,1}; c(a) = 00; c(b) = 01; c(c) = 1; Закодируем строку : abacaba, и закодируем ее аналогично предыдущему примеру.
c*(abacaba) = 0001001000100
Такой код можно однозначно разбить на слова:
00 01 00 1 00 01 00
поэтому он является префиксным.
 ==== Недостатки префиксных кодов ====* Так как префиксные коды являются кодами переменной длины, а данные, в основном, считываются блочно, код приходится считывать побитово, что значительно значительно замедляет скорость считывания данных* При появлении ошибок в кодовой комбинации, при определенных обстоятельствах, может привести к неправильному декодированию не только данной, но и последующей кодовой комбинации, в отличии от равномерных кодов, где ошибка в кодовой комбинации приводит к неправильному декодированию только ее.  Предположим, что предыдущая последовательность передалась неверно и стала:
0001001'''1'''00100
Разобьем ее согласно словарю:
277
правок

Навигация