最近研究模型学习,其中最经典的算法应该是Angluins L*算法,发现中文的资料实在太少,所以弄一个简单点的教程来说明这个算法。
这个算法的目标:构造DFA或者Mealy automate,使之同一个Black system吻合。这个算法假定了一个“teacher”的角色,他是先知,知道这
个黑盒SUL的一切。在构造过程中我们可以问老师二种类型的问题。一是称为membership query成员查询, 对于构造Mealy automate来说就是输入
某个字串,SUL输出什么?(对于DFA来说,对应于回答这个字串是否被SUL接受,如果接受输出1,否则为0);第二种称为equivalence query(等
价查询),即目前构造的DFA或者Mealy自动机和SUL是否等价,如果等价,则Teacher回答yes,否则也返回一个反例字串,来说明他们的不同。
说这个算法前,我先说说我对“Teacher”的理解,默认构造Mealy自动机,举例:一台电视机,把他当做SUL,则你的按键操作(输入)都能得
到一个可见的显示效果(输出),所以成员查询是很简单的就能实现;而对于等价查询,只要穷举所有的按键操作的组合,如果都符合,则等价,回答
yes,否则就把对应的不同的按键组合返回出去就可以了。所以Teacher这个角色是可行的。【这个算法唯一值得商榷的地方就是他的普适性,这个黑