数据变换、反演、对偶、共轭

目录

一,id转换

1,id数组

2,基于id数组的重排双射

3,逆id数组

二,离散化

1,离散化

2,单射和双射

3,模板代码

4,应用实例

5,小结

三,代数反演

1,一维前缀差分

2,二维前缀差分

3,阿贝尔变换

四,组合反演

1,计数转换

2,平摊

3,组合数求和反演

五,几何反演

1,几何反演

2,圆和直线的反演

六,数论反演

七,谓词公式的反演和对偶

八,渗透网络的对偶

九,共轭

1,共轭的类型

2,对偶和共轭的关系

3,共轭函数


一,id转换

1,id数组

如果一个数组有n个数,且其中包含了从0到n-1的所有数,则称之为id数组

2,基于id数组的重排双射

每一个id数组,都对应一种双射,把一个泛型数组进行重排。

如{3 0 1 2},就是一个映射,{a b c d}->{d a b c},可以理解为依次从一个泛型数组中按照id指引的位置取元素。

对于{8 5 6 7},它需要基于{1 2 3 0}这个id数组进行重排,才能完成排序。

而对于{1 2 3 0},它需要基于{3 0 1 2}这个id数组进行重排,才能完成排序。

ACM模板里面的VectorOpt::sortId函数,输入{8 5 6 7},输出{1 2 3 0},这个函数的功能就是对于每个泛型数组,求出它需要基于哪个id数组进行重排,才能完成排序。

因为比较函数中采用了id作为第二顺序关键字,所以它一定是稳定排序。

3,逆id数组

基于id数组的重排是双射,所以自然有逆映射,而逆映射一定是基于某个数组的重排,我们把这个数组,称为逆id数组。

神奇的是,任意一个id数组,基于它的逆进行id重排,就能完成排序。

也就是说,id数组S 和 sortId(S) 互为逆,上面的{1 2 3 0}和{3 0 1 2}就是一个例子。

一个id数组的逆,有可能是它自身,

如{1 4 3 2}需要基于{0 3 2 1}进行重排,才能完成排序,而{0 3 2 1}需要基于自身进行重排,才能完成排序,而{1 2 3 4}基于{0 3 2 1}进行重排。就会得到{1 4 3 2}

二,离散化

1,离散化

离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。

通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如:

(1)原数据:1,999,100000,15;处理后:1,3,4,2;

(2)原数据:{100,200},{20,50000},{1,400};处理后:{3,4},{2,6},{1,5};

PS:本文默认全部采用升序

2,单射和双射

离散化其实是个映射,有2种表达方式。

(1)只关心数据的大小顺序,采用单射

离散化:{1,999,100000,15} -> {1,3,4,2}

(2)既关心数据的大小顺序,也关心数值本身,采用双射

离散化:{1,999,100000,15} -> {{1,3,4,2},{1,15,999,100000}}

逆离散化: {{1,3,4,2},{1,15,999,100000}} ->{1,999,100000,15}

3,模板代码

ACM模板里面的VectorOpt::sortId2函数,输入{8 5 6 7},输出{3 0 1 2},这就是离散化,我的模板是从0开始编号,用起来更方便。

离散化得到的,一定是一个id数组。

而sortId2的实现方式,就是sortId(sortId()),因为,排序后数组,基于原数组离散化得到的id数组进行重排,得到的就是原数组

4,应用实例

力扣 255. 验证前序遍历序列二叉搜索树

离散化+线段树

解空间的离散化:持久化的代价是空间复杂度太高,为了均衡时间和空间,可以对持久空间做离散化。

1724. 检查边长度限制的路径是否存在 II

5,小结

本章的变换可以认为是狭义离散化,而广义离散化包括id转换,即sortId和sortId2都可以认为是离散化。

他们之间的关系,可以称之为重排反演。

三,代数反演

前缀和运算,和差分运算,是一种完全互逆操作,可以称之为反演运算。

1,一维前缀差分

前缀和 {a}->{s}

s1=a1, s2=a1+a2, s3=a1+a2+a3......

差分 {s}->{a}

a1=s1, a2=s2-s1, a3=s3-s2......

除了初始项之外,每一个a都可以用2个s表示出来。

从集合映射的角度看,前缀和和差分是互为逆运算。

2,二维前缀差分

