Skip to content

一个通过子集构造法将NFA转换为DFA的程序

Notifications You must be signed in to change notification settings

HAoYifei996/NFA-DFA-Converter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

NFA-DFA Converter

子集构造法

子集构造法是计算机系本科课程“编译原理”中所涉及的一种将不确定的有穷自动机自动机(NFA)化为确定的有穷自动机(DFA)的方法。原理详见编译原理(龙书)。

代码功能

NFA以带权有向图的形式并hard code在程序中。使用时可根据所需要转换的NFA修改代码中原有的图。程序根据存入的图进行向DFA的转换并输出。
目前,程序默认NFA仅有两种输入,若之后课程涉及更多输入将进行修改。

Get Started

运行subsect_create.py即可。

输出解释

目前代码中的图将会产生如下输出

A: [0, 1, 2, 4, 7]
B: [1, 2, 3, 4, 6, 7, 8]
C: [1, 2, 4, 5, 6, 7]
D: [1, 2, 3, 4, 6, 7, 8, 9]
E: [1, 2, 4, 5, 6, 7, 9]
F: [1, 2, 3, 4, 6, 7, 8, 9, 10]
G: [1, 2, 4, 5, 6, 7, 9, 10]
H: [1, 2, 3, 4, 6, 7, 8, 10]
I: [1, 2, 4, 5, 6, 7, 10]


['A']: ['B'], ['C']
['B']: ['D'], ['E']
['C']: ['B'], ['C']
['D']: ['F'], ['G']
['E']: ['H'], ['I']
['F']: ['F'], ['G']
['G']: ['H'], ['I']
['H']: ['D'], ['E']
['I']: ['B'], ['C']

字母表示新的DFA中的状态,第一部分列出了新状态所包含的原状态,第二部分表示每个状态的转换表。第二列即为第一个输入下的转换,第三列为第二个输入下的转换,据此可画出DFA图。

本代码目前还不支持最小化DFA功能。

About

一个通过子集构造法将NFA转换为DFA的程序

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages