首页 > 其他分享 >关于-FWT-的一些扩展

关于-FWT-的一些扩展

时间:2023-07-13 21:35:01浏览次数:36  
标签:limits 卷积 扩展 sum 矩阵 关于 FWT omega

FWT 异或卷积扩展

异或卷积主要解决以下问题:

给定长度为 \(2^n\) 的序列 \(A,B\),求序列 \(C=A*B\),其中卷积的定义为:

\[C_k=\sum\limits_{i\oplus j} A_iB_j \]

我们实际上是渴望用类似 \(FFT\) 的做法,现将上面的多项式通过变换改成点值,然后就可以用 \(O(n)\) 的时间内计算乘法。即我们需要一个变换 \(FWT\) 满足:

\[FWT(A)*FWT(B)=FWT(C) \]

我们把上面的式子称为异或卷积的 定义式

同时,我们规定 \(FWT\) 应该是线性变换,也就是说,我们考虑构造一个矩阵 \(g\),满足:

\[FWT(A)_i=\sum\limits_{j=0}^{2^n-1} g_{i,j}A_j \]

如何构造?我们把上面的式子代入我们的定义式,可以得到:

\[\begin{aligned} \sum\limits_{i=0}^{2^n-1}\sum\limits_{j=0}^{2^n-1}g_{k,i}g_{k,j}A_iB_j&= \sum\limits_{i=0}^{2^n-1}g_{k,i}C_i\\ &=\sum\limits_{i=0}^{2^n-1}g_{k,i}\sum\limits_{j=0}^{2^n-1}A_{i\oplus j}B_j\\&=\sum\limits_{i=0}^{2^n-1}\sum\limits_{j=0}^{2^n-1}g_{k,i\oplus j}A_iB_j\\ \end{aligned} \]

对比左右式子,我们可以只需要让 \(g\) 满足 \(g_{k,i}g_{k,j}=g_{k,i\oplus j}\) 即可。

同时考虑到异或对于二进制位下的每一位都是独立的,所以我们只需要考虑同一位的 \(4\) 种情况。

因为我们还要做逆变换,所以需要保证这个矩阵一定是满秩的,也就是说其有逆矩阵。那么我们可以轻易构造出一个矩阵:

\[\begin{pmatrix} 1&1\\ 1&-1 \end{pmatrix} \]

而这个矩阵的逆为:

\[\begin{pmatrix} \frac{1}{2}&\frac{1}{2}\\ \frac{1}{2}&-\frac{1}{2} \end{pmatrix} \]

而我们在具体实现中可以从小到大对于每个二进制位做一个这样的变换。

通过以上两个矩阵我们可以构造出各自的 \(g\) 矩阵出来,以第一个矩阵为例子,我们设这个矩阵为 \(A\),那么 \(4\times 4\) 的矩阵可以构造为:

\[\begin{pmatrix} A&A\\ A&-A \end{pmatrix} \]

容易发现这仍然是满足性质的。(任取第二列同一行的两个数就可以简单证明)。
并且无论扩展多上次,用第一个矩阵扩展出来的,它的逆矩阵一定是用第二个矩阵扩展出来的,这个可以用归纳简单证明。

  • 定理 \(1\):\(FWT\) 的每一项满足:

\[FWT(A)_i=\sum\limits_{j=0}^{2^n-1}(-1)^{|i\&j|}A_j \]

  • 其中 \(|a|\) 表示 \(a\) 的二进制表示下 \(1\) 的个数。

  • 证明:根据我们构造出来的 \(g\) 矩阵可以归纳证明只有当 \(|i\&j|\) 为奇数时才是 \(-1\)。所以上面的式子显然成立。

注意我们构造的 \(FWT\) 是线性变换,所以我们有 \(FWT(A+B)=FWT(A)+FWT(B)\)。

FWT 或卷积并卷积的扩展

首先是通项公式:

\[\begin{aligned} FWT_{or}(A)_i=\sum\limits_{j|i=i}A_j\\ FWT_{and}(A)_i=\sum\limits_{j\&i=i} A_j \end{aligned} \]

所以:

  • 做或卷积相当于做高维前缀和,而做或卷积的逆相当于做高维前缀差分。
  • 做并卷积相当于做高维后缀和,而做并卷积的逆相当于做高维后缀差分。

证明很好证明,只需要从或卷积和并卷积的定义入手即可。

同时,这也证明了 FWT 和 FMT 本质上来说是一个东西。而且 FWT 能做的更多。

K 进制 FWT

所谓 \(K\) 进制 \(FWT\) 就是把 \(\oplus\) 换成 \(\bmod K\) 下的加法,也就是 \(K\) 进制不进位加法。我们下面用 \(\oplus_k\) 来替代。

所以相当于我们是要求解:

\[c_k=\sum\limits_{i\oplus_k j}a_ib_j \]

我们同样利用 \(g_{i,j}\) 来进行变换,通过进行和上面类似的推导,我们可以得到 \(g\) 需要满足 \(g_{x,i}g_{x,j}=g_{x,i\oplus_k j}\),通过人类智慧的构造,我们可以构造出一下矩阵:

