IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:递推

共 2 篇相关文章

IT 累计浏览 4,380

建立动态规划状态转移方程的练习

这篇文章通过LeetCode上的八个经典题目,生动演示了如何攻克动态规划中最核心的一步:建立状态转移方程。作者从自身的复习笔记出发,挑选了Word Break、Unique Paths、Edit Distance等覆盖字符串、网格、树结构等多个领域的典型问题,逐一拆解其思考过程。 文章的核心观点是,解动态规划题的本质在于“状态识别”和“状态转移方程建立”这两步。像循环与递归的选择、空间换时间的优化,都只是实现技巧而非核心。例如,在解“三角形最小路径和”时,关键在于定义从底层向上积累的最短路径值f(i, k),并建立f(i, k) = min(下一层相邻状态) + 当前值的递推关系。对于“交错字符串”问题,则需定义f(i, j)表示两个子串前缀能否形成目标前缀,并据此建立逻辑或的转移方程。 作者没有停留在给出公式,而是试图还原每道题背后的状态定义逻辑。这种从具体例子提炼通用思考方法的叙述,让抽象的“建立方程”变得可触摸。对于正在学习动态规划的人来说,跟随这八个问题的思路走一遍,能有效训练如何从问题描述中提取状态,并找到状态之间递推关系的“感觉”。

IT 累计浏览 3,062

Hofstadter的非线性递推数列

这篇讲的是Hofstadter G序列——一个由G(n) = n - G(G(n - 1))定义的非线性递推数列。作者从它在《GEB》中的登场出发,揭示了它与斐波那契数列的多重巧妙联系。 序列G生成的树形结构,其每一层节点数恰好构成斐波那契数列。这棵树本身还对应着经典的“兔子繁殖”族谱图。更神奇的是,序列G的值可以通过正整数的Zeckendorf表示(用不重复、不相邻的斐波那契数之和表示)来等价定义:只需将表示式中的每个斐波那契数替换成它前一个数再相加即可。研究还表明,G(n)以黄金比例(√5-1)/2的平均速度线性增长。 文章并未止步于此,而是探索了嵌套更深一层的变体H序列:H(n) = n - H(H(H(n - 1)))。它生成的“奶牛树”同样具有自相似性,并对应着满足不同成熟周期的种群增长模型。H序列遵循类似的规律,但其增长率变为方程x³ + x = 1的正实根,约为0.682。 作者借此展示,简单的递推定义背后,隐藏着从斐波那契数列、黄金比例到整数独特分解的一整套自洽而优美的数学结构。改变递推嵌套的层数,便能系统性地引出一族性质相通但参数平移的序列。