前缀和

 s_{1,1}=a_{1,1},s_{1,2}=a_{1,1}+a_{1,2},...... \\ s_{2,1}=a_{1,1}+a_{2,1},s_{2,2}=a_{1,1}+a_{2,1}+a_{1,2}+a_{2,2},...... \\......

差分

a_{1,1}=s_{1,1},a_{1,2}=s_{1,2}-s_{1,1},...... \\ a_{2,1}=s_{2,1}-s_{1,1},a_{2,2}=s_{2,2}-s_{1,2}-s_{2,1}+s_{1,1},...... \\......

除了初始项之外,每一个a都可以用4个s表示出来。

如果是n维前缀差分,则每一个a都可以用2^n个s表示出来。

3,阿贝尔变换

14 阿贝尔变换

四,组合反演

1,计数转换

{1,2,1,2,1,3,4,5} -> {<1,3>,<2,2>,<3,1>,<4,1>,<5,1>}

如果一个数据集的数值范围很大,但数据数量不多,那么计数转换其实也是一种广义的离散化。

2,平摊

{<1,3>,<2,2>,<3,1>,<4,1>,<5,1>}->{1,1,1,2,2,3,4,5}

很明显,计数转换和平摊并不是互逆的。

3,组合数求和反演

5 组合数求和反演

五,几何反演

1,几何反演

设在平面内给定一点O和常数k(k不等于零),对于平面内任意一点A,确定A′,使A′为直线OA上一点,并且有向线段OA与OA′满足OA·OA′=k,我们称这种变换是以O为反演中心,以k为反演幂的反演变换,简称反演。

当k>0时,有向线段OA与OA′同向,A与A′在反演极同侧,这种反演变换称为正幂反演,亦叫双曲线式反演变换。
当k<0时,有向线段OA与OA′反向,A与A′在反演极异侧,这种反演变换称为负幂反演,亦叫椭圆式反演变换。

2,圆和直线的反演

六,数论反演

莫比乌斯反演

七,谓词公式的反演和对偶

离散数学

八,渗透网络的对偶

渗透问题

九,共轭

本章内容部分来自网友博客以及网友转载的原文凸优化问题、示性函数、共轭函数、对偶范数

1,共轭的类型

目前数学里面定义的共轭的类型包括但不限于以下内容:

  1. 共轭复数;
  2. 共轭根式;
  3. 共轭元素(场论);
  4. 谐波共轭;
  5. 共轭转置;
  6. 共轭梯度法;
  7. 共轭先验/分布;
  8. 共轭线图(图论);
  9. 共轭闭合(群论);
  10. 等角共轭;
  11. 共轭点;

2,对偶和共轭的关系

对偶dual一定共轭conjugate,反之未必。
(集合中的2个元素)共轭conjugate,是说:一个元素a可以以1种确定的方式变成另外一个元素b。conjugate的本意,不是“一对”,而是“让2个东西能联结到一起”:
在整数加群中,“2”和“-2”关于零元共轭;在有理数域中,“2”和“1/2”关于幺元共轭;在复平面中,“1+i”和“1-i”关于实轴共轭;在向量空间中,向量(1,1)和向量(-2,2)关于纯数0共轭;在测度空间中,Lp空间和Lq关于代数运算(p + q = pq)共轭;……
(集合中的2个元素)对偶dual,是说:一个元素a可以以2种确定的方式变成另外一个元素b。dual的本意,也不是“一对”,而是“某件事的二重性、二元性、二象性、二择性”:
在整数环中,“2”可以共轭到“-2”,也可以通过乘以“-1”变成“-2”;在复平面中,“1+i”可以共轭到“1-i”,也可以旋转到“1-i”;在向量空间中,向量a可以经由某个双线性函数共轭到向量b,也可以经由特征矩阵变换到向量b;在满足Poincaré对偶的流形中,某个维度上的单形链既存在于同调群中,也存在于对偶的上同调群中;……
dual比conjugate厉害,是因为前者必须会玩2种游戏,而后者只要会1种游戏就行。即:后者是群group就行,而前者必须至少是环ring。
在很多场合(如:线性代数、赋范空间)不必区分dual和conjugate(二者是一回事)是因为这些场合天然自带“环ring”甚至“域field”。但在更一般的、只存在1种游戏的场合(如:测度空间、流形、复形),如果不另添加1种游戏进来,那就顶多只能玩conjugation了(duality没戏)。

3,共轭函数

共轭函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值