将NFA存储到数据结构中



我得到了一个NFA,我需要使用一个数据结构(我不能使用递归下降解析器(来存储它。一旦NFA存储在数据结构中,我就会得到一个字符串,根据给定的NFA检查该字符串是否有效。

有人能建议一个用于存储NFA的数据结构吗?此外,如果有任何开源c语言的例子会有很大帮助。

NFA只是一组三元组State x Input -> State。通常,用从0(或其他定义的起点(开始的连续范围内的一个小整数来表示状态是很方便的。输入符号也可以直接映射到小整数上(如果所有转换都是ascii字符,则为ascii代码(,或者在读取机器时保留清单。制作一个三元组列表是非常低效的,而制作一个哈希表则是大材小用;一个看似合理的中间体是一个二维数组。请记住,机器是非确定性,因此给定的[状态,输入符号]对可能映射到下一个状态的集合

您可以使用子集构造将NFA确定为DFA。这简化了数据结构,但它的大小也可能呈指数级增长。

最新更新