繁体   English   中英

给定一个文件如何生成只接受文件中存在的那些单词的NFA?

[英]Given a file how to generate an NFA that accepts only those words present in the file?

给定任何文档,我希望能够生成仅接受文档中存在的那些词的NFA。 基本上,我想编写一个能够从任何文档动态生成NFA的函数。 是否有任何预先存在的算法已经这样做了?

如果您想要的只是一个没有要求的NFA,那么构造几乎是微不足道的。

对于每个单词w,使用| w |在NFA中创建一个不同的分支 + 1个状态(不包括初始状态)。 从开始状态开始,将空转换添加到第一个状态,然后在w的第n个字符上添加从第n个状态到第n + 1个状态的转换。 使| w | +第1个州接受。

这将为您提供一个DFA,其状态与文件中的符号+单词一样多。 如果你想要更少的状态,你可以通过为所有单词中的所有第一个字母创建第一个“图层”,为所有单词中的所有第二个字母创建第二个“图层”等来做更多分层的事情,并从图层中的状态添加过渡如果存在使转换有效的单词w,则n到层n + 1中的状态。 事实上,如果你这样做,你最终会得到一个DFA,它也可能是最小的(运动:证明或反驳这一点)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM