На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Код Хемминга , обнаружение 2й ошибки
    САБЖ.
    Как находить и исправлять 1у ошибку понял, а вот как находить 2ю не понял. Инфы вроде хватает, но чтобы было написано, что так и так - ничего. Может кто знает?
      Если мне мой склероз не изменяет, то оно либо находит и исправляет одну ошибку, либо сигнализирует о наличии двух, но не исправляет их.
        Black Star, код Хемминга действительно исправляет одинарную ошибку при минимальном кодовом расстоянии d=3 и находит (не исправляя) двойную ошибку при d=4. Я приаттачил доку с примерами, если что-то не понятно - переведу.
        Прикреплённый файлПрикреплённый файл____________.doc (48.5 Кбайт, скачиваний: 4744)
          n0rd, нашел такую фразу:
          Цитата
          Коды Хемминга имеют бóльшую относительную избыточность, чем коды с проверкой на четность, и предназначены либо для исправления одиночных ошибок (при d = 3), либо для исправления одиночных и обнаружения без исправления двойных ошибок (d = 4).

          Вот в ней и запутался. 1 ошибку находить знаю как.
          Но я так понял что можно 1у исправить, но и заметить 2ю. На крайняк можно добавить 1 бит четности... <_<

          Swindler, что-то знакомое... :D Буду разбирать... :whistle:

          Добавлено
          Попутно хочу еще спросить про d - минимальное кодовое расстояние. Что-то не совсем понимаю его смысл и назначение. Расстояние между двумя любыми кодовыми комбинациями в заданном коде. И как это понять?
            насколько я помню это количество несовпавших символов из алфавита кодового слова.
            наприсер
            110
            011
            кодовое расстояние -2 (1-й и 3-й символ не совпадают)

            110
            010
            кодовое расстояние - 1

            Добавлено
            ну а
            Цитата Black Star @
            Расстояние между двумя любыми кодовыми комбинациями в заданном коде.

            значит что ты гарантируешь, что расстояние между любыми кодовыми словами, расчитанное по вышеописанному алгоритму будет такойто(3 или 4 в твоем случае)...
              Расстояние (хеминговое) - число несовпадающих одноименных позиций в комбинациях:
              между 11100011 и 10101010 расстояние =3.
              минимальное кодовое расстояние - это минимальное расстояние между двумя любимыми комбинациями в коде.
                Мммм...
                Есть, например (как у меня), 10 битное число. Пусть А. В коде Хемминига будет оно будет как Б (уже 14 бит).
                А: 0010000001
                Б: 00100010001111
                И как понять, что d=3 ?
                Цитата Swindler @
                Расстояние (хеминговое) - число несовпадающих одноименных позиций в комбинациях

                И какие позиции одноименные?
                  Black Star,
                  сравниваються между собой числа, которые УЖЕ представлены в коде Хеминга.
                  Например:
                  10101010101010
                  10100100101010
                  d=3.
                    Не понял :wall:
                    Что значит
                    Цитата Swindler @
                    сравниваются между собой числа, которые УЖЕ представлены в коде Хемминга.


                    Если есть число, то оно будет одно. С чем его сравнивать?
                    10101010101010
                    10100100101010
                    Видно, что 3 несовпадения. Только что 1е число, и что 2е ?
                      Black Star, в посте номер 7 есть пример:
                      А: 0010000001
                      Б: 00100010001111
                      И стоит вопрос, какие позиции сравнивать.

                      Пишу по порядку, как работают с кодом Хемминга:
                      0) Постановка задачи - определить наличие ошибок в записи какого-то числа (последовательности бит).
                      1) Информация представляеться в коде Хемминга, для этого в записи числа добавляються новые позиции, информация в которых записываеться по спец. правилу (если надо, то я напишу как выбирать эти позиции и как записывать туда информацию). При этом колличество контрольных разрядов зависит от того, какая цель преследуеться: если найти одинарную ошибку и исправить её, то достаточно d=3, если необходимо определить наличие двойной ошибки то d=4.
                      2) Далее. Постановка задачи такая: есть число (последовательность бит). Необходимо определить, есть ли в ней одинарная ошибка и исправить её(при d=3), или найти двойную ошибку (при d=4).
                      3) Суть процесса сравнения: для каждой проверки (проверка контролирует определенные разряды) определяеться парность/непарность разрядов, и в регистр ошибок записываеться
                      0 и 1 соответственно. В результате проведения всех проверок, в регистре окажеться номер позиции, в которой есть ошибка.
                      А так чтоб совсем на пальцах: если расстояние d=3, то при наличии 1 ошибки видно, к какому числу необходимо исправить (так как от одного числа число с ошибкой отличаеться на 1 бит, а от другого - на 2). Соответственно исправляеться на то число, к которому "ближе":)

                      З.Ы. Если так непонятно, пиши формулировку задачи - будем разбираться по шагам.
                        Пишу...
                        Есть число. Найти 1у ошибку и исправить, если 2, то сообщить об ошибке.
                        Как 1у находить я ЗНАЮ ! Как 2 найти?
                          Для нахождения двойной ошибки добавляеться еще 1 контрольный разряд (кроме тех, что стоят на позициях 2^(i-1))- на позиции 0, котоый означает четность всего кодового числа. Получили d=4
                          Итого:
                          0) Если групповые проверки и общая проверка на четность в результате дают 0, то информация передана без ошибок
                          1) Если групповые проверки дают не нулевой результат, то берут во внимание результат проверки на четность по всему слову.
                          а) Нечетность этой проверки указывает на наличие одинарной ошибки, которая может быть исправлена.
                          б)четность - про наличие неисправимой двойной ошибки

                          Пример нужен?
                            Все. В итоге пришли к тому, что я и так понял давно :lol:
                            Меня в смущение вводило это d=4. Всеравно не понял его назначение и способ определения (когда 3, когда 4 ;) )
                            Но остальное не суть важно. Главное, что курсач будет сделан :tong:

                            Swindler, сп. за упорное объяснение ;)
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0355 ]   [ 15 queries used ]   [ Generated: 11.08.25, 20:51 GMT ]