29
Алгоритми за пресмятане на тегловни характеристики и свързани с тях подмножества на линеен код Стефка Буюклиева Илия Буюклиев

Stefka iliya fmi_su1

Embed Size (px)

Citation preview

Алгоритми за пресмятане на тегловнихарактеристики и свързани с тях подмножества

на линеен код

Стефка БуюклиеваИлия Буюклиев

Основни задачи

1. Пресмятане на тегловния спектър на линеен код.2. Пресмятане на минималното тегло на линеен код.3. Намиране на множеството от кодови думи с дадено тегло.

Дефиниции

I Fq - крайно поле с q елемента;I Fn

q - n-мерно векторно пространство над Fq;I Тегло на вектор x ∈ Fn

q: wt(x) = |{i |xi ̸= 0}|;I Линеен код с дължина n и размерност k - k-мерно

подпространство на Fnq;

I Минимално тегло на линеен код C :

d(C ) = min{wt(x)|x ∈ C , x ̸= 0}

I C - линеен [n, k , d ]q код.

Линеен [n, k] код C

A generator matrix (пораждаща матрица) of C

G =

a1...ak

= (b1 b2 · · · bn)

C = ⟨G ⟩ = {α1a1 + · · ·+ αkak , (α1, . . . , αk) ∈ Fkq}

Weight spectrum of C : (A0,A1, . . . ,An) ∈ Zn+1

Ai - брой на кодовите думи с тегло iWeight function of C : WC (y) = A0 + A1y + A2y

2 + · · ·+ Anyn

Линеен [n, k] код C

NP-пълни задачи:I 1978 - Berlekamp, McEliece и van Tilborg

- Задача за Тегловното РазпределениеI 1997 - Vardy

- Задача за Минималното Рaзстояние

Пресмятане на тегловния спектър на линеен код

I с код на Грей - O(nqk), q - просто,O(snqk), q = ps

I с Адамарова матрица и "butterfly"алгоритъм - O(k2k)(в края на презентацията)

Намиране на множеството от кодови думи с дадено тегло

Complementary information set code:

[2k , k] линеен код с пораждаща матрица

G = (B1 B2), rankB1 = rankB2 = k

G1 = (Ik B ′2), G2 = (B ′

1 Ik)

За генерирането на всички кодови думи с тегло ≤ w садостатъчни всички линейни комбинации на m1 реда на G1 и наm2 реда на G2, където m1 ≤ ⌊w2 ⌋, m2 ≤ ⌊w−1

2 ⌋

Общо (k +(k2

)+ · · ·+

( k⌊w/2⌋

)) + (k +

(k2

)+ · · ·+

( k⌊(w−1)/2⌋

))

линейни комбинации

Намиране на множеството от кодови думи с дадено тегло

Complementary information set code:

[40, 20] линеен код

G1 = (Ik B ′2), G2 = (B ′

1 Ik)

За генерирането на всички кодови думи с тегло 8 са достатъчни2(20 +

(202

)+

(203

)) +

(204

)линейни комбинации

2(20 +

(20

2

)+

(20

3

)) +

(20

4

)< 20 +

(20

2

)+ · · ·+

(20

8

)7545 < 263949

t − CIS codes

Complementary information set codes of higher-order

[tk, k] linear codes with a generator matrix

G = (B1 B2 · · · Bt),

rankB1 = rankB2 = · · · = rankBt = k

G1 = (Ik B(1)2 · · · B

(1)t ),

G2 = (B(2)1 Ik · · · B

(2)t ),

· · · · · ·Gt = (B

(t)1 B

(t)2 · · · Ik).

t − CIS codes

Complementary information set codes of higher-order

[tk, k] linear codes

G1 = (Ik B(1)2 · · · B

(1)t ),

G2 = (B(2)1 Ik · · · B

(2)t ),

· · · · · ·Gt = (B

(t)1 B

(t)2 · · · Ik).

За всички кодови думи с тегло w са нужни линейникомбинации на общо w − t + 1 реда, но от различни матрици

