组合数学之递推关系(一)定义及几个经典例子

2023-11-03

说明

本文参考了组合数学课件,精简整理了一下内容并谈谈自己的理解


定义

设{ an a n }为一序列,把该序列中 an a n 和它前面几个 ai a i (0≤i≤n)关联起来的方程称做一个递推关系(递归关系)。
类似于 a0 a 0 =1, a1 a 1 =1的叫做初值
初值+递推关系=带初值的递推关系
说白了就是用前面推出来的值推出当前值,然后再推出后面的值的一个递推式,和dp的递推式差不多。

经典例子

1.在一个平面上有一个圆和n条直线,这些直线中的每一条在圆内都同其他的直线相交。如果没有多于三条的直线相交于一点,试问这些直线将圆分成多少个不同区域?

这里写图片描述
设这n条直线将圆分成的区域数为 an a n ,如果有n-1条直线将圆分成 an1 a n − 1 个区域,那么再加入第n条直线与在圆内的其他n-1条直线相交。显然,这条直线在圆内被分成n条线段,而每条线段又将第n条直线在圆内经过的区域分成两个区域。这样,加入第n条直线后,圆内就增加了n个区域。而对于n=0,显然有 a0 a 0 =1,所以有如下递推公式:
an=an1+n(n>=1) a n = a n − 1 + n ( n >= 1 )
a0=1 a 0 = 1
展开可以看出类似等差数列,化简后得:
an=n(n+1)+22 a n = n ∗ ( n + 1 ) + 2 2

2.“Hanoi塔”问题:n个大小不一的圆盘依半径的大小,从下而上的套在柱子A上。如图所示。现要求将所有的圆盘从柱子A上全部移到柱子C上,每次只允许从一根柱子上转移一个圆盘到另一根柱子上,且在转移过程中不允许出现大圆盘放到小圆盘上。试问至少要转移多少次才能将柱子上的n个圆盘全部转移到柱子C上去?

an a n 表示从一根柱子上的 n n 个圆盘全部转移到另一根柱子上的转移次数。显然,a1=1a1=1, a2=3 a 2 = 3 。当 n3 n ≥ 3 时,要将柱子A上的 n n 个圆盘转移到柱子C上,可以这样设想。先把柱子A上的n1n1个圆盘转移到柱子B上,这需要转移 an1 a n − 1 次;然后把柱子A上最后一个圆盘转移到柱子C上,显然这需要转移一次;最后再把柱子B上的n-1个圆盘转移到柱子C上,这也需要转移 an1 a n − 1 次。到此时转移完毕,一共转移了 2an1+1 2 a n − 1 + 1 次。于是可以建立如下带初值的递推关系:
an=2an1+1(n>=2) a n = 2 a n − 1 + 1 ( n >= 2 )
a1=1 a 1 = 1

3.“Fibonacci兔子问题”也是组合数学中的著名问题之一。这个问题是指:从某一年某一月开始,把雌雄各一的一对兔子放入养殖场中,从第二个月雌兔每月产雌雄各一的一对新兔。每对新兔也是从第二个月起每月产一对兔子。试问第n个月后养殖场中共有多少对兔子?

设第 n n 个月时养殖场中兔子的对数为FnFn。并定义 F0=1 F 0 = 1 ,显然有, F1=1 F 1 = 1
由于在第 n n 个月时,除了有第n1n1个月时养殖场中的全部兔子 Fn1 F n − 1 外,还应该有 Fn2 F n − 2 对新兔子,这是因为在第 n2 n − 2 个月就已经有的每对兔子,在第 n n 个月里都应生一对新的兔子。因此可以建立如下带初值的递推关系.
Fn=Fn1+Fn2Fn=Fn1+Fn2
F0=F1=1 F 0 = F 1 = 1
该数列即为Fibonacci数列

5.在一个平面中,有n个圆两两相交,但任二个圆不相切,任三个圆无公共点,求这n个圆把平面分成多个区域?

这里写图片描述
设这 n n 个圆将平面分成anan个区域。易知, a1=2,a2=4 a 1 = 2 , a 2 = 4
现在假设前 n1 n − 1 个圆将平面分成了 an1 a n − 1 个区域,当加入第 n n 个圆(虚线圆)时,由题设这个圆与前面的n1n1个圆一定交于 2(n1) 2 ( n − 1 ) 个点,这 2(n1) 2 ( n − 1 ) 个点把第n个圆分成 2(n1) 2 ( n − 1 ) 条弧,而每条弧正好将前面的 n1 n − 1 个圆分成的区域中的其经过的每个区域分成 2 2 个区域,故新加入的第nn个圆使所成的区域数增加了 2(n1) 2 ( n − 1 ) 。因此可以建立如下带初值的递推关系:
an=an1+2(n1) a n = a n − 1 + 2 ( n − 1 )
a1=2 a 1 = 2

