Главная ->  Вычислительные алгоритмы 

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

Приложение А

НАБОР АЛГОРИТМОВ ЦИКЛИЧЕСКИХ СВЕРТОК

В данном приложении приводится набор алгоритмов циклических сверток над полем вещественных чисел для длин п = = 2, 3, 4, 5, 7, 8 и 9. Алгоритмы имеют вид равенств S - CGAd.

Матрица О является диагональной и ее .пагогальиые элементы выписываются в виде компонент вектора G = Bg. хМатрнцы А я С выписываются полностью. Кроме того, используя обозначения

D - Ad, S - GD. S = CS, мы приводим последовательности сложений, которыми можно заменить умножения на матрицы А и С.

2-точечная циклическая свертка; 2 вещественных умножения,. 4 вегдесгвекных сложения

[т п fg,:

, - Se - s,

3-точечная циклическая свертка; 4 вещественных умножения. 11 вещественных сложений

1 -2]

Do - Го + rfj Dl . Л - d,

Dv = rfi + r:

7, = S, - S,

r, = s= - s,

s. So + To

s, = So - To - Ti

5, = So + T,

12.2. Повторить приведенный на рис. 12.7 пример для входной последоват! ности V = 1000100000100000... .

13.3. Алгоритм Витерби может быть запрограммирован в виде, в котором pal ходимости путей на (-Й итерации запоминаются в том же массиве, что и pal ходимости путей на (i-1)-й итерации. Выписать последовательно) адресов и вычислений, позволяющих сделать такую программу.

2.4. 2 выживающих в алгоритме Витерби (при q= 2) путей можно записа- в виде 2 й-битовых двоичных слов. В типичных случаях fc = 40 бит. 1 строить (используя такие средства, как указатели и битовые срезы) cxei управления памятью для алгоритма Витерби, которая исключает необи димость считывания на каждой итерации 2%битовых слов.

Замечания

Алгоритмы поиска по решетке появились сначала в связи с кодами, контр! лирующнми ошибки, для которых задачу декодирования сверточных кодов можш интерпретировать как задачу поиска по решетке (или по дереву). Большинста публикаций по данному вопросу выполнено на языке кодов, контролируют ошибки. Однако, в настоящее время к этим алгоритмам проявляется более ши кий интерес, и в данной главе сделана попытка их изложения вне зависимое от какого бы то нн было приложения.

