范叶亮写智能体、模型和数据系统时,习惯先把定义和边界钉死。把「计算复杂性与动态规划」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。
计算复杂性
计算复杂性 (Computational Complexity) 是用于对一个问题求解所需的资源 (通常为 空间 和 时间 ) 的度量。在评估一个算法的时候,除了算法本身的准确性以外,同时需要关注算法运行的时间以及占用的内存,从而根据实际情况选择合适的算法。
计算复杂性中的空间和时间的评估方法类似,在此我们更多的以时间复杂度为例。算法的运行时间刻画了算法的效率,对于一个输入规模为 $n$ 的问题,定义一个算法求解该问题 最坏情况 下的运行时间为 $T \left(n\right)$ ,我们可以使用一些 渐进记号 更加方便地对其进行描述。
函数的增长
对于一个给定的函数 $g \left(n\right)$ , $\Theta \left(g \left(n\right)\right)$ 可以表示如下函数的集合:
$$ \Theta \left(g \left(n\right)\right) = \left\{f \left(n\right): \exists c_1 > 0, c_2 > 0, n_0 > 0, s.t. \forall n \geq n_0, 0 \leq c_1 g \left(n\right) \leq f \left(n\right) \leq c_2 g \left(n\right) \right\} $$
NP 完全性
也就是说当 $n$ 足够大时,函数 $f \left(n\right)$ 能够被 $c_1 g \left(n\right)$ 和 $c_2 g \left(n\right)$ 夹在中间,我们称 $g \left(n\right)$ 为 $f \left(n\right)$ 的一个 渐进紧确界 (Asymptotically Tight Bound) 。
$\Theta$ 记号给出了一个函数的上界和下界,当只有一个 渐进上界 时,可使用 $O$ 记号。 $O \left(g \left(n\right)\right)$ 表示的函数集合为:
动态规划
$$ O \left(g \left(n\right)\right) = \left\{f \left(n\right): \exists c > 0, n_0 > 0, s.t. \forall n \geq n_0, 0 \leq f \left(n\right) \leq c g \left(n\right)\right\} $$
$$ \Omega \left(g \left(n\right)\right) = \left\{f \left(n\right): \exists c > 0, n_0 > 0, s.t. \forall n \geq n_0, 0 \leq c g \left(n\right) \leq f \left(n\right)\right\} $$
背包问题
$O$ 记号提供的渐进上界可能是也可能不是渐进紧确的,例如 $2n^2 = O \left(n^2\right)$ 是渐进紧确的,但 $2n = O \left(n^2\right)$ 是非渐进紧确的。我们使用 $o$ 记号表示非渐进紧确的上界,其表示的函数集合为:
$$ o \left(g \left(n\right)\right) = \left\{f \left(n\right): \forall c > 0, \exists n_0 > 0, s.t. \forall n \geq n_0, 0 \leq f \left(n\right) < c g \left(n\right)\right\} $$
最长公共子序列与最长公共子串
$\omega$ 记号与 $\Omega$ 记号的关系类似于 $o$ 记号与 $O$ 记号的关系,我们使用 $\omega$ 记号表示一个非渐进紧确的下界,其表示的函数集合为:
$$ \omega \left(g \left(n\right)\right) = \left\{f \left(n\right): \forall c > 0, \exists n_0 > 0, s.t. \forall n \geq n_0, 0 \leq c g \left(n\right) < f \left(n\right)\right\} $$
值得单独记下的点
- NPC 类问题 (NP-Complete Problems)
- 最优化问题 (Optimization Problem) 与 判定问题 (Decision Problem) :最优化问题是指问题的每一个可行解都关联一个值,我们希望找到具有最佳值的可行解。判定问题是指问题的答案仅为“是”或“否”的问题。NP 完全性仅适用于判定问题,但通过对最优化问题强加一个界,可以将其转换为判定问题。
- NPH 类问题 (NP-Hard Problems)
- 最优子结构性质 ,即问题的最优解由相关子问题的最优解组合而成,子问题可以独立求解。
- 无后效性 ,即每个状态均不会影响之前的状态。
- 子问题重叠性质 ,即在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。
- 带备忘的自顶向下法 (Top-Down with Memoization) ,该方法采用自然的递归形式编写过程,但会保留每个子问题的解,当需要一个子问题的解时会先检查是否保存过,如果有则直接返回该结果。
- 自底向上法 (Bottom-Up Method) ,该方法需要恰当的定义子问题“规模”,任何子问题的求解都值依赖于“更小”的子问题的求解,从而可以按照子问题的规模从小到大求解。
落地时建议先做的 5 件事
- 先写清任务能不能被自动验证:能验证的交给系统和评测,不能验证的留给人审。
- 本地部署先算显存、延迟和失败回滚,不要只看能跑通一次。
- 多智能体只在单智能体触到上下文或专业边界时再拆。
- Token、微调和压缩都要有对照数字,避免口号式优化。
- 结论写成可检查清单:接口、超时、评测集、回滚版本。
和智能体产品怎么接
龙虾PRO做 OpenClaw 落地时,最该拿走的是「单智能体先做好工具和提示,再谈编排」。数字员工、技能市场和网关应共用同一套评测与权限,而不是各写一套角色人设。
本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源
常见问题 FAQ
什么是AI智能系统?
「AI智能系统」可概括为:计算复杂性 (Computational Complexity) 是用于对一个问题求解所需的资源 (通常为 空间 和 时间 ) 的度量。在评估一个算法的时候,除了算法本身的准确性以外,同时需要关注算法运行的时间以及占用的内存,从而根据实际情况选择合适的算法。 本文从定义、方法与实践要点展开说明。
为什么要关注AI智能系统?
关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:计算复杂性 (Computational Complexity) 是用于对一个问题求解所需的资源 (通常为 空间 和 时间 ) 的度量。在评估一个算法的时候,除了算法本身的准确性以外,同时需要关注算法运行的时间以及占用的内存,从而根据实际情况选择合适的算法。
如何落地AI智能系统?有哪些关键步骤?
建议按以下路径推进AI智能系统:1) NPC 类问题 (NP-Complete Problems);2) NPH 类问题 (NP-Hard Problems);3) 最优子结构性质 ,即问题的最优解由相关子问题的最优解组合而成,子问题可以独立求解。;4) 无后效性 ,即每个状态均不会影响之前的状态。;5) 子问题重叠性质 ,即在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。。细节见正文对应章节。
AI智能系统适合哪些人或团队?
AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。
关于「计算复杂性」,本文给出了什么结论?
在「计算复杂性」部分,要点是:(Computational Complexity) 是用于对一个问题求解所需的资源 (通常为 空间 和 时间 ) 的度量。在评估一个算法的时候,除了算法本身的准确性以外,同时需要关注算法运行的时间以及占用的内存,从而根据实际情况选择合适的算法。 计算复杂性中的空间和时间的评估方法类似,在此我们更多的以时间复杂度为例。算法的运行时间刻画了算法的效率,对于一个输入规模为 $n$ 的问题,定义一个算法求解该问题 最坏情况 下的运行时间为 $
关于「函数的增长」,本文给出了什么结论?
在「函数的增长」部分,要点是:left(g \left(n\right)\right) = \left\{f \left(n\right): \exists c > 0, n_0 > 0, s.t. \forall n \geq n_0, 0 \leq f \left(n\right) \leq c g \left(n\right)\right\} $$ $$ \Omega \left(g \left(n\right)\right) = \left\{f \left