容斥、反演、卷积与高维前缀和

news/2025/2/28 16:20:33/文章来源:https://www.cnblogs.com/haozexu/p/18743497

数学的大网磅礴地展开了。

容斥、反演、卷积与高维前缀和 Stream

Draft

我觉得,我们最开始使用的时候,肯定是从最普通基础的容斥原理讲起的,因为这就是我们实际遇到的一种问题:

问题 1 通过集合交求集合并

假设班里有 \(10\) 个学生喜欢数学,\(15\) 个学生喜欢语文,\(21\) 个学生喜欢编程,班里至少喜欢一门学科的有多少个学生呢?

我们小学的时候就学习过这种问题,当时,我们会画 Venn 图来解决:

容斥原理 - venn 图示例

我们将这个形式一般化,就变成了:

公式 1 容斥原理

\[\left|\bigcup_{i=1}^{n}S_i\right|=\sum_{m=1}^n(-1)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}^mS_{a_i}\right| \]

这个形式很有意思,它为什么正确?

定理 1 二项式定理

\[(x+y)^n=\sum_{k=0}^n{n\choose k}x^{n-k}y^k \]

证明 容斥原理

一个元素一个元素考虑,我们需要算出最后的并集,所以每一个元素的贡献都应该是 \(1\),我们假设元素 \(x\)\(S_1,S_2,\dots,S_m\) 这些集合中,那么他的贡献次数就是:在一个集合中-在两个集合的交中+在三个集合的交中……

那么贡献就分别是:\({m\choose 1},{m\choose 2},\dots,{m\choose m}\),总和就是

\[\sum_{i=1}^m (-1)^{i-1}{m\choose i}={m\choose 0}-\sum_{i=0}^m (-1)^i{m\choose i} \]

这个好像就是二项式定理的形式!那么他的总和就是 \(1\)\(\square\)

所以证明它的关键想法是,我们要计算每个元素贡献,确保为 \(1\)

我们通过容斥原理,将求集合并转化为求集合交。这一切是通过附加一个系数实现的。

To do:从线性代数的角度说明。

但是,当问题比较复杂的时候,容斥原理可能就似了。

问题 2 错位排列计数

对于一个长为 \(n\) 的排列 \(p\),称数 \(i\) 在初始位置当且仅当 \(p_i=i\),现在要求有多少序列满足恰好\(m\) 个元素在初始位置

这个问题不好直接计算,但是我们马上就指出,可以用钦定 \(k\) 个元素保持原位的方案数来计算原问题的答案。我们设原问题规模为 \(k\) 的实例的答案是 \(f(k)\),转化后问题的答案是 \(g(k)\)

那么,

\[g(k)={n\choose k}(n-k)! \]

现在如何将它转化为 \(f(k)\) 呢?我们还是考虑一个方案的贡献要为 \(1\)

我们考虑一个恰好有 \(m\) 个元素在初始位置的方案,它在 \(g(m)\) 中会被计算一次。但是,\(g(m)\) 中还包含实际上有多于 \(m\) 个元素在初始位置的方案,那么我们尝试减去 \(g(m+1)\)。我们现在看看我们是否使得重复的元素都恰好被减去一次,对于一个有 \(m+1\) 个元素在初始位置的方案,我们发现在 \(g(m)\) 中,有 \({m+1\choose m}\) 种钦定方案都计算了它,所以它被计算了不止一次,在 \(g(m+1)\) 时它只被减去一次,减少了,应该减去 \({m+1\choose m}\) 次。

好的,我们减去 \({m+1\choose m}g(m+1)\),然后我们不妨再考虑下有 \(m+2\) 个元素在初始位置的方案,它在 \(g(m)\) 中计算了 \({m+2\choose m}\) 次,在 \(g(m+1)\) 中计算了 \({m+2\choose m+1}\) 次,被减掉了 \({m+2\choose m+1}{m+1\choose m}=(m+2)^{\underline 2}\) 次,又减多了。以此类推,在 \(g(m+2)\) 中被算一次,此时再补上 \({m+2\choose m}\) 就正好对答案不造成贡献了。

我们写出来发现的规律:

\[f(m)=\sum_{k=m}^n(-1)^{k-m}{k\choose m}g(k) \]

上面的推导过程其实蕴含着下面这条性质:

\[g(m)=\sum_{k=m}^n{k\choose m}f(k) \]

好的,我们实际上得到了这样的等价关系:

公式 2 二项式反演-形式二

\[f(n)=\sum\limits_{i=n}^m{i\choose n}g(i)\Leftrightarrow g(n)=\sum\limits_{i=n}^m(-1)^{i-n}{i\choose n}f(i) \]

当当,这就是著名的二项式反演最常用的形式!(证明请见 OI-Wiki)

