【问题标题】:DFA and Regular ExpressionDFA 和正则表达式
【发布时间】:2018-04-16 22:17:54
【问题描述】:

当句柄处于“关闭”状态时,程序不应写入连接句柄。一开始,连接将处于“已连接”状态,但当“断开”事件后跟“写入”事件时,它可以移动到“错误”状态。 “重新连接”事件将连接移回“已连接”状态,其中允许“写入”操作。多次断开连接、重新连接和写入是多余的,这意味着第二次连续操作无效。

将其建模为正则表达式和 DFA?

我认为 DFA 有 4 个状态:连接、断开连接、写入、错误以及它们的三种可能移动(连接、写入和断开连接),但不知道正则表达式。

【问题讨论】:

    标签: regex regular-language automata computation-theory dfa


    【解决方案1】:

    我的解读略有不同,分为三种状态:

    1. 打开
    2. 关闭
    3. 错误

    和三个字符/过渡

    1. 写
    2. 断开连接
    3. 重新连接

    DFA 为

    这里我假设我们不能让套接字保持打开状态,所以只有closed 是接受状态

    我们可以忽略error(无法摆脱error 状态,因为我们希望这些字符串失败)

    假设我们从open状态开始,需要接受任意数量的write和reconnect转换,然后一个或多个disconnect转换断开

    [wr]*d+
    

    但我们也可以从断开状态重新连接。请注意,上面接受r 作为第一个字符。我们最终的正则表达式是

    ([wr]*d+)+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-21
      • 2017-02-09
      • 2020-03-23
      • 1970-01-01
      • 2015-07-15
      • 2013-10-28
      • 2013-07-04
      • 2019-05-05
      相关资源
      最近更新 更多