Access Strings 和 Distinguishing Strings
T
T
T:代表分类树
M
M
M:实际等价自动机
M
^
\hat{M}
M^:假设自动机
Access Strings 代表了状态机的一个状态,标记在leaf node
Distringuishing Strings 代表了状态机的转移路径,标记在internal node
有限自动机学习算法子程序
该算法包括:Sift、Tentative-Hypothesis、Update-Tree三部分。
Sift:该程序的目的是查询Access Strings和Distringuishing Strings是否存在
Tentative-Hypothesis:将构建的分类树转换为自动机
Update-Tree:根据Counterexample对分类树进行更新
Sift子程序
子程序Sift( s s s, T T T)以字符串s和当前分类树 T T T作为输入,输出实际等价自动机M[ s s s]在 T T T中的Access Strings,即 M M M被 s s s访问的状态。
- 初始化:当前的node为 T T T的根node。
- 主循环:
- 设 d d d为 T T T目前节点的Distringuishing Strings
- 在 M M M上对 s d sd sd进行member queries,如果被接收,更新当前的node为right child,否则为left child
- 如果当前是leaf node,返回其标记的Access Strings,否则重复主循环
Tentative-Hypothesis( T T T)
- 对于T的每个Access Strings(叶节点),在 M ^ \hat{M} M^中创建一个由该Access Strings标记的状态。设 M ^ \hat{M} M^的起始状态是 λ λ λ。
- 对于
M
^
\hat{M}
M^的每个Access Strings和
b
∈
{
0
}
b\in\{0\}
b∈{0},计算
M
^
\hat{M}
M^中状态s的b转移:
- s ′ s' s′← S i f t ( s b , T ) Sift(sb,T) Sift(sb,T)
- 引导 b b b转移从状态s到状态 s ′ s' s′
- 返回 M ^ \hat{M} M^
Update-Tree
该过程将当前分类树
T
T
T和假设自动机
M
^
\hat{M}
M^的反例字符串
γ
γ
γ作为输入,输出为在分类树
T
T
T中标记新的Access Strings, 具体的流程如下:
Procedure Update-Tree(
γ
γ
γ,
T
T
T):
- 对于
γ
γ
γ的每个前缀
γ
[
i
]
γ[i]
γ[i]:
- s i s_i si← S i f t ( s b , T ) Sift(sb,T) Sift(sb,T)
- 令 s ^ i = M ^ [ γ [ i ] ] \hat{s}_i = \hat{M}[γ[i]] s^i=M^[γ[i]]
- 令 j j j为 s i ≠ s_i \neq si= s ^ i \hat{s}_i s^i的 i i i最小值
- 将T中的Access Strings s j − 1 s_{j-1} sj−1替换为一个内部node和两个leaf node,内部node替换为Distinguishing String γ j d γ_ j d γjd, 左边的leaf node被替换为 s j − 1 s_{j-1} sj−1,右边的leaf node被替换为 γ [ j − 1 ] γ_ {[j-1]} γ[j−1]
有限自动机学习算法主程序
初始化
- 对字符串 λ λ λ执行membership query,以确定 M M M的开始状态是接受还是拒绝
- 构建一个假设自动机 M ^ \hat{M} M^,该自动机仅由单一(接受或拒绝)状态组成,并标明0和1状态转移
- 在假设自动机 M ^ \hat{M} M^上进行equivalence query,找到counterexample string γ γ γ
- 初始化分类树T,根node标记为 Distinguishing String λ λ λ,两个叶node标记为 Access String λ λ λ 和counterexample string γ γ γ
主循环
- 设T为当前的分类树
- M ^ \hat{M} M^← Tentative-Hypothesis(T)
- 对 M {M} M进行等价查询,如果与目标等价,则输出 M ^ \hat{M} M^并停止。否则,设 γ γ γ为反例字符串。
- Update-Tree( γ γ γ, T T T)
- 重复主循环
示例
算法Learn-Automaton在3 mod 4计数器目标自动机上的示例执行。