美文网首页
NFA-->DFA-->最小化DFA

NFA-->DFA-->最小化DFA

作者: Nibnat | 来源:发表于2015-02-08 23:23 被阅读4858次

心得:按照步骤来走,不会走就别跑,搞得纠结半天为什么简化不了,原来是自己拿着NFA在简化。

题目:

考虑正则表达式who|what|where。使用Thompson构造法,从这个正则表达式构建一个NFA。使用子集构造法,从生成的NFA构建一个DFA。并最小化这个DFA。
首先构造出NFA,然后用Graphviz画出图形。
重点:正则表达式转NFA(Thompson算法)
dot代码如下:

digraph G {

S0->S1 [label = "w"];
S1->S2 [label = "h"];
S2->S3 [label = "o"];

S4->S5 [label = "w"];
S5->S6 [label = "h"];
S6->S7 [label = "a"];
S7->S8 [label = "t"];

S9->S10 [label = "w"];
S10->S11 [label = "h"];
S11->S12 [label = "e"];
S12->S13 [label = "r"];
S13->S14 [label = "e"];

S15->S0 [label = "NULL"];
S15->S4 [label = "NULL"];

S3->S16 [label = "NULL"];
S8->S16 [label = "NULL"];

S17->S9 [label = "NULL"];
S17->S15 [label = "NULL"];

S14->S18 [label = "NULL"];
S16->S18 [label = "NULL"];
}

生成的图片为:

Paste_Image.png

然后是确定化NFA,也就是NFA转DFA。
重点:NFA转DFA(子集构造法)
dot代码为:

digraph G {

I0->I1 [label = " w"];
I1->I2 [label = " h"];
I2->I3 [label = " e"];
I3->I6 [label = " r"];
{
    node [style = filled];
    I6->I8 [label = " e"];
}

{
    node [style = filled];
    I2->I4 [label = " o"];
}
I2->I5 [label = " a"];
{
    node [style = filled];
    I5->I7 [label = " t"];
}
}

图片为:

Paste_Image.png

无需进行DFA简化。

相关文章

  • NFA-->DFA-->最小化DFA

    心得:按照步骤来走,不会走就别跑,搞得纠结半天为什么简化不了,原来是自己拿着NFA在简化。 题目: 考虑正则表达式...

  • DFA的最小化算法

    Hopcroft算法 首先划分终态集和非终态集,之后不断进行划分,直到不再发生变化。每轮划分对所有子集进行。对一个...

  • DFA确定化和最小化

    从正规式开始 一、先将正规式转换成NFA 通过下面的对应法则将正规式转换成NFA 例如: 二、再将NFA转成DFA...

  • 编译原理一

    编译原理 正规式或NFA到DFA最小化 四元式DAG图的优化,根据要求写出优化结果翻译到目标代码 给你文法,给你句...

  • 无标题文章

    fas fdsaf safa sdf dfa fasfaklfa fasd fa fa f afaf a dfa ...

  • d

    dfa a

  • 无标题文章

    dfa

  • 第二章第7节 识别单词的DFA

    //mark: 这一节很迷 识别标识符的DFA image.png 识别无符号的DFA 识别无符号数的DFA 识别...

  • 浅谈KMP中DFA

    KMP的DFA理解对新手来说还是很比较费劲自动机原理如下图 我们先说其怎么样利用DFA,然后再实现DFA 其中最重...

  • compute Shader

    resd1.dfa

网友评论

      本文标题:NFA-->DFA-->最小化DFA

      本文链接:https://www.haomeiwen.com/subject/ducjxttx.html