首页 > 其他分享 >double counting 小记

double counting 小记

时间:2024-01-20 13:45:01浏览次数:20  
标签:le double sum 个数 times binom counting 我们 小记

前言: double counting 即算两次,可以对比两次结果得出一些有用的结论。

例1: 求证:

\[\sum_{i=0}^ni \binom{n}{i}=n \times 2 ^{n-1} \]

证明:

考虑计数问题:从 \(\{1,2,3,\dots n\}\) 中选取一个元素 \(a\) 和一个子集 \(A\),要求 \(a \in A\),求方案数。

先取 \(A\) 再取 \(a\),我们根据 \(A\) 的大小分类,显然结果就是等式左边的式子。

先取 \(a\) 再取 \(A\),有 \(n\) 种和 \(2^{n-1}\) 种选法,也就是等号右边。

所以两边是相等的。

例2: \(f_i\) 表示第 \(i\) 个斐波那契数,\(f_0=f_1=1\),求证:

\[\sum_{i=0}^{n-2}f_i=f_n-1 \]

证法1:

数学归纳法,显然 \(n=2\) 时成立。

假设对于所有 \(< k\) 的 \(n\) 都成立,则

\[\begin{aligned} f_k-1 &=f_{k-1}+f_{k-2}-1\\ &=f_{k-2}+\sum_{i=0}^{k-3}f_i+1-1\\ &=\sum_{i=0}^{k-2}f_k \end{aligned} \]

得证。

证法2:

我们考虑有一行 \(n\) 个格子,要用 \(1 \times 1\) 和 \(1 \times 2\) 的卡片不重不漏覆盖,并且不能全都是 \(1 \times 1\),求方案数。

一方面,直接递推可以得到答案是 \(f_{n}-1\)。

另一方面,枚举第一个 \(1 \times 2\) 的位置可以得到答案是 \(\sum_{i=0}^{n-2}f_i\)。

于是证明了这个式子。

例3:(Cayley 公式)求证:对于 \(n\) 个点的无向完全图,生成树个数为 \(n^{n-2}\)。(生成树指无根树)

证明:

不妨设生成树个数为 \(S_n\)。

首先,我们考虑计数:有多少个 \(n-1\) 条边的有向边序列,满足形成一颗有根树(外向)。

第一种方法,我们先选一个无根树,然后再选一个根,这时所有边的方向显然确定,注意我们选的是序列,所以再乘上排列数即可。所有共有 \(S_n \times n \times (n-1)!\) 种,也就是 \(S_n \times n!\)。

第二种方法,我们考虑一条一条边加入。

假设当前已经形成了有 \(k\) 个树的森林,我们看下一条边有几种选择。

我们可以随意选择一个点作为出点,由于是外向树,所以入点必然是某个不是自己这棵树的根,所以共有 \(n(k-1)\) 种选法。

我们总共要选 \(n-1\) 次,所以就有 \(n(n-1) \times n(n-2) \times \dots \times 2n \times n\),也就是 \(n^{n-2} \times n!\) 种。

对比两个式子可以得到 \(S_n = n^{n-2}\),证明了 Cayley 公式。

例4: (范德蒙德恒等式)计算:

\[\sum_{i=0}^n\binom{n}{i}^2 \]

解答:

首先,我们有 \(\binom{n}{k}=\binom{n}{n - k}\)。

将每个平方项一边改变,就会得到:

\[\sum_{i=0}^n\binom{n}{i}\binom{n}{n-i} \]

考虑组合意义,从 \(1 \sim 2n\) 中选 \(n\) 个数。

一方面,我们分别枚举前 \(n\) 个数和后 \(n\) 个数的选法,显然就是上式。

另一方面,直接组合数就是 \(\binom{2n}{n}\)。

所以上式等于 \(\binom{2n}{n}\)。

这个等式就是范德蒙德恒等式,它有一个拓展形式:

\[\binom{n_1+n_2+\dots+n_p}{m}=\sum_{k_1+k_2+\dots+k_p=m} \binom{n_1}{k_1} \binom{n_2}{k_2} \dots \binom{n_p}{k_p} \]

证明和上面类似。

例5: 定义一个无向图 \(G = (V,E)\) 为无三角图(triangle-free graph),当前仅当不存在三互不相同的点 \(u,v,w\),使得 \((u,v),(v,w),(u,w)\) 都属于 \(E\)。(即没有长度为 \(3\) 的环)

求:\(n\) 个点的无三角图最多几条边?

解答:

答案是:\(\frac{n^2}{4}\)(假设 \(n\) 是偶数,奇数相差不大)

构造:显然二分图都是无三角图,所以构造二分图,两边各有一半的点即可。

我们要严格证明这个结论。

不妨设 \(d_u\) 表示 \(u\) 在 \(G\) 中的度数。

观察: \(\forall(x,y) \in E,d_x+d_y \le n\)。

证明很简单,如果存在一个点同时连了 \(x,y\) 就会形成三角。

根据这个观察,我们可以知道:

\[\sum_{(x,y)\in E}(d_x+d_y)\le n \times |E| \]

我们看左边的式子,如果以点为单位计数,则显然会等于 \(\sum_{v \in V}d_{v}^{2}\)。

由度数基本的性质,我们知道 \(\sum_{v\in V}d_v^2=2|E|\),所以会根据均值不等式,在所有值相等时平方和最小,也就是说:

