概率程序预期运行时间的最弱前置条件推理
1. 引言
自计算早期以来,随机化就是算法构建的重要工具。它常将最坏情况表现不佳的确定性程序转化为以高概率产生正确输出的高效随机算法,如Rabin - Miller素性测试、Freivalds矩阵乘法和Hoare快速排序算法中的随机枢轴选择。随机算法可以用概率程序方便地描述,概率编程语言除了常规语言结构外,还允许从概率分布中采样值,采样可用于赋值和布尔守卫。
近年来,对概率程序的兴趣迅速增长,这主要得益于其广泛的适用性。例如,在安全领域用于描述密码学构造和安全实验;在机器学习中用于描述通过贝叶斯推理分析的分布函数。
概率程序的运行时间受抛硬币结果的影响,技术上,运行时间是一个随机变量。一个重要的衡量指标是其平均或预期运行时间。与经典顺序程序不同,概率程序可能有任意长的运行,但预期运行时间却是有限的。而且,经典程序中有限运行时间的程序顺序组合后运行时间仍有限,但概率程序一般不满足这一点。
通常通过利用经典概率论(关于期望或鞅)的详细分析来获得随机算法预期运行时间的界限。本文提出了一种基于形式化程序开发和验证技术的替代方法,即一种类似Dijkstra的wp风格演算,用于获得概率程序预期运行时间的界限。核心是变换器ert,它是Dijkstra的wp变换器的定量变体。
2. 概率编程语言
使用的概率编程语言是类似Dijkstra的受保护命令语言的标准命令式语言,有两个显著特点:允许赋值和守卫中的分布表达式是概率性的。
概率程序pProgs的语法如下:
C ::=
empt
超级会员免费看
订阅专栏 解锁全文
1686

被折叠的 条评论
为什么被折叠?



