# Minimize the number of non-zero elements of a matrix

I have a matrix A, which is huge, and all its elements are non-zero. I want to perform the operation: $U_1\otimes U_2 \otimes U_3...\cdot A \cdot U_1^{\dagger}\otimes U_2^{\dagger}\otimes U_3^{\dagger}... = \tilde{A}$ so essentially apply a unitary rotation to my matrix such that I increase the number of zero elements as much as possible. It is important that the $U_i$ matrices are 2x2 unitary matrices. Does anyone have an idea of how this is doable (in Python or Mathematica for example). I do not want the code, just the idea, for example by minimizing a trace or hadamard product. Just the way to pose the problem. (Looks like a conical optimization problem to me).

• You might want to look at the Schur decomposition of $A$. If $A$ is normal then it can be unitarily diagonalized. – K. Miller Sep 25 '15 at 13:19
• The problem is, if I diagonalize it, it might destroy some important properties of my matrix. I just want to reduce the number of non-zero elements as much as possible, but under the above constraints. – qubix Oct 28 '15 at 9:55