【线性代数】行列式的概念

d e t ( A ) = ∑ i 1 , i 2 , ⋯   , i n ( − 1 ) σ ( i 1 , ⋯   , i n ) a 1 , i 1 a 2 , i 2 , ⋯   , a n , i n det(A) =\sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)=i1,i2,⋯,in∑(−1)σ(i1,⋯,in)a1,i1a2,i2,⋯,an,in

i 1 , ⋯   , i n i_1,\cdots,i_n i1,⋯,in 是 1 , ⋯   , n 1,\cdots,n 1,⋯,n 的排列.

计算复杂度

O ( n ⋅ n ! ) O(n\cdot n!) O(n⋅n!)

{ 1 , 2 } \{1,2\} {1,2} 的全排列如下

排列 逆序数 奇偶性
1 , 2 1,2 1,2 0
2 , 1 2,1 2,1 1

a 1 , 1 a 1 , 2 a 2 , 1 a 2 , 2 \] \\left\[\\begin{matrix}a_{1,1} \&a_{1,2}\\\\ a_{2,1} \& a_{2,2}\\end{matrix}\\right\] \[a1,1a2,1a1,2a2,2

{ 1 , 2 , 3 } \{1,2,3\} {1,2,3} 的全排列如下

排列 逆序数 奇偶性
1 , 2 , 3 1,2,3 1,2,3 0
1 , 3 , 2 1,3,2 1,3,2 1
2 , 1 , 3 2,1,3 2,1,3 1
2 , 3 , 1 2,3,1 2,3,1 2
3 , 1 , 2 3,1,2 3,1,2 2
3 , 2 , 1 3,2,1 3,2,1 3

a 1 , 1 a 1 , 2 a 1 , 3 a 2 , 1 a 2 , 2 a 2 , 3 a 3 , 1 a 3 , 2 a 3 , 3 \] \\left\[\\begin{matrix}a_{1,1} \&a_{1,2} \& a_{1,3}\\\\ a_{2,1} \& a_{2,2}\& a_{2,3} \\\\ a_{3,1} \& a_{3,2} \& a_{3,3}\\end{matrix}\\right\] a1,1a2,1a3,1a1,2a2,2a3,2a1,3a2,3a3,3 ## 递归法生成全排列 ```julia using CSV, DataFrames, Tables function OE(sigma) # 判断奇偶置换 n=length(sigma); out=1 for i=1:n for j=1:n-1 if sigma[j] > sigma[j+1] out=-out; sigma[j],sigma[j+1]=sigma[j+1], sigma[j] end end end return(out) end function remove_last(seq) # 删除序列最后一个元素 lth=length(seq) z=copy(seq[1:lth-1]) return(z) end function rankfull(seq,n,cpl) # 递归全排列生成器 lth=length(seq) if lth==1 m=[cpl; seq] open("rankfull_sol.txt","a") do io for i=1:n s=m[i]; write(io, "$s,") end write(io,"\n"); end else for i=1:lth s=seq[i]; idx=0; list=zeros(Int,lth-1) for j=1:lth if !(seq[j]==s) idx=idx+1; list[idx]=seq[j] end end cpl=[cpl; s]; rankfull(list,n,cpl) cpl=remove_last(cpl) end end end function det_defn(A) # 定义法求行列式 lth=size(A,1) seq=1:lth global ranksol=[seq]; lth=length(seq); cpl=[]; iters=factorial(lth) try rankfull(seq,lth,cpl) catch nothing end io=open("rankfull_sol.txt","r") data=read(io,String) file = CSV.File(IOBuffer(data), header=false) CSV.write("fullrank.csv", file) close(io) sigma=zeros(Int64,iters,lth); for i=1:factorial(lth) for j=1:lth sigma[i,j]=file[i][j] end end DETs=0*A[1,1] for i=1:iters Prs=1 for j=1:lth Prs=Prs*M[j,sigma[i,j]] end DETs=DETs+ OE(sigma[i,:])*Prs end return(DETs) end M=[4//1 3 2 1; 3 2 1 4; 2 1 4 3; 1 4 3 2] a= det_defn(M) println("\n") println("defn=",a) ``` -160//1 ## 邻近对换算法生成全排列 ```julia function ranking(lth) # 邻近对换全排列生成器 prd=1; arr=zeros(Int64,lth); for i=1:lth arr[i]=i end for i=1:lth prd=prd*i end jx=lth ; dr=-1; s=0; for j=1:prd if dr<0 if jx>1 arr[jx],arr[jx+dr] = arr[jx+dr],arr[jx] jx=jx+dr else arr[lth],arr[lth-1] = arr[lth-1],arr[lth] dr=-dr end else if jx

相关推荐
郝学胜-神的一滴1 小时前
能表示旋转的矩阵是一个流形吗?
线性代数·矩阵·图形渲染
ykjhr_3d1 小时前
华锐矩阵世界平台与海外客户洽谈合作
线性代数·矩阵
盛寒1 天前
二次型 线性代数
线性代数
dllmayday3 天前
3D空间中的变换矩阵
线性代数·3d·矩阵
是数学系的小孩儿3 天前
论文:M矩阵
线性代数·矩阵
xueyongfu4 天前
PTX指令集基础以及warp级矩阵乘累加指令介绍
人工智能·线性代数·算法·矩阵
monicaaaaan4 天前
搜索二维矩阵Ⅱ C++
c++·线性代数·矩阵
go54631584654 天前
离散扩散模型在数独问题上的复现与应用
线性代数·算法·yolo·生成对抗网络·矩阵
Smilecoc4 天前
秩为1的矩阵的特征和性质
线性代数·机器学习·矩阵
BOB_BOB_BOB_4 天前
【ee类保研面试】数学类---线性代数
线性代数·面试·职场和发展·保研