首页 > 其他分享 >闲话 7.12 - 斐波拉契拆分

闲话 7.12 - 斐波拉契拆分

时间:2024-07-12 21:42:19浏览次数:7  
标签:frac 互异 7.12 pmod 波拉 matrix 拆分 equiv

贺自论文《FIBONACCI PARTITIONS》,

这个证明略去了一些繁而不难的分类讨论,感兴趣的(?)可以前往原论文查看。

根据欧拉五边形数定理,有:

\[\prod_{i\ge 1}(1-x^i)=1+\sum_{k\ge 1} (-1)^kx^{k(3k\pm 1)} \]

这也是在 \(S=\N\) 集合的拆分中,奇数互异的拆分和偶数互异拆分的差值。这样的差值总是 \(0,1,-1\)。那么,还有什么 \(S\) 满足这样的性质呢?

\(\{F_n\}_{n\ge 2}\) 被证明也满足这样的性质,其中 \(F_n\) 是斐波拉契数,\(F_1=F_2=1\)。

这也就是说:

\[\sum_{i\ge 2}(1-x^{F_i})=\sum_{i\ge 0}a_ix^i \]

中,\(|a_i|\le 1\)。

我们先确认几个记号:\(r(n)\) 表示互异斐波那契拆分(下记为:互异拆分)个数,\(r_E(n),r_O(n)\) 是偶数、奇数个拆分个数。\(a_n=r_E(n)-r_O(n)\)。 美观原因,也记作 \(a(n)\)。

我们仅仅需要几个关于斐波那契数的基本事实:

\[\sum _{i=2}^n F_i=F_{n+2}-2\ \ \ \ \ \ \dots (1) \]

以及齐肯多夫定理:每个数能唯一地表示成若干不相邻/重合的斐波那契数之和(称为最小表示)。我们将用 \(01\) 序列来表示不重合的斐波那契数之和,表示每个数有没有被选。

还有一个小结论:\(F_n\) 的任意互异拆分满足最后一个 \(1\) 后面(这里前是大,后是小,下同)的 \(0\) 个数的奇偶性和 \(n\) 相反。此外,\(F_3\) 出现而 \(F_2\) 未出现的互异拆分仅在 \(2\mid n\) 时唯一存在。

定理 \(1\):

\[r(F_m)=\left\lfloor \frac m2\right\rfloor,r_E(F_m)=\left\lfloor \frac m4\right\rfloor \]

除非只选 \(F_m\),必须选 \(F_{m-1}\)(由于 \((1)\))。根据这一点归纳证明即可。

推论:

