Файл: Ху, Т. Целочисленное программирование и потоки в сетях.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.10.2024
Просмотров: 165
Скачиваний: 0
452 |
ПРИЛОЖЕНИЕ А |
что, как указано выше, реализуется посредством вычитания из i-й (i ф 1) строки nt раз 1-й строки.
Это преобразование |
даст |
новую |
матрицу, |
представленную |
|||||||
таблицей А. |
|
|
Таблица А |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||
|
|
6ц |
0 |
0 |
. . |
0 |
|
|
|
|
|
|
|
|
0 |
&22 |
Ь23 |
■ • |
&2 т |
|
|
|
|
|
|
|
0 |
Ь32 |
|
|
|
|
|
|
|
|
|
|
6 |
^7П2 |
• |
Ьтт |
|
|
|
|
|
Перейдем к шагу 5. |
|
|
|
|
|
|
|
|
|
||
Ш а г |
5. Если Ьц делит |
btj, |
г=£1, ] ф 1 , |
применим шаги |
|||||||
с первого по четвертый к матрице размерности (т — 1) X (т — 1) |
|||||||||||
из табл. А. Если Ьи не делит Ь ц , |
то положим Ьц = «Ьц -j- q, где |
||||||||||
О < q < |
Ьи; тогда следующая последовательность операций пере |
||||||||||
местит q на позицию (1,1). |
Проиллюстрируем |
эту последователь |
|||||||||
ность операций |
на матрице размерности |
2 x 2 : |
|
|
|||||||
/Ьц |
0 |
\ / Ьц |
|
0 |
\ / Ьц — Ьи \ / |
9 |
|
||||
\ 0 |
nbn + qj \гаЬц |
пЬц + q) |
\пЬц |
q |
) \ — Ьп |
Ьц/' |
|||||
В результате мы получим новое |
Ьи = |
q, |
имеющее |
меньшее |
|||||||
значение, |
и можем возвратиться к шагу 1. |
число |
в матрице, то |
||||||||
Так как (D — 1) — наибольшее целое |
не более чем через log2Z) циклов (цикл — шаги с первого по пятый) Ьи будет делить bi;-, i ф 1, / ф 1, или Ьи будет уменьшено до 1. Найдем верхнюю границу числа операций, необходимых для этой процедуры. Используем следующие символы для обозначения операций:
s: сравнение двух чисел, с: проверка делимости,
t:многократное вычитание одного числа из другого,
р: изменение положении двух чисел.
Тогда для |
(т X тп)-матрицы необходимо m2s |
2тр |
операций |
на |
|
шаге 1, |
|
р) на шаге 2, т (c-\-t-\-p) |
на шаге 3, 2т(т — 1)t |
||
на шаге 4 |
и |
(т — i)2c-\-2m(t-{- р) на шаге 5. |
матрице, то |
||
Поскольку (D — 1) — наибольшее целое число в |
|||||
после не более |
чем log2 D циклов (шагов с первого по пятый) |
мы |
НОРМАЛЬНАЯ ФОРМА СМИТА |
453 |
получим матрицу, в которой Ъи делит Ьц, i =И= 1, j ф 1, и является единственным ненулевым элементом в первой строке и первом столбце. Таким образом, чтобы привести матрицу к нормальной форме Смита, необходимо не более
( 1)
операций.
Если мы рассмотрим достаточно большое т и подсчитаем старшие члены, то получим
log2 D {m3s/3 + 3m2p -J- m3c/3 + 2m3i/3}.
Если группа имеет ранг г, то после того, как г диагональных элементов получены, в оставшейся (матрице раз
мерности (т — г) X (т — г) все элементы будут |
равны 0. |
Это |
|
происходит в случае, если |
мы пытаемся привести |
матрицу |
В -1 |
к нормальной форме Смита. |
(Мы используем числители элементов |
||
матрицы В-1.) |
|
|
|
Если рассмотрим г, малые по сравнению с тп, то получим |
|
||
I°g2 D {m2rs-\- %mrp -)- m2rc -f 2mH). |
|
(2) |
Сейчас мы предложим новую процедуру приведения матрицы к нормальной форме Смита. Она очень похожа на стандартную, за тем исключением, что мы сначала диагонализируем матрицу, а затем проверяем, делит ли Ън элемент bi+1, *+i. Эта процедура состоит из следующих шагов.
Ш а г 1. Переставим столбцы и строки так, чтобы bli был наименьшим по абсолютной величине среди всех ненулевых элементов в первой строке и первом столбце матрицы. Перейдем к шагу 2.
Ш а г |
2. |
Такой |
же, |
как |
в |
стандартной |
процедур |
Ш а г |
3. |
Такой |
же, |
как |
в |
стандартной |
процедур |
Ш а г |
4. |
Такой |
же, |
как |
в |
стандартной |
процедур |
Ш а г 5. Будем повторять |
шаги с 1-го по 4-й до тех пор, пока |
|||||
матрица не станет диагональной. Перейдем к шагу 6. |
|
|||||
Ш а г |
6. Если Ъц делит |
bti (i = 2, |
. . ., тп), то проверяем, |
|||
делит ли &22 элемент |
bjj (j |
= |
3, . . ., m)... . Этот процесс |
повто |
||
ряется до |
тех пор, |
пока |
не |
установим, |
что Ьц делит |
bj+j, *+i |
454 |
ПРИЛОЖЕНИЕ А |
(i = 1, . . т — 1). Если Ьп не делит Ьн , то переходим к шагу 5 стандартной процедуры, чтобы получить новое Ъц меньшей вели чины. Поскольку матрица диагонализирована, мы имеем дело с матрицей размерности 2 x 2
1Ъп 0 \
\ 0 пЪп -ь q) '
Если к этой матрице мы применяем шаги со второго по четвер тый стандартной процедуры, то либо будем иметь диагонализированную матрицу с Ъи, делящим bih либо будем иметь элемент, меньший q и занимающий положение (1,1). Таким образом, не бо
лее, чем через log2 D [тс + 4 (t + р)] операций, мы получим Ъп , которое делит
Ъц (г = 2, . . ., т).
Подсчитав число операций, получим
2ms + 2mp |
на шаге 1, |
|
т (с -f-1-\- р) |
на шаге |
2, |
т (с + 1+ р) |
на шаге |
3, |
2т (т — 1)7 |
на шаге 4. |
После т циклов (шагов с 1-го по 4-й) матрица диагонализируется. Включая операции на шаге 6, имеем
т (m + 1) s-(- [2т (т-\- 1) + 4то log2 D\ р -f-
-t-j|m (m +l) + ym (m + l)log2Z>Jc +
+ [" L ".tiH 2" + <) + 4w, log, p ] t. |
(3) |
Если рассмотрим достаточно большое т и подсчитаем только старшие члены, то получим
m2s + [2ттг2 -(- 4т log2 D] р + \^т? + у иг2 log2 D J с -j-
+ [2m3/3 + 4m log2 D] t. |
(4) |
Если применим нашу процедуру к {В_1}/{1}, и если группа
имеет ранг г (m/r~^> 1), то общее |
число операций |
равно |
2mrs -f (4тг + 4г log2 D) р -j-- (2тг + |
mr log2 D) с + |
|
|
+ (2m2r + |
4r log2 D) t. (5) |