5.设有 n n 个数b1,b2,...,bnb1,b2,...,bn的连乘积为 b1×b2×...×bn b 1 × b 2 × . . . × b n 。试求不同的结合方式数(加括号的方式)。

设不同的结合方式数为 an a n 。定义 a1=1 a 1 = 1 ,显然有 a2=1 a 2 = 1
由于对乘积 b1×b2××bn b 1 × b 2 × … × b n 的任一结合方式,必有某一个k使得最后的运算为积 b1×b2××bk b 1 × b 2 × … × b k 与积 bk+1×bk+2××bn b k + 1 × b k + 2 × … × b n 相乘。当k 固定时,对乘积 b1×b2××bk b 1 × b 2 × … × b k ak a k 种不同的结合方式,而对乘积 bk+1×bk+2××bn b k + 1 × b k + 2 × … × b n ank a n − k 种不同的结合方式。由乘法法则知,对某一个 k k 共有akankakank 种不同的结合方式。再由加法法则即得如下带初值的递推关系:
an=n1k=1akank a n = ∑ k = 1 n − 1 a k ∗ a n − k
a1=1,a2=1 a 1 = 1 , a 2 = 1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组合数学之递推关系(一)定义及几个经典例子 的相关文章

  • Markdown 语法完全指南

    这里写目录标题 简介 1 标题 2 段落和换行 3 文本样式 粗体和斜体 删除线和代码 嵌套标记 4 链接 内联链接 引用链接 5 列表 无序列表 有序列表 嵌套列表 任务列表 6 引用块 7 插入图片 8 水平线 9 代码块 10 表格
  • 数字IC设计知识点及综合题详解(提前批、秋招必刷基础题)——(二)时序分析基础(Slack、Setup、Hold、Jitter、Skew、亚稳态)异步复位,同步释放

    目录 一 常见名词 1 1 时钟偏移Skew 1 1 1 Skew出现的原因 1 1 2 Skew解决方法 1 2 抖动Jitter 1 2 1 Jitter出现的原因 1 2 2 时钟抖动永远存在 1 3 扇入扇出Fan in Fan o
  • Python每日练习题以及答案解析,还不进来测试一下?

    问题引入 现在有5个小朋友要分糖果 他们按照自己的编号顺序围坐在一张圆桌旁边 他们身上都有一些糖果 通过输入来决定每个小孩糖果的数量 从1号小朋友开始 将自己的糖果平均分成最多的3份 多出来的自己吃掉 自己留一份 其余两份分给他相邻的两位小
  • Latex学习笔记二——Overleaf在线练习

    锵锵 本文是基于Overleaf的Latex学习的第二部分 目录 1 结构化文档 2 添加图表 让论文更生动可读 2 1 Graphics 2 2 Floats 2 3 Tables 3 Bibliographies 1 结构化文档 这一部
  • 浅析GPT2中的autoregressive和BERT的autoencoding源码实现

    经常使用BERT来做研究 因此对Encoder的架构较为熟悉 但是从来没有了解过GPT这样的Decoder架构 尤其对自回归的形式不知道源码是如何实现的 为了方便对比和讨论 接来下所探讨的源码都是基于HuggingFace这个框架的 Ber
  • Game101现代计算机图形学入门学习笔记(七)

    光线追踪 一 光线追踪 1 为什么要使用光线追踪 二 基础光线追踪算法 1 光线 2 光线投射 1 着色过程 3 递归光线追踪 Whitted Style 1 基本过程 2 光线 表面相交 1 光线方程 3 轴对称包围盒 AABB 1 Un
  • 《Python 黑帽子》学习笔记 - 准备 - Day 1

    信息安全是一个有意思的方向 也是自己的爱好 从零开始 想在工作之余把这个爱好培养为自己的技术能力 而 web 安全相对来说容易入门些 于是选择 web 渗透测试作为学习的起点 并选择同样是容易入门的 Python 作为编程工具 潜心学习 持
  • 解决SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]的方案!!!!!

    目录 前提 一 安装maven helper插件 1 安装 2 安装成功 3 使用 二 去掉冲突的依赖包 1 前面已找到目标依赖 去pom文件内操作 2 去除 3 最后就可以了 前提 今天单元测试遇到了jar包冲突 SLF4J Class
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 全栈实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 本章目
  • 浏览器有哪些进程?浏览器进程,渲染进程,网络进程,渲染进程有哪些线程?

    浏览器进程 渲染进程有哪些线程 在浏览器中打开两个页面 会开启几个进程 1个浏览器进程 1个网络进程 一个GPU进程 通常一个Tab页对应一个渲染进程 但有其它情况 1 如果页面中有iframe的话 iframe也会运行在单独的进程中 2
  • Object.setPrototypeOf()

    Object setPrototypeOf 子对象 父对象 运行结束后 子对象 proto 指向 父对象 setPrototypeOf就是更换对象的 原型对象
  • 学习笔记-Spark环境搭建与使用

    一 20 04 Ubuntu安装 清华源ISO源 https mirrors tuna tsinghua edu cn ubuntu releases 20 04 下载链接 https mirrors tuna tsinghua edu c
  • 《Web应用安全权威指南》学习笔记

    第1章 什么是Web应用的安全隐患 第2章 搭建试验环境 邮件发送服务器Postfix POP3服务器Dovecot SSH服务器OpenSSH Web应用调试工具Fiddler 第3章 Web安全基础 HTTP回话管理 同源策略 Cook
  • 设计模式(5)-适配器模式(Adapter Pattern)

    适配器模式 Adapter Pattern 顾名思义 就像变压器 转接头差不多 就像美国的生活电压是110V 中国是220V 就需要一个变压器将220V转换成110V 或者一个Type C接口想插如USB接口的东西 你就需要一个转换器 而这
  • JavaWeb学习笔记-part1

    互联网通信 什么是互联网通信 两台计算机通过网络实现文件共享行为 就是互联网通信 互联网通信中的角色划分 客户端 用于发送请求的计算机 服务端 用于接受请求 并满足请求的计算机 互联网通信模型 C S通信模型 client software
  • 2022全国职业技能大赛-网络安全赛题解析总结④(超详细)

    2022全国职业技能大赛 网络安全赛题解析总结 自己得思路 模块A 基础设施设置与安全加固 20分 模块B 网络安全事件响应 数字取证调查和应用安全 40分 模块C CTF夺旗 攻击 20分 模块D CTF夺旗 防御 20分 有什么不懂得可
  • CST2020 安装包和安装步骤

    安装包和破解码的百度云链接 链接 https pan baidu com s 1RNSWxVxb DIu8dg8gkCzAw 提取码 dve7 如果失效可评论留言 谢谢 1 关闭防火墙和杀毒软件 2 解压后 以管理员模式运行setup文件
  • 10个 Python 脚本来自动化你的日常任务

    在这个自动化时代 我们有很多重复无聊的工作要做 想想这些你不再需要一次又一次地做的无聊的事情 让它自动化 让你的生活更轻松 那么在本文中 我将向您介绍 10 个 Python 自动化脚本 以使你的工作更加自动化 生活更加轻松 因此 没有更多
  • C 库函数 - mktime()

    描述 C 库函数 time t mktime struct tm timeptr 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数 发生错误时返回 1 声明 下面是 mktime 函数的声明 time
  • 如何设计一个高并发系统?

    所谓高并发系统 是指能同时处理大量并发请求 并及时响应 从而保证系统的高性能和高可用 那么我们在设计一个高并发系统时 应该考虑哪些方面呢 1 搭建集群 如果你只部署一个应用 只部署一台服务器 那抗住的流量请求是非常有限的 并且 单体的应用

