DFA 和正则表达式

拉胡尔

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

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

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

帕特里克·豪

我读起来略有不同,有三种状态:

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

和三个字符/过渡

  1. 断开
  2. 重新连接

DFA 为 DFA

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

我们可以忽略error(没有办法摆脱error状态,因为我们想让这些字符串失败)

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

[wr]*d+

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

([wr]*d+)+

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章