O algoritmo de Thomas é a maneira mais rápida de resolver um sistema linear tridiagonal esparso, diagonalmente dominante, simétrico

13

Eu estou querendo saber se o algoritmo Thomas é a maneira mais rápida (provàvelmente?) De resolver um sistema tridiagonal esparso com dominação diagonal simétrica em termos de complexidade algorítmica (sem procurar pacotes de implementação como LAPACK etc.). Eu sei que o algoritmo Thomas e o multigrid são de complexidade , mas talvez o fator constante para o multigrid seja menor? Não me parece que o multigrid possa ser mais rápido, mas não sou positivo.O(n)

Nota: Estou considerando o caso em que as matrizes são muito grandes. Métodos diretos ou iterativos são aceitáveis.

James
fonte

Respostas:

12

Acredito que comparar um método iterativo (multigrid) com um método direto / exato (Thomas) em termos de contagem exata de operações não é realmente significativo. O IIRC, a contagem de operações da Thomas é de para qualquer sistema tridiagonal. A única vez em que consigo imaginar uma batida multigrelha concebível é para um caso trivial de ter uma solução linear, e mesmo assim o custo de avaliar o residual em cada nível seria comparável ao custo de Thomas.8N

A utilidade do multigrid está no fato de ser geral para matrizes esparsas e não restrita a sistemas tridiagonais.O(N)

Aurelius
fonte
Obrigado. Eu percebo que os métodos iterativos não são exatos. Eu deveria ter especificado uma tolerância muito pequena (digamos 10 ^ -15) e apenas tratado isso como sendo "exato" para fins de comparação.
James
@ user2697246 bem, você perguntou sobre o "comprovadamente" mais rápido. A taxa de convergência exata para multigrid (ou qualquer esquema iterativo) sempre dependerá da própria solução e do palpite inicial - uma solução linear será efetivamente resolvida exatamente em uma etapa, enquanto algo mais oscilatório exigirá mais operações. Thomas tem uma contagem exata e fixa de operações para todos os casos. Na prática, você nunca derrotará Thomas por resolver (em série) um sistema tridiagonal para um caso não trivial.
Aurelius
@Aurelius O algoritmo Thomas pode ser paralelo? Caso contrário, essa é uma das principais vantagens do multigrid!
Nick Alger
3
@NickAlger Não, o algoritmo Thomas é estritamente serial e sim, a paralelização é uma grande vantagem para o multigrid (embora, no caso específico de um sistema tridiagonal, eu suspeite que a latência de comunicação o mate.) Existe uma técnica específica para os sistemas tridiagonais chamada paralela cíclica redução (PCR), que é , paralelizável por N , que têm usado com sucesso em GPUs. O(NlogN)N
Aurelius
Uma correção, o algoritmo Thomas requer operações 8N, não 9N. Além disso, o que você quer dizer com "multigrid ... tendo uma solução linear"? Todos os sistemas em consideração aqui são lineares.
precisa saber é o seguinte
11

A resposta curta é que o algoritmo Thomas será mais rápido do que qualquer esquema iterativo para quase todos os casos. A exceção talvez seja a aplicação de uma única iteração de um esquema iterativo muito simples, como Gauss-Seidel, mas é altamente improvável que isso dê uma solução aceitável. Além disso, isso está ignorando as preocupações de processamento paralelo.

O(n)O(n)

5N3N3N22N2

Doug Lipinski
fonte
"O multigrid é uma escolha especialmente ruim no caso de uma matriz tri-diagonal porque, embora o multigrid seja O (n), a constante é bastante grande." Também acho isso, mas o Google trouxe uma linha no livro Multigrid de Trottenburg, alegando uma constante de 0,1-0,2, declarada sem provas. Acho que não acredito nisso.
Aurelius
1
@Aurelius Interessante. Isso é claramente impossível no caso geral, pois existem entradas 3N em uma matriz tridiagonal. Se o custo for ~ 0,1 * N, isso significa que você nunca opera na maioria das entradas.
precisa
Sim, estamos na mesma página; simplesmente avaliar um estêncil de 3 pontos requer operações 3N. Eu estava deslizando, então talvez eu tenha interpretado mal totalmente a afirmação, mas você pode ver por si mesmo no trecho do google books.
Aurelius
4
A citação completa (pág. 21) é "Eficiência no sentido prático significa que as constantes de proporcionalidade nesta declaração O (N) são pequenas ou moderadas. Esse é realmente o caso da multigrid: se bem projetados, os fatores de convergência h-independentes podem ser muito pequeno (na faixa de 0,1-0,2 ou até menos) e a contagem de operações por desconhecido por etapa da iteração também é pequena. " O 0.1-0.2 refere-se à redução residual para cada ciclo de multigrid. A constante no O (N) seria da ordem de 1,5-2,0x, multiplicando a matriz por ciclo (com um total de uma dúzia ou dois ciclos).
21715 Godric Seer
Ah, obrigado @GodricSeer, isso faz mais sentido.
Aurelius
0

Os loops multigrid mesmo no núcleo único são vetorizáveis ​​pelo otimizador. Portanto, embora a contagem de operações possa ajudar, não devemos esquecer que, mesmo no mundo serial, os processadores possuem paralelismo de vetores e, portanto, o tempo de solução pode não ser exatamente o que previmos na análise de custos.

Hasbestein
fonte