\[f= \begin{pmatrix} 1&1&1&1&\cdots&1\\ 1&\omega_{k}^1&\omega_k^2&\omega_k^3&\cdots&\omega_k^{k-1}\\ 1&\omega_{k}^{2}&\omega_k^{4}&\omega_k^6&\cdots&\omega_k^{(k-1)2}\\ \vdots&\vdots&\vdots&\vdots&\ddots&\vdots\\ 1&\omega_k^{k-1}&\omega_k^{2(k-1)}&\omega_k^{3(k-1)}&\cdots&\omega_{k}^{(k-1)(k-1)} \end{pmatrix} \]

而这个矩阵的逆矩阵应该为:

\[f^{-1}=\frac{1}{k} \begin{pmatrix} 1&1&1&1&\cdots&1\\ 1&\omega_{k}^{-1}&\omega_k^{-2}&\omega_k^{-3}&\cdots&\omega_k^{-(k-1)}\\ 1&\omega_{k}^{-2}&\omega_k^{-4}&\omega_k^{-6}&\cdots&\omega_k^{-(k-1)2}\\ \vdots&\vdots&\vdots&\vdots&\ddots&\vdots\\ 1&\omega_k^{-(k-1)}&\omega_k^{-2(k-1)}&\omega_k^{-3(k-1)}&\cdots&\omega_{k}^{-(k-1)(k-1)} \end{pmatrix} \]

证明只需要把两个矩阵相乘即可,这样时间复杂度应该为:

\(T(n)=kT(\frac{n}{k})+nk=O(nk\log_kn)\)

标签:limits,卷积,扩展,sum,矩阵,关于,FWT,omega
From: https://www.cnblogs.com/HeNuclearReactor/p/17552211.html

相关文章

  • 《诗经》中关于培养美德的诗句
    "克己复礼,拜天之明"(《周颂·维天之命》)解释:这句诗强调了自律和恪守礼仪的重要性。只有通过克制自己的欲望,恪守适当的行为准则,才能与天地之明(道德准则)相适应。"瞻彼淇澳,言采其蕨"(《国风·周南·关雎》)解释:这句诗强调了对他人美德的欣赏和学习。诗中的"淇澳"是指淇水的岸边,"蕨"......
  • ARC133F FWT 做法
    看见网上题解都是“二维生成函数”,就来传一下这个做法(问题可以转化为:\(n\)枚硬币,每次随机翻一枚,求最后正面朝上硬币个数的期望。把这个过程看作XOR卷积,并且需要卷积的两个数组有特性:在popcount相同的位置值相同。这样只要对这种特殊的数组能做fwt就做完了。于是现在要......
  • destoon列表性能优化,关于IN()与FIND_IN_SET
    destoon数据达到一定之后列表打开速度就很慢,于是为了解决这个问题,进行以下办法处理。找到/include/tag.func.php文件,找到这段代码: 原因:区别:1、in后面只能跟常量,find_in_set()函数可以使用常量或字段。2、in是完全匹配,find_in_set()函数是精确匹配,字段值以英文”,”分隔。......
  • 关于本地开发对接前端的解决思路
    场景1:假设局域网启动了一个禅道(管理项目的一个后台系统),ip为10.10.119.66:8081,我当然可以直接通过10.10.119.66:8081来访问到禅道了。但是我还想让别人都用个域名www.lidisam.cn:8081来访问禅道。解决步骤:1打开 C:\Windows\System32\drivers\etc\hosts,并编辑添加一行如下:......
  • 关于问题定位的方法定律
    关于问题定位的方法定律定律1最难定位的问题要么是最疑难的问题,要么是最低级的问题,这两种问题都有一个共同特征,就是让你意想不到。举一个例子,一次代码编译不过,报函数没有定义,开始怀疑是类没有“;”结束符,然后怀疑有没有匹配的“{”,折腾了好久,最后才发现是开头的“#ifndef”定义......
  • 关于学习的方法定律
    关于学习的方法定律定律1人们往往善于从事情的内容学习,而不善于从事情本身学习。公司的PLDP/PMDP培训效果很好,参加的人学到了如何做一个合格的PL/PM,却没有学会如何做好培训。从事情本身学习,是向别人学习的关键。定律2人们往往善于从失败中学习,而不善于从成功中学习。一件事......
  • 关于竞赛和强基计划
    二、关于竞赛和强基计划。国子学孩子去上的这个国子学可是个很牛的培训机构,不仅省内的数学物理竞赛生都来这培训,就连周边省市甚至深圳广州北京都有不少学生过来上课,培训的教练也很牛,有培养出150多个国家集训队队员的惊人战绩,就连我们学校的竞赛培训老师也跟着一起学习,那讲的题目......
  • 关于ChatGPT与机器伦理学
    关于ChatGPT与机器伦理学机器人这一概念,最初不是出自计算机科学家或工程师之手,而是来自于捷克的戏剧家卡雷尔·恰佩克(KarlCapek)在1920年编排的一出名为“罗森的全能机器人”的舞台剧中。直到了1960年,随着美国的约瑟夫·恩格伯格(JosephEngelberger)创办了人类历史上的第一......
  • 关于 Angular 应用的多语言设置问题
    考虑下面这段代码:importlocaleDefrom'@angular/common/locales/de';importlocaleJafrom'@angular/common/locales/ja';importlocaleZhfrom'@angular/common/locales/zh';这段代码从@angular/common/locales包中导入了三个不同的语言环境(locale):德语(local......
  • Java关于方法的一些总结
    方法的一些总结1、方法的定义方法包含一个方法头和一个方法体。下面是一个方法的所有部分:修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有......