| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > [?] Модифицированный код Хемминга |
| Автор: XuTMAH 4.10.2005, 21:42 |
| Для начала - обозначения (чтобы не запутаться): d3, d2, d1, d0 - информационные разряды k, k3, k2, k1 - контрольные разряды kp, p3, p2, p1 - разряды проверки Если я не ошибаюсь то: Кодирование: k1 = d0 xor d1 xor d3 k2 = d0 xor d2 xor d3 k3 = d1 xor d2 xor d3 k = k1 xor k2 xor d0 xor k3 xor d1 xor d2 xor d3 Декодирование: p1 = k1 xor d0 xor d1 xor d3 p2 = k2 xor d0 xor d2 xor d3 p3 = k3 xor d1 xor d2 xor d3 kp = k1 xor k2 xor d0 xor k3 xor d1 xor d2 xor d3 xor k Насколько я понимаю "Модифицированный код Хеммнга" гарантирует возможность исправления еденичной ошибки, при том это возможно только в случае если kp = 1 а слово p3-p2-p1 принимает ненулевое значение В тех же случаях когда kp = 0 и p3-p2-p1 = ненулевое значение или kp = 1 и p3-p2-p1 = 0 шибку исправить нельзя, т.е. ошибка двойной или большей кратности... kp = 0 и p3-p2-p1 = 0 ошибки нет Если я всё правильно написал(поправьте меня если что), то возьмём следующий пример для проверки: 1101 кодирование k1 = 0 k2 = 1 k3 = 0 k = 0 сделаем одну ошибку 0101 декодирование k1' = 1 k2' = 0 k3' = 1 k' = 0 p1 = 1 p2 = 1 p3 = 1 kp = 0 в итоге этот резкльтат подподает под тот случай где ошибка не устранима, т.е. ошибка двойной или большей кратности, а я делал одиночную ошибку... Отсюда и следует вопрос - в чём я наврал? |
| Автор: cardinal 4.10.2005, 23:15 | ||||
А может тут
k2 = 0? Просто 1 xor 1 xor 0 = 1 xor 0 xor 1 или я торможу... |
| Автор: XuTMAH 5.10.2005, 11:45 | ||
| 2cardinal Я забыл написать что d0 - это младший разряд (нулевой), d1 - первый, d2 - второй, d3 - третий т.е. в исходном примере 1101 d3 = 1 d2 = 1 d1 = 0 d0 = 1 и следовательно по формулам k1 = d0 xor d1 xor d3 k2 = d0 xor d2 xor d3 получаем k1 = 1 xor 0 xor 1 = 0 k2 = 1 xor 1 xor 1 = 1 Невижу противоречий... Может я слепой?
Это бесспорно. |