Matlab中是否有内置函数来确定置换是偶数还是奇数?

Ste*_*ith 3 matlab permutation

这个问题的变体已被交叉到数学堆栈交换计算科学堆栈交换.可以在这些其他网站上找到其他答案.

这个问题与在MATLAB获取置换映射时提出的问题有关.标题基本概括了所有内容.我想知道Matlab中是否有内置函数来确定向量表示的置换是偶数还是奇数.例如,[2 1 4 3 5]是身份置换[1 2 3 4 5]的偶数置换,因为它需要偶数个交换从一个向量到另一个向量.这似乎是人们可能想要经常做的事情,并且可能有内置的功能.人们已经在Web上发布了很长的Matlab文件来实现这一目标.如果我能让Matlab给我一个置换矩阵,那么我可以采用该矩阵的行列式,但我还没弄清楚如何做到这一点,我也不知道是否有快速的方法.

Har*_*dya 7

我不认为这有内置功能.但它有一个简单而有效的解决方案:您的符号应该是向量的置换矩阵的决定因素.

a = [2 1 4 3 5];
I = speye(length(a));
sign = det(I(:,a));
Run Code Online (Sandbox Code Playgroud)