Skip to content

模型Model

性质测试模型

Property testing model · Property testing

明确 oracle、距离和承诺间隔,用测试算法与下界区分局部违规、全局距离、容忍性和查询成本。

一段有十亿位的数据,只读几百位,能否判断它具有某种性质?对完全精确的判断,这往往做不到:没有读过的位置可能恰好藏着唯一错误。性质测试改变了需要区分的对象:接受真正具有性质的数据,拒绝与该性质相距很远的数据;对只差一点的数据允许不作保证。

这段容许区间不是算法疏漏,而是亚线性检查成为可能的来源。模型的核心也不只是随机抽样,而是把“性质、距离、访问方式和成功标准”一起规定清楚。[1]

形式陈述 ​

用距离把近似判定写准确 ​

先以长度为 n≥1 的字符串 x∈Σn 为例。设性质是子集 P⊆Σn,两个字符串的归一化 Hamming 距离为

dist(x,y)=1n|{i:xi≠yi}|.

输入到性质的距离为

dist(x,P)=miny∈Pdist(x,y).

这里假设 P 非空,并取 0<ε≤1。距离是把 x 修成某个合法对象至少要修改的坐标比例。关键在于取最小值:若 P={0n,1n},输入的零、一比例分别为 1/4,3/4,它到性质的距离是 1/4,而不是到全零串的距离 3/4。测试目标是接近某个合法对象,不是接近分析者预先选定的一个代表。

一个错误概率至多为 1/3 的 ε-测试器,通过坐标查询访问 x,并满足

x∈P⟹Pr[accept]≥2/3,dist(x,P)≥ε⟹Pr[reject]≥2/3.

在 0<dist(x,P)<ε 的中间区域,接受或拒绝都合法。这里采取“距离至少为 ε”的远离约定;有的文献使用严格大于,相应端点应保持一致。

错误概率针对算法随机性,而以上保证分别适用于每个满足前提的输入。输入不是默认来自某个自然分布。中间区域的自由也不能扩大到真正的合法输入或远离输入。

访问模型决定一次查询能知道什么 ​

字符串模型的一次查询返回一个坐标。对图、函数和分布,访问接口不同,距离的归一化也会改变。

在稠密图模型中,常用邻接查询询问一对顶点是否有边,距离按 Θ(n2) 个可能边位置归一化。在有界度图模型中,常用邻居查询询问一个顶点的第 j 个邻居,距离按 Θ(dn) 的规模衡量,d 是度数上界。具体常数约定可以不同,但查询接口与距离尺度必须匹配。

因此,同一个图若只含 O(n) 条边,在稠密图距离中删除全部边只需 O(1/n) 的比例;在有界度距离中,删除这些边却可能是常数比例的修改。“它是否远离无边图”取决于采用哪个模型。

分布测试还采用另一类接口:算法获得未知分布生成的独立样本,通常不能直接查询某个点的概率值。常用距离是总变差距离

dTV(p,q)=12∑i|pi−qi|.

把这种样本访问与数组随机访问混为一谈,会产生错误的复杂度比较。若允许概率值查询、条件采样等更强接口,得到的又是新的模型。

四个评价维度应分别写清 ​

查询复杂度统计向输入 oracle 发出了多少次请求;运行时间还统计选择查询、处理答案与内部计算的成本。一个存在性证明即使给出少量查询,也可能包含昂贵的本地计算,所以少查询不自动等于软件运行得快。

自适应测试器可以根据已见答案决定下一次查哪里;非自适应测试器必须在看到答案前确定全部查询位置。随机性与自适应性是不同维度:随机抽样可以完全非自适应,确定性算法也可以依赖此前答案选择后续位置。

单侧错误测试器在满足性质的输入上总是接受,只可能漏掉远离输入;双侧错误允许两边都有小概率出错。下文的全零测试器具有单侧错误,但它的匹配下界甚至适用于更宽松的双侧错误模型。

最后,算法返回的是“接受/拒绝”,不是自动产生修复后的对象。测试、估计距离、学习完整对象与局部修复是相关但不同的任务;从一个高效测试器到这些更强输出,需要额外构造与分析。

直觉

从隐藏错误理解查询下界 ​

考虑全零性质:只要命中一个 1 就能发现错误,但在命中之前,算法无法知道隐藏位置在哪里。取 k=⌈εn⌉,比较全零输入与另一种输入:从 n 个位置中均匀选择 k 个位置放置 1。后者一定与全零性质相距至少 ε。

对任何至多查询 q 次、允许自适应的随机算法,固定其随机数后,观察它在全零输入上的查询位置。这是一条至多含 q 个不同位置的路径。在碰到某个隐藏的 1 之前,另一个输入给出的答案全是零,所以算法会沿着同一条路径执行。

每个固定位置被选入隐藏集合的概率是 k/n,并合界给出

Pr[观察到 1]≤qkn.

将两次执行使用同一组随机数耦合:只要没有命中隐藏集合,两次输出就相同。因此两种输入分布的接受概率之差至多为 qk/n。一个双侧错误至多 1/3 的测试器,却必须使两种接受概率至少相差 1/3,所以

q≥n3k.

由于 k=⌈εn⌉,这给出

q=Ω(min{n,1/ε}).

与常数错误率的上界匹配。这个论证覆盖了自适应与双侧错误算法,而不只是说明某个朴素抽样器需要这么多样本。

