编译原理 – DFA 简单实现

作者: print("") 分类: 编译原理 发布时间: 2024-12-13 22:22

DFA 确定状态有限自动机
NFA 非确定状态有限自动机

目标实现如下的简单DFA的实现

代码如下:

'''
    DFA 的实现
    -->0 --a-->1 --a--> [2]
       b       b        a,b  

表如下
---------------------------------
|状态\字符| a       |  b        |
--------------------------------
|0        | 1       |0          |
---------------------------------
|1        | 2       |1          |
---------------------------------
|2        | 2       |2          |
---------------------------------
'''
class DFA:
    def __init__(self):
        self.dfa={
            "0":{
                "a":"1",
                "b":"0"
            },
            "1":{
                "a":"2",
                "b":"1"
            },
            "2":{
                "a":"2",
                "b":"2"
            }
        }
        #接受的状态是
        self.accept_status=["a","b"]

        #当前状态
        self.start="0"

        self.accept="2"
        

    #读取状态转移到另外的状态
    def read(self,str):
        if str in self.dfa[self.start]:
            self.start=self.dfa[self.start][str]
        
    def is_accept(self):
        return self.start ==self.accept


def start_dfa(strs):
    dfa=DFA()
    for str in strs:
        dfa.read(str)
    return dfa.is_accept()


print(start_dfa("bbbbbbabca"))

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注