Главная страница  Дискретный канал связи 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [ 127 ] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189]

1) Стековая память (push-down stack) - устройство памяти, считывание данных из которой начинается с вершины и производится в порядке, обратном порядку записи («пришел последним - обслуживается первым»).-Прим. перев.

ритм декодирования переходит к своему следующему шагу. В остальном алгоритм не изменяется.

Формулировка шага рекуррентной процедуры становится очевидной, если заметить, что описанные в предыдущем параграфе вычисления величин и ас- по величине S" (х) в точности совпадают с процедурой теоремы 7.4.1 с заменой 2t на т, Л) (х) на Л*- (х) и вектора синдромных многочленов S (х) на S**) (х). Следовательно, для вычисления ас- *> (х) можно воспользоваться тем же алгоритмом, что и для вычисления Л(2) (х).

Этот рекуррентный алгоритм, названный процедурой БерМес, приведен нарис. 11.8. Процедура использует самое себя. Она содержит сте*коБую память ), в которой при переходе с одного уровня на другой временно запоминаются данные одного уровня. Поведение алгоритма на следующем уровне ничем не отличается от его поведения на предыдущем уровне, но в стеке записываются другие данные. В конце концов задача сводится только к одной итерации, и ge уже нельзя разделить пополам. Тогда процедура БерМес состоит просто в выполнении этой итерации и алгоритм возвращается в надлежащую точку.

Каждый раз при обращении процедуры БерМес к самой себе необходимо запоминание локальных переменных в стеке. Если Б начале алгоритма решение задачи требует 2р итераций, то глубина рекурсии равна р: имеется р уровней рекуррентного алгоритма. Объем стека должен быть достаточно велик для того, чтобы содержать все временные множества переменных.

Алгоритм проходит /-Й уровень 2Р раз: нулевой уровень - один раз, первый уровень - два раза и т. д.; последний уровень проходится 2Р раз. Выполняемое на t-м уровне вычисление S(x)

Л (х) S (х) содержит четыре умножения многочленов. Степень многочленов Л (х) равна примерно 2р~~ - 1, и они умножаются на многочлены степени 2p~+i - i. Необходимо правильно вычислить только 2Р~ коэффициентов произведения многочленов, а именно коэффициенты, стоящие при степенях переменной от х~ до х-~~~, так как только эти коэффициенты входят Б вектор S (х), используемый при втором обращении к процедуре БерМес. На /-м уровне вычисляется также матричное произведение Л (х) Л (х), которое содержит произведения многочленов степени 2P~~ каждый.

Число умножений в процедуре БерМес почти полностью определяется свертками, так как итерации алгоритма Берлекэмпа -




I Обращение к процейуре БерМес

1-

Стоп

Вхой в процейуру БерМес i

Запись копий многочленов Sixj и К(х)

Аг,-Д-:Дг


L 6{r-L)-(\-d)L

I -йгХ

6 (\-В)х.


Выталкивание копой многочленов s(x) U aix)

Обращение к процейуре берМес

Обращение к процейуре БерМес

/<{х)-К(х)А(х)

Выхой из процейуры БерМес Рис. 11.8. Процедура БерМес.



Число

Число

deg Sex) In

вычислений

вычислений

Уровень

Число

Длина свершки

свертки K(3:jS(x)

свертки А(х)\(х)

Число умножений

2041

1260

355 680

1023

237 120

158 080

149 760

16x8

16x8

99 840

32x8

32x8

66 560

64x8

64x8

77 824

128x8

128x8

38912

256 x8

256x8

36 864

512x8

12 288

1024 *

12.3292S

Рис. п.9. Подсчет числа умножений в процедуре БерМес.

Месси фактически выполняются только на конечном шаге, на котором все подалгоритмы алгоритма содержат по одной итерации и только по одному умножению (на Дш), которым при подсчете общего числа умножений можно пренебречь. Вычислительная сложность процедуры БерМес определяется непосредственно вычислительной сложностью алгоритмов свертки. Успех ее использования предполагает наличие хорошего набора алгоритмов свертки.

На рис. II.р приведены результаты подсчета числа умножений Б рекуррентном алгоритме декодирования применительно к тому же (4096, 2048)-коду Рида-Соломона, который был рассмотрен в предыдущем параграфе. Для вычисления циклических сверток Б обеих половинах использовались метод перекрытия с накоплением и одна из коротких сверток, приведенных на рис. П.5. Выписанные на рис. 11.9 детали расчетов являются убедительным свидетельством сложности структуры рассматриваемого алгоритма. Эта структура, однако, позволяет разумно использовать вычислительные ресурсы при программной и аппаратурной реализации отдельных фрагментов. По мере необходимости она вызывает алгоритмы свертки из библиотеки таких алгоритмов.

В общем случае алгоритм Берлекэмпа-Месси, содержащий 2t итераций, имеет измеряемую числом умножений вычислительную сложность порядка (logg 2t) С (t), где С {{) - число умножений, необходимое для вычисления свертки двух многочленов степени t. Это объясняется тем, что к /-му уровню алгоритм обращается 2 раз, причем длина выполняемой на 1-м уровне свертки равна 2~t. Сложность вычисления 2 сверток длины 2~Ч каждая




[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123] [124] [125] [126] [ 127 ] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156] [157] [158] [159] [160] [161] [162] [163] [164] [165] [166] [167] [168] [169] [170] [171] [172] [173] [174] [175] [176] [177] [178] [179] [180] [181] [182] [183] [184] [185] [186] [187] [188] [189]

0.0137