当前位置: 首页 > news >正文

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

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(nn!)

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

排列逆序数奇偶性
1 , 2 1,2 1,20
2 , 1 2,1 2,11

[ 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,30
1 , 3 , 2 1,3,2 1,3,21
2 , 1 , 3 2,1,3 2,1,31
2 , 3 , 1 2,3,1 2,3,12
3 , 1 , 2 3,1,2 3,1,22
3 , 2 , 1 3,2,1 3,2,13

[ 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

递归法生成全排列

using CSV, DataFrames, Tables
function OE(sigma)   # 判断奇偶置换n=length(sigma); out=1for i=1:nfor j=1:n-1if sigma[j] > sigma[j+1]out=-out;  sigma[j],sigma[j+1]=sigma[j+1], sigma[j]endendendreturn(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==1m=[cpl; seq]open("rankfull_sol.txt","a") do iofor i=1:ns=m[i];  write(io, "$s,")endwrite(io,"\n");endelsefor i=1:lths=seq[i];    idx=0;list=zeros(Int,lth-1)for j=1:lthif !(seq[j]==s)idx=idx+1;  list[idx]=seq[j]endendcpl=[cpl; s];rankfull(list,n,cpl)cpl=remove_last(cpl)endend
end
function det_defn(A)  # 定义法求行列式lth=size(A,1)seq=1:lthglobal ranksol=[seq];lth=length(seq); cpl=[]; iters=factorial(lth)tryrankfull(seq,lth,cpl)catch nothingendio=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:lthsigma[i,j]=file[i][j]endendDETs=0*A[1,1]for i=1:itersPrs=1for j=1:lthPrs=Prs*M[j,sigma[i,j]]endDETs=DETs+ OE(sigma[i,:])*Prsendreturn(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

邻近对换算法生成全排列

function ranking(lth)  # 邻近对换全排列生成器prd=1;  arr=zeros(Int64,lth);for i=1:lth arr[i]=i endfor i=1:lth   prd=prd*i endjx=lth  ; dr=-1;   s=0;for j=1:prdif dr<0if jx>1arr[jx],arr[jx+dr] =   arr[jx+dr],arr[jx]jx=jx+drelsearr[lth],arr[lth-1] =   arr[lth-1],arr[lth]dr=-drendelseif jx<ltharr[jx],arr[jx+dr] =   arr[jx+dr],arr[jx];jx=jx+drelsearr[1],arr[2] =   arr[2],arr[1];   dr=-drendendopen("ranking_sol.txt","a") do iofor i=1:lths=arr[i];  write(io, "$s,")endwrite(io,"\n");end    end
end
function det_defn2(A)  # 定义法求行列式lth=size(A,1)seq=1:lthglobal ranksol=[seq];lth=length(seq); cpl=[]; iters=factorial(lth)try rm("ranking_sol.txt")catchnothingendranking(lth)io=open("ranking_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:lthsigma[i,j]=file[i][j]endendDETs=0*A[1,1]for i=1:itersPrs=1for j=1:lthPrs=Prs*M[j,sigma[i,j]]endDETs=DETs+ OE(sigma[i,:])*Prsendreturn(DETs)
end    
M=[4//1 3 2 ;3 2 1 ;2 1 4]
a= det_defn2(M)

-160//1

http://www.lryc.cn/news/521580.html

相关文章:

  • Android SystemUI——StatusBar视图创建(六)
  • Picocli 命令行框架
  • spring-cloud-starter-gateway 使用中 KafkaAppender的问题
  • 【全套】基于分类算法的学业警示预测信息管理系统
  • Elasticsearch Python 客户端是否与自由线程 Python 兼容?
  • 基于大语言模型的组合优化
  • #CSS混合模式:解决渐变背景下的文字可见性问题
  • Vue2+OpenLayers给标点Feature添加信息窗体(提供Gitee源码)
  • 实战threeJS数字孪生开源 数字工厂
  • 【Python基础篇】——第3篇:从入门到精通:掌握Python数据类型与数据结构
  • 算法3(力扣83)-删除链表中的重复元素
  • HarmonyOS 鸿蒙 ArkTs(5.0.1 13)实现Scroll下拉到顶刷新/上拉触底加载,Scroll滚动到顶部
  • .NET8.0多线程编码结合异步编码示例
  • SpringBoot项目中解决CORS跨域资源共享问题
  • Android string.xml中特殊字符转义
  • 解析传统Workflow、AI Workflow与AI Agent概念,并通过Coze案例探讨利用AI工作流构建应用的实践流程
  • 光谱相机的光谱分辨率可以达到多少?
  • android Recyclerview viewholder统一封装
  • Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)
  • 51单片机入门基础
  • 老centos7 升级docker.io为docker-ce 脚本
  • 数仓建模(三)建模三步走:需求分析、模型设计与数据加载
  • PHP xml 常用函数整理
  • 数据结构(Java版)第八期:LinkedList与链表(三)
  • 数据结构学习记录-数据结构概念
  • 【Linux】11.Linux基础开发工具使用(4)
  • 数据结构与算法之栈: LeetCode 1047. 删除字符串中的所有相邻重复项 (Ts版)
  • C++ 在线编译软件介绍、杭电OJ、北大OJ、力扣OJ
  • Java学习笔记(二十三)
  • 《AI赋能鸿蒙Next,开启智能关卡设计新时代》