Let K be a number field, let A be a finite-dimensional K-algebra, let J(A)
denote the Jacobson radical of A, and let Λ be an OK-order in A. Suppose that each
simple component of the semisimple K-algebra A/J(A) is isomorphic to a matrix ring
over a field. Under this hypothesis on A, we give an algorithm that given two Λ-lattices
X ...
Let K be a number field, let A be a finite-dimensional K-algebra, let J(A)
denote the Jacobson radical of A, and let Λ be an OK-order in A. Suppose that each
simple component of the semisimple K-algebra A/J(A) is isomorphic to a matrix ring
over a field. Under this hypothesis on A, we give an algorithm that given two Λ-lattices
X and Y , determines whether X and Y are isomorphic, and if so, computes an explicit
isomorphism X → Y . This algorithm reduces the problem to standard problems in
computational algebra and algorithmic algebraic number theory in polynomial time. As
an application, we give an algorithm for the following long-standing problem: given a
number field K, a positive integer n and two matrices A, B ∈ Matn(OK), determine
whether A and B are similar over OK, and if so, return a matrix C ∈ GLn(OK) such
that B = CAC−1. We give explicit examples that show that the implementation of
the latter algorithm for OK = Z vastly outperforms implementations of all previous
algorithms, as predicted by our complexity analysis.