\[\sum_{v \in V}d_{v}^{2} \ge (\frac{2|E|}{n})^2 \]

结合两个不等式得到:

\[n \times |E| \ge (\frac{2|E|}{n})^2 \]

化简一下就是 \(|E| \le \frac{n^2}{4}\),得证。

例6: 求证:对于无向平面图 \(G=(V,E)\),存在 \(v \in V\),使得 \(d_v \le 5\)。

补充:其实对 \(4\) 也可行,这里只证明 \(5\)。

证明:

我们考虑反证法,假设所有度数均大于等于 \(6\)。

根据平面图欧拉公式,\(V+F=E+2\),\(F\) 是面的个数。

我们先考虑 \(V\) 和 \(E\) 的关系。

通过 doule counting 边的个数会得到:\(3V \le E\)。

在考虑 \(F\) 和 \(E\),我们发现,一个面至少三条边,一条边恰好两个面,可以得到:\(3F \le 2E\)。

两个不等式相加就可以得到 \(V+F \le E\),但这显然和欧拉公式矛盾,所以命题得证。

例7: 项链计数。

例8: Grid。

标签:le,double,sum,个数,times,binom,counting,我们,小记
From: https://www.cnblogs.com/rlc202204/p/17976382

相关文章

  • C#的数据类型总结:decimal ,double,float的区别
    原文链接:https://www.cnblogs.com/mrbug/p/6904039.htmldouble虽然64位,但其精度低,故其可以表示的范围大decimal虽然是128位,但由于其用了较多的位来表示其精度,只好牺牲表示范围了.1>三者是精度不同的浮点数,如下图参见:https://docs.microsoft.com/zh-cn/dotnet/articles/c......
  • JDK9 - VarHandle小记
    说在前面在开始之前,有必要点明一下虽只字未提但贯穿全文的核心,从而知道我们使用某些API的目的是什么:VarHandle/Unsafe提供了比volatile关键字更弱的变量访问方式,合理地利用它们可以让我们程序可以在符合运行预期的话情况下提高性能,这里的“弱”指的是约束更少。所谓约束,举个例子......
  • 为什么double会被序列化为NaN
    提问为什么double会被序列化为NaN回答世界上存在Double.NaN这个东西,他被序列化就会成为NaNexample//Seehttps://aka.ms/new-console-templateformoreinformationusingSystem.Globalization;usingNewtonsoft.Json;usingNewtonsoft.Json.Converters;Console.Writ......
  • SA&SAM 小记
    0.Front纯笔记,不含教学内容,部分有拓展,部分太简单所以以”显然“带过了,总结了部分oi-wiki的内容。字符串为\(S\),长度为\(n\),且应有\(|\Sigma|\len\)。通常来说,大写字母表示为字符串,小写字母表示为字符。后缀的编号为\(i\),表示是以\(i\)为起点的后缀。基础小练习1.......
  • 【小记】BITMAP To BMP 调用 GetDIBits 引发栈内存损坏问题
    BITMAPbitmap;if(!GetObject(hBitmap,sizeof(bitmap),&bitmap)){//外部传入hBitmapreturnfalse;}//创建位图信息头BITMAPINFObitInfo;BITMAPINFOHEADER&bi=bitInfo.bmiHeader;bi.biWidth=bitmap.bmWidth;bi.biHeight=bitmap.bmHeight;bi.biPlane......
  • Android架构测试 套小记
    Android架构测试主要是为了确保Android应用程序在不同设备和系统版本上的兼容性、性能和稳定性。这需要对应用程序的各个组件进行测试,包括活动、服务、广播接收器、内容提供程序等。以下是进行Android架构测试时可以采取的一些步骤:单元测试:对应用程序的各个组件进行测试,确保它......
  • WPF的DataGrid绑定DataTable调研小记
    公司有个项目,界面很卡,同事怀疑是DataTable刷新引起的,我写了一个小Demo测试一下这块的性能。测试的结果DataTalbe的绑定非常的耗时我的前台代码:<DataGridGrid.Row="1"AutoGenerateColumns="True"BorderBrush="LightGray"ItemsSource="{BindingItems}"......
  • 一些小记
    美剧:艾米丽在巴黎 刘瑜观念的水位李银河:女性主义《看见成长的自己》 复旦大学沈奕裴老师讲座:是什么阻挡了我们相亲相爱张悦然顿悟的时刻纪录片河西走廊、神秘的西夏博尔赫斯诗我用什么才能留住你黄灿然奇迹集樊登解读:恰如其分的自尊人生有很多象限。很多......
  • 二叉树解题思路小记
    二叉树前中后序位置代码框架voidtraverse(TreeNoderoot){if(root==null){return;}//前序位置traverse(root.left);//中序位置traverse(root.right);//后序位置}代码写在不同的位置,只是执行的时间不同。前序位置刚刚进入二......
  • [ABC212H] Nim Counting
    题目链接题目本质就是对一个多项式\(F\)进行等比数列求和得到\(G\)(\(F_i\)表示\(i\)在序列\(A\)中的出现次数),求\(G\)所有下标\(>0\)的位置的权值和。显然,\(M\)固定就可以直接做了。但\(M\)不固定,所以我们只能暴力枚举\(M\)并进行\(N\)次FWT卷积。复杂度显......