Dynamic normal forms and dynamic characteristic polynomial

Published: 2011, Last Modified: 18 Jun 2024Theor. Comput. Sci. 2011EveryoneRevisionsBibTeXCC BY-SA 4.0
Abstract: We present the first fully dynamic algorithm for computing the characteristic polynomial of a matrix. In the generic symmetric case, our algorithm supports rank-one updates in O(n2logn)<math><mi is="true">O</mi><mrow is="true"><mo is="true">(</mo><msup is="true"><mrow is="true"><mi is="true">n</mi></mrow><mrow is="true"><mn is="true">2</mn></mrow></msup><mo is="true">log</mo><mi is="true">n</mi><mo is="true">)</mo></mrow></math> randomized time and queries in constant time, whereas in the general case the algorithm works in O(n2klogn)<math><mi is="true">O</mi><mrow is="true"><mo is="true">(</mo><msup is="true"><mrow is="true"><mi is="true">n</mi></mrow><mrow is="true"><mn is="true">2</mn></mrow></msup><mi is="true">k</mi><mo is="true">log</mo><mi is="true">n</mi><mo is="true">)</mo></mrow></math> randomized time, where k<math><mi is="true">k</mi></math> is the number of invariant factors of the matrix. The algorithm is based on the first dynamic algorithm for computing normal forms of a matrix such as the Frobenius normal form or the tridiagonal symmetric form. The algorithm can be extended to solve the matrix eigenproblem with relative error 2−b<math><msup is="true"><mrow is="true"><mn is="true">2</mn></mrow><mrow is="true"><mo is="true">−</mo><mi is="true">b</mi></mrow></msup></math> in additional O(nlog2nlogb)<math><mi is="true">O</mi><mrow is="true"><mo is="true">(</mo><mi is="true">n</mi><msup is="true"><mrow is="true"><mo is="true">log</mo></mrow><mrow is="true"><mn is="true">2</mn></mrow></msup><mi is="true">n</mi><mo is="true">log</mo><mi is="true">b</mi><mo is="true">)</mo></mrow></math> time. Furthermore, it can be used to dynamically maintain the singular value decomposition (SVD) of a generic matrix. Together with the algorithm, the hardness of the problem is studied. For the symmetric case, we present an Ω(n2)<math><mi is="true">Ω</mi><mrow is="true"><mo is="true">(</mo><msup is="true"><mrow is="true"><mi is="true">n</mi></mrow><mrow is="true"><mn is="true">2</mn></mrow></msup><mo is="true">)</mo></mrow></math> lower bound for rank-one updates and an Ω(n)<math><mi is="true">Ω</mi><mrow is="true"><mo is="true">(</mo><mi is="true">n</mi><mo is="true">)</mo></mrow></math> lower bound for element updates.
Loading