
- •Введение в геометрию чисел. Алгоритмы и приложения.
- •Список обозначений.
- •Решетки
- •Дискретные множества.
- •Решётка и подрешётка.
- •Конечно порожденные решётки.
- •Базис решётки
- •Эквивалентное определение решётки.
- •Гомоморфизм решёток
- •Изоморфизм решёток
- •Базисы решётки, матрица перехода.
- •Матрица гомоморфизма.
- •Изменение матрицы гомоморфизма при изменении базиса решёток.
- •Элементарные преобразования.
- •Нормальная диагональная форма Смита.
- •Существование нормальной диагональной формы Смита.
- •Единственность нормальной диагональной формы Смита.
- •Эрмитова форма матрицы.
- •Существование эрмитовой формы.
- •Единственность эрмитовой формы.
- •Базисы решётки и подрешёток.
- •Выбор базиса решётки.
- •Дополнение до базиса решётки.
- •Линейные преобразования решёток.
- •Двойственная решётка
- •Эффективные алгоритмы, связанные с построением базиса решётки.
- •Алгоритм, его трудоёмкость. Понятие эффективного алгоритма.
- •Решение системы линейных уравнений в целых числах.
- •Полностью целочисленный вариант метода Гаусса.
- •Решение системы линейных уравнений в целых числах
- •Некоторые задачи на построение базиса решётки.
- •Построение нормальной диагональной формы Смита.
- •Построение эрмитовой формы.
- •Теоремы Блихфельда и Минковского.
- •Теорема Блихфельда
- •Теорема Минковского
- •Теоремы о близости
Решение системы линейных уравнений в целых числах
Для нахождения
общего целочисленного решения системы
линейных уравнений воспользуемся
следующим приёмом. Известно (см. Теорема 2 .7),
что для любой матрицы A
найдётся эквивалентная ей нормальная
диагональная форма Смита S,
то есть, найдутся унимодулярные матрицы
P
и F,
что PAF=S.
Если известны матрицы P
и TF,
то построение общего решения в целых
числах системы линейных уравнений Ах=b
не составляет труда. Для этого делаем
замену переменных x=Fy
и от системы AFy=b
перейдем к равносильной ей PAFy=Pb=с.
Последняя система выглядит следующим
образом,
…,
,
- любые целые числа. Соответственно,
общее решение имеет вид
.
Умножая наT
обе части равенства, получим
- общее решение. Любое частное решение
исходной системы получается подстановкой
вместо
любых целых чисел. Заметим, что вместо
нормальной диагональной формы Смита в
данных построениях можно использовать
любую диагональную матрицуD.
Главное, что бы нашлись невырожденная
(но целочисленная) матрица P
и унимодулярная матрица F,
удовлетворяющие равенству D=PAF.
Для построения общего решения в целых
числах системы уравнений матрица P
на самом деле не нужна, а нужно произведение
Pb.
Используя эти замечания, модифицируем
полностью целочисленный алгоритм Гаусса
для нахождения общего целочисленного
решения системы линейных уравнений.
Для запоминания элементарных преобразований
со столбцами, которые понадобятся для
приведения матрицы к диагональному
виду, припишем снизу к матрице A
единичную матрицу. Таблицу вида
обозначим черезT.
Алгоритм 4.5 Решение системы линейных уравнений в целых числах.
Применим Алгоритм 4 .4 к первым m строкам таблицы T. При этом будут вычислены ранг матрицы k, и определитель минора максимального размера d. Перестановками столбцов матрицы T (если это необходимо) добьёмся, чтобы в её первых k строках и столбцах располагалась диагональная матрица, все диагональные элементы которой равны d.
Из j-го столбца матрицы T, где j=k+1,…,n+1, вычтем линейную комбинацию первых k столбцов
.
Если
, гдеi=1,…,m, j=k+1,…,n, то конец, алгоритм работу закончил. В противном случае найдём i,j, что
и перейдём на шаг 4.
Поменяем местами i-ый и j-ый столбцы матрицы T. Из строки s матрицы T, где s=1,…,i-1,i+1,…,k, умноженной на
, вычтемi-ую строку, умноженную на
, и поделим каждый элемент полученной строкиs на d. После выполнения указанных операций со всеми строками с номерами s=1,…,i-1,i+1,…,k положим
и вернёмся на шаг 2.
Обсудим
работу приведённого алгоритма. Во-первых,
заметим, что при выполнении операции
деления на шаге 4, остаток от деления
равен 0. Действительно, выполнение
операций со строками на шаге 4 проводится
по тем же самым формулам, что и на шаге
5 полностью целочисленного алгоритма
Гаусса (Алгоритм 4 .4). Следовательно,
возможность деления без остатка вытекает
из тех же самых соображений. Во вторых,
выполнение шага 2 приводит к тому, что
все элементы матрицы T,
расположенные в последних n+1-k
столбцах
и первых k
строках,
по абсолютной величине не превосходят
d/2.
Значит, следующее попадание на второй
шаг алгоритма возможно только при
уменьшении d
по крайней мере в два раза. Отсюда сразу
вытекает конечность алгоритма. В третьих,
после работы алгоритма, матрица T
будет иметь следующий вид
.
Если хотя бы при одном номереi=1,…,m
выполняется неравенство
,
то исходная система линейных уравнений
несовместна в целых числах. В противном
случае, общее решение имеет вид
,
где
- целые числа.
Оценим
трудоёмкость работы алгоритма в
предположении целочисленности входной
информации, причем наибольший по
абсолютной величине из элементов матрицы
(A,b)
положим равным
,
иr=rg(A,b)
Трудоёмкость шага 1 не превосходит
(см. п.4.2.1). Последовательность шагов 2-4
назовём его итерацией. Присвоим каждой
итерации алгоритма номер (начиная с 1).
Номер последней итерации обозначим
черезs.
Величину d,
используемую на j-ой
итерации алгоритма, будем помечать
вверху индексом, совпадающим с номером
итерации. Для оценки длины промежуточных
величин определим
и
- наибольшие по абсолютной величине из
элементов матрицыT
на j-ом
шаге i-ой
итерации алгоритма, расположенных в
первых m
и последних n
строках, соответственно. Величина
и
совпадают с соответствующими минорами
матрицы (A,b)
и по неравенству Адамара, не превосходят
,
.
После выполнения второго шага алгоритма
выполняются неравенства
и
(см. формулы пересчёта). Далее,
и
,
так как элементы матрицыT
на
третьем шаге не меняются. После выполнения
четвёртого шага алгоритма выполняются
соотношения
,
,
и
.
Последнее неравенство позволяет получить
верхнюю оценку числа итераций алгоритма
.
Сгруппируем полученные неравенства
отдельно дляu:
,
,
,
и отдельно дляw:
,
,
.
Последовательно применяя последнее
неравенство, выводим
.
Теперь
можно оценить трудоёмкость i-ой
итерации алгоритма (i>1).
На втором шаге алгоритма потребуется
не более O(rn)
арифметических операций (включая деление
с остатком) с элементами, по абсолютной
величине не превосходящими
иO(rn(n-r))
арифметических
операций с элементами, по абсолютной
величине не превосходящими
.
Таким
образом, трудоёмкость второго шага i-ой
итерации не превосходит
.
Трудоёмкость третьего шага не превосходитO(m(n-m))
(если трудоёмкость операции сравнения
числа с 0 не превосходит O(1)).
На четвёртом шаге потребуется не более
O(rn)
арифметических
операций с элементами, ограниченными
по абсолютной величине
.
Трудоёмкость четвёртого шага, таким
образом, не превосходит
.
Общая трудоёмкостьi-ой
итерации алгоритма не превосходит
.
Подставим в полученную оценку вместо
величин
и
их верхние оценки
и
,
соответственно. В результате получим
следующую оценку
трудоёмкостиi-ой
итерации алгоритма. Огрубим полученную
оценку до
.
Перемножив полученную оценку на оценку
числа итераций алгоритма, найдём верхнюю
оценку трудоёмкости алгоритма
.