集合幂级数学习笔记

news/2025/2/24 11:56:21/文章来源:https://www.cnblogs.com/lupengheyyds/p/18733711

集合幂级数学习笔记

一、集合幂级数基础

类比形式幂级数将序列对应为一个多项式,我们可以用类似的方法,把一个集合及其所有子集变为一个多项式的形式,对于集合 \(U\) 标准形式如下:

\[F(x)=\sum_{S\subseteq U}f_{S}x^S \]

这里 \(x^S\) 只是一个占位符,就像形式幂级数的 \(x^i\) 一样。

加减法

集合幂级数的加减法很简单,就是对应位置相加,即:

\[f\pm g=\sum_{S\subseteq U}(f_S\pm g_S)x^S \]

乘法

类比一般多项式乘法,有:

\[h=f\cdot g=(\sum_{S\subseteq U}f_{S}x^S)(\sum_{S\subseteq U}g_{S}x^S)=\sum_{L\subseteq U}\sum_{R\subseteq U}f_{L}g_{R}x^{L* R} \]

其中 \(*\) 是集合间的一种二元运算,并使得 \(*\) 有交换律,结合律,以及单位元 \(\emptyset\)

常见的 \(*\)集合并,集合交,集合对称差,子集卷积

二、分治解法

集合并卷积

\(*\)\(\cup\) ,则有:

\[h_S=\sum_{L\subseteq U}\sum_{R\subseteq U}[L\cup R=S]f_Lg_R \]

暴力进行复杂度 \(\mathcal O(4^n)\)

集合对称差卷积

定义集合上的二元运算 $\oplus $ 表示 \(A\oplus B=\{x|(x\in A)\oplus (x\in B)\}\) 后者的 \(\oplus\) 表示异或运算。

则有:

\[h_S=\sum_{L\subseteq U}\sum_{R\subseteq U}[L\oplus R=S]f_Lg_R \]

集合交卷积

类似,咕了。

三、快速沃尔什变换/快速莫比乌斯变换

算了我觉得 Alex_Wei 老师写太好了,我太懒了所以就不写了直接写应用吧。

四、性质

  • \(\prod f=I(\prod T(f))\) ,这是因为集合卷积不会改变集合大小,而多项式乘法会让下标变大所以每次 FFT 乘法后要马上 IFFT 回来。
  • FWT 有线性性,即 \(T(\sum_ic_if_i)=\sum_ic_iT(f_i)\)

五、应用

下文中 \(T()\) 表示快速沃尔什变换,\(I()\) 表示快速沃尔什逆变换。\(T^i,\prod T,\prod \hat f\) 表示对变换后的结果的每一位的值普通乘法。\(f^i,\prod f\) 表示卷积。

AT_abc212_h [ABC212H] Nim Counting - 洛谷

基础应用。

对每一堆石子生成函数有:\(f=\sum_{S}[S\in\{A\}]x^S\)

答案为:\(\sum_{i=1}^nf^i\) 中非 \(x^{\emptyset}\) 项之外的系数之和。

那么有 \(\sum_{i=1}^nf^i=\sum_{i=1}^nI(T^i(f))=I(\sum_{i=1}^nT^i(f))\)

其中第二个等号成立是因为 FWT 有线性性。于是用等比数列求和公示可以解决。

CF449D Jzzhu and Numbers - 洛谷

对每个数生成函数有 \(f_i=x^{a_i}+x^U\),其中 \(U=2^{20}-1\) 即全集。那么答案为 \([x^{\emptyset}]\prod f_i\) 其中 $\prod $表示集合交卷积。

有:\([x^{\emptyset}]\prod f_i=[x^{\emptyset}]I(\prod T(f_i))=[x^{\emptyset}]I(\sum_{S}\prod \hat f_{i,S})\) 但是这样直接计算是 \(\mathcal O(n^2)\) 的。

我们知道集合交卷积的 FMT 本质是高维后缀和,那么 \(\hat f_{i,S}=[S\subseteq a_i]+1\) 所以 \(\prod \hat f_{i,S}=2^{\sum_{i}[S\subseteq a_i]}\) 这里我们直接令 \(g_S\) 表示 \(S\)\(\{a_i\}\) 中出现的次数然后求一个 FMT 就变成了 \(\sum_{i}[S\subseteq a_i]\),即 \(\prod \hat f_{i,S}=2^{\hat g_S}\) 于是可以一次 FMT 加一次 IFMT 解决这道题。

CF662C Binary Table - 洛谷

注意到 \(n\) 很小,\(m\) 很大,有一种暴力的方法是枚举每行翻不翻转,然后对于每一列贡献 \(0/1\) 数量较少的那个个数。

