매우 크고 희소 한 인접 행렬의 모든 고유 값을 계산합니다.


13

나는 거의 n ~ 100,000 노드가있는 두 개의 그래프를 가지고 있습니다. 두 그래프에서 각 노드는 정확히 3 개의 다른 노드에 연결되므로 인접 행렬은 대칭이며 매우 드문 드문합니다.

어려운 부분은 인접 행렬의 모든 고유 값이 필요 하지만 고유 벡터 는 필요 하지 않다는 것입니다. 정확히 말하면, 이것은 내 생애에서 한 번 (적어도 볼 수있는 한!) 될 것이므로 모든 고유 값을 얻고 며칠을 기다리지 않아도됩니다.

scipy래퍼를 시도했지만 ARPACK너무 오래 걸립니다. 여러 라이브러리를 찾았지만 가장 큰 / 가장 작은 고유 값의 하위 집합을 얻는 데 가장 효과적입니다. 모든 고유 값을 얻기 위해 병렬 구현이 가능한 대칭 희소 행렬에 작동하는 라이브러리가 있습니까?


6
호기심에서 왜 모든 고유 값이 정확히 필요한가? 이 크기의 대부분의 문제는 훨씬 더 큰 (또는 무한 차원) 문제의 근사치이므로 작은 문제의 고유 값은 실제로 해결하려는 문제의 고유 값에 가깝습니다. 근사치의 품질은 가장 작거나 가장 큰 고유 값에만 적합하며 다른 모든 값은 근사치에 불과하므로 실질적으로 큰 관심을 갖지 않습니다.
Wolfgang Bangerth


@WolfgangBangerth : (이것이 당신에게 명백한 경우 저를 용서하십시오) 문제는 재료의 물리학에서 나옵니다. 밴드 구조, 진동 및 전기적 특성을 얻기 위해 재료의 엄격한 결합 근사와 관련이 있습니다. 이를 얻으려면 전체 고유 값 스펙트럼이 필요합니다. BTW, 이것은 새로운 것이 아니며 70 년대와 80 년대로 거슬러 올라갑니다. 그러나 시스템이 비정질이기 때문에 좋은 결과를 얻으려면 매우 큰 시스템이 필요했습니다. 대부분의 사람들은 결정에 관심이 있지만 내 경우에 비해 매우 쉽습니다.
Mahdi

2
@Mahdi : 글쎄요, 물리적 특성은 일부 부분 미분 연산자의 스펙트럼에 의해 결정됩니다. 나는 당신이 가지고있는 큰 행렬 고유 값 문제 가 PDE 문제 의 근사치 라고 생각합니다 (물론 문제가 어디에서 왔는지 설명하지 않기 때문에 알지 못합니다) . 결과적으로 고유 값 근사치입니다.
Wolfgang Bangerth

답변:


8

shift-invert 스펙트럼 변환 [1]을 사용하고 대역별로 스펙트럼을 계산할 수 있습니다.

이 기술은 내 기사 [2]에도 설명되어 있습니다. [1]의 구현 외에도 내 Graphite 소프트웨어 [3]에서 C ++로 구현을 사용할 수 있습니다 ( 1 월 17 일 업데이트 : 이제 모든 것이 지오 그램 / 그라파이트 버전 3으로 포팅 됨 ). 최대 100 만 개의 정점을 가진 메시 (당신과 비슷한 문제).

작동 방식 :

아이디어가 가 불가역이면 가 의 고유 쌍이고 , 가 의 고유 쌍인 경우입니다 . ARPACK의 반복 방법은 큰 고유 값 (고주파)을 계산하는 데 매우 효율적이지만 작은 값 (작은 주파수)에 대해서는 훨씬 덜 효율적입니다. 따라서 작은 주파수를 계산해야하는 경우 를 로 바꾸는 것이 좋습니다 . ARPACK 단지 연산 행렬 벡터 제품해야하므로 이제, 정말 반전 할 필요가 없다 하나 대신 인자 그것은 (예를 들어 사용 성긴 LU 또는 희소 수 인수 분해) 다음 해결( V , λ ) ( V , 1 / λ ) - 1 - 1 L의 L의 t의 X = B - σ I D σ ( - σ I D ) - 1 σA(V,λ)A(V,1/λ)A1AA1ALLtAx=bARPACK이 행렬-벡터 곱을 요청할 때마다. 이것은 "반전"변환입니다. 고유 값의 개수가 커지면 지금 때 ARPACK 느린 것으로 지지만, 다른 트릭가 /의 고유 값이 사용될 수 변환 한 계산해 여기서 를 결정 부하는 "시프트"인 스펙트럼의 탐색이 이루어집니다 ( "시프트"변환). 두 변환을 결합하여 의 특정 고유 값을 계산 한 다음 를 증가시켜 전체 스펙트럼을 대역별로 탐색합니다 . 자세한 내용은 [1], [2]에 있습니다.AσIdσ(AσId)1σ

[1] http://www.mcs.anl.gov/uploads/cels/papers/P1263.pdf

[2] http://alice.loria.fr/index.php/publications.html?redirect=0&Paper=ManifoldHarmonics@2008

[3] http://alice.loria.fr/software/graphite/doc/html/


고마워 브루노! 이것들은 매우 유망한 것으로 보입니다. 나는 그들을 조사 할 것입니다!
Mahdi

1

또 다른 옵션은 Jacobi 회전을 사용하는 것입니다. 행렬은 이미 거의 대각선이므로 수렴하는 데 시간이 많이 걸리지 않습니다. 일반적으로 선형 속도로 수렴하지만 충분한 반복 후에 수렴 속도는 2 차가됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.