Anguins L* Simple Case Study

一、介绍OT表

Anguins L* Simple Case Study_第1张图片

图1 OT表简介
闭包性:形象的理解就是辅助行区域T(S∪I)在T(S)中,否则就在S域中添加 SUI中不包含在原S域中对应的行标签及其所有前缀
一致性:就是指如果S域中二个行标签如果对应的值相同,则其加入同一个基本字a作为后缀,其值也要相同,否则为了区别这两个状态,需要在E中添加这a∪e。

二、学习过程

Anguins L* Simple Case Study_第2张图片

由于学习过程的前提是有一个被测系统(黑箱),所以需要首先构建,并且确认输入输出。
已知:被测系统SUI,输入表

Anguins L* Simple Case Study_第3张图片

输入基本字:{a,b}
(1)初始化OT表
表1 三四行辅助行区域,三四行的行标签a,b为输入基本字的集合。第二行为状态行区域

O 1 O_1 O1 a b
ε A B
a A B
b A B

检查一致性与闭包性,符合S域的每一个行标签对应为一个状态,然后直接看对应的E区域的列标签(即基本字)所得到的值(即该基本字所对应的输出)。

图5 当前学习下的状态图
(2)完善OT表
构造好之后,询问teacher,teacher返回不对和一个反例。字串bba,SUL输出是C,而你输出是A,这个时候,算法就将 bba这个字串及其所有前缀添加进OT表的S域
表2 将bba字串及其所有前缀添加进OT表的状态区域

O 2 O_2 O2 a b
ε A B
b A B
bb C B
bba A B
a A B
b A B

当然同时要需要更新辅助域,规则就是S∪I(S是状态行区域,I是基本字集合)即可然后重新经过成员查询得到OT表的值,如下图所示:
删除辅助域中的最后一行,计算{ε, b, bb, bba} 与 {a, b}的并集
表3 更新后的OT表

O 2 O_2 O2 a b
ε A B
b A B
bb C B
bba A B
a A B
ba A B
bbaa A B
bbb C B
bbab C B

T(S∪I)都包含于T(S),所以是闭包的,但是检查一致性的时候发现,在S域T(ε)和T(b)都一样是AB,可是其加上同一个后缀b,这个时候T(b)和T(bb)不同,一个是A B,一个是C B,所以不满足一致性,则需要在E中添加b∪e即ba

O 3 O_3 O3 a b ba
ε A B A
b A B C
bb C B C
bba A B C
a A B A
ba A B A
bbaa A B A
bbb C B C
bbab C B C

最后构造状态图

总结

整个流程需要代码模拟,但现有代码不能运行,只能看着代码结合论文构造,而且学习过程中需要向被测系统发送输入,接收输出,没有实际系统的话只能模拟它会返回什么。

整个算法的流程大体如上

你可能感兴趣的:(算法)