Коды Хеминга, Порождающая и проверочная матрица

Тема в разделе "WASM.CRYPTO", создана пользователем m0nstr0, 17 янв 2012.

  1. m0nstr0

    m0nstr0 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2012
    Сообщения:
    4
    Понадобились коды Хеминга и я начал в них разбираться, вроде все понятно, но никак не разберусь с примером :-( Не совпадают ответы.

    Вообщем пример задания:

    есть числа: a1, a2, a3, a4, a5, a6, a7 где a5, a6, a7 проверочные вычисляемые как:

    a5 = a2 + a3 + a4
    a6 = a1 + a3 + a4
    a7 = a1 + a2 + a4

    Как я понял надо построить единичную матрицу размерности 4:

    1 0 0 0
    0 1 0 0
    0 0 1 0
    0 0 0 1

    А затем для каждой строки посчитать a5, a6, a7 и полученную матрицу приписать к единичной, получилось следующее:

    1 0 0 0 | 0 1 1
    0 1 0 0 | 1 0 1
    0 0 1 0 | 1 1 0
    0 0 0 1 | 1 1 1

    Дальше я беру приписанную матрицу и транспонирую ее и приписываю единичную:

    0 1 1 1 1 0 0
    1 0 1 1 0 1 0
    1 1 0 1 0 0 1

    По всей видимости у меня получилась проверочная матрица.

    НО ответ совершенно другой и я не понимаю как он получился (думаю мжт ошибка в ответе, под описание проверочной он не подходит):

    0 0 0 1 1 1 1
    0 1 1 0 0 1 1
    1 0 1 0 1 0 1

    Пните в нужно русло если я ошибся где то.
     
  2. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Бог с Вами, Вы что делаете. Должно быть так C*Q=E (С - кодирующая, Q - проверочная, E - единичная)

    В вашем случает для вас проще всего будет решить систему C*X=E, где X - проверочная матрица.

    P.S. стоит хоть размерности пространств проверять)
     
  3. m0nstr0

    m0nstr0 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2012
    Сообщения:
    4
    Ну я делал по определению проверочной матрицы, во всех книгах написано следующее:

    Проверочная матрица в систематическом виде строится на основе матрицы G(n,k), а именно:

    H(n, k) = |R*(k,r), I(k)|

    I(k) - единичная матрица
    R*(k,r) - матрица в транспонированном виде из G(n,k)

    Вот и получилась у меня эта матрица.

    Но ночью я не приметил, что матрица в ответе есть моя получившаяся матрица только в упорядоченном виде по возрастанию.

    При умножении тестовых кодовых векторов на мою матрицу и матрицу в ответе получаются разные номера битов с ошибкой.

    Собственно вопрос в каких случаях надо ее упорядочивать?
     
  4. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    А что у Вас за книга то?

    По сути если на пальцах, для Хемминга всегда (где я читал) строилась в начале проверочная матрица, а только затем кодирующая.
    А проверочная матрица строилась как бинарные цифры, записанные по столбцам по возрастанию.

    Если дадите ссылку на то, что читаете я попытаюсь понять что хотел сказать автор.

    P.S. по сути от перестановки столбцов у Вас меняется только определитель матрицы. Так что это не критично. Просто разные подходы к построению кодов.
     
  5. m0nstr0

    m0nstr0 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2012
    Сообщения:
    4
    К примеру тут:

    http://k501.xai.edu.ua/lib/otpi_uchpos_part2.pdf

    и

    http://kunegin.narod.ru/ref1/coding/glava1.htm

    В разделах про построение этих двух матриц
     
  6. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Здесь же так и строят как я Вам сказал начиная от проверочной матрицы.
     
  7. m0nstr0

    m0nstr0 New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2012
    Сообщения:
    4
    Спасибо за помощь, я просто не уловил правильно суть синдрома, я думал что его значение однозначно указывает на номер ошибки, но это справедливо только для упорядоченной матрицы с элементами от 1 .... n. А в правильной сути надо в проверочной найти строку равную синдрому, и позиция этой строки в проверочной матрице и есть ошибка. :)