翻转后的状态由初始状态与翻转操作状态异或得来

设第 \(i\) 列的初始状态为 \(a_i\),形式化的式子为:\(\min_x\{\sum_{i}g_{x\oplus a_{i}}\}\) 其中 \(g_s\) 表示 \(s\)\(01\) 个数的较小值。

由于 \(i\) 与位置有关,\(x\) 与值有关,不好处理,令 \(c_i\) 表示状态 \(i\)\(\{a\}\) 中出现的次数,答案转化为:\(\min_x\{\sum_{i}c_ig_{i\oplus x}\}\) 发现 \(\min\) 里面就是一个子集卷积。没发现?没关系,令 \(j=i\oplus x\)\(f_x=\sum_{i}c_ig_{i\oplus x}\),有 \(f_{i\oplus j}=\sum_{i}c_ig_j\) 那么这用个集合对称差卷积可以求出所有的 \(f_x\) 最后取最小值即可。

复杂度 \(\mathcal O(n^22^n+m)\)

AT_abc288_g [ABC288G] 3^N Minesweeper - 洛谷

这道题设计 FWT 的一个核心思想——各位独立。

类比在推 \(\hat f_i=\sum_{j=0}^{2^k-1}C(i,j)f_j\) 的时候将 \(C(i,j)\) 拆做 \(\prod _{i=0}^{k-1}c(i_k,j_k)\),其中 \(i_k\) 表示 \(i\) 在二进制下的第 \(k\) 位。 这道题本来有 \(A_i=\sum_{j=0}^{3^n-1}C(i,j)B_j\),但是 \(C(i,j)\) 的限制也是独立的,于是同样令 \(C(i,j)=\prod c(i_k,j_k)\)。我们考虑求出矩阵 \(c\) 的值。因为:

