Цитата(irum4 @ Nov 26 2004, 16:41)
И по ходу еще один вопрос. Для исправления одной ошибки для 8 бит необходимо 4 проверочных бита. А для обнаружения двух - нужен еще один разряд? Или можно обойтись теми же четырьмя? И если можно, то как?
Постараюсь объяснить на пальцах
Для обнаружения однократной ошибки минимальное кодовое расстояние должно быть не меньше 2.
Пример такого кода (код с проверочным битом на четность): 000-011-101-110.
При 1х ошибке получаем некодовое слово (010). Можем только сказать, что это некодовое слово, исправить нельзя, т.к. неясно в каком кодовом слове произошла 1х ошибка: в 000(0
10) или в 011(01
0).
Декодирование кодов, подобых этому, осуществляется по методу максимального правдоподобия. Т.е., если мин. расстояние у кода 3, то это означает, что он позволяет корректировать 1х ошибки и обнаруживать все 2х ошибки. В случае возникновения 3х ошибки есть вероятность получить кодовое слово, т.е. ошибка при этом замаскируется.
Код Хемминга имеет как раз мин. расстояние 3. Т.е.
для обнаружения 2х ошибок добавлять ничего не надо.Есть еще расширенный код Хэмминга, в котором к каждому слову добавляется дополнительный проверочный бит равный сумме всех информационных и остальных проверочных (бит четности всего пакета). Мин. расстояние такого кода уже 4: корректируем 1х, обнаруживаем 2х и все ошибки нечетной кратности. 2х нельзя корректировать, т.к. такие слова лежат как раз "по середине" между кодовыми словами.
А Хэмминг с 4 проверочными битами может быть использован до 11 информационных символов. Смотря для чего и где применять...