\[a(F_m)=\left\{\begin{matrix} 0 & n\equiv 0,1\pmod 4 \\ -1 & n\equiv 2,3\pmod 4 \\ \end{matrix}\right. \]

根据 \(a_n=2r_E(n)-r(n)\) 即得到。

为了计算 \(n\) 不是斐波拉契数的情况,我们需要一个类似于拆贡献的操作(比较巧妙)。

设 \(n\) 的最小表示是 \(n=F_{k_1}+F_{k_2}+\dots\)(从大到小,下同),记 \(01\) 序列的前 \(k_1-k_2\) 项为第一段,后面的为第二段。

这有什么好处呢?第一是这个为我们提供了一个可以归纳的递归结构,因为两段分别是更短的 \(01\) 序列。第二是跨段的贡献非常少,这就是说,我们把所有互异拆分分为两类:

  • 没有跨段的。也就是说,第一段的贡献和还是 \(F_{k_1}\),第二段的贡献和还是 \(n-F_{k_1}\)。
  • 跨段的。注意到这样的情况和没有跨段的时候的第一段末尾是 \(10\),第二段开头是 \(0\) 的情况是一一对应的,因为只能这么过来。我们统计的时候通常统计这个一一对应的情况。

还容易证明:如果一个互异拆分选取了 \(F_{k_1}\),那么这个互异拆分的第一段一定和最小拆分一样(也就是后面都是 \(0\)),否则就爆了。(引理 \(1\))

我们约定,\(n_i\) 表示 \(n-F_{k_1}-F_{k_2}-\dots-F_{k_i}\)。

引理 \(2\):设 \(\newcommand \A{\overline} \A r(n)\) 是不包含 \(F_{k_1}\) 的互异拆分数。那么有:

\[\A r=r(n)-r(n_1) \]

证明:

即考察包含 \(F_{k_1}\) 的计数 \(r(n)-\A r(n)\)。此时根据引理 \(1\),第一段和最小拆分是一样的,因此全部这样的拆分属于第一类。此时考察后面的 \(01\) 序列,和对 \(n_1\) 的互异拆分数是一样的。

推论:\(\A r_E(n)=r_E(n)-r_O(n_1)\)。

引理 \(3\):

\[r(n)=\left\{\begin{matrix} \frac 12 (k_1-k_2+1)r(n_1) & 2\nmid k_1-k_2 \\ (1+\frac 12(k_1-k_2))r(n_1)-r(n_2) & 2\mid k_1-k_2 \\ \end{matrix}\right. \]

考虑两类的贡献!

第一类被允许分开考虑,第一段的贡献就是 \(r(F_{k_1-k_2+1})\),后面的贡献是 \(r(n_1)\)。根据定理 \(1\) 就可以得到。

第二类会产生,当且仅当 \(2\nmid k_1-k_2+1\),由于前面所述的小结论。既然这个时候第一段是唯一的,只需考虑第二段第一个位置是 \(0\) 的方案数。这就是 \(\A r(n_1)=r(n_1)-r(n_2)\)。加起来就证明了引理 \(3\)。

引理 \(4\):

\[r_E(n)=\left\{\begin{matrix} \frac 14(k_1-k_2+1)r(n_1) & k_1-k_2\equiv 3\pmod 4\\ \frac 14(k_1-k_2+3)r(n_1)-r_E(n_1) & k_1-k_2\equiv 1\pmod 4\\ \frac 14(k_1-k_2+2)r(n_1)+r_E(n_2)-r(n_2) & k_1-k_2\equiv 2\pmod 4\\ (1+\frac 14(k_1-k_2))r(n_1)-r_E(n_1)-r_E(n_2) & k_1-k_2\equiv 0\pmod 4\\ \end{matrix}\right. \]

这非常分讨,但是为了版面(而不是我自己都没看完)仅讲述大致思路。

考虑两类的贡献。第一类的贡献要求前后奇偶性相同。

\[r_1(n)=r_O(F_{k_1-k_2+1})r_O(n_1)+r_E(F_{k_1-k_2+1})r_O(n_1) \]

第二类的贡献要求 \(k_1-k_2\equiv 0/2\pmod 4\)。这时前后奇偶性要求不同(因为 \(100\to 011\)),但是这种情况总有前面是奇数个 \(1\)。所以后面的就是 \(\A r_E(n_1)\)。这个分讨啊分讨。

定理 \(2\):

\[a(n)=\left\{\begin{matrix} 0 & k_1-k_2\equiv 3\pmod 4\\ -a(n_1) & k_1-k_2\equiv 1\pmod 4\\ a(n_2) & k_1-k_2\equiv 2\pmod 4\\ -a(n_1)-a(n_2)& k_1-k_2\equiv 0\pmod 4\\ \end{matrix}\right. \]

这是前面两个引理的直接应用。

定理 \(3\):

\[a(n)=\left\{\begin{matrix} 0 & 2\mid r(n)\\ 1/-1& 2\nmid r(n) \end{matrix}\right. \]

注意到 \(a(n)\equiv r(n)\pmod 2\) 就可以把问题转化为 \(|a_n|\le 1\)。

归纳,只需考虑 \(k_1-k_2\equiv 0\pmod 4\)。这个时候继续展开 \(a(n_1)\)。展开出来的结果是 \(k_2-k_3\equiv2\) 才会继续。

从原理上来讲,这样的过程是不可无限进行的。然而如果不能无限进行,这样的过程就失效了。因此 \(|a_n|\le 1\),证毕。

标签:frac,互异,7.12,pmod,波拉,matrix,拆分,equiv
From: https://www.cnblogs.com/british-union/p/18299434/fib_part

相关文章

  • 7.12 模拟赛总结
    这是暑假的第一个模拟赛,和新高一的一起打的T1T2T3T4tot50pts45pts100pts0pts195tps总的来说不是很满意,最近的状态有点低迷,但考虑到刚刚结束文化课还是情有可原,一切都会好起来的!T1[USACO09DEC]CowTollPathsG题意:给定\(n,n\le300\)个点,\(m,m\le1e4......
  • 周总结7.12
    本周呢个人基本掌握了java当中的一些基本的语法,和之前所学的c++,c有很多出入,所以学习起来会轻松很多,最主要的是本人学习了MySQL语句的基础篇已经学完了,了解到了MySQL的基本语法DDL,DML,DQL,DCL根据学习呢我明白了对于以后进行软件开发主要学习的是DML与DQL增删改查的一些操作,其中......
  • 闲话 24.7.12
    闲话????这luogu编译器怎么回事在本地和at上都能过编,在luogu上就过不了?xdm有遇到过这种事情的吗推歌:朝死暮生by北山薇etal.feat.洛天依AI补题P10324对一棵\(2n+1\)个点的有标号树,称它是好的,当且仅当树上每个点具有一个\(\{0,1,2\}\)中的权值,其中恰有\(1\)个......
  • day10-stack&Queue-part01-7.12
    tasksfortoday:1.理论基础2.232用栈实现队列3.225用队列实现栈4.20有效的括号5.1047删除字符串中所有相邻重复项--------------------------------------------------------------------------1.理论基础stack:firstinlastout     head    ......
  • 2024.7.12 模拟赛
    A容易观察到每个“\(1\)”相当于是独立的,那么其位置越靠后越优,则对于\(i=1\ton-1\),每次都为\(a_i\)选择一个最大的满足\(i+2^t\leqn\)的\(t\)全部进行操作最优。使用__builtin_clz函数做到\(O(n)\),暴力算\(t\)做到\(O(n\logV)\)。B要想求出每个前缀的答案,就......
  • 主动算法交易!减持回购/套利/大单拆分/篮子交易/预埋单神器工具!
    主动算法致力于服务机构投资者,为其提供以成交为目的的自动化交易执行。在有限容量内,充分追求客户个性化需求,保证执行效率、降低冲击成本、减少人力成本、保护交易意图、捕捉交易机会、符合监管要求和获取交易环节的ALpha收益。能够帮助解决的问题:1.优化交易成本,降低冲击成......
  • C#+OpenCV基础(九)_拆分合并图层
    1、图片拆分通道图层///<summary>///图片拆分通道图层///</summary>///<paramname="mat">图片</param>///<returns></returns>publicstaticMat[]SplitChannel(Matmat){//拆分通道Cv2.Split(mat,outMat[]mats);ret......
  • Day 41 | 322. 零钱兑换 、 279.完全平方数、139.单词拆分
    322.零钱兑换如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。这句话结合本题大家要好好理解。视频讲解:https://www.bilibili.com/video/BV14K411R7yvhttps://programmercarl.com/0322.零钱兑换.html给定不同......
  • 【后端面试题】【中间件】【NoSQL】MongoDB查询优化3(拆分、嵌入文档,操作系统)
    拆分大文档很常见的一种优化手段,在一些特定的业务场景中,会有一些很大的文档,这些文档有很多字段,而且有一些特定的字段还特别的大。可以考虑拆分这些文档大文档对MongoDB的性能影响还是很大的,就我个人经验而言,认为可以考虑从两个角度出发拆分大文档:按照字段的访问频率拆分:......
  • 4、flask-项目拆分
    项目的拆分其实就是将app.py中的工作拆分开来、类似Django一样、每个项目都把路由模板和试图函数分开写 app.py#路由+视图函数fromflaskimportBlueprintfrommodelsimport*#蓝图#创建蓝图对象#第一个参数:蓝图的名字#第二个参数:蓝图的包名blue=Blueprin......