\[\left\{\begin{aligned} &a_0=b_0+b_1\\&a_1=b_0+b_1+b_2\\&a_2=b_1+b_2 \end{aligned}\right. \]

求出 \(c=\begin{bmatrix}1&1&0\\1&1&1\\0&1&1\end{bmatrix}\),直接算出 \(c^{-1}=\begin{bmatrix}0&1&-1\\1&-1&1\\-1&1&0\end{bmatrix}\)。用IFWT的方式可以算出 \(\{B\}\)

CF1119H Triple - 洛谷

这是一类求 \(\prod_{i=1}^n\sum_{j=1}^{k}w_jx^{a_{i,j}}\) 的值的方法,其中 \(\prod\) 为集合对称差卷积。即非 \(0\) 项系数相同但是位置不同。本题为 \(k=3\) 的特例。

首先 \(\prod_{i=1}^n\sum_{j=1}^{k}w_jx^{a_{i,j}}=I(\prod_{i=1}^nT(\sum_{j=1}^{k}w_jx^{a_{i,j}}))\)

根据 FWT 的变换式,\(\forall S,[x^S]\sum_{j=1}^{k}w_jT(x^{a_{i,j}})\) 总共有 \(2^k\) 中可能的取值,即:\(\sum_{j=1}^k \pm w_i\),现在我们想对于每种取值求出其出现次数。

令 $T\subseteq {1,2,\cdots k} $,且若 \(T\) 的第 \(i\) 位为 \(0\) 就令 \(w_i\) 的系数为\(1\) 否则为 \(0\) 。每种状态看作集合 \(T\),令其出现次数为\(c_{S,T}\)

\(G_T=\sum_{i=1}^nx^{\bigoplus_{j\in T} a_{i,j}}\),考虑 \([x^S]FWT(G_*)\)\(c_{S,*}\) 的关系,应该有 \(FWT(G_T)=\sum_{V}C(T,V)c_V\) 讨论其系数发现 \(C(T,V)=(-1)^{|T\cap S|}\) 这与 FWT 的 系数正好相同。即\([x^S]FWT(G_*)\)\(c_{S,*}\) 的 FWT,想求 \(c\) 就对 \(T\) 进行 IFWT 就行了。

复杂度 \(\mathcal O(n2^k+2^{m+k})\),其中 \(m\) 表示 \(a_{i,j}\) 表示的集合大小,即 \(a_{i,j}\in\{0,1,\cdots 2^m-1\}\)

P4221 [WC2018] 州区划分 - 洛谷

半半在线子集卷积模板

由于子集卷积 \(f_S=c_S\sum_{T\subseteq S,T\ne \emptyset}f_{S\setminus T}g_T\)\(|T|<|S|\),所以完全可以仿照普通子集卷积的方式按照 \(|S|\) 的大小转移。

参考

集合幂级数相关 - qAlex_Weiq - 博客园

集合幂级数 - 题单 - 洛谷 | 计算机科学教育新生态

题解 CF1119H 【Triple】 - 洛谷专栏

CF1119H Triple - 洛谷专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888952.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赛前启航 | 微软 AI 开发者挑战赛三场指导直播联袂来袭!

三场直播,为你的参赛之路注入强劲动力随着微软 AI 开发者挑战赛的火热进行,赛前指导直播已成为众多参赛者获取技术干货、灵感碰撞和实战技巧的绝佳平台。继前两期的精彩呈现,第三、四、五期直播即将接连登场,为开发者们带来更加深入的 AI 技术剖析和项目实战指引。无论你是…

Java基础学习(十九)

Java基础学习(十九):动态代理 目录Java基础学习(十九):动态代理概念使用 本文为个人学习记录,内容学习自 黑马程序员概念作用:可以无侵入式地给代码增加额外的功能 代理内部就是对象要被代理的方法 实际步骤:调用者先调用代理中的方法,实现一些额外的功能,再由代理去…

安川机器人伺服电机维修

在现代工业生产中,安川机器人发挥着至关重要的作用。然而,就像任何机械设备一样,它们也会面临各种故障。机器人故障的出现会严重影响生产效率,增加生产成本。例如,当安川机器人伺服电机出现问题时,可能导致机器人无法精准执行任务,这在自动化生产线上是非常严重的情况。…

BTA24-ASEMI双向可控硅的卓越魅力

BTA24-ASEMI双向可控硅的卓越魅力编辑:ll BTA24-ASEMI双向可控硅的卓越魅力 型号:BTA24 品牌:ASEMI 封装:TO-220F 特性:单向可控硅 正向电流:25A 反向耐压:600V~800V 引脚数量:3 芯片个数:2 包装方式:3000pcs/盘 浪涌电流: 特点:单向可控硅 工作温度:-40℃~150℃ …

36、车辆过户

咨询电话:12123—>1—>5 直接说人工服务(听到对方说咨询就说 人工服务 ) 1、车辆购车日期,看行驶证(这里有个注册日期和发证日期) 2、

用PyTorch从零构建 DeepSeek R1:模型架构和分步训练详解

DeepSeek R1 的完整训练流程核心在于,在其基础模型 DeepSeek V3 之上,运用了多种强化学习策略。本文将从一个可本地运行的基础模型起步,并参照其技术报告,完全从零开始构建 DeepSeek R1,理论结合实践,逐步深入每个训练环节。通过可视化方式,由浅入深地解析 DeepSeek R1 …

解锁跨境电商成功密码:运营优化五步走

跨境电商运营优化是一个涉及多个方面的复杂过程,以下是一些关键的优化策略: 一、市场调研与精准选品 深入分析目标市场 ○ 通过市场调研工具(如Google Trends、Jungle Scout等)分析市场趋势、竞争程度及潜在需求,挖掘蓝海产品。 ○ 了解目标市场的消费需求、文化差异、政策…

【每日一题】20250224

梦是好的;否则,钱是要紧的。【每日一题】如图所示,放在固定斜面上的物块以加速度 \(a\) 沿斜面匀加速下滑,若在物块上再施加一个竖直向下的恒力 \(F\),则 A. 物块可能匀速下滑 B. 物块仍以加速度 \(a\) 匀加速下滑 C. 物块将以大于 \(a\) 的加速度匀加速下滑 D. 物块将以小…

# 如何让大模型安全地自动生成代码并执行? ## 前言

前言 本文带来的分享是在crewai中使用代码解释器,为了安全,代码在docker中运行。 为什么要使用代码解释器呢? 之前的文章中使用的是function call + 各种工具 来完成一个任务,比如文件读取工具、文件保存工具等。 但是用户的需求是多变的,你很难提前写好所有的工具。 读取…

关于远程桌面

现有电脑A(win11系统)的开机PIN是123;现在想通过windows自带的“远程桌面应用”登录到电脑A上; 下图是电脑A上的设置 (1)、设置允许远程登录(2)将用户Administrator设置为远程桌面用户(3)在与电脑A在同一个网段内的电脑B上,打开远程桌面应用,输入电脑A的IP或电脑名…

Jmeter 性能优化

Jmeter 性能优化:(3优化 + 1补充)1、在 jmx 文件中 Disable 所有的结果输出,如: View Results Tree / Graph Results / Aggregate Report 等。 2、采用命令的方式执行(如果需要生成 HTML,建议分开两段命令执行)如: call jmeter.bat -n -t test.jmx -l result.jtl call…