Линеен [n, k] код C

G = (B1 B2 · · · Bt),

k = rankB1 ≥ rankB2 ≥ · · · ≥ rankBt

G1 = (Ik B(1)2 · · · B

(1)t ),

G2 = (B(2)1 I ′k2 · · · B

(2)t ),

· · · · · ·Gt = (B

(t)1 B

(t)2 · · · I ′kt ).

Линеен [n, k] код C

G = (B1 B2 · · · Bt),

k = rankB1 ≥ rankB2 ≥ · · · ≥ rankBt

G1 = (Ik A1),

G2 = (B(2)1

Ik2 A2

O ′ O ′′ ), . . .

Gj =

(A′j

Ikj Aj

O ′ O ′′

), . . . ,Gr =

(A′r

IkrO ′

),

Пресмятане на минималното тегло на линеен код

I от тегловния спектърI с алгоритъм на Brouwer-ZimmermannI с вероятностен алгоритъм на Leon

Пресмятане на минималното тегло на линеен код

G1 = (Ik A1), . . .

Gj =

(A′j

Ikj Aj

O ′ O ′′

), . . . ,Gr =

(A′r

IkrO ′

),

i = 0repeati := i + 1;d i - текущо минимално тегло,

d i =∑m

j=1(i + 1)− (k − kj)

until d i ≤ d i

Пресмятане на тегловния спектър на линеен код

I с код на Грей - O(nqk), q - просто,O(snqk), q = ps

I с Адамарова матрица и "butterfly"алгоритъм - O(k2k)(в края на презентацията)

The simplex code Sk

Generator matrix Gk = (1 2 · · · 2k − 1)

1 = (00 · · · 01︸ ︷︷ ︸k

)T , 2 = (0 · · · 010︸ ︷︷ ︸k

)T , 2k − 1 = (11 · · · 11︸ ︷︷ ︸k

)T

G3 =

000111101100111010101

, G4 =

000000011111111000111100001111011001100110011101010101010101

Sk - length 2k − 1, dimension k , minimum weight 2k−1

Всички ненулеви кодови думи имат тегло 2k−1

The simplex code Sk

Gk = (1 2 · · · 2k − 1)

Gk - всички точки в проективната геометрия PG (k − 1, 2)

G k = (0 1 2 · · · 2k − 1)

G k - всички вектори в Fk2

Sk = ⟨G k⟩ - [2k , k, 2k−1] linear code, dual distance 1

Линеен [n, k] код C

G =

a1...ak

= (b1 b2 · · · bn)

C → χ(C ) = (α0, α1, α2, . . . , α2k−1) ∈ Z2k−1,

I Ако bi ̸= bj , за i ̸= j , то αi = 1 ⇐⇒ i = bj за някое j

I Ако C има повтарящи се стълбове, тогава αi е равно наброя на стълбовете в G , равни на i

Линеен [n, k] код C

C − [7, 4] code, G =

1000111010011000101010001011

χ(C ) = (0110100010010110)

C − [8, 4] code, G =

11000000001100000000110000000011

χ(C ) = (0220200020000000)

Линеен [n, k] код C

G =

a1...ak

= (b1 b2 · · · bn), n ≤ 2k − 1

G k =

s1...sk

= (0 1 · · · 2k − 1)

wt(ai ) = wt(si ∗ χ(C ))

wt(α1a1 + · · ·+ αkak) = wt((α1s1 + · · ·+ αksk) ∗ χ(C ))

(x ∗ y = (x1y1, x2y2, . . . , xnyn))

Линеен [n, k] код C

Mk =

0 0 . . . 0

0 a1...

...0 a2k−1

Редовете на Mk са всички ненулеви кодови думи на кода Sk

⇒ Mk · χ(C )T =

0w1...

w2k−1

,

w1, . . . ,w2k−1 са всички ненулеви тегла на кода C .

The simplex code S3

