

A055547


Number of normal n X n matrices with entries {0,1}.


4




OFFSET

1,1


COMMENTS

A complex matrix M is normal if M^H M = M M^H, where H is conjugate transpose.
Let M be an n X n complex matrix with eigenvalues l_1, ..., l_n. The following are equivalent:
(a) M is normal;
(b) There is a unitary matrix U such that U^H M U is diagonal;
(c) Sum_{i,j = 1..n} M_{i,j}^2 = l_1^2 + ... + l_n^2; and
(d) M has an orthonormal set of n eigenvectors.
If a normal matrix M is split into the symmetric and antisymmetric matrices M=A+S with S=(M+M^H)/2 and A=(MM^H)/2, M^H the transpose of M, A must be a generalized Tournament matrix. (For Tournament matrices each row and each column sums to zero.) The "generalization" is that zeros (indicating a tie between the players) may occur outside the main matrix diagonal. A is therefore a member of the set of the antisymmetric ternary matrices (elements 1,0,+1) counted in A007081(n), because there is a 1to1 mapping of the Tournament matrix onto the labeled edgeoriented Eulerian graphs.  R. J. Mathar, Mar 22 2006


REFERENCES

G. H. Golub and C. F. van Loan, Matrix Computations, Johns Hopkins, 1989, p. 336.
R. A. Horn and C. R. Johnson, Matrix Analysis, Cambridge, 1988, Section 2.5.
W. H. Press et al., Numerical Recipes, Cambridge, 1986; Chapter 11.


LINKS



FORMULA

a(n) >= 2^[n*(n+1)/2] = A006125(n+1) because all symmetric binary matrices (which have n*(n+1)/2 independent elements) are normal.  R. J. Mathar, Mar 22 2006


MATHEMATICA

Options[NormalMatrixQ]={ ZeroTest>(#===0&) };
Matrices[n_, l_List:{0, 1}] := Partition[ #, n]&/@Flatten[Outer[List, Sequence@@Table[l, {n^2}]], n^21]
NormalMatrixQ[a_List?MatrixQ, opts___] := Module[ { b=Conjugate@Transpose@a, zerotest=ZeroTest/.{opts}/.Options[NormalMatrixQ] }, (zerotest/@And@@Flatten[a.bb.a])Dimensions[a]=={1, 1} ]
Table[Count[Matrices[n, {0, 1}], _?NormalMatrixQ], {n, 4}]


PROG

(PARI) NormaQ(a, n) = { local(aT) ; aT=mattranspose(a) ; if( a*aT == aT*a, 1, 0) ; } combMat(no, n) = { local(a, noshif) ; a = matrix(n, n) ; noshif=no ; for(co=1, n, for(ro=1, n, if( (noshif %2)== 1, a[ro, co] = 1, a[ro, co] = 0) ; noshif = floor(noshif/2) ; ) ) ; return(a) ; } { for (n = 1, 5, count = 0; a = matrix(n, n) ; for( no=0, 2^(n^2)1, a = combMat(no, n) ; count += NormaQ(a, n) ; ) ; print(count) ; ) } \\ R. J. Mathar, Mar 15 2006


CROSSREFS



KEYWORD

nonn,more,hard


AUTHOR



EXTENSIONS



STATUS

approved



