Skip to content

定义Definition

期望运行时间变换器

Expected runtime transformer · ERT calculus

给概率程序逐项计费并反向组合期望成本,用几何循环算出守卫检查的额外开销,区分 ert 与 wp。

形式陈述 ​

固定成本模型:赋值或一次随机采样赋值成本为一,每次条件判断成本为一,顺序连接本身成本为零。令后续成本 f:S→[0,∞]。期望运行时间变换器 ert[C](f)(s) 表示从 s 执行 C 的期望成本,再在终止状态支付 f。本页没有非确定选择,并把无限执行的运行时间计为无穷。[1, §§2–3]

与最弱前期望的关系是

ert[C](f)=ert[C](0)+wp[C](f).

典型规则为

ert[x:=E](f)=1+f[x/E],ert[C;D](f)=ert[C](ert[D](f)).

对循环,包含每次守卫检查的特征函数是

Ψf(X)=1+[¬G]f+[G]ert[C](X),ert[while G do C](f)=lfpΨf.

退出时也要判断一次守卫,所以常数一在两个分支之外。

直觉

wp 把未终止路径的输出奖励记为零,ert 却必须记录它已经花掉、还会继续花掉的时间。仅把后期望设为一,得到的是终止概率,不是运行时间。

后续成本可能依赖前段生成的随机状态,因此顺序组合不能只把两个脱离输入的平均数相加。必须将后一段的成本函数传回前段积分。

例子与边界

抛到成功到底要付几次判断 ​

程序先执行 x:=0,然后 while x=0 do x:=Bernoulli(p),其中 p>0 为采到一的概率。一次采样赋值成本一,守卫成本一。

令 R0,R1 为循环从 x=0,1 出发的期望成本。已经成功时只需最后一次判断,故 R1=1。未成功时支付判断和采样各一,再进入后继状态:

R0=2+pR1+(1−p)R0,R0=2/p+1.

算上初始化,整程序成本为 2/p+2。公平币 p=1/2 时为 6。也可逐项核对:平均采样两次、守卫三次、初始化一次,总和六。若只说“平均两次抛币所以运行时间二”,就是换了成本模型。

当 p=0,方程没有有限解,最小扩展非负解为无穷;不能在 2/p+2 中把零分母忽略。

点态有限的后段仍可能有无穷平均 ​

前段几乎必然产生 K,且 Pr(K=k)=2−k−1;后段执行 2K 次单位工作。对每个有限输入 k,后段成本都有限,但前段对该成本函数的期望为

∑k≥02−k−12k=∞.

因此“前段有限期望、后段每个输入有限时间”不足以推出组合有限期望。需要控制后段成本在前段输出分布下的可积性。[1, Introduction]

推论与应用

若找到 I 使 Ψ0(I)≤I,最小不动点归纳给出 ert[W](0)≤I。这和概率循环上界不变式结构相同,但特征函数多了真正的执行成本。

成本模型可以改为指令数、查询数或能耗,但必须逐项重新说明。若允许零成本无限循环,累计成本可能有限而程序不终止;本页通过正成本守卫排除了这一情况,不能把有限成本结论无条件推广到任意自定义奖励。

参考资料
关系图谱7 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组