Нека a = (a1, a2, . . . , ak , a ∈ Z, 0 ≤ a ≤ 2k − 1

Mk [a] = a1s1 + a2s2 + · · ·+ aksk

M3 =

0 0 0 0 0 0 0 00 1 0 1 0 1 0 10 0 1 1 0 0 1 10 1 1 0 0 1 1 00 0 0 0 1 1 1 10 1 0 1 1 0 1 00 0 1 1 1 1 0 00 1 1 0 1 0 0 1

The simplex code S3

1 7→ −1, 0 7→ 1

M3 7→

1 1 1 1 1 1 1 11 −1 1 −1 1 −1 1 −11 1 −1 −1 1 1 −1 −11 −1 −1 1 1 −1 −1 11 1 1 1 −1 −1 −1 −11 −1 1 −1 −1 1 −1 11 1 −1 −1 −1 −1 1 11 −1 −1 1 −1 1 1 −1

= H8

Mk 7→ H2k

Спектър на Walsh

H0 = (1), H1 =

(1 11 − 1

), Hn+1 =

(Hn Hn

Hn − Hn

)за n ≥ 2.

Hn ∈ GL(2n,Q), H−1n =

1

2nHn

[Wf ] = Hn[(−1)f ], [(−1)f ] = (11 . . . 1)t − 2[f ]

H2k · χ(C )T =

n

n − 2w1...

n − 2w2k−1

Спектър на Walsh

Пример: χ(C ) = (02202000)

[Wf ] =

1 1 1 1 1 1 1 11 −1 1 −1 1 −1 1 −11 1 −1 −1 1 1 −1 −11 −1 −1 1 1 −1 −1 11 1 1 1 −1 −1 −1 −11 −1 1 −1 −1 1 −1 11 1 −1 −1 −1 −1 1 11 −1 −1 1 −1 1 1 −1

02202000

=

622

−22

−2−2−6

.

W (C ) = 1 + 3y2 + 3y4 + y6

Butterfly algorithm - O(k .2k)

χ(C ) Step 1 Step 2 Step 3000 t0 ↘ t0 + t1 ↘ t0 + t1 + t2 + t3 ↘ t0 + t1 + · · ·+ t7001 t1 ↗ t0 − t1 ↘ t0 − t1 + t2 − t3 ↘010 t2 ↘ t2 + t3 ↗ t0 + t1 − t2 − t3 ↘011 t3 ↗ t2 − t3 ↗ t0 − t1 − t2 + t3 ↘100 t4 ↘ t4 + t5 ↘ t4 + t5 + t6 + t7 ↗101 t5 ↗ t4 − t5 ↘ t4 − t5 + t6 − t7 ↗110 t6 ↘ t6 + t7 ↗ t4 + t5 − t6 − t7 ↗111 t7 ↗ t6 − t7 ↗ t4 − t5 − t6 + t7 ↗

Butterfly algorithm - O(k .2k)

j ← 1; W ← χ(C );while (j < 2k) do

for i = 0 to 2k − 1 doif i [j ] = 0 then / ∗ if ((i&j) == 0) ∗ /

temp ←W [i ];W [i ]←W [i ] +W [i + j ];W [i + j ]← temp −W [i + j ];

end thenend forj ← 2 ∗ j ;

end while.

Butterfly algorithm - O(k .2k)

Много ефективен за кодове с n >> k

Пример (Thomas Feulner): CCZ-кодове, свързани сAPN-функции, с параметри [2m, 2m + 1, d (m)]

- Grey code - 2m · 22m+1 операции- butterfly algorithm - (2m + 1) · 22m+1 операцииОношението е 2m/(2m + 1)

m = 12→ 212/25 = 163, 84m = 14→ 214/29 ≈ 565

Butterfly algorithm

Предимства:

I Много подходящ за паралелна реализация, особено сCUDA.

I По-бърз за кодове с малка скорост

Въпроси:

I Може ли алгоритъмът да се модифицира за недвоичникодове?

I Може ли да се използва butterfly алгоритъм и запресмятане на други параметри?