Складність знаходження ейгендекомпозиції матриці


40

Моє запитання просте:

Що найгірше час роботи найкращого відомого алгоритму для обчислення eigendecomposition з з n×n матриці?

Чи зводиться ейгендекомпозиція до матричного множення або в гіршому випадку найвідоміші алгоритми O(n3) (через SVD )?

Зауважте, що я прошу аналізу найгіршого випадку (лише з точки зору n ), а не для меж із константами, залежними від проблеми, як номер умови.

EDIT : Давши деякі відповіді нижче, дозвольте мені скорегувати питання: Я був би задоволений ϵ -підтвердженням. Наближення може бути мультиплікативним, адитивним, вхідним чи будь-яким розумним визначенням, яке б ви хотіли. Мене цікавить, чи існує відомий алгоритм, який має кращу залежність від n ніж щось на зразок O(poly(1/ϵ)n3) ?

EDIT 2 : Дивіться це пов'язане питання щодо симетричних матриць .


Ви подивилися на зменшення від інверсії матриці до множення матриць у підручнику алгоритмів CLRS? Я б почав з того, щоб подивитися на ці ідеї, щоб побачити, чи вони поширюються на власне розкладання.
Warren Schudy

Так - вони, здається, поширюються на пошук LU-розкладання, але я не знаю, як змусити його працювати для власного розкладання.
Лев Рейзін

Чи знаєте ви, чи O(n3) є найвідомішим алгоритмом обчислення SVD?
Робін Котарі

1
O(min(mn2,m2n))n×n

Добре. Я не знаю багато про цю область, але, можливо, обчислення SVD може бути зведено до eigendecomposition, оскільки якщо ви зможете eigendecompose AA * і A * A, ви отримаєте праву і ліву матриці для SVD.
Робін Котарі

Відповіді:


18

Райан відповів на подібне запитання щодо mathoverflow. Ось посилання: mathoverflow-відповідь

В основному, ви можете звести обчислення власних значень до матричного множення, обчисливши символічний визначник. Це дає час роботи O ( ), щоб отримати біт власних значень; найкращим відомим в даний час час виконання є O ( ) для наближення в межах .nω+1mmn3+n2log2nlogb2b

Посилання Райана: `` Віктор Ю. Пан, Чжао Q. Чен: Складність матричної власної задачі. STOC 1999: 507-516 ''.

