首页 > 编程语言 >3.27 算法补全:行列式(扩展)

3.27 算法补全:行列式(扩展)

时间:2024-03-27 19:23:10浏览次数:20  
标签:海森堡 补全 多项式 det 行列式 3.27 DP lambda

行列式 Ex

海森堡矩阵行列式

上海森堡阵是满足其次对角线下的值都为 \(0\),即只有 \(i\le j+1\) 处的 \(a_{i,j}\) 的矩阵。

上海森堡阵的行列式可以 \(O(n^2)\) DP 求解,因为在这个矩阵中选择一个不含 \(0\) 的排列,一定满足会形成如下形式:\(x,1,2,\dots,x-1\mid y,x+1,\dots,y-1\mid\dots\),即若干个区间的环拼接起来。于是我们直接 DP,\(f_i\) 表示 \([1,i]\) 构成若干个环的方案权值和,那么 \(f_i=\sum_{j}(-1)^{j-i}f_{j}g_{j+1,i}\),其中 \(g_{l,r}=a_{l,r}\prod_{i=l+1}^{r} a_{i,i-1}\).

特征多项式

对于方阵 \(A\),定义其特征多项式 \(p_A(\lambda)=\det(\lambda I_n-A)\)。

对于方阵 \(A,B\),若存在初等可逆矩阵 \(P\) 满足 \(B=PAP^{-1}\),那么称 \(A,B\) 互为相似矩阵。

相似矩阵特征多项式相同。

证明:

\[p_B(\lambda)=\det(\lambda I-PAP^{-1})=\det(\lambda PIP^{-1}-PAP^{-1})=\det(P(\lambda I-A)P^{-1})\\=\det(P)\det(\lambda I-A)\det(P^{-1})=p_A(\lambda) \]

任意一个方阵,都可以找到一个海森堡矩阵与其相似。

消元方法:考虑我们在消元(构造 \(P\))的同时,算上 \(P^{-1}\) 带来的贡献。我们进行消元的时候会进行行变换:\(R_i:=R_i+kR_{j}\),那么其对应右乘 \(P^{-1}\) 带来的变换就是列变换 \(C_j:=C_j-kC_i\);类似的,交换 \(R_i,R_j\) 的操作,对应右乘 \(P^{-1}\) 带来的变换就是交换 \(C_i,C_j\)。我们若怀着消成海森堡阵的目标,容易发现列变换不会造成什么影响。

于是普通方阵求特征多项式只需要先变消成一个上海森堡阵,然后再 DP 出其特征多项式即可。

对于上海森堡阵,就很好做了,直接对上述 DP 进行一个修改,得到 \(p_i=\lambda p_{i-1}-\sum_j p_jg_{j+1,i}\)。

https://judge.yosupo.jp/submission/199210

\(A+Bz\) 行列式

首先我们可以用求特征多项式一样的方法求出 \(\det(A+I_nz)\)(代 \(A_{i,j}=-A_{i,j}\) 就是特征多项式)。

于是对于 \(A+Bz\),考虑把 \(B\) 消元成 \(I_n\)。但是有可能 \(B\) 不满秩,那么就无法消成 \(I_n\)。这种情况下,考虑一个操作:将这一行乘上 \(z\),即把这一行从 \(R_{A}+R_{B}z\) 变成 \(R_Az+R_Bz^2\),由于 \(R_B\) 处满足该行该列为 \(0\) 所以不产生贡献,所以就变成了 \(R_Az\),然后再进行消元。然后我们不断这样做,直到 \(B_{i,i}\neq 0\),或者乘的 \(z\) 的个数 \(>n\)。

https://qoj.ac/submission/368908

范德蒙德行列式

考虑方阵 \(a_{i,j}=x_i^j\),\(0\le i,j<n\),那么其行列式为 \(\prod_{0\le i<j<n} (x_j-x_i)\)。

可以归纳得证。

神秘题 1

(忘了出处的模拟赛)给定常数 \(c\),矩阵 \(a\) 满足对于 \(i=j\) 有 \(a_{i,j}=1\),\(i\neq j\) 时 \(a_{i,j}=c\times [i\not \mid j]\),求其行列式。\(n\le 10^{11}\)。

注意到一个下三角全为 \(c\),所以考虑直接差分,\(a_{i,j}=a_{i,j}-a_{i-1,j}\),得到一个上海森堡阵。然后我们直接 DP,得到 \(f_i=\sum_{j<i}f_{j-1}(c-1)^{i-j}(-1)^{i-j}ca_{j,i}+f_{i-1}(1-c)\),令 \(h_i=f_i(c-1)^{-i}(-1)^i\),那么有 \(h_i=\sum_{j<i}ca_{j,i}h_{j-1}+h_{i-1}\)。令 \(g_{i}=h_i-h_{i-1}\),那么 \(g_i=\sum_{j<i}ca_{j,i}h_{j-1}\),带入题目中的矩阵得到 \(g_i=c\sum_{j<i}([j\not\mid i]-[j-1\not\mid i])h_{j-1}=c(h_{i-2}-\sum_{j<i-1}[j\not\mid i]g_j)=c\sum_{j\mid i,j<i-1}g_j\),可以发现 \(g\) 是一个积性函数,并且是 \([0,c,c,\dots]\) 的迪利克雷逆,所以直接杜教筛即可。