随机推荐

  • Angular学习笔记68:Angular项目的单元测试 -- 对路由进行测试

    对路由进行测试 对于模版文件中有 的 在TestBed configureTestingModule 的元数据的imports数据一定要加上 RouterTestingModule 属于嵌套到组件中的其他组件 并不是单元测试的重点 第一种处
  • 人工智能知识全面讲解: RBF神经网络

    7 4 1 全连接与局部连接 1968 年 生 物 学 家 休 伯 尔 David Hunter Hubel 教 授 与 维 泽 尔 Torsten N Wiesel 教授在研究动物如何处理视觉信息时有一个重要的发 现 他们发现动物大脑皮层
  • C++知识积累:重载、隐藏和重写的区别

    1 重载 重载 是指同一可访问区内被声明的几个具有不同参数列 参数的类型 个数 顺序不同 的同名函数 根据参数列表确定调用哪个函数 重载不关心函数返回类型 示例 class A public void test int a void tes
  • 推荐一款vs编辑器画图插件

    插件名称 jdraw io 创建文件的后缀要写成 jdraw形式 效果
  • [QT编程系列-3]:C++图形用户界面编程,QT框架快速入门培训 - 2- QT程序的运行框架:HelloWorld、常见控件、对象树原理

    目录 2 QT程序的运行框架 2 1 Hello World程序框架 2 2 QT Designer初识 2 3 用QT Designer设计用户登录界 2 QT程序的运行框架 2 1 Hello World程序框架 上述示例代码中 首先根
  • 小白想学好计算机网络 必须知道一下几大基础知识

    引言 大家好 通过前面章节的学习 我们了解到计算机网络的发展过程 知道了计算机网络的概念以及计算机网络的各种分类 文章 但俗话说没有规矩不成方圆 一个企业要想正常运行需要制定各种各样的规章制度 员工需要遵守员工百度收录批量查询的各种企业规范
  • python小脚本——批量将PDF文件转换成图片

    语言 python 3 用法 选择PDF文件所在的目录 点击 确定 后 自动将该目录下的所有PDF转换成单个图片 图片名称为 pdf文件名 page 序号 jpg 如运行中报错 需要自行根据报错内容按照缺失的库 例如 安装库 pip ins
  • 数据在内存中的存储总结

    数据类型介绍 基本内置类型分别为 char 字符数据类型 short 短整型 int 整形 long 长整型 long long 更长的整形 float 单精度浮点数 double 双精度浮点型 注意 C语言中没有字符串类型 类型的意义 1
  • Ubuntu 22.04 LTS安装ROS2 (ros-humble-desktop)

    本文记录Ubuntu 22 04虚拟机上安装ROS2的过程以及遇到的问题 1 确定Ubuntu和ROS版本 Ubuntu和ROS2存在一个版本的对应关系 具体可以看官网的这个页面 REP 2000 ROS 2 Releases and Ta
  • 字符集合决定varchar2的长度--Oracle定义varchar2()类型存储汉字的长度问题

    oracle 的varchar2 4000 通过jdbc的thin驱动连接为什么只可以存666个汉字 谁说只能存储666个汉字的 varchar2最大是4000字节 那么就看你的oracle字符集 如果字符集是16位编码的 ZHS16GBK
  • 第八次 Java作业

    目录 1 输出圆形和矩形的面积 2 定义人类的介绍方式 3 编写登陆方法 4 人工包装的水果与普通水果的价格 1 输出圆形和矩形的面积 创建 Shape 图形 类 该类中有一个计算面积的方法 圆形和矩形都继承自图形类 输出圆形和矩形的面积
  • unity工具IGamesTools之批量生成帧动画

    unity工具IGamesTools批量生成帧动画 可批量的将指定文件夹下的帧动画图片自动生成对应的资源文件 Animation AnimationController Prefabs unity工具IGamesTools下载地址 http
  • Pydantic官方文档

    1 简介 1 7 1 版本的文档 使用Python类型注解进行数据验证和设置管理 Pydantic 在运行时强制执行类型提示 并在数据无效时提供用户友好的错误信息 定义数据如何表示为纯粹和规范的 Python 并使用 pydantic 对其
  • 计算二叉树的深度和叶子结点数(递归算法实现)

    问题描述 计算二叉树的深度和叶子结点数 输入形式 输入二叉树的先序遍历序列建立二叉树 输出形式 输出二叉树的叶子结点数和深度 样例输入 A B C 样例输出 Leaves 1 Depth 3 求给定二叉树的深度 二叉树的深度就是二叉树中结点
  • 软件测试的八股文内容

    软件测试理论基础 1 软件测试概念 软件测试的定义 在规定的条件下对软件进行操作 以发现错误 对软件质量进行评估 软件测试的范围 对软件形成中的文档 数据及程序进行测试 而不仅仅对程序进行测试 2 软件测试的目的 测试的目的不仅仅是为了发现
  • WebClient学习

    1 介绍 Java中传统的RestTemplate 的主要问题在于不支持响应式流规范 也就无法提供非阻塞式的流式操作 而WebClient是响应式 非阻塞的客户端 属于Spring5中的spring webflux库 2 依赖 maven依
  • 一般熟练盲打需要多久_学会盲打要多长时间,每天要练多长时间 盲打要练多久...

    1 注意自己打字的姿势 第一步要做到背挺直 眼睛离键盘大约半米左右 这是为了让整个都在视野里 双手食指自然的放在 F 和 J 键上 2 熟悉键盘的键位 注意打字时不要只用一个手指去打 一定要让每个手指都有分工 3 手指的正确位置 注意手指的
  • 浅谈C++值传递、地址传递、引用传递

    浅谈C 值传递 地址传递 引用传递 共同的困惑 函数 形式参数和实体参数 值传递 数组作为参数时除外 地址传递 引用传递 作者 Gl Zhang96 来源 CSDN 版权声明 本文为博主原创文章 转载请附上博文链接 共同的困惑 相信大家在入
  • 对于程序员来说,有哪些适合的副业可以选择?

    程序员应该如何选择副业 做副业要满足几个条件 首先是有时间 能让你有精力投入到副业中去 除去这个先决条件 程序员在选择副业的时候可以从这3个方向去思考 方向一 技能 业务 比如技术顾问 培训老师 APP开发等等 方向二 资源 业务 比如字节
  • 组合数学之递推关系(一)定义及几个经典例子

    说明 本文参考了组合数学课件 精简整理了一下内容并谈谈自己的理解 定义 设 an a n a n 为一序列 把该序列中 an a n a n和它前面几个 ai a i a i