(Я вважаю, що тут також обговорюється взаємозв'язок між складностями власних значень та множенням матриць у старшій книзі Ахо, Хопкрофта та Уллмана `` Конструювання та аналіз комп’ютерних алгоритмів '', однак у мене немає книги в переді мною, і я не можу дати точний номер сторінки.)


13

Пошук власних значень по суті є ітераційним процесом: Пошук власних значень еквівалентний пошуку коренів многочлена. Більше того, теорема Авеля-Руффіні стверджує, що загалом ви не можете виразити коріння довільного многочлена у простому закритому вигляді (тобто з радикалами, як квадратична формула). Таким чином, ви не можете сподіватися обчислити власні значення "точно".

Це означає, що алгоритм спектрального розкладання повинен бути приблизним. Час виконання будь-якого загального алгоритму має залежати від бажаної точності; це не може просто залежати від виміру.

Я не експерт з цього питання. Я б здогадався, що кубічна залежність від n досить гарна. Усі алгоритми, які я бачив, використовують матричне-векторне множення, а не матричне-матричне множення. Тож я був би дещо здивований, якщо все це зводиться до множення матриці-матриці.

Подивіться на http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms


Дякую за вашу відповідь - мені знадобиться деякий час, щоб переварити його! Але якщо використовується матричне векторне множення, залежність від n може бути кращою, ніж n ^ 3.
Лев Рейзін

6

Я дам лише часткову відповідь, що стосується власних значень матриці.

Як було сказано раніше, існує безліч ітеративних методів пошуку власних значень матриці (наприклад, ітерація потужності), але в цілому пошук власних значень зводиться до знаходження коренів характерного многочлена. Пошук характеристичного многочлена можна здійснити в , де - це вартість розмноження біт а - розмір біта максимального запису на a символічний детермінантний розрахунок з використанням алгоритму Барейса . Дивіться книгу Япа на тему "Основи алгоритмічної алгебри" , зокрема, гл. 10, "Лінійні системи" .O(n3MB[n(logn+L)])MB(s)sL

Після того, як знайдений характерний многочлен, можна знайти корені до будь-якої бажаної точності, використовуючи ізолюючі інтервали. Дивіться книгу Япа, гл. 6 "Коріння поліномів" для деталей. Я забуваю точний час виконання, але його поліном на ступінь характерного многочлена і потрібну цифру точності.

Я підозрюю, що обчислення власних векторів до будь-якої міри точності також є поліном, але я не бачу прямого алгоритму. Звичайно, є стандартний мішок хитрощів, про який було сказано раніше, але, наскільки я знаю, жоден з них не гарантує тривалість виконання поліномів для бажаної точності.


цікаво, але це здається ще гіршим, ніж n ^ 3. чи знаємо ми, що це найкраще?
Лев Рейзін

Часи виконання алгоритмів такого характеру пов'язані зі складністю множення матриць, яка становить близько O (n ^ 3). Я знаю про алгоритм Страссена, але якщо ви не ігноруєте числові проблеми стабільності, то я вважаю, що ви отримаєте O (n ^ 3) для множення матриці. Ітеративні методи можуть зійти швидше у "середньому" випадку, але я вважаю, що загалом про O (n ^ 3) найкраще зробити.
user834

Отже, ти кажеш, що якщо я не переймаюся питаннями чисельної стабільності, ми можемо звести це до рівня O (n ^ 2.376)?
Лев Reyzin

5

Ви можете ознайомитись з новим документом Commandur і Kale, який дає комбінаторний алгоритм для Max-Cut. Здається, що з побічного читання) їх алгоритм базується на комбінаторному знаходженні власного вектора, що відповідає максимальному власного значення, а потім на використанні алгоритму Лука Тревісана після того, як вони отримають цей власний вектор.

Здається, що вони використовують альтернативний підхід до алгоритму Ланцоса для пошуку такого власного вектора, тому це може бути цікавим. Я не впевнений, у чому полягає заявлена ​​складність їх методу для пошуку власного вектора, але це, можливо, варто вивчити. Крім того, оскільки цікавить саме коефіцієнт наближення, а не час сам по собі, те, які часові межі вони дають, не можуть бути оптимальними.


1

Це старе питання, але деякі важливі літератури, здається, були пропущені.

Є алгоритми, для яких у нас є сильніша теоретична підтримка. Наприклад, є ітерації на основі функції знака матриці, див., Наприклад, "Швидка лінійна алгебра є стабільною" Деммеля, Думітріу та Хольца . У цій роботі показано, що задачу власного значення можна вирішити вчасно , де - показник множення матриці, а - будь-яке число .ω η > 0(Oω+η)ωη>0

Так, є папір Pan + Chen + Zheng, який пропонує зібрати характерний многочлен і обчислити в BigFloat, оскільки ви втрачаєте багато бітів точності в кінці, але не багато людей вважають це практичним підходом.

Я також зазначу, що найпоширеніший алгоритм, ітерація Френсіса QR, не має доказів збіжності для загальних матриць; у книзі Креснера обговорюється декілька зустрічних прикладів.


0

Так, майже всю чисельну лінійну алгебру можна звести до матричного множення, хоча, як завжди, чисельна стабільність є проблемою. Крім того, при таких проблемах, як ейгендекомпозиція, ви повинні задовольнитись наближенням, оскільки рішення може бути нераціональним. Ознайомтеся з книгою Поліноміальні та матричні обчислення Біні та Пана.

Ось ще одна довідка - швидка лінійна алгебра є стабільною http://www.netlib.org/lapack/lawnspdf/lawn186.pdf


3
Дякую за вказівник, але, роблячи пошук по книзі в Google книгах, я не зміг знайти скорочення до матричного множення. Чи є у вас вказівник на якусь конкретну посилання чи алгоритм? І їхні алгоритми SVD, схоже, залежать від номера умови матриці, що є не гіршим випадком аналізу. Щодо питань чисельної стабільності тощо, припустимо ідеалізований випадок, коли всі множення та поділи займають одиничний час і дають точні відповіді.
Лев Рейзін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.