Хотя ретроспективно наиболее подходящим в качестве начала изложен данного круга вопросов представляется алгоритм Витерби, на самом деле п€ выми были разработаны последовательные алгоритмы. Последовательные алп ритмы были введены Возенкрафтон (1957) н подробно описаны Возенкрафто и Рейффеном (1961). Дальнейшее развитие они получили у Фано (1963), Зиганг] рова (1966) и Джелинека (1969). Разработки Джелинека (1968) и Форни (197J а также работы ШевнлЛа и Костелло (1978) и Хаккоуна и Фергюсона (19Г также продвинули исследование данного вопроса. Наше изложение алгорйп Фано тесно связано с данным Галлагером (1968) изложением этого алгоритм Первоначально Витерби (1967) опубликовал свой алгоритм скорее в учебнЫ целях, чем в качестве серьезного алгоритма. Программные реализации алг ритма Витерби с эффективным использованием памяти описаны Рейдером (19813

Нижние границы для распределения числа операций получили Джекоба н Берлекэмп (1967), а верхние - Севедж (1966).



ний!-г5 вГс.в1:нТГлГни7 -- -венных ум;;;;;:

Приложевне А. Набор алгоритмов циклических сверток

- I I

/о -

+ rf:

!\ -

d>

+ rf,

До =

О, =

Di =

- d->

D. =

О, =

+ D.

fi I 1

I -1 I I 1-1

! -1 -1

0 -n

1 01

-I 1 -1

0 -2 0

2 2 -2

2 -2 -2I

0. = Л - rf.

Tn =

S + S,

D, = dl - Л

r, .

S, + S;

D, . Do + D,

T: =

S, + S,

0, = rf, - rf.

r, .

S. + S.

D, - A - Л

T, -

s, + s.

D, = D, + D.

T. =

Si + S,

D, . 0, - D,

J.. -

D, = D, - D.

5i =

- r - r,

- Г2 -

D, - Ог - D,

Sl -

r, + r, +

= do + dl + -* dt

51 =

Г! + Г. +

54 =

7, - 7i +

n = S , J,

= s. - .s,

T, = S, - s,

T, = .S, + .V,

5.1 - n + Г,

i = r, + T,

J = f - r,

- T, - r.

7-точечная циклическая свертка; 16 вещественных умножений 70 вещественных сложений

31 вГщ7 вТныГс~иГ - - -венных умножений,!

П о о 1) I о

110 0-2 0 0 1 0-1 0 0 о 1-1 0 0 1 I 2 10-10 0 10 1 0-1

1-1 о

10 10 0 0 -1 0 -1 -1-2-1-1-2 0 0 0 1 0 0 0 0 1 1

I о о о 1 о 1

11110 11 о о 0-1-1 ,

I I 1 1

Г5 0 -

0 5 -

-2 -2

-5 5-5

- 5 5 - 5

3 -2 3

0 0-3

0 5 -5

-1-1 4

L. 1 1

-5 5 -5

-5 5-5 3-2 3

-5 5 0

-5 0 5

3 -2 -2

3 5 0

5 0 0 4 -1 -1

1 1 1

1 1 1 1 0 0 0 0 0 0

l-i -3 -1 - -1 -I -3 1 -7 -1

0 0 0 0 0 0 1 1 4 1

0000001 -1 20 0 0 0 0 0 1 1 1 1 0 0 1 1 4 1 0 0 0 0 0

01 -1 200000

11110 0 0 0 0 0 о -1 -0-1

-1 -1 -о 1 о 1 -

-4-1 1

-2 о 1

-1 о 1

4 1 I

2 р 1



D, . D, . Ds = Oi = D, --D, --Oi. = D =

Du =

2C, 14C, 6Ci 60, G, O, 14G, 60, 6C,

2Gi. MGii 60 6C Ci. 7Ci, = rfi - Л Л - rf.

- rf. - rf. = rf! - rfs = o + d

= - o + /i

! + (j

-d. + rfj

- d, - dt D, + I. De + Ii

D, + + и + h I,

d, - d, D, + (.

Di + fj £>6 + /6 + /б + /,

О, - О, - О, D, - Oi D, - Д, О. - О.

Dii + 2(rf, + (/, + do) -

2 1

-4 -11

0 -1

0 1

1 -2

-1 3

10 -11

-2 -1

-1 1

3 -2

0 1

-2 -9

0 -1

0 1

1 1

-1 1

8-точечная циклическая свертка; 14 вещественных умножений, 46 вещественных сложений

Г, = S. + s Т, - S, + s T, = Si + s,j n = s, + s

T, = S, + S:,

TiS,- s

r. = s. - s

r,S,- s

Г, = S, - S,j

Г, = 5, - S r,. = Г, + T, r r + Ti Гц = 7i + 7, r = Г,. # T, r,. = T - n

T,i = (Г, + 7-j + г, + г.) + 7i

т ,! = - г - г,1 - (г + г, + г, т.)!

т = п + т,

т = т + т,

т = т, + г

т = Г -ь т,

Тп = (7- + F, + г, + г,) 7-,

i Г = -Т - 7 - (Г г, + г. + Г,)

Sl = Г, + Га -I- Sij

Sj = Tji + 5is

S) = r Sij

s. - r + S,s

Si = T,> + 5,1

s. = Г,. + S,

0

-1 -1

- 1 0

с 1

1 -1

0 1

1 -1

0 -1

-1 1

0 -1

-1 1

20i 2C, 20i 2G 2G 2C

1 0 0 0 0 1 0 I 0 -1

-1 0

0 1 -

0 -1 -

1 0 -1 0

0 -1 -

0 I -

-1 1 1 1

0 0 0 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