补充示意图
性质测试的 exact-versus-far gap
例子与边界

一个完整测试器:字符串是否全为零 ​

取 P={0n}。此时距离就是输入中 1 的比例。算法独立均匀抽取 q 个坐标,只要发现一个 1 就拒绝,否则接受。

若 x=0n,算法始终接受;若 x 中至少有 εn 个 1,一次查询没发现它们的概率至多为 1−ε,所以

Pr[错误接受]≤(1−ε)q≤e−εq.

因此对目标错误率 0<δ≤1/3,取

q=⌈ln⁡(1/δ)ε⌉

即可。若这个预算超过 n,直接检查全部坐标更合适,得到 O(min{n,ε−1log⁡(1/δ)}) 次查询。抽样时已经读过的坐标可以缓存,不必重复付出查询成本。

算法只要求查到一个见证,并不需要估计 1 的精确比例。若目的是估计该比例到加性误差 ε,通常的均值估计会出现 ε−2 级样本量;那是不同任务,不能拿它替代这里的 ε−1 分析。

这个测试器还是单侧错误的:合法输入绝不会被拒绝。它的复杂度对固定 ε,δ 不依赖 n,但这并不意味着每种性质都具有与输入长度无关的测试器。

普通性质测试只对距离为零和距离至少 ε 两侧作保证;中间区域的输出可以任意。

远离性质,不等于随机局部检查容易找到错误 ​

全零例子很简单,是因为每个为 1 的坐标单独就是违例,距离直接等于这种局部见证的密度。一般性质没有这么直接的对应。

例如检测二进制序列是否单调不减。取偶数 n,输入为

x=1n/20n/2.

它到所有单调不减序列的最小距离为 1/2:无论把零一分界放在哪里,至少要改掉一半坐标。但在全部相邻位置对中,只有正中间那一对呈现 1,0 的逆序。因此随机抽查一个相邻对,发现违例的概率只有 1/(n−1)。

这并不证明单调性不可高效测试。它说明,“输入远离性质”与“某种指定的局部检查经常失败”之间需要一个结构定理。一个差的查询分布可能很难发现错误,而更合适的跨尺度或非相邻比较能利用更多结构。具体方法见 单调性测试。

另一个典型例子是 BLR 线性测试:对 f:F2d→F2,随机选 x,y,检查

f(x)+f(y)=f(x+y).

测试器只有三次查询,真正的数学工作却是证明:如果绝大多数这样的局部方程成立,f 必须接近某个全局线性函数。性质测试的重要成果常常是简洁算法与非平凡结构分析的结合,而不是复杂的执行流程。[1]

推论与应用

容忍测试:接受区域也向外扩展 ​

普通测试区分距离为零与距离至少为 ε。容忍性质测试则给定 0≤ε1<ε2,要求接受距离至多 ε1 的输入,拒绝距离至少 ε2 的输入。

当 ε1=0、ε2=ε 时,就得到本条目的普通测试模型。因此在允许零端点的定义下,普通性质测试确实是容忍测试的特例。若某处将“容忍”一词专用于 ε1>0,应说明该术语限制,而不应因此混淆两种任务的关系。

正的容忍半径改变了算法需要做到的事:看到一个违例,已经不足以拒绝,因为合法的接受区域允许少量错误。比如全零性质的容忍测试若区分密度至多 1/10 与至少 1/5,看到一个 1 对两侧都可能发生,不能作为拒绝证据。可改为估计抽样中 1 的比例,并在中点 3/20 作判定;估计误差小于 1/20 时两侧都正确。一般间隔 Δ=ε2−ε1 下,独立样本均值给出 O(Δ−2log⁡(1/δ)) 的查询上界(也可读完输入)。这只是通用上界,并非所有参数区间的紧界,却清楚说明了为何接受少量错误后,寻找单个见证必须改成密度判断。

怎样判断一个性质适合哪种测试路线 ​

可以从三个相互衔接的问题入手。第一,离性质很远意味着哪些全局结构必须失败?第二,这些失败会在什么查询分布下留下足够密集的局部见证?第三,少量查询看不到这些差异时,能否构造两类输入分布证明下界?

全零测试把三问都化成“隐藏的 1 是否被命中”;单调性例子说明局部见证的选择不能想当然;BLR 则展示局部代数关系如何约束全局函数。这些机制比“随机看几个位置”更准确地刻画性质测试。

继续学习时,可先读 查询复杂度模型明确访问成本,再读 确定性与随机查询复杂度理解自适应、错误率与下界。性质测试是在这些模型中加入距离承诺的近似判定框架。

参考资料

[1] Oded Goldreich, Introduction to Property Testing, Cambridge University Press, 2017,第 1、2、7–12 章。作者教材入口与章节导读,覆盖基本模型、线性测试、下界、图表示与容忍测试。

[2] Dana Ron, “Algorithmic and Analysis Techniques in Property Testing”, Foundations and Trends in Theoretical Computer Science 5(2), 73–205, 2009。系统整理查询设计与结构分析方法。

[3] Harry Buhrman and Ronald de Wolf, “Complexity Measures and Decision Tree Complexity: A Survey”, Theoretical Computer Science 288(1), 21–43, 2002。作者稿,提供经典查询模型的基础定义。

关系图谱21 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

下位 / 直接特例

类型化关系