# [R] Permanent of a matrix

Mark Novak mnovak at uchicago.edu
Thu May 31 23:47:31 CEST 2007

Hello all,
Does anyone know of a function for calculating the permanent of a matrix?

I have found only the function for calculating a matrix's determinant,
and my beginner attempts to figure out a working script (see below) have
failed.  (That is, I don't get the same answer as when I calculate the
permanent in Maple or Mathematica.)

My understanding and experience is that it can be an exceedingly
difficult (memory intensive) calculation for matrices larger than ~24x24
(which also suggests that there is something wrong in the way I've coded
this) but I can't seem to figure out where my error lies; whether it's
in my code or in my understanding of how a matrix permanent is defined.

-Mark

perm<-function(A){
m<-dim(A)[1]
M1<-dim(0)
for (i in
1:nrow(A)){temp.M<-c(A)[i+0:(m-i)*(m+1)];M1<-c(M1,prod(temp.M))}

M2<-dim(0)
for (i in
2:nrow(A)){temp.M<-c(t(A))[i+0:(m-i)*(m+1)];M2<-c(M2,prod(temp.M))}

B<-A[nrow(A):1,]
M3<-dim(0)
for (i in
1:nrow(B)){temp.M<-c(B)[i+0:(m-i)*(m+1)];M3<-c(M3,prod(temp.M))}

M4<-dim(0)
for (i in
2:nrow(B)){temp.M<-c(t(B))[i+0:(m-i)*(m+1)];M4<-c(M4,prod(temp.M))}

Perm<-sum(M1,M2,M3,M4)
Perm
}
S<-4
A<-array(seq(1,S^2),dim=c(S,S))
perm(A)

--

~~~~~~~~~~~~~~~~~~~~~~~~~~
Dept. of Ecology & Evolution
1101 E. 57th St., U. of Chicago
Chicago, IL 60637
Office/Lab: 773-702-4815
Cell: 773-256-8645
Fax: 773-702-9740
http://home.uchicago.edu/~mnovak/ <http://home.uchicago.edu/%7Emnovak/>
~~~~~~~~~~~~~~~~~~~~~~~~~~