Upload
stefka-bouyuklieva
View
22
Download
0
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