Яка реальна часова складність ліквідації Гаусса?


72

Відповідаючи на попереднє запитання , я згадав поширене, але помилкове переконання, що ліквідація «Гаусса» відбувається в O(n3) час. Хоча очевидно, що алгоритм використовує арифметичні операції O(n3) , недбала реалізація може створювати числа з експоненціально багатьма бітами. Як простий приклад, припустимо, ми хочемо діагоналізувати таку матрицю:

[200⋯0120⋯0112⋯0⋮⋮⋮⋱⋮111⋯2]

Якщо ми використовуємо версію алгоритму усунення без поділу, яка додає лише цілі кратні множини одного рядка до іншого, і ми завжди переводимо на діагональний запис матриці, вихідна матриця має вектор по діагоналі.(2,4,16,256,…,22n−1)

Але що це фактичний час складність виключення Гаусса? Більшість авторів комбінаторної оптимізації, здається, задоволені "сильно поліномом", але мені цікаво, що таке поліном насправді.

n×nmO(n(m+log⁡n))m=O(log⁡n)O(n5)O~(n4)O(log⁡n)

Це все-таки відомий найкращий аналіз? Чи є стандартна посилання, яка дає кращу чітку межу в часі або, принаймні, кращу межу з необхідною точністю?

Більш загально: Який час роботи (на цілу оперативну пам'ять) найшвидшого алгоритму, відомого для вирішення довільних систем лінійних рівнянь?


2
(вставляючи насильницьку ручну хвилю) Чи не вдалося обійти велику цілу проблему в цьому конкретному випадку, використовуючи хеширующие модулі малі прості трюки? алгоритм буде рандомізований, але все-таки .. Дійсно, це не відповідає на поставлене вами питання ...
— Суреш Венкат

1
O(n3MB[n(log⁡n+L)])

1
Стандартний алгоритм усунення Гаусса ділить зведений рядок на елемент повороту перед зменшенням пізніших рядків. Відкрите запитання стосується цієї стандартної версії. У прикладі, який я наводив на початку свого запитання, використовується інший варіант, який НЕ розділяється на елемент повороту.
— Джефф

3
Цікавий. Час Япа для алгоритму Береїса ідентичний часовому інтервалу, який передбачає аналіз Едмондса про ліквідацію Гаусса.
— Джефф

1
Нещодавно rjlipton досліджував цю область та цитує кандидатську дисертацію Каннана на цю тему. Ключовою частиною аналізу є нормальна форма
— Wrt

Відповіді:


35

O~(n3log⁡(‖A‖+‖b‖))


Дякую за довідку! Це відповідає на моє друге питання, але не на моє перше.
— Джефф

3
Якщо ви використовуєте поворотні, то бітний розмір проміжних результатів у ліквідації Гаусса (GE) є многочленом, експоненційного вибуху немає. Я думаю, що це результат Барейса. Щодо складності GE, то в книзі Гатена та Герхарда "Сучасна комп'ютерна алгебра" є алгоритм для обчислення детермінантної матриці , заснованої на GE, модульній арифметиці та теоремі залишків Китаю (Розд. 5.5, с. 101-105). Складність становить . Я думаю, що коефіцієнт можна зберегти, використовуючи швидку арифметику. Якщо я не помиляюся, це обмеження, про яке згадував user834. AO(n4log2⁡‖A‖)n
— Ілля

@Elias, яке визначення норми в цьому виразі? Це найбільший коефіцієнт в абсолютних розмірах? Це розмір біта? Також це результат для довільних раціональних матриць?
— Хуан Бермеджо Вега

13

Я думаю, що відповідь на ваше перше запитання також є через такі аргументи: "Документ Едмонда" не описує варіант гауссової ліквідації але це доводить, що будь-яке число, обчислене на кроці алгоритму, є визначальним деякою підматрицею А. З книги Шріверта «Теорія лінійного та цілого програмування» ми знаємо, що якщо кодування A потребує b бітів (b повинно бути вO~(n3log⁡(‖A‖+‖b‖))O~(log⁡(‖A‖)), то будь-якому з його субдетермінантів потрібно максимум 2b біт (теорема 3.2). Для того, щоб зробити гауссова елімінація алгоритмом багаточленного часу, ми повинні дбати про обчислені коефіцієнти: ми повинні скасувати загальні коефіцієнти з кожного дробу, який ми обчислимо, на будь-якому проміжному етапі, і тоді всі числа мають довжину кодування лінійною довжиною кодування A.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.