Вычислительные технологии
Том 18, № 3, 2013
Быстрая нумерация элементов грассманиана
Ю. С. Медведева Институт вычислительных технологий СО РАН, Новосибирск, Россия
e-mail: mjulja@gmail.com
Грассманиан Gq(n,k) — множество всех k-мерных подпространств векторного пространства F™ над конечным полем размера q. Задача кодирования элементов грассманиана рассматривалась во многих работах и находит применение в сетевом кодировании. В настоящей работе предлагается нумерационный метод кодирования элементов грассманиана, превосходящий по скорости методы кодирования элементов грассманиана, известные ранее.
Ключевые слова: кодирование, нумерационное кодирование, быстрое кодирование, теория информации.
Введение
Пусть Fq — конечное поле размера q. Грассманианом называется множество всех k-мер-ных подпространств векторного пространства F^, обозначаемое Gq(n, k), для любых k и n, 0 < k < n. Нумерационным кодированием элементов грассманиана Gq(n, k) является сопоставление каждому элементу грассманиана его номера, т. е. двоичного слова из промежутка [0,..., |Gq(n, k)| — 1]. Задача кодирования элементов грассманиана в течение последних сорока лет рассматривалась во многих работах, например в [1-7]. В [8] было показано, как использовать коды с исправлением ошибок на множестве Gq(n, k) в случайном сетевом кодировании. Это приложение привело к появлению большого числа исследований в данной области [9-19]. В работе Н. Зильберштейн и Т. Эцио-на [20] представлен алгоритм нумерационного кодирования элементов грассманиана, сложность которого равна O(nk(n — k) log n log log n). В настоящей работе предлагается улучшенный алгоритм нумерационного кодирования элементов грассманиана, сложность которого O(lognM[n2]), где M[а] — время умножения двух слов длины а. Таким образом при использовании алгоритма быстрого умножения Фюрера [21] сложность предлагаемого алгоритма равна O(n2 log2 n2O(log*n)). Улучшенный алгоритм основан на методе быстрой нумерации комбинаторных объектов [22]
1. Определения и предварительные результаты
Известно, что мощность грассманиана Gq(n, k) равна
n k
гауссов коэффициент, определяемый следующим образом
[23], где
q
есть q-ичный
q
q 1 qn-i _ 1
п
qk-i — 1 q i=о 4
Алгоритм нумерации элементов грассманиана, представленный в настоящей работе, как и описанный в [20], основан на методе Ковера [24] для нумерации элементов произвольного множества векторов длины n над конечным алфавитом A = {0,1,... , k — 1}, расположенных в лексикографическом порядке.
Обозначим через S Е An нумеруемое множество, через nS(xbx2,..., i,m) — количество векторов из S, у которых первые j координаты равны (x1, x2,... , xj-1, m). Согласно методу Ковера, номер элемента множества x Е S, упорядоченного лексикографически, найдем по формуле
n
code(x) = ^^ ^^ nS(x1, x2,..., xj-1, m). (1)
j=1 m<xj
Любое k-мерное подпространство X Е Gq(n, k) может быть представлено в виде матрицы k х n, строки которой составляют базис X. Такую матрицу k х n назовём матрицей ступенчатого вида по строкам, если соблюдены следующие условия: старший коэффициент каждой строки находится правее старшего коэффициента предыдущей строки, все старшие коэффициенты имеют значение 1 , каждый старший коэффициент является единственным ненулевым элементом в своём столбце. Каждое подпространство X можно представить в виде единственной матрицы ступенчатого вида по строкам. Обозначим такую матрицу RE (X) = (Xn,... , X2, X1). Будем нумеровать её столбцы справа налево, т. е. называть X1 первым столбцом, а Xn — последним. Например, некоторое трёхмерное подпространство X Е G2(8, 3) векторного пространства F| можно представить в виде матрицы 3 х 8:
01100010 RE (X) = 10 0 0 1 0 0 1 0 \0 0 0 0 0 1 1 1
В работе [20] вводится понятие расширенного представления элементов грассмани-ана, которое используется и в предлагаемом алгоритме нумерации.
Каждое k-мерное подпространство X Е Gq(n, k) имеет вектор идентификации v(X) [25]; v(X) — это вектор длины n, состоящий из нулей и единиц, имеющий вес k, позиции единиц в котором совпадают с номерами столбцов, в которых находятся старшие коэффициенты RE(X). Для трёхмерного пространства X Е G2(8, 3) из рассматриваемого примера таким вектором будет вектор v(X) = (0,1, 0,1, 0,1, 0, 0).
Расширенное представление подпространства X, обозначаемое EXT (X), является матрицей (k + 1) х n, верхней строкой которой является вектор идентификации v(X) = (v(X)n,... , v(X)1), а оставшейся частью — матрица ступенчатого вида по строкам, представляющая X:
EXT (X )= (V [X >" ... V >2 V <X >1
Xn . . . X2 X1
Для восьмимерного пространства X Е G2(8, 3) из примера
01010100 EXT (X)= 0 1 1 0 0 0 1 0 (X )= 0 0 0 1 0 0 1 0
\0 0 0 0 0 1 1 1/
Такое представление избыточно, но может быть использовано для эффективного нумерационного кодирования.
Пусть x — вектор длины r над алфавитом {0,1,... , q — 1}, равный (xi, x2,... , xr). Обозначим через {x} значение x1qr-i + x2qr-2 + ■ ■ ■ + xrq0, т. е. число, которому равен вектор x, если рассматривать его как число в q-ичной системе исчисления.
Пусть X, Y £ Gq(n, k) — два k-мерных подпространства, EXT(X), EXT(Y) — их расширенные представления соответственно. Пусть 0 < i < n — наименьшее такое
число, что столбцы
(X)Л и К)
X
Y
не совпадают. Тогда считаем, что X < Y, если
Перейдём к описанию алгоритма нумерации, предлагаемого в [20].
. Это определение задает порядок на Gq(n, k).
Обозначим через N ( X"
vi Xi
количество элементов Gq(n, k), первые j столб-
цов которых равны
Xj
vi Xi
Будем рассматривать множество q-ичных векторов
длины к +1 как конечный алфавит. Тогда для кодирования и декодирования элементов грассманиана можно использовать метод Ковера. Элементы грассманиана рассматри-
ваются как векторы длины п над данным алфавитом. При этом X ^Л
\хз
соответствовать п^(х^ х2, ...Xj).
Обозначим через Wj вес первых ] элементов вектора ^(Х), т. е. Wj -Лемма. Для любого ], 1 < ] < п, справедливо равенство
vi Xi
будет
Е vi. i=i
N ( vj N 1 X,
vi Xi
n—j k — w
jj
Доказательство. Пусть подпространство X £ Gq(n, k), первые столбцы его рас-
ширенного представления EXT(X) равны
X,
vi Xi
. Среди последних n — j эле-
ментов v(X) будет k — wj единиц, и нижние w, элементов последних n — j столбцов EXT(X) будут нулевыми. Следовательно, матрица (n — j) х (k + 1 — w,), получаемая из EXT(X) вычёркиванием j первых столбцов и w, нижних строк, является расширенным представлением подпространства, принадлежащего множеству Gq(n — j, k — w,). Отсюда имеем
N,|
3
vi Xi
n—j kw
Лемма доказана.
Теорема 1. Пусть X £ Gq(п, &) — подпространство, для которого
EXT (X)
Xn
v2 vi X2 Xi
Обозначим его номер среди элементов Gq(п, &), расположенных в лексикографическом порядке, через 1ехт(X). Тогда справедливо следующее равенство:
iext (x ) —
£
i=i
v, qk-Wj-1 + (1 — v,)
{X,}
n — j k — w,_ i
v
v
q
v
q
v
n
w
q
Доказательство. Из формулы (1) следует
'EXT
(x )
Е Е
j=1
X
U Vj-\
W X7_ i
Vl
X!
UV
j
W <X
При вычислении j-го слагаемого в формуле (3) будем разделять два случая.
Случай 1: Vj = 1. Это означает, что столбец Xj состоит из k — 1 нулей и единицы на (k — Wj-^-й позиции сверху, т.е. {Xj} = qwj—1. Значит, EXT(X) имеет вид
Vn ... Vj+1 1 Vj-1 ... Vl
Xn ... Xj+1 {qWj—1} q Xj-1 . . . Xi
Следовательно, подпространство Y G Gq(n, k) такое, что у EXT(Y) и EXT(X) совпадают первые j — 1 столбца, лексикографически предшествует X тогда и только тогда, когда EXT (Y) имеет вид
j+1
О j i
Vl
1П ... У,+1 Ъ Xj-l ... Х1 у •
Заметим, что нижние элементов У, являются нулями (поскольку старшие коэффициенты последних строк содержатся в (Х,-1... Х1)). Верхние к — ш,— элементы У, могут иметь любые значения.
Это означает, что в данном случае ]-е слагаемое в формуле (3) равно
q j 1
V х ( 0 V-1
Us ■ qwj—1 }q Xj-1
При этом по лемме
V1 X1
"j—1-
e
s=0
X
Vj 1
{s ■ qWj —1 }q Xj-1
V1 X1
q
k-Wj—1
n — j k — Wj-1
j-1
Случай 2: Vj = 0. Поскольку wj-1 = Vi, то отсюда следует, что последние wj-1
i-1
элемента столбца Xj являются нулями, т.е. {Xj} делится на qWj—1. Значит, EXT(X)
имеет вид
Vn ... Vj+1 0 Vj-1 ... V1
Xn ... Xj+1 Xj Xj-1 ... X1
Следовательно, подпространство Y G Gq(n, k) такое, что первые j — 1 столбцов EXT (Y) и EXT (X) совпадают, лексикографически предшествует X тогда и только тогда, когда EXT(Y) имеет вид
Vj+10 Vj-1
V1
Yn ... Yj+1 {s ■ qWj—1 }q Xj-1 ... X
V
k
1
q
0
q
V
1
{Xj}
где 0 < в < гш _ 1 — 1. Это означает, что в данном случае ]-е слагаемое формулы (3) равно
qwj -
Wj_ 1
q j 1
E
s=0
N
0
vj-1
{s ■ qWj-1 }q Xj—i
При этом по лемме
{Xj }
qWj -1
E N
s=0
j1
{s ■ qWj-1 }q Xj- 1
Vi Xi
Vi
Xi
{Xj}
q
wj-i
n - J k — wj-1
Из формул (4) и (5) в случаях 1 и 2 получаем уравнение (2). Теорема 1 доказана.
Алгоритм нумерации элементов грассманиана, предлагаемый в [20], представляет собой вычисление номера элемента грассманиана по формуле (2). При этом гауссовы п — J
k — wj-1
коэффициенты формулам
1 < J < n, предлагается вычислять начиная с J = n по
0
k — Wn-1
n—J k — wj-1
n — (j + 1)
k — Wj
n — (j + 1)
k Wj
qn-j — 1
qn-k-j+Wj — 1'
qn-j — 1
qk-wj+1 — 1'
если Wj = wj-1, если Wj = wj-1 + 1.
Рассмотрим пример вычисления номера элемента грассманиана по данному алгоритму. Пусть X G G2(8, 3) — подпространство, имеющее представление
EXT (X )
0 1 0 1 0 1 0 0
0 1 1 0 0 0 1 0
0 0 0 1 0 0 1 0
0 0 0 0 0 1 1 1
Найдем по формулам (1) значения
8—8 3—3 8 — 7" 3 — 2 8 — 6" 3—2 8 — 5" 31
n—J k — wj-1
пРи J = n'
. , 1:
1' 1 ■ 1 ■
3
21 — 1 _ 23-3+1 — 1 =
22 — 1
28-3-6+2 _ 1
23 — 1 _ 23-2+1 _ 1 =
0
q
1
q
q
q
q
q
2
1
2
2
7
8 - 4 3 -1 8 - 3" 3 - 0 8 - 2" 3-0 8 - 1" 30
7-
24 — 1
35 •
28-3-4+1 _ 1
25 — 1
155
1395-
23-1+1 - 1 26 — 1
35,
155,
28-3-2+0 _ 1
27 - 1 28-3-1+0 _ 1
1395,
11811.
Вычислим по теореме 1 значение Iext:
Iext = 1 • 11811 + т7 • 1395 + 23-0 • 155 + ^ • 35+ 23-1 • 7+4 • 3 + 23-2 • 1 + ^ • 1 = 22849.
20
20
21
22
23
Определим сложность вычисления номера Iext(•) в (2). Обратим внимание на то, что все целые числа, используемые в вычислениях, заданы в q-ичной системе исчисления. Пусть M[a, b] означает количество операций, требуемое для умножения двух q-ичных чисел длин a и b. Известно [26], что для a > b M[a, b] = a log b log log b. Пусть M[a] означает количество операций, требуемое для умножения двух q-ичных чисел длины a.
Посчитаем длину q-ичной целого, которое представляет наибольший гауссов коэффициент в (2). Этот гауссов коэффициент равен
n - 1 (qn-1 - 1) . . .(qn-k - 1)
k q (qk -1). . . (q - 1) ,
его длина меньше k(n - k) Если Wj = wj-1, то
n k- -j q n - (j + 1)" k - Wj qn-j - 1 qra-fc-j+Wj - 1
Если Wj = 1 + 1, то
n-j n - (j + 1)"
k - wJ-1 q k - Wj
qn-j - 1
qfc-w+1 - 1'
Гауссовы коэффициенты в (2) могут быть выведены из вектора идентификации. Они вычисляются по формулам (7) и (8). Сложность вычисления всех гауссовых коэффициентов при выполнении алгоритма равна O(nM[k(n - k), n]).
Умножение или деление на ql осуществляется сдвигом на i знаков, для n - k значений j Vj = 0, длина {Xj} равна k, следовательно, сложность этих операций равна O((n - k)M[k(n - k), k]). При вычислениях по формуле (2) производится максимум n операций сложения целых чисел, чья длина составляет максимум k(n - k + 1) знаков, следовательно, сложность этих операций может быть опущена.
Складывая сложности всех операций, получаем, что сложность вычисления Iext(•) номера X по формуле (2) равна O(nM[k(n - k), n]), т. е. O(nk(n - k) log n log log n) операций.
2
2
2
2
2. Быстрый алгоритм нумерации элементов грассманиана
Перейдем к описанию представленного в настоящей работе алгоритма нумерации элементов грассманиана, основанного на расширенном представлении этих элементов, сложность которого меньше сложности алгоритма, рассмотренного в [20].
Предлагаемый алгоритм основан на методе быстрой нумерации комбинаторных объектов [22].
В [20] было приведено доказательство того, что
7ехт (Х) = £ (г_д^"1 + (1 — V) )
п — 3
к — WjJ
Введём при 3 = 2, 3, ..., п величины
Р(УЛ = х^1
Х1
Х1
РХ,
г__ 1
Х
_-1
V2 V1 \ хГ V ... V2 v1 Х2 Х,/ \Х_ ... Х2 Х1
X
_ 1
Х
_-1
V2 Vl Х2 Х1
Vl
Х1
£ р
и -VI
Ж<Х1
и W
Х,
vj-l Х_-1
V2 V!
Х2 Х1
£
и
Р
и W
vj-l Х_-1
Из этих определений и формулы (1) следует, что
V2 Vl
Х2 Х1
(ехт
(Х)
, Vl\ fV2
Ю р(?,)+КХ
V2 V, ^ ( V2
Х2 Х,/ \Х
Идея метода заключается в расстановке скобок в данном выражении таким образом, что при вычислении номера большинство операций производится над короткими числами. Такой расстановкой скобок будет следующая:
1ехт (Х) =
' V4
+5
Х
Vз Х3
, Vl\ fV2
х,) р(х!1
+ и
^ \ р^3
Х1
Хз
V2 Vl Х2 Х1
р
V2 Х2
Vз
Хз
Х,)р (Х,
V2 Vl
Х2 Х1 +...
+
Положим
р!
р^Х)^о
VI Х1
р(Х
Vj-l ... V2 V, Х_-1 ... Х2 Х1
ао
V.
Х_
А_
3
А27-1 + р2--1Л2_ !, в =1,..., logn, 3 = 1,...,п/2в.
vj-1 Х_- 1
V2 V, Х2 Х1
3 = 2,
п,
Р_ = р2_-1р2_ ,
10)
q
q
5
V
3
9
q
q
о
5
Р
5
Тогда
+д
Хз
+4X2
^3
Хз
^2 VI Х2 Х1
Р
^2 Х2
иМ Р,
Х^ VXl
^2 VI Х2 Х1
VI' '
+ + ...
Отсюда и формулы (9) имеем
1ехт (X ) = А1!38 п |С(п,к)| = Д1
:12)
По определениям р0, Р(^Х
Щ-1
V2 V!
Х^ -1 ... Х2 Х1
и лемме
Р0
Р(1,
^-1 Х,?-1
V2 Vl Х2 Х1
пХ!
' п _ ] ' / п _ ^ + 1
к _ и? / 9 к
. V2 Vl ? ... Х2 Х1
дга-'-к+т,+1 _ 1
дга-,7+1 _ 1 дк-т + 1 _ 1 дга-,7+1 _ 1 '
N1 Х?-Х.?-1
V2 Vl Х2 Х1
если V? = 0,
если V
1.
:13)
По определениям А0, д
X?
^7-1 ... V2 Vl Х, -1 ... Х2 Х1
и лемме
А0
Х,
Е
V
V,—1 ... V2 Vl Х,-1 ... Х2 Х1
N | ^ ^"-1 Х,_ 1
Е
и Vj
Р
и W
V,—1 ... V2 Vl Х,-1 ... Х2 Х1
и <
Vl
Х1
.
д
дП-Ч1 _ 1
{X,} дп-,-к+т^-1 + 1 _ 1
Щ ^-1 ... V2 V1
Vх?- 1 ... Х2 Х1
если V, = 1,
д
1
дП-Ч1 _ 1
если V
0.
:14)
Перейдём к вычислениям, которые будут служить иллюстрацией алгоритма. Определим номер подпространства X Е С2(8, 3), имеющего расширенное представление
ЕХТ (X)
0 0
1010
По формулам (13) и (2) вычислим значения р0, А0, ]
25 _ 1 41 о4
р!
28 — 1
31
255;
р2
1 0 0
0 1 0
0 1 0
1 1 1
= 1, . .., 8:
— 1 15
— 1= 127,
д
ч
ч
V
V
д
А?
A3
А5
А?
p3 — 23 - 1 1 p4 — 23 - 1 7
26 - 1— 9' 25 - 1 31'
р5 — 22 - 1 1 p6 — 22 - 1 3
24 - 1 5' 23 - 1 7 '
р? — 21 - 1 1 р8 — 2? - 1 1
22 - 1 3' 2? - 1
2 1. 5 - 1 31 A2 — 7 24 - 1 105
" 28 - 1 255' 27 - 1 127'
23 23 - 1 8 qA4 =0 23 - 1 0
26 - 1 9' 25 - 1
— 22 22 - 1 4 A6 — 1 22 - 1 3
24 - 1 5' 23 - 1 7'
— 2? 21 - 1 2 A8 — 0 2? - 1 0.
22 - 1 3' 2? - 1
Далее по (2) получим
Р?
7
19431 По (12) имеем
р1
а}
р2
31
2159'
7192
32385' 1 А2 =
35 ' А =
р2
7
279 '
А2
8 9'
22816 97155'
Рз
3
35 '
А? — 31 ,
3 35' 33
р4
А4
iext (x) — а? ■
л2 _ —
А2 = 35'
22849
97155
Р?
1
3 '
2
3 ' 1
97155
22849.
А?
22849 97155'
3. Сложность алгоритма
Теорема 2. Объём памяти, требуемый для вычисления номера элемента грассма-ниана X е Gq(n ,k), равен O(n2). Сложность вычисления номера элемента грассма-ниана X е Gq(n , k) равна O(lognM[n2]) операций, где M[n2] — время умножения двух слов длины n2.
Следствие 1. При использовании алгоритма быстрого умножения Шёнхаге — Штрассена, для которого M[n] — n log n log log n, сложность вычисления номера равна O (n2 log2 n log log n).
Следствие 2. При использовании алгоритма быстрого умножения Фюрера, для которого M [n] — n log n2O(log*n), сложность вычисления номера равна O(n2 log2 n2O(log*n)).
Доказательство. Найдём время вычисления Iext(X). Оно состоит из времени вычисления pj и Aj, i — 0 ' ... ' log n, j — 1 ' 2 ' ... ' n/(2l), и времени вычисления произведения Alog n | Gq (n 'k)|.
Для вычисления p0 и A0, j — 1 '2 ' ... ' n, требуется вычислить n значений
Vj-г Xj-i
Vl
X?
и n значений q
Xj
Vj-i ... Vi Xj-i ... Xi
2
q
V
j
тт - n/^Vj V,_ 1 . . . V1
Для вычисления n числителей дробей PI " I в q-ичной системе исчис-
VXj Xj- ... X1/
лений необходимо найти n значений n - j - k + wj + 1 или k - wj + 1. Для вычисления их знаменателей требуется найти n значений n - j + 1. Таким образом, всего нужно совершить O(n) сложений (и вычитаний) чисел длины logn, что имеет сложность O(n log n).
Для вычисления n дробей q vj
Xj
^ 1 ... V1 ) требуется найти n значений n - j - k +
Xj-1 . . . X1
vj-1 . . . v1 и q vj Xj-1 . . . X1 Xj
wJ-1 + 1, n значений n - j + 1, т. е. совершить O(n) сложений (и вычитаний) чисел длины log n, что имеет сложность O(n log n). Умножение на qk-wj-1 в случае Vj = 1 и на qwj-1 в случае Vj = 0 получается сдвигом на нужное количество разрядов. Для получения числителей в случае Vj = 0 требуется совершить n - k умножений чисел {Xj} длины k и qn-j-fc+wj-i+1 - 1 чисел длины n, что имеет сложность (n - k)M[n, k].
Таким образом, сложность вычисления всех p0 и ДО, j = 1, 2,..., n/2, равна O(nlog n) + (n - k)M[n, k].
По формулам (13), (14) видим, что числители, как и знаменатели, дробей
Vj-1 ... V1 \ n тт
I не превышают q' . Для записи числителя, как Xj-1 ... Х1/
и для записи знаменателя, этих дробей в q-ичной записи требуется n знаков.
Вычисление величин pj или Л] в соответствии с (10) при j = 1, 2,...,n требует соответственно две или три операции умножения чисел, длина которых не превышает n знаков, а общее число операций умножения для вычисления всех Л1, p1, j = 1, 2, ..., n/2, равно 5n/2. При вычислении Л* используется обычное равенство a/b + c/d = (ad + bc)/(bd), требующее три умножения. В результате будут получены дроби, у которых требуется не более 2n знаков для записи числителя и столько же знаков для записи знаменателя. Аналогично, для вычисления p2 и Л2, j = 1, 2, ... , n/4, необходимо 5n/4 операций умножения над числами длины 4n знаков и т.д., для вычисления pj и Л*, j = 1, 2, ..., n/21, требуется 5n/2l операций умножения над числами длины 2*n знаков.
Общее время вычислений Л* и pj, i = 1,... , log n, j = 1, ... , n/21 составит
5 5n 5n 5
-nM[n] + — M[2n] + • • • + — M[2^n] + • • • + -M[n • n].
Обозначим через M*[a] время умножения двух чисел длины a, делённое на длину этих чисел:
ЛГ [a] = MM.
a
Тогда общее время вычислений Л* и pj будет
—nM*[n] + ^M*[2n] + • • • + ^^M*[2®n] + • • • + 5 n2M*[n2].
2 4 2i 2
5
В этой сумме log n слагаемых, каждое из которых не превышает — n2M*[n2].
Следовательно, время вычисления дробей Л* и pj равно
O ( 5 n2 log nM*[n2] ) = O(log nM [n2]).
Время вычисления произведения Alogn |G(n , k)| состоит из времени вычисления произведения числителя Alogn и |G(n , k) | и времени вычисления частного полученного числа и знаменателя Alogn. Количество знаков, необходимых для записи числителя Alogn, не превышает n2. Количество знаков, нужных для записи |G(n, k)|, равно n(n — k). Значит время умножения числителя Alogn и |G(n, k)| составит M[n2, n(n — k)]. Длина полученного числа не превышает 2n2. Длина знаменателя Alogn не превышает n2. Так как время деления двух чисел длины a равно времени умножения двух чисел длины a [27], время деления полученного числа и знаменателя Alogn равно M[2n2].
Таким образом, время вычисления Iext (X) равно сумме времени вычисления р_-и A0, j = 1, 2, ... , n, т.е. O(nlogn) + (n — k)M[n, k], времени вычисления A\ и pj, i = 1,... , log n, j = 1,... , n/2j, т. е. O(log nM[n2]), и времени вычисления Alogn |G(n, k)|, т.е. M[n2,n(n — k)] + M[2n2]:
O(nlogn) + (n — k)M[n, k] + O(log nM[n2]) + M[n2,n(n — k)] + M[2n2] = O(lognM[n2]).
Оценим необходимый для осуществления нумерации объём памяти.
Для определения IEXT(X) при вычислении Aj и pj, i = 1,... , log n, j = 1,... , n/2j, используются только величины Aj-1 и pj-1, j = 1,... , n/2i-1. Поэтому для нумерации
достаточно иметь память для хранения двух наборов Aj, pj, j — 1'...'n/2\ и Aj+1, pj+1, j — 1'... ' n/2i+1, i — 1'... ' log n. Длина числителя и знаменателя каждой дроби Aj и pj не превышает 2*n. Отсюда требуемый объём памяти для определения номера
X G G(n, k) не превышает 2*n ■ n/2* + 2i+1n ■ n/2i+1 = O(n2).
ет 2 n-n/2 + 2 n ■ n/ 2 —
Теорема 2 доказана.
Список литературы
[1] Knuth D.E. Subspaces, subsets and partitions // J. of Combinat. Theory. 1971. Vol. 10. P. 178-189.
[2] Thomas S. Designs over finite fields // Geometriae Dedicata. 1987. Vol. 21. P. 237-242.
[3] Martin W.J, Zhu X.J. Anticodes for the Grassman and biliniar forms graphs // Designs, Codes and Crypt. 1995. Vol. 6. P. 72-79.
[4] Tomas S. Designs and partial geometries over finite fields// Geometriae Dedicata. 1996. Vol. 63. P. 247-253.
[5] Ahlswede R., Aydinian H.K, Khachatrian L.H. On perfect codes and related concepts // Designs, Codes and Crypt. 2001. Vol. 22. P. 221-237.
[6] Schwartz M., Etzion T. Codes and anticodes in the Grassman graph // J. of Combinat. Theory. Ser. A. 2002. Vol. 97. P. 27-42.
[7] Braun M., Kerber A, Laue R. Systematic construction of q-analogs of t — (v, k, A)-designs // Designs, Codes and Crypt. 2005. Vol. 34. P. 55-70.
[8] Koetter R, Kshcischang F.R. Coding for errors and erasures in random network coding // IEEE Trans. Inform. Theory. 2008. Vol. 54, No. 8. P. 3579-3591.
[9] Xia S.T, Fu F.W. Johnson type bounds on constant dimension codes // Designs, Codes and Crypt. 2009. Vol. 50. P. 163-172.
[10] Etzion T, Vardy A. Error-correcting codes in projective space // Proc. Intern. Symp. on Inform. Theory. Toronto, 2008. P. 871-875.
[11] Manganiello F., Gorla E, Rosenthal J. Spread codes and spread decoding in network coding // Proc. Intern. Symp. on Inform. Theory. Toronto, 2008. P. 881-885.
[12] Silva D., Kschischang F.R, Koetter R. A rank-metric approach to error control in random network coding // IEEE Trans. on Inform. Theory. 2008. Vol. IT-54. P. 3951-3967.
[13] Silva D., Kschischang F.R. On metric for error correction in network coding // Ibid. 2009. Vol. IT-54. P. 5479-5490.
[14] Gadouleau M. and Yan Z. Constant-rank codes and their connection to constant-dimension codes // Ibid. 2010. Vol. IT-56. P. 3207-3216.
[15] Gadouleau M., Yan Z. On the decoder error probability of bounded rank distance decoders for maximum rank distance codes // Ibid. 2008. Vol. IT-54. P. 3202-3206.
[16] Gadouleau M. and Yan Z. Construction and Covering Properties of Constant-Dimension Codes. http://arxiv.org/abs/0903.2675
[17] Etzion T, Silberstein N. Error-correcting codes in projective space via rank-metric codes and Ferrers diagrams // IEEE Trans. Inform. Theory. 2009. Vol. IT-55. P. 2909-2919.
[18] Kohnert A. and Kurz S. Construction of large constant dimension codes with a prescribed minimum distance // Lecture Notes Comput. Sci. 2008. Vol. 5393. P. 31-42.
[19] Skachek V. Recursive code construction for random networks // IEEE Trans. Inform. Theory. 2010. Vol. IT-56. P. 1378-1382.
[20] Silberstein N, Etzion T. Enumerative Coding for Grassmannian Space. http://arxiv.org/abs/0911.3256
[21] Fuerer M. Faster integer multiplication // Proc. of the Thirty-Ninth Annual ACM Symp. on Theory of Comput. San Diego, California, USA. 2007.
[22] Ryabko B.Ya. The fast enumeration of combinatorial objects // Discrete Math. and Appl. 1998. Vol. 10, No. 2.
[23] Van Lint J.H, Wilson R.M. A Course in Combinatorics. Cambridge Univ. Press, 2001.
[24] Cover T.M. Enumerative source encoding // IEEE Trans. Inform. Theory. 1973. Vol. IT-19, No. 1. P. 73-77.
[25] Etzion T, Silberstein N. Error-correcting codes in projective space via rank-metric codes and Ferrers diagrams // Ibid. 2009. Vol. IT-55. P. 2909-2919.
[26] Knuth D.E. The Art of Computer Programming. Seminumerical Algorithms. Third Ed. Addison-Wesley, 1997. Vol. 2.
[27] Ахо A^., Лам М.С., Сети Р., УльмАн Дж.Д. Компиляторы. Принципы, технологии и инструментарий. М.: Вильямс, 2008.
Поступила в редакцию 14 июля 2012 г.