Опубликован: 04.03.2008 | Уровень: профессионал | Доступ: платный
Лекция 9:

Редуцированные базисы решетки. Редуцирование базиса в решетке

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >

20.4. ПРЕДЛОЖЕНИЕ. Пусть L \subset \mathbb Z ^n - решетка с базисом b_1,\dots,
b_n и предположим, что задано положительное число B\ge2 , такое, что для любого вектора b_i из исходного базиса решетки выполняется неравенство |b_i|^2 \leq B. Тогда алгоритм построения редуцированного базиса, описанный выше, требует для своего выполнения O(n^4\log  B) арифметических операций над целыми числами, двоичная длина которых представляет O(n\log 
B). Таким образом, для построения редуцированного базиса достаточно O(n^6\log^3B) бинарных операций.

ДОКАЗАТЕЛЬСТВО. Перед началом работы алгоритма величины d_i, определенные формулами (20.12) удовлетворяют неравенству d_i\leq B^i, что легко следует из упражнения 20.2. Таким образом, перед началом работы алгоритма D  \leq
B^{n(n-1)/2}. Из определения D легко следует, что в случае, когда L
\subset \mathbb Z ^n, D - неотрицательное целое число, которое не может обратиться в нуль, в силу линейной независимости векторов, составляющих базис решетки. Таким образом, D\ge1 во все время работы алгоритма. Выше отмечалось, что при перестановках элементов базиса, выполняемых алгоритмом построения редуцированного базиса, величина D убывает не медленнее геометрической прогрессии со знаменателем 3/4, следовательно, таких перестановок выполняется O(\log B^{n(n-1)/2}) = O(n^2\log B). Мы оценили, таким образом, сколько раз в головной программе, в цикле "пока" встречается ситуация "то" в условии "если". Из доказательства конечности времени работы алгоритма следует, что ситуация "иначе" встречается также O(n^2 \log B) раз. Итак, тело цикла в основном алгоритме выполняется O(n^2 \log B) раз. Внутренний цикл в ситуации "иначе" дает еще один множитель n для алгоритма A35, который выполняется таким образом O(n^3\log  B) раз. Переходим теперь к оценке сложности отдельных предписаний алгоритма A33.

В предписании "начальная-установка" два вложенных цикла дают O(n^2) повторений тела цикла, в котором встречаются векторные операции: скалярное произведение векторов, умножение вектора на число, вычитание векторов, что дает еще один множитель n. При этом арифметические операции выполняются над рациональными числами. Сложность выполнения операций над этими числами оценим несколько позже.

Количество арифметических операций в алгоритме A35, как легко видеть, равно O(n), такое же количество операций в алгоритме A36. Сравнивая количество проходов через отдельные ветви алгоритма, получаем, что количество арифметических операций в алгоритме представляется величиной O(n^4\log 
B), что и утверждалось в первой части предложения.

Оценим теперь сложность выполнения арифметических операций, выполняемых над рациональными числами в процессе работы алгоритма A33. Прежде всего, опишем множество значений, которые могут принимать знаменатели всех встречающихся во время вычислений рациональных чисел. Покажем, что в качестве знаменателей всех встречающихся чисел могут быть использованы только числа d_i, вычисляемые по формулам (20.12), а именно:

| b_i^*| ^2&= \frac{d_i}{d_{i-1 }},&   &(1 \leq  i \leq  n), ( 20.13)
d_{i-1 }b_i^* &\in  L \subset  \mathbb Z ^n,&  &(1 \leq  i \leq  n), ( 20.14)
d_j\mu _{ij }&\in \mathbb Z ,    &&(1 \leq  j < i \leq  n). ( 20.15)

Первое из этих соотношений следует из упражнения 20.2.

Для доказательства второго соотношения выразим векторы b_i^* с неопределенными коэффициентами y_{ij } через исходный базис:

\begin{equation*}
  b_i^* = b_i  -  \sum\limits _{j=1 }^{i-1}y_{ij }   b_j .
\end{equation*}

Неизвестные коэффициенты с фиксированным первым индексом i определяются из системы линейных уравнений

\begin{equation*}\label{20.16}
  (b_i ,b_l ) =   \sum\limits _{j=1 }^{i-1}y_{ij }(b_j ,b_l )
\end{equation*} ( 20.16)

Решая систему (20.16) методом Крамера, воспользовавшись формулой (20.12) получаем, что d_{i-1 }y_{ij }\in \mathbb Z для всех допустимых значений индексов. Отсюда уже вытекает соотношение (20.14).