神秘题 2

目前隐藏

标签:海森堡,补全,多项式,det,行列式,3.27,DP,lambda
From: https://www.cnblogs.com/TetrisCandy/p/18100030

相关文章

  • 3.27
    今天实现个人作业APP的全部功能,我在实现教师端模糊匹配时遇到了输入文本框缺获得的值为空串,当时一度以为是id的原因,以下是我源代码privatevoidselectBtn(){StringkeyWord=key.getText().toString().trim();//添加trim()去除两端空白select.setO......
  • 2024.03.27【海报设计】9招,提升设计中的空间感!
    空间感是指艺术形象通过一定手法引起的类似现实空间的审美感受。包括作品直接表现的空间和作品具体形象之外的使人想象到的空间。这种空间感,一定程度上决定着版面的视觉效果与美感。巧妙的利用空间,可以集中观众的注意力,丰富的层次感使作品更具观赏性,同时又可以让作品主次分明,更有......
  • 3.27每日总结
    某公司欲建设一个房屋租赁服务系统,统一管理房主和租赁者的信息,提供快捷的租赁服务。本系统的主要功能描述如下:1.登记房主信息。记录房主的姓名、住址、身份证号和联系电话等信息,并写入房主信息文件。2.登记房屋信息。记录房屋的地址、房屋类型(如平房、带阳台的楼房、独立式住......
  • QlineEdit输入字符奇怪自动补全上一次字符而且交叉影响
    做一个名称校验的函数,不能输入特殊字符;SlotTextChanged函数作用是判断是否包含特殊字符,有的话,弹出提示,删除特殊字符之后,在设置回去;发现输入/之后,弹出模态提示,自动删除后,在右侧车牌号码输入框中输入任意字符a会自动变成/a;是模态对话框打断了变化消息,当在右侧输入字符时,触发了消息......
  • 高等代数笔记:行列式按k行展开
    目录k阶子式及其余子式按k行(列)展开k阶子式及其余子式定义1n阶行列式|A|中任意取定k行、k列(1≤k<n),位于这些行和列的交叉处的\(k^2\)个元素按原来的排法组成的k阶行列式,称为|A|的一个k阶子式.选取|A|的第\(i_1,i_2,...,i_k\)行\((i_1<i_2<...<i_k)\),第\(j_1,j_2,...,j_k\)......
  • 基于C语言实现整数行列式
    在本文章内,将会实现行列式的建立、销毁、打印、计算四个操作。鉴于笔者技术有限,此行列式只针对整数int型,请读者自行扩充~_~。1.行列式的建立与销毁我们首先建立行列式的数据类型,由于行列式规模的不确定,采用动态分配方法。typedefstruct{ intn; int*p;}determinant;......
  • 用A*算法设计搜索策略,补全关于下列走迷宫问题的程序
    补全下列关于走迷宫的程序:classNode():#TODO:完成结点类的定义,结点中要包含状态、父结点、算符等必要成员。根据算法需求,还可能包含该结点的路径代价、启发函数值、估计代价等信息def__init__(self,state,parent,action,stepCost,hCost):self.st......
  • 少样本知识图谱补全技术研究概述(持续更新,现在读文献还太少,等我读文献的)
    一、少样本知识图谱补全概述和相关内容1、知识图谱概述1.1知识图谱定义        知识图谱(knowledgegraph,KG)用结构化的形式描述客观世界中概念、实体及其关系,它将互联网的信息表达成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力。......
  • mysql查询几天之前,或某个时间段之间的每天记录数量,不存在补全0
    直接看SQL(非常简单,通俗易懂)biz_requirement_order:业务表名create_time:业务表时间字段,依据这个字段统计数量num:数量返回值别名,可以随意改t表:查询所有符合条件的日期a表:业务表中根据日期分组,查询每天的记录数量最后使用左连接查询,将两个集合合并返回最终结果查询几天之前......
  • django分页后过滤数据,要进行补全数据的方法
    项目开发中遇到一个问题:当分页后还要进行数据处理,可能导致原本分页返回的数据不足,那么需要从另外一页进行数据补全(也要数据进行过滤)。自己写了一个小的组件:defdata_paging(queryset,page,limit,deal_func=None,*args,**kwargs):#创建分页器对象paginator=......