Jump to content

Алгоритм Берлекэмпа – Мэсси

Алгоритм Берлекэмпа – Мэсси — это алгоритм , который находит кратчайший регистр сдвига с линейной обратной связью (LFSR) для заданной двоичной выходной последовательности. Алгоритм также найдет минимальный полином линейно рекуррентной последовательности в произвольном поле . Требование к полю означает, что алгоритм Берлекэмпа – Мэсси требует, чтобы все ненулевые элементы имели мультипликативный обратный. [ 1 ] Ридс и Слоан предлагают расширение для работы с кольцом . [ 2 ]

Элвин Берлекамп изобрел алгоритм декодирования кодов Бозе-Чаудхури-Хоквенгема (BCH) . [ 3 ] [ 4 ] Джеймс Мэсси осознал его применение к регистрам сдвига с линейной обратной связью и упростил алгоритм. [ 5 ] [ 6 ] Мэсси назвал этот алгоритм алгоритмом синтеза LFSR (итеративный алгоритм Берлекэмпа). [ 7 ] но теперь он известен как алгоритм Берлекэмпа – Мэсси.

Описание алгоритма

[ редактировать ]

Алгоритм Берлекэмпа – Мэсси является альтернативой декодеру Рида – Соломона Петерсона для решения системы линейных уравнений. Его можно резюмировать как поиск коэффициентов Λ j многочлена Λ( x ), чтобы для всех позиций i во входном потоке S :

В приведенных ниже примерах кода C ( x ) является потенциальным экземпляром Λ ( x ). Полином локатора ошибок C ( x ) для ошибок L определяется как:

или наоборот:

Цель алгоритма — определить минимальную степень L и C ( x ), которая приводит к появлению всех синдромов.

быть равным 0:

Алгоритм: C ( x ) инициализируется значением 1, L — текущее количество предполагаемых ошибок и инициализируется нулем. N – общее количество синдромов. n используется в качестве основного итератора и для индексации синдромов от 0 до N -1. B ( x ) — копия последнего C ( x ), поскольку L был обновлен и инициализирован значением 1. b — копия последнего несоответствия d (поясняется ниже), поскольку L было обновлено и инициализировано значением 1. m — количество итераций, поскольку L , B ( x ) и b были обновлены и инициализированы значением 1.

Каждая итерация алгоритма вычисляет несоответствие d . На итерации k это будет:

Если d равно нулю, алгоритм предполагает, что C ( x ) и L верны на данный момент, увеличивает m и продолжает работу.

Если d не равно нулю, алгоритм корректирует C ( x ) так, чтобы перерасчет d был равен нулю:

х м термин сдвигает B(x) так, что он следует синдромам, соответствующим b . Если предыдущее обновление L произошло на итерации j , то m = k j , и пересчитанное несоответствие будет:

Это изменит пересчитанное расхождение на:

Алгоритму также необходимо увеличивать L (количество ошибок) по мере необходимости. Если L равно фактическому количеству ошибок, то во время итерационного процесса расхождения станут равными нулю до того, как n станет больше или равно 2 L . В противном случае L обновляется, и алгоритм обновляет B ( x ), b , увеличивает L и сбрасывает m = 1. Формула L = ( n + 1 − L ) ограничивает L количеством доступных синдромов, используемых для расчета несоответствий, а также обрабатывает случай, когда L увеличивается более чем на 1.

Псевдокод

[ редактировать ]

Алгоритм Мэсси (1969 , стр. 124) для произвольного поля:

polynomial(field K) s(x) = ... /* coeffs are s_j; output sequence as N-1 degree polynomial) */
/* connection polynomial */
polynomial(field K) C(x) = 1;  /* coeffs are c_j */
polynomial(field K) B(x) = 1;
int L = 0;
int m = 1;
field K b = 1;
int n;

/* steps 2. and 6. */
for (n = 0; n < N; n++) {
    /* step 2. calculate discrepancy */
    field K d = s_n + ;

    if (d == 0) {
        /* step 3. discrepancy is zero; annihilation continues */
        m = m + 1;
    } else if (2 * L <= n) {
        /* step 5. */
        /* temporary copy of C(x) */
        polynomial(field K) T(x) = C(x);

        C(x) = C(x) - d  B(x);
        L = n + 1 - L;
        B(x) = T(x);
        b = d;
        m = 1;
    } else {
        /* step 4. */
        C(x) = C(x) - d  B(x);
        m = m + 1;
    }
}
return L;

В случае двоичного кода GF(2) BCH невязка d будет равна нулю на всех нечетных шагах, поэтому можно добавить проверку, чтобы избежать ее вычисления.

/* ... */
for (n = 0; n < N; n++) {
    /* if odd step number, discrepancy == 0, no need to calculate it */
    if ((n&1) != 0) {
        m = m + 1;
        continue;
    }
/* ... */

См. также

[ редактировать ]
  1. ^ Ридс и Слоан 1985 , с. 2
  2. ^ Ридс, Дж.А.; Слоан, NJA (1985), «Синтез сдвиговых регистров (по модулю n)» (PDF) , SIAM Journal on Computing , 14 (3): 505–513, CiteSeerX   10.1.1.48.4652 , doi : 10.1137/0214038
  3. ^ Берлекамп, Элвин Р. (1967), Недвоичное декодирование BCH , Международный симпозиум по теории информации, Сан-Ремо, Италия {{citation}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  4. ^ Берлекамп, Элвин Р. (1984) [1968], Теория алгебраического кодирования (пересмотренная редакция), Лагуна-Хиллз, Калифорния: Aegean Park Press, ISBN  978-0-89412-063-3 . Предыдущее издательство McGraw-Hill, Нью-Йорк, штат Нью-Йорк.
  5. ^ Мэсси, Дж. Л. (январь 1969 г.), «Синтез сдвиговых регистров и декодирование BCH» (PDF) , Транзакции IEEE по теории информации , IT-15 (1): 122–127, doi : 10.1109/TIT.1969.1054260 , S2CID   9003708
  6. ^ Бен Атти, Надя; Диас-Тока, Хема М.; Ломбарди, Анри (апрель 2006 г.), «Возвращение к алгоритму Берлекэмпа – Мэсси» , Применимая алгебра в инженерии, коммуникациях и вычислениях , 17 (1): 75–82, arXiv : 2211.11721 , CiteSeerX   10.1.1.96.2743 , doi : 10.1007/s00200-005-0190-z , S2CID   14944277
  7. ^ Мэсси 1969 , с. 124
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 527d867471d3d86d0e61b1e3b71d1ad8__1697698440
URL1:https://arc.ask3.ru/arc/aa/52/d8/527d867471d3d86d0e61b1e3b71d1ad8.html
Заголовок, (Title) документа по адресу, URL1:
Berlekamp–Massey algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)