二项式反演可以转化“钦定”/“恰好”类型的问题。他们都满足形如左边这样的关系,我们可以将它换成右边这样!

所以反演其实是“凑容斥系数”的一些特殊情况,在这些问题上我们无需依靠直觉,只需要套就行了。

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

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

相关文章

win10 安装 达梦数据库客户端管理程序

下载地址: https://www.dameng.com/list_103.html 选择cpu和操作系统 下载前要登录,你就登录一下就可以了。 下载的文件为:dotnet-sdk-3.1.426-win-x86.zip 解析后现将dm8_20250122_x86_win_64.iso解压,运行Setup.exe 只安装客户端,把服务器这儿去勾

Pcigo 图片名字修改插件- rename-file

picgo-plugin-rename-file A PicGo plugin for customizing file name. 可以很自定义生成文件存储路径的插件,文件(包括路径)名称支持日期、随机字符串、文件MD5、原文件名、原文件目录结构等规则。 更多需求,欢迎PR或提ISSUE。例如 2020/07/24/674b96a992fac527a8332ac4adc8…

ln -s(软链接)命令的使用

ln -s /A /B 创建软链接A指向B,Linux的软链接类似于window的快捷方式 当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复…

NFSP

NSFP算法 论文名称:《Deep Reinforcement Learning from Self-Play in Imperfect-Information Games》 这是一篇博弈论和强化学习交叉的文章,网上的资料比较少,但是确实是对手建模的重要算法之一。虽然后面的PSRO算法指出NFSP是PSRO的一个特例,但是个人觉得还是很有学习的必…

车载高性能计算平台HPC2.5

经纬恒润新一代高性能计算平台HPC产品选用TI TDA4及Infineon TC397两款高性能芯片,搭载Linux及RTOS两种操作系统,集成AutoSAR及自研应用框架(AF)两类中间件,可满足复杂运算、高实时等不同应用程序的需求。 高性能计算平台(HPC)是新一代智能汽车的核心技术,是支撑“…

FANUC法那科机器人保养的要点

每一台机器人均不可或缺地需要进行预防性保养,这是确保其于生产线上持续展现最佳性能与实现高度一致性的基石。若忽视了定期对机器人进行预防性保养检查,很可能会导致其零部件遭受损坏或突发故障,进而引发生产效率的减缓,乃至生产线的全面停机。恰当的保养措施,不仅能够显…

redis bind protected-mode

概要redis bind、protected-mode 配置 安装并启动 yum install -y redis systemctl enable --now redis # 使用 redis-server 命令会在前台启动运行,可以跟个 .conf 文件 根据配置文件启动修改配置文件 # 直接编辑配置文件 (本篇文章使用此方法) vi /etc/redis.conf# 同时redis…

看中国版“ADP”如何助力泰森等在华外企应对薪酬管理挑战

“工欲善其事,必先利其器”,用软件实现复杂经营环境下的薪酬管理提效提质,是包括外企在内所有企业释放人力价值、迈向精细化管理的重要手段;也是实现薪酬价值最大化,打造经营韧性、驱动增长的必经之路。调查表明,在全球化的浪潮中,71% 的企业将人力资源相关问题视为国际…

day08 作业

day08 作业 1.使用linux实现命令别名,实现如下效果,思考,如何生成la命令。 [root@yuanlai-0224 ~]# la /var/log/ total 1.9M drwxr-xr-x. 6 root root 4.0K Mar 6 03:33 . drwxr-xr-x. 19 root root 267 Feb 26 03:27 .. drwxr-xr-x. 2 root root 204 Feb 26 03:01 an…

ABP更换MySql数据库

原因:ABP默认使用的数据库是sqlServer,本地没有安装sqlServer,安装的是mysql,需要更换数据库 ABP版本:9.0 此处以官网TodoApp项目为例打开EntityFrameworkCore程序集,可以看到默认使用的是sqlServer,此处截图为已安装mysql依赖包步骤一、安装mysql依赖包 https://abp.io…

SimpleCalculator缺陷分析与二次开发

C语言计算器项目: 项目名称:Simple Calculator GitHub 地址: https://github.com/example/simple-calculator 项目简介 这是一个命令行计算器,支持加、减、乘、除运算。 代码结构简单,适合初学者阅读和修改。 主要功能 支持加、减、乘、除运算。 通过命令行交互输入运算符和数…

基于 Arria 10 FPGA 的 DP 接口开发板电路研制

1.引言物联网,智能汽车,云计算在我们生活中已经耳熟能详,随着FPGA的更新进步,在各类电子科技中不断发力,让我们的生活变得更加智能和便捷。下面给大家介绍一下来自Intel的FPGA Arria 10以及明德扬研发的一款Arria 10的开发板电路设计。 2.Arria 10 FPGAIntel Arria10 FPGA…