首页 > 其他分享 >一点生成函数

一点生成函数

时间:2024-10-23 18:21:39浏览次数:5  
标签:3x frac 函数 limits sum 2x 生成 一点

前置知识

你可能需要了解一些生成函数基础。应该可以先看,看不懂再去学。

约定

\(F\) 表示函数,\(f\) 表示一个生成函数(一个拥有无限项的多项式?)。

\([x^i]f\) 表示多项式 \(f\) 的 \(x^i\) 的系数。

函数 \(\to\) 普通生成函数封闭形式

如果有这样一个函数

\[i = 0, G(i) = 0 \]

\[i = 1, G(i) = 1 \]

\[i > 1, G(i) = 2^{i - 2} \]

\(G(i)\) 是什么呢,是长为 \(i\) 的合法置换环的个数:

  • 合法置换环:只有一个置换环且是由从 \(1\) 升序到 \(n\) 再从 \(n\) 降序到 \(1\) 的两条链构成的。

如果我们要求 \(F(n)\) 为长为 \(n\) 的序列满足:

  • 由合法置换环构成(此处是由 \(mn\to mx, mx\to mn\) 的两条链构成的)
  • 每个置换环都是序列上连续的一段区间。

那么 \(F(n) = \sum\limits_{i = 1}^{n}F(n - i)G(i), F(0) = 1\)。

那么写出生成函数 \(g = \sum\limits_{i = 0}G(i)x^i = x + \sum\limits_{i = 2}2^{i - 2}x^i = x + x^2\sum\limits_{i = 0}(2x)^i = x + x^2\frac{1}{1 - 2x} = \frac{x^2 + x(1 - 2x)}{1 - 2x} = \frac{x - x^2}{1 - 2x}\)。

然后考虑一个合法排列相当于若干个合法置换环拼接起来,有 \(f = \sum\limits_{i = 0}^{n} g^i\),即枚举由几个置换环拼接而成。那么 \(f = \frac{1}{1 - g} = \frac{1 - 2x}{1 - 3x + x^2}\)。

普通生成函数封闭形式 \(\to\) 递推方程

这里我们需要求出 \([x^n]f\) 即为答案,那么这里怎么求呢?

我们考虑设 \(f = a_0 + a_1x + a_2x^2 +\dots\)(其中实际上有 \(a_i = G(i)\))

对于 \(f\),\(f = \frac{1 - 2x}{1 - 3x + x^2}\) 等价于 \((1 - 3x + x^2)f = (1 - 2x) = t\),左侧的 \(=a_0 + (-3a_0 + a_1)x + (a_2 + -3a_1 + a_0)x^2 + \dots\),所以我们其实得到了关于 \(a\) 的方程组。

还发现对于 \(i\ge 2\),有 \([x^i](1 - 2x) = 0\),且 \([x^i]\ ((1 - 3x + x^2)f) = 1(a_ix^i) + (-3x)(a_{i - 1}x^{i - 1}) + x^2(a_{i - 2}x^{i - 2}) = (a_i -3a_{i - 1} + a_{i - 2})x^i = [x^i](1 - 2x) = 0\)。

于是我们实际上得到了关于 \(F(i)\) 的递推式,在本问题中 \(F(0) = F(1) = 1, F(i) = 3F(i - 1) - F(i - 2)(i\ge 2)\)

标签:3x,frac,函数,limits,sum,2x,生成,一点
From: https://www.cnblogs.com/SkyMaths/p/18497955

相关文章

  • 【磐维数据库】instr函数在磐维数据库使用报错处理过程
    背景江西移动现场,应用侧在磐维数据库使用instr函数时报错,报错如下:ERROR:functioninstr(text,unknown,integer,bigint)doesnotexist环境描述出问题的环境信息OS版本:BCLinuxforEuler21.10(LTS-SP2)DB版本:panweidb3.0.0问题描述程序代码显示functioninstr不存......
  • Spring Boot 替换Word模板生成Word文件教程
    ......
  • wsl ubuntu20.04设置core文件生成路径
    1.首先要确定允许生成core文件#在终端执行下列命令,执行后仅本次会话有效,如需每次都生效,可以添加到~/.bashrc文件中ulimit-cunlimited2.查看core文件的生成目录cat/proc/sys/kernel/core_pattern3.临时设置core文件的生成目录#先切换到root用户,然后输入,其中./表示生......
  • C 语言中,如果函数声明了返回类型,但执行路径中没有 return 语句,则返回什么数据值呢?
    u8PID_Ctrl(floatsetVal,floatCurVal){ staticunsignedintCnt=0; staticu8JSVal=0; if(++Cnt>=100) { Cnt=0; JSVal=(u8)PID_SF(setVal,CurVal); returnJSVal; }}//主函数中存在:PWM_ZB_Val=PID_Ctrl(60,JRL_Real_Temp); Q:当Cnt<100时,......
  • 在SQL Server中,可以使用查询结果生成SQL语句,通常通过动态SQL来实现。以下是一些常见的
    ai查到的,用着可以的,记录下示例场景假设有一个名为Employees的表,包含EmployeeID、FirstName和LastName字段。我们想要根据查询结果生成一系列的INSERT语句。1.使用FORXMLPATH生成INSERT语句SELECT'INSERTINTOEmployees(EmployeeID,FirstName,LastName)VALUES(......
  • PDManer 入门教程:超强代码生成工具!
    操作手册说明:https://www.yuque.com/pdmaner/docs/pdmaner-manual下载地址说明:https://gitee.com/robergroup/pdmaner/releases开源博客介绍说明:4.0最新版说明https://my.oschina.net/skymozn/blog/5515012PDman2.2.0下载地址:http://www.downza.cn/soft/278049.htmlPD......
  • 钩子函数(HOOK)和回调函数(CALLBACK)有什么区别 ?
     一般认为,钩子函数就是回调函数的一种,差异地方就是:触发的时机不同,钩子函数在捕获消息的第一时间就执行,而回调函数是捕获结束时,最后一个被执行的系统钩子,用于获取系统句柄​钩子处理函数是一个用户定义的回调函数,用于处理特定类型的事件。需要注意的是,系统钩子可能对性能造成......
  • 什么是虚函数和纯虚函数?以及区别
    什么是虚函数和纯虚函数?以及区别?虚函数:定义:被virtual关键字修饰的成员函数。在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。其用法格式为:virtual函数返回类型函数名(参数表){函数体}。特性:虚函数实现多态性,通过指向派生类的基类指针或引用,访问派......
  • Chromium127编译指南 Windows篇 - 使用 GN 工具生成构建文件(六)
    前言在上一篇文章中,我们已经成功获取了Chromium的源代码并同步了相关的第三方依赖。本文将继续深入,指导您如何使用GN工具生成构建文件,为接下来的编译工作奠定基础。切换Chromium版本至127在开始正式构建之前,我们需要将版本切换至127,这里我们使用git的切出功能创建新分支......
  • miniqmt 函数分享-2. 执行过程跟踪和记录
    2.执行过程跟踪和记录函数介绍:Python日志配置和追踪模块,名为logger.py。它使用loguru库来实现日志记录,并提供了一个上下文管理器TraceContext用于追踪函数的执行。主要部分:TraceContext类:功能:用于追踪函数执行的上下文信息。generate_trace_id方法:......