Complexidade de encontrar a composição Eigend de uma matriz

40

Minha pergunta é simples:

Qual é o pior caso de tempo da melhor algoritmo conhecido correndo para computar uma eigendecomposition de um n×n matriz?

A composição automática reduz à multiplicação de matrizes ou os algoritmos mais conhecidos O(n3) (via SVD ) no pior caso?

Observe que estou solicitando uma análise de pior caso (apenas em termos de n ), não limites com constantes dependentes de problemas, como número da condição.

EDIT : Dadas algumas das respostas abaixo, deixe-me ajustar a pergunta: eu ficaria feliz com uma aproximação ϵ . A aproximação pode ser multiplicativa, aditiva, entrada ou qualquer definição razoável que você queira. Estou interessado se existe um algoritmo conhecido que tem melhor dependência de n que algo como O(poly(1/ϵ)n3) ?

EDIT 2 : Veja esta pergunta relacionada sobre matrizes simétricas .

Lev Reyzin
fonte
Você já viu a redução da inversão de matriz para multiplicação de matriz no livro de algoritmos do CLRS? Eu começaria examinando essas idéias para ver se elas se estendem à decomposição por si própria.
Warren Schudy
Sim - eles parecem se estender para encontrar uma decomposição de LU, mas não sei como fazê-lo funcionar para uma decomposição de eigen.
Lev Reyzin
Você sabe se O(n3) é o algoritmo mais conhecido para calcular o SVD?
226806 RobinBottai
11
O(min(mn2,m2n))n×n
Bem. Também não sei muito sobre essa área, mas talvez o cálculo do SVD possa ser reduzido a uma composição automática, pois se você puder compor uma composição AA * e A * A, obterá as matrizes direita e esquerda para o SVD.
Robin Kothari

Respostas:

18

Ryan respondeu a uma pergunta semelhante no mathoverflow. Aqui está o link: mathoverflow-answer

Basicamente, você pode reduzir a computação do valor próprio à multiplicação de matrizes calculando um determinante simbólico. Isso fornece um tempo de execução de O ( ) para obter bits dos valores próprios; o tempo de execução mais conhecido atualmente é O ( ) para uma aproximação dentro de .nω+1mmn3+n2log2nlogb2b

A referência de Ryan é `` Victor Y. Pan, Zhao Q. Chen: A complexidade do problema de matriz própria. STOC 1999: 507-516 ''.

(Acredito que há também uma discussão sobre a relação entre as complexidades dos autovalores e a multiplicação de matrizes no livro mais antigo de Aho, Hopcroft e Ullman `` The Design and Analysis of Computer Algorithms '', no entanto, não tenho o livro em na minha frente e não posso fornecer o número exato da página.)

virgi
fonte
13

Encontrar valores próprios é inerentemente um processo iterativo: encontrar valores próprios é equivalente a encontrar as raízes de um polinômio. Além disso, o teorema de Abel-Ruffini afirma que, em geral, você não pode expressar as raízes de um polinômio arbitrário de uma forma simples e fechada (ou seja, com radicais como a fórmula quadrática). Portanto, você não pode esperar calcular valores próprios "exatamente".

Isso significa que um algoritmo de decomposição espectral deve ser aproximado. O tempo de execução de qualquer algoritmo geral deve depender da precisão desejada; não pode depender apenas da dimensão.

Eu não sou especialista nisso. Eu acho que uma dependência cúbica de n é muito boa. Os algoritmos que eu já vi usam multiplicação de matriz-vetor, em vez de multiplicação de matriz-matriz. Então, eu ficaria um pouco surpreso se tudo se resumisse à multiplicação matriz-matriz.

Dê uma olhada em http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms

Thomas
fonte
Obrigado pela sua resposta - vou precisar de algum tempo para digeri-lo! Mas se alguém usar multiplicação de vetores matriciais, a dependência de n talvez seja melhor que n ^ 3.
Lev Reyzin
6

Darei apenas uma resposta parcial relativa aos autovalores de uma matriz.

Como mencionado anteriormente, existem muitos métodos iterativos para encontrar os autovalores de uma matriz (por exemplo, iteração de potência), mas, em geral, encontrar os autovalores reduz a busca das raízes do polinômio característico. A localização do polinômio característico pode ser feita em , onde é o custo de bits multiplicado e é o tamanho de bit da entrada máxima, por um cálculo determinante simbólico usando o algoritmo de Bareiss . Veja o livro de Yap sobre "Fundamentos da Álgebra Algorítmica" , especificamente, cap. 10, "Sistemas Lineares" .O(n3MB[n(logn+L)])MB(s)sL

