내가 작업중 인 소프트웨어 프로젝트에서 밀도가 낮은 하위 행렬의 경우 특정 계산이 훨씬 쉽습니다. 일부 문제 인스턴스에는 밀도가 낮은 하위 행렬이 포함되어 있지만 요인이 아닌 전체가 제공되므로 하위 순위 구조를 활용하려면 순위를 확인하고 행렬을 인수 분해해야합니다. .
문제의 행렬은 일반적으로 완전히 또는 거의 완전히 밀도가 높으며 n은 100에서 수천까지입니다. 행렬의 순위가 낮은 경우 (예 : 5-10 미만) SVD를 계산하고이를 사용하여 낮은 순위 인수 분해를 사용하는 것이 좋습니다. 그러나 매트릭스의 순위가 낮지 않으면 노력이 낭비됩니다.
따라서 나는 완전한 SVD 인수 분해를하기위한 노력에 투자하기 전에 순위가 낮은 지 아닌지를 결정하는 빠르고 합리적인 방법을 찾고 싶다. 어느 시점에서 랭크가 컷오프보다 높으면 프로세스가 즉시 중지 될 수 있습니다. 프로 시저가 행렬이 아닌 경우 행렬이 실수로 낮은 순위임을 선언하는 경우 여전히 낮은 순위를 확인하고 낮은 순위 인수 분해를 찾기 위해 전체 SVD를 수행하고 있기 때문에 큰 문제는 아닙니다.
내가 고려한 옵션에는 LU 또는 QR 인수 분해를 나타내는 순위와 전체 SVD가 확인으로 포함됩니다. 고려해야 할 다른 접근 방법이 있습니까?