Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
5.4.2. Алгоритм БерлекэмпаРешение ключевого уравнения при заданном
Как уже указывалось, задача нахождения решения ключевого уравнения, имеющего минимальную степень, эквивалентна задаче построения регистра сдвига минимальной длины, порождающего первые 21 членов 1) правильно предсказывал следующий символ; 2) не менял предсказание предыдущих символов; 3) увеличивал длину на минимально возможную величину. Этот процесс нужно продолжать до тех пор, пока не будут порождены первые Пример. Рассмотрим задачу построения регистра сдвига наименьшей длины, порождающего последовательность 11101 10000101. Простейший регистр сдвига с обратными связями, порождающий первые два символа, показан в первой стороке на рис. 5.7. Этот регистр правильно порождает также третий символ, однако при порождении четвертого символа появляется ошибка. Сейчас ясно, что длина регистра должна быть сделана равной по крайней мере 3, поскольку две единицы нельзя скомбинировать таким образом, чтобы сначала получить из них единицу (третий символ), а затем при следующем сдвиге получить из них нуль (четвертый символ). Регистр сдвига с обратными связями длиной 3, правильно порождающий четвертый символ Построенный регистр может служить для порождения пятого символа, однако он неверно предсказывает шестой символ. Один из способов исправить это предсказание состоит в том, чтобы найти линейную комбинацию символов Наконец, хотелось бы выбрать эту линейную комбинацию символов так, чтобы входящие в нее символы лежали возможно ближе к шестому символу. Возможный ответ получается рассмотрением регистра в первой строке на Рис. 5.7. (см. скан) Построение регистра минимальной длины, порождающего рис. 5.7. Можно заметить, что, поскольку четвертый символ предсказывается этим регистром неправильно, сумма третьего и четвертого символа «равна 1, в то время как суммы второго и третьего, а также первого и второго символов равны 0. Добавив к текущему многочлену связей член Рассматривая теперь этот новый регистр с обратными связями, можно видеть, что он правильно предсказывает седьмой символ, однако неправильно предсказывает восьмой. Эту ошибку можно исправить либо с помощью первого многочлена связей (добавляя к текущему предсказанию символы 3 и 4), либо с помощью второго многочлена связей (добавляя к текущему предсказанию символы 3, 5 и 6). В любом случае длина нового регистра станет равной 5, поскольку в каждом случае старший символ находится в ячейке 3. По причинам, которые станут ясными позднее, согласно алгоритму Берлекэмпа всегда выбирается первая возможность. Таким образом, текущий многочлен связей изменяется на добавку В самом деле, регистр длиной 3 не годится. Заметим, что, когда в регистре находится комбинация Далее видим, что построенный регистр длиной 5 неправильно предсказывает девятый символ. По аналогии с предыдущими случаями исправить это предсказание можно тремя способами. Наилучшим выбором будет, очевидно, регистр в строке 3 на рис. 5.7, поскольку для него старший символ в момент ошибки находится в ячейке 5, в то время как для двух других регистров старший символ в момент ошибки находится в ячейке 3. Таким образом, добавляем На первый взгляд построенный регистр сдвига с семью ячейками будет давать правильный отвег. Однако если попытаться определить с помощью образованного многочлена связей символ в ячейке 8 (как положено делать для регистра длиной 7), то вклад регистра из третьей строки (т. е. добавочного члена) требует, чтобы символ в ячейке 3 определялся по символам в ячейках 1 и 2. Это сделать невозможно, поскольку нарушаются условия, по которым выбирался регистр в третьей строке. Поэтому следует использовать регистр длиной 8, показанный на рис. 5.7. Длину этого нового регистра можно, конечно, получить, вычитая положение старшего символа в добавочном члене из положения последней ошибки. Эта процедура дает правильную длину тогда, когда полученное значение превышает степень нового многочлена связей. В противном случае длина регистра совпадает со степенью многочлена связей. Этот пример показывает, что для построения самого короткого регистра, порождающего данную последовательность, можно указать итеративную процедуру. Заметим, что при каждой итерации согласно алгоритму должны сохраняться как многочлен связей, так и возможная добавка. Для каждого нового символа алгоритме должна быть предусмотрена проверка правильности предсказания этого символа текущим многочленом связей. Если предсказание является правильным, то многочлен связей не меняется, а добавка умножается на Теперь можно дать следующее формальное описание алгоритма Берлекэмпа. Пусть
Тогда следующий многочлен связей
имеет длину
При
При
Начальные значения определяются как Схема последовательности операций алгоритма на ЭВМ показана на рис. 5.8. Каждый знак равенства на этом рисунке следует Рис. 5.8. (см. скан) Блок-схема решения ключевого уравнения согласно алгоритму Берлекэмпа на ЭВМ интерпретировать как присвоение, как это обычно делается в программировании. Для упрощения обозначений индексы везде опущены. При решении ключевого уравнения в частотной области нужно также найти многочлен значений ошибок
Полагая Далее приведем два примера, иллюстрирующие использование алгоритма Берлекэмпа для решения ключевого уравнения. В первом рассмотрим двоичный код БЧХ, для которого нужно найти только многочлен локаторов ошибок, а во втором — код Рида — Соломона, для которого находятся оба многочлена: Пример. Рассмотрим код БЧХ длиной 15, исправляющий двойные ошибки, считая, что принятое слово и многочлен синдромов задаются формулами (5.40) и (5.41). В табл. 5.5 показаны этапы решения ключевого уравнения с помощью алгоритма Берлекэмпа. Таблица 5.5. (см. скан) Решение ключевого уравнения для Заметим, что на каждом этапе используется только один коэффициент многочлена синдромов. Этим алгоритм Берлекэмпа отличается от алгоритма Евклида, при котором используется весь многочлен. Однако полученный многочлен Предположим теперь, что, рассматривая тот же пример, добавляем еще одну ошибку в позиции 1, т. е.
Легко вычислить многочлен синдромов
Применение алгоритма Берлекэмпа проиллюстрировано в табл. 5.6. Легко показать, что корнями Таблица 5.6. (см. скан) Решение ключевого уравнения для Таблицы 5.5 и 5.6 иллюстрируют важное свойство алгоритма для двоичных кодов БЧХ: для них Пример. Рассмотрим код Рида — Соломона длиной 15, исправляющий тройные ошибки, в предположении, что Таблица 5.7. (см. скан) Решение ключевого уравнения для
|
1 |
Оглавление
|