Uma vez que o polinômio característico é encontrado, é possível encontrar as raízes com qualquer grau de precisão desejado, usando intervalos de isolamento. Veja o livro de Yap, cap. 6 "Raízes de polinômios" para obter detalhes. Eu esqueço o tempo de execução exato, mas seu polinômio no grau do polinômio característico e nos dígitos de precisão desejados.

Suspeito que o cálculo de autovetores até qualquer grau de precisão também seja polinomial, mas não vejo um algoritmo direto. Obviamente, existem os truques padrão mencionados anteriormente, mas até onde eu sei, nenhum deles garante tempo de execução polinomial para a precisão desejada.

user834
fonte
interessante, mas isso parece ainda pior que n ^ 3. sabemos que este é o melhor possível?
Lev Reyzin
Os tempos de execução em algoritmos dessa natureza estão associados à complexidade da Multiplicação de Matrizes, que é aproximadamente O (n ^ 3). Conheço o algoritmo de Strassen, mas se você não ignora os problemas de estabilidade numérica, acredito que você recebe O (n ^ 3) para multiplicação de matrizes. Métodos iterativos podem convergir mais rapidamente no caso "médio", mas acredito que, em geral, sobre O (n ^ 3) é o melhor que você pode fazer.
user834
Então você está dizendo que, se eu não me importo com questões de estabilidade numérica, podemos reduzi-lo para O (n ^ 2.376)?
Lev Reyzin
5

Você pode conferir o novo artigo de Commandur e Kale, que fornece um algoritmo combinatório para o Max-Cut. Parece (a partir de uma leitura superficial) que seu algoritmo é baseado em encontrar combinatorialmente o vetor próprio correspondente ao valor próprio máximo e, em seguida, usar o algoritmo de Luca Trevisan depois que eles tiverem esse vetor próprio.

Parece que eles estão usando uma abordagem alternativa ao algoritmo de Lanczos para encontrar um vetor próprio, por isso pode ser interessante. Não sei qual é a alegada complexidade do método deles para encontrar o vetor próprio, mas pode valer a pena investigar. Além disso, como é a razão de aproximação e não o tempo em si em que eles estão interessados, o tempo limite que eles derem pode não ser o ideal.

asterix
fonte
1

Esta é uma pergunta antiga, mas alguma literatura importante parece ter sido perdida.

Existem algoritmos para os quais temos um suporte teórico mais forte. Por exemplo, existem iterações baseadas na função de sinal da matriz, consulte, por exemplo, "Álgebra Linear Rápida é Estável" por Demmel, Dumitriu e Holtz . Nesse artigo, é mostrado que o problema de autovalor pode ser resolvido no tempo , onde é o expoente da multiplicação de matrizes e é qualquer número .(Oω+η)ωη>0

Sim, existe o artigo Pan + Chen + Zheng que sugere a montagem do polinômio e cálculo característicos no BigFloat porque você perde muita precisão no final, mas poucas pessoas consideram essa uma abordagem prática.

Menciono também que o algoritmo mais utilizado, a iteração Francis QR, não tem prova de convergência para matrizes gerais; o livro de Kressner discute vários contra-exemplos.

Sébastien Loisel
fonte
0

Sim, praticamente toda a álgebra linear numérica pode ser reduzida à multiplicação de matrizes, embora, como sempre, a estabilidade numérica seja um problema. Além disso, com problemas como composição automática, você deve se contentar com uma aproximação, pois a solução pode ser irracional. Confira o livro Polynomial and Matrix Computations de Bini e Pan.

Aqui está outra referência - Álgebra Linear Rápida é Estável http://www.netlib.org/lapack/lawnspdf/lawn186.pdf

Anônimo
fonte
3
Obrigado pelo ponteiro, mas, ao pesquisar no livro no google books, não consegui encontrar a redução na multiplicação de matrizes. Você tem um ponteiro para alguma referência ou algoritmo concreto? E seus algoritmos SVD parecem depender do número de condição da matriz, o que não é uma análise de pior caso. Em relação às questões de estabilidade numérica, etc., vamos assumir o caso idealizado, em que todas as multiplicações e divisões levam tempo unitário e produzem respostas exatas.
Lev Reyzin