Общие понятия
Обнаружение и исправление ошибок
Для защиты полезной информации от помех необходимо в том или ином виде вводить избыточность: увеличивать число символов и время их передачи, повторять целые сообщения, повышать мощность сигнала - все это ведет к усложнению и удорожанию аппаратуры. В качестве исследуемой модели достаточно рассмотреть канал связи с помехами, потому что к этому случаю легко сводятся остальные. Например, запись на диск можно рассматривать как передачу данных в канал, а чтение с диска – как прием данных из канала.
Коды без избыточности обнаружить, а тем более исправлять ошибки не могут. Количество символов, в которых любые две комбинации кода отличаются друг от друга, называется кодовым расстоянием.
Минимальное количество символов, в которых все комбинации кода отличаются друг от друга, называется минимальным кодовым расстоянием. Минимальное кодовое расстояние - параметр, определяющий помехоустойчивость кода и заложенную в коде избыточность, т.е. корректирующие свойства кода.
В общем случае для обнаружения t ошибок минимальное кодовое расстояние
d0 = t + 1.
Минимальное кодовое расстояние, необходимое для одновременного обнаружения t и исправления s ошибок,
d0 = t + s + 1.,
Для кодов, только исправляющих s ошибок,
d0 = 2s + 1.
Для того чтобы определить кодовое расстояние между двумя комбинациями двоичного кода, достаточно просуммировать эти комбинации по модулю 2 и подсчитать число единиц полученной комбинации.
Для обнаружения и исправления одиночной ошибки соотношение между числом информационных разрядив k и числом корректирующих разрядов r должно удовлетворять следующим условиям:
,
,
при этом подразумевается, что общая длина кодовой комбинации
n = k + ρ
Для практических расчетов при определении числа контрольных разрядов кодов с минимальным кодовым расстоянием d0 = 3 удобно пользоваться выражениями
ρ1(2) = [ log2 ( n + 1 ) ],
если известна длина полной кодовой комбинации n, и
ρ 1(2) = [log2 { ( k + 1 ) + [ log2 ( k + 1) ] } ],
если при расчетах удобнее исходить из заданного числа информационных символов k .
Для кодов, обнаруживающих все трехкратные ошибки (d0 = 4),
ρ 1(3) ³ 1 + log2 ( n + 1 ),
или
ρ 1(3) ³ 1 + log2 [ ( k + 1 ) + log2 ( k + 1 ) ].
Для кодов длиной в n символов, исправляющих одну или две ошибки (d0 = 5),
ρ 2 ³ log2 (Cn2 + Cn1 + 1).
Для практических расчетов можно пользоваться выражением:
.
Для кодов, исправляющих 3 ошибки (d0 = 7),
.