Воспользовавшись соотношениями (19.2), (20.13) и (20.14), получаем цепочку равенств

\begin{align*}
   d_j \mu _{ij }&= d_j \frac{(b_i ,b_j^*)}{(b_j^*,b_j^*)}= d_{j-1 }(b_i ,b_j^*) =(b_i ,d_{j-1 }b_j^*) \in  Z,
 \end{align*}
чем заканчивается доказательство соотношения (20.15).

Посмотрим теперь, как меняются величины d_i в процессе работы алгоритма. В начале работы алгоритма они вычисляются по формулам (20.12). В процессе работы эти величины меняются только при перестановке элементов базиса (в алгоритме A36 ). В этом случае d_{k-1 } заменяется (в обозначениях (20.1)-(20.5)) на

d_{k-1 } \cdot\frac{| c_{k-1 }^* | ^2}{| b_{k-1 }^* | ^2} = d_{k-2 } \cdot |
c_{k-1}^* | ^2,
значения d_i при i\neq k-1 не меняются. При этом все значения d_i остаются целыми и во все время работы алгоритма удовлетворяют неравенствам d_i^i \leq  B. Таким образом, мы оценили множество чисел, которые могут появляться в вычислениях в качестве знаменателей.

Для оценки числителей достаточно найти верхнюю грань для величин |b_i^*|^2, |b_i|^2 и |\mu_{ij}|. Первая из этих величин оценивается просто: в начале работы алгоритма выполняются неравенства |
b_i^*| ^2 \leq  |
b_i | ^2 \leq  B. В процессе работы величина \max\{ |
b_i^*|^2:  1  \leq  i
\leq n\} не возрастает, для доказательства чего достаточно заметить, что изменение векторов b_i^* происходит только при перестановке элементов базиса, при этом выполняются неравенства | c_{k-1 }^*|^2<\frac34  |
b_{k-1 }^* | ^2 и | c_k^*| ^2 \leq | b_{k-1 }^*| ^2, поскольку c_k^* - проекция вектора b_{k-1 }^*. Таким образом, во все время работы алгоритма | b_k^*| ^2 \leq B. Оценка величин | b_i | ^2 и \mu _{ij} существенно сложнее. Чтобы получить ее, докажем, что всякий раз в точке проверки условия окончания цикла "пока" выполняются следующие неравенства:

|b_i|^2 &\leq  nB           &&\text{ для } i \neq  k; ( 20.17)
|b_k|^2 &\leq  n^2(4B)^n,   && \text{ если }k \neq  n+1; ( 20.18)
|\mu_{ij}|&\leq  1/2        &&\text{ для } 1 \leq  j < i <
k;\\ ( 20.19)
|\mu_{ij}|&\leq(nB^j)^{1/2} &&\text{ для } 1\leq j<i,\ i >
k; ( 20.20)
|\mu_{kj}|&\leq2^{n-k}(nB^{n-1})^{1/2}  &&\text{ для } 1\leq j<k, \text{
если } k \neq  n+1. ( 20.21)

При доказательстве этих неравенств пользуемся следующим соотношением:

\begin{equation}
  \mu _{ij }^2  \leq  \frac{|b_i|^2}{|b_j^*|^2} =\frac{d_{j-1 }| b_i |^2}{d_j}
 \leq  B^{j-1}| b_i | ^2. 
\end{equation} ( 20.22)

Перед первым выполнением тела цикла неравенства (20.17) и (20.18) следуют из неравенства |b_i|^2\leq B, которое выполняется по определению B. Вместе с (20.22) это неравенство дает соотношение | \mu _{ij } | \leq
B^{j/2}, откуда следует (20.19) и (20.20), а учитывая, что B  2, и (20.21). Таким образом, перед первым выполнением тела цикла неравенства (20.17)-(20.21) справедливы.

Предположим теперь, что неравенства (20.17)-(20.21) выполнены перед началом выполнения тела цикла, и покажем, что эти неравенства будут выполнены и в конце тела цикла, т.е. перед выполнением следующего цикла. Неравенство (20.19) совпадает с (19.4), которое выполняется для текущего k все время работы алгоритма A33, в том числе и в начале цикла. Выполнение неравенства (20.17) для i < k следует из соотношений (19.1), (20.19) и неравенства | b_i^*|  ^2  <  B. Покажем, что из (20.17) для i>k и из неравенства (20.21) следуют неравенства (20.18) и (20.20). Доказательство (20.18) сводится к разложению b_k в сумму по формуле (19.1), применению неравенства (20.21) и вычислению суммы геометрической прогрессии. Неравенство (20.20) непосредственно вытекает из (20.22) и (20.17).

