Matrix Permanent Using Recursion
Computes the permanent of a matrix using recursion. The technique is known as "expansion by minors" or the Laplace expansion. Two versions are included:
1) The MATLAB language routine permanent_mat() is about 8 times faster than equivalent native MATLAB function by Xu plus it has some optimization for sparse matrices.
2) The C language routine permanent()uses the CMEX interface to integrate into MATLAB. It is more than 500 times faster than the native MATLAB function by Xu. Also, I have found it to be faster than more advanced algorithms when the matrix is very sparse. One optimization available in C is that the matrix is kept in-place, in memory. Thus, less memory in consumed and less time is spent copying the matrix.
Cite As
Brian Butler (2025). Matrix Permanent Using Recursion (https://www.mathworks.com/matlabcentral/fileexchange/53434-matrix-permanent-using-recursion), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
- MATLAB > Mathematics > Linear Algebra >
Tags
Acknowledgements
Inspired by: Matrix Permanent, Matrix Permanent using Ryser Algorithm
Inspired: Permanent of (0,1) Matrix using Kallman in CMEX, Matrix Permanent using Nijenhuis-Wilf in CMEX.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Version | Published | Release Notes | |
---|---|---|---|
1.3.1.0 | Updated title and description. Very small change to permanent_mat.m to make it cleaner. |
||
1.3.0.0 | Add support for rectangular matrices (more columns than rows). |
||
1.2.0.0 | Fixes to supplementary files; no change to CMEX. |
||
1.1.0.0 | Updated cover figure.
|
||
1.0.0.0 | Edited description Made note of small memory requirement.
|