Мой вопрос прост:
Что наихудшее время работы наилучшего известного алгоритма для вычисления eigendecomposition в качестве матрицы?
Собственное разложение сводится к умножению матриц или в худшем случае наиболее известные алгоритмы (через SVD )?
Обратите внимание, что я прошу провести анализ наихудшего случая (только в терминах ), а не для границ с зависимыми от задачи константами, такими как номер условия.
РЕДАКТИРОВАТЬ : Учитывая некоторые ответы ниже, позвольте мне уточнить вопрос: я был бы счастлив с -приближением. Аппроксимация может быть мультипликативной, аддитивной, входной или любым разумным определением, которое вы хотите. Мне интересно, есть ли известный алгоритм, который имеет лучшую зависимость от чем что-то вроде ?
РЕДАКТИРОВАТЬ 2 : см. Этот связанный вопрос на симметричных матриц .
Ответы:
Райан ответил на аналогичный вопрос о mathoverflow. Вот ссылка: mathoverflow-answer
По сути, вы можете уменьшить вычисление собственных значений до умножения матриц, вычисляя символьный определитель. Это дает время работы O ( ), чтобы получить m битов собственных значений; наилучшее известное время выполнения - O ( n 3 + n 2 log 2 n log b ) для приближения в пределах 2 - b .Nω + 1м м N3+ n2журнал2журнал nб 2- б
Ссылка Райана: `` Виктор Й. Пан, Чжао К. Чен: Сложность матричной собственной проблемы. STOC 1999: 507-516 ''.
(Я полагаю, что существует дискуссия о взаимосвязи между сложностями собственных значений и умножением матриц в более ранней книге Aho, Hopcroft и Ullman `` Разработка и анализ компьютерных алгоритмов '', однако у меня нет книги в передо мной, и я не могу дать вам точный номер страницы.)
источник
Поиск собственных значений по своей природе является итеративным процессом: поиск собственных значений эквивалентен нахождению корней многочлена. Более того, теорема Абеля – Руффини утверждает, что в общем случае вы не можете выразить корни произвольного многочлена в простой замкнутой форме (т. Е. С радикалами, подобными квадратной формуле). Таким образом, вы не можете надеяться вычислить собственные значения «точно».
Это означает, что алгоритм спектрального разложения должен быть приближенным. Время выполнения любого общего алгоритма должно зависеть от желаемой точности; это не может зависеть только от измерения.
Я не эксперт в этом. Я предполагаю, что кубическая зависимость от n довольно хорошая. Все алгоритмы, которые я видел, используют умножение матрицы на вектор, а не умножение матрицы на вектор. Поэтому я был бы несколько удивлен, если бы все сводилось к умножению матрицы на матрицу.
Ознакомьтесь с http://en.wikipedia.org/wiki/List_of_numeric_analysis_topics#Eigenvalue_algorithms
источник
Я дам только частичный ответ, касающийся собственных значений матрицы.
Как упоминалось ранее, существует много итерационных методов для нахождения собственных значений матрицы (например, степенная итерация), но в целом нахождение собственных значений сводится к нахождению корней характеристического полинома. Найти характеристический многочлен можно в , гдеO ( n3MВ[ n ( l o gн + л ) ] ) MВ( s ) s L , См. Книгу Япа о «Основах алгоритмической алгебры» , в частности, гл. 10, «Линейные системы» .
Как только характеристический многочлен найден, можно найти корни с любой степенью точности, желаемой с помощью изолирующих интервалов. Смотрите книгу Япа, глава 6 «Корни полиномов» для деталей. Я забыл точное время выполнения, но его полином по степени характеристического полинома и цифрам требуемой точности.
Я подозреваю, что вычисление собственных векторов с любой степенью точности также является полиномиальным, но я не вижу прямого алгоритма. Конечно, существуют стандартные приемы, о которых упоминалось ранее, но, насколько мне известно, ни один из них не гарантирует полиномиального времени выполнения с желаемой точностью.
источник
Вы можете проверить новую статью Commandur и Kale, в которой дан комбинаторный алгоритм для Max-Cut. Кажется (из беглого прочтения), что их алгоритм основан на комбинаторном нахождении собственного вектора, соответствующего максимальному собственному значению, и затем использовании алгоритма Луки Тревизана, как только у них есть этот собственный вектор.
Кажется, что они используют альтернативный подход к алгоритму Ланцоша для нахождения такого собственного вектора, поэтому он может представлять интерес. Я не уверен, в чем заключается заявленная сложность их метода поиска собственного вектора, но, возможно, стоит разобраться. Кроме того, поскольку их интересует именно коэффициент приближения, а не время как таковое, любые временные ограничения, которые они дают, могут быть неоптимальными.
источник
Это старый вопрос, но некоторая важная литература, кажется, пропущена.
Да, есть статья Пан + Чэнь + Чжэн, в которой предлагается собрать характеристический полином и вычислить в BigFloat, потому что в конце вы теряете много битов точности, но не многие люди считают это практическим подходом.
Я также упоминаю, что наиболее широко используемый алгоритм, итерация Фрэнсиса QR, не имеет доказательств сходимости для общих матриц; В книге Кресснера обсуждаются несколько контрпримеров.
источник
Да, почти вся числовая линейная алгебра может быть сведена к умножению матриц, хотя, как всегда, проблема числовой стабильности является проблемой. Кроме того, с такими проблемами, как собственное разложение, вы должны довольствоваться приближением, потому что решение может быть иррациональным. Посмотрите книгу Полиномиальные и матричные вычисления Бини и Пан.
Вот еще одна ссылка - быстрая линейная алгебра стабильна http://www.netlib.org/lapack/lawnspdf/lawn186.pdf
источник