Итак, покажем, что если перед началом выполнения тела цикла справедливы неравенства (20.17)-(20.21), то и после его выполнения неравенства (20.17) и (20.21) также имеют место. Отдельно рассмотрим два случая: работа алгоритма осуществляется по ветви "то", т.е. два вектора меняются местами; второй случай - алгоритм идет на ветвь "иначе", т.е. осуществляется выполнение условия (19.4) для всех j < k.

В первом случае множество векторов \{  b_i  :i< k\} не изменилось (мы поменяли местами k -ый вектор с (k-1) -ым и уменьшили после этого k на 1). Во втором случае множество \{ b_i: i>k\} векторов, для которых нам нужно доказать неравенство (20.17), заменилось на собственное его подмножество. Этим заканчивается индуктивный шаг для неравенства (20.17).

Переходим к оценке \mu _{kj } (если k \neq n+1 ). Снова в теле цикла может выполняться одна из двух серий команд, причем в конце каждой серии значение переменной k меняется, либо увеличиваясь, либо уменьшаясь на 1. Значение k увеличивается, когда алгоритм идет по второй ветви, т.е. достигается выполнение условия (19.4) для всех j < k (отдельно, до цикла достигается это условие для j=k-1, в цикле - для j < k-1 ). Эти операции никак не влияют на \mu _{ij}, если i > k, в частности, при i=k+1. На следующем шаге значение k увеличивается на 1, и неравенства (20.21) следуют из (20.20), которые выполняются на предыдущем этапе.

Значение k уменьшается на 1, если в теле цикла выполняется перестановка векторов, при этом после ее выполнения новые значения коэффициентов \mu
_{kj} совпадают со старыми значениями (с учетом замены k на k-1 ). Остается только проследить, как изменилось значение коэффициентов \mu _{kj
}, когда до перестановки векторов мы добивались выполнения условия (19.4) для \mu
_{k\,k-1 }. При этом к k -ой строке матрицы \mu прибавлялась ( k-1 )-я строка, умноженная на r, где | r| < 2| \mu _{k\,k-1
}|. Учитывая, что |
\mu _{k-1\,j }| < 1/2, получаем

\begin{multiline}
  | \mu _{kj }- r \mu _{k-1\,j }| \leq | \mu_{kj }| + | \mu _{k\,k-1 }| \leq \\
\text{(по  индуктивному  предположению)} \\
  \leq 2^{n-k+1}(nB^{n-1})^{1/2}. 
\end{multiline} ( 20.23)

Поскольку новое значение k на 1 меньше старого, получаем требуемую формулу, доказательство неравенств (20.17)-(20.21) закончено.

Для завершения доказательства предложения 20.4 нам осталось только оценить значения, получающиеся на промежуточных этапах алгоритма. Заметим, что при выполнении алгоритма A35 значения коэффициентов \mu не более, чем удваиваются. Поскольку в одном теле основного цикла алгоритм A35 выполняется не более, чем k-1 раз, то

|  \mu  _{ij  }|  \leq  2^{n-1}(nB^{n-1})^{1/2}\text{ для }  j   <   k-1,

откуда, воспользовавшись формулами (19.1), ортогональностью векторов b_i^*, неравенствами |  b_i^*| 
<  B получаем неравенства | b_i  |  ^2  \leq  n^2(4B)^n для 1\leq 
i\leq  n. Остается перемножить границы для знаменателей и для абсолютных величин, прологарифмировать и выделить главную часть, чтобы получить оценки, фигурирующие в предложении 20.4.

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >
Марина Подлевских
Марина Подлевских

Пожалуйста, проясните ситуацию. Был выбран курс " Компьютерная алгебра" для самостоятельного изучения. Как теперь записаться на этот курс с целью получения диплома о повышении квалификации? На данный момент он имеет статус " изучаю". Если я пройду экзаменационный тест в таком статусе без оформления документов и оплаты диплома, придется ли еще раз регистрироваться на этот курс и заново проходить тестирование? 

Александр Марушко
Александр Марушко
Россия
Стешков Антон
Стешков Антон
Россия, г. Гуково