【问题标题】:Union of languages accepted by FSA's without epsilon transitionsFSA 接受的没有 epsilon 转换的语言联盟
【发布时间】:2017-05-04 15:56:43
【问题描述】:

我一直在尝试在不使用 epsilon 转换的情况下将两个有限状态自动机的并集形式化。我想为新的自动机创建一个新的初始启动状态,并从这个新的启动状态通过复制这些转换从单独的自动机的启动状态创建到可达状态的转换。

给定一个 FSA

M1 = <Σ1, Q_1, q0_1, ->_1> 

其中 Σ1 = 字母表,Q_1 是状态集,q0_1 是起始状态,->_1 是 M1 的转换。

给定另一个 FSA

 M2 = <Σ2, Q_2, q0_2, ->_2>  

其中 Σ2 是字母表,Q_2 是状态集,q0_2 是开始状态,->_2 是 M2 的转换。

现在我已将 FSA M+ = M1 ∪ M2 定义为 FSA:

 M_+ = <Σ+, Q_+, q0_+, ->_+>
 Σ+ = Σ1 ∪ Σ2 - alphabet of both
 Q_+ = Q_1 ∪ Q_2 ∪ {q0_+},
 q0+ is the new initial start state 
 ->_+ = ->_1 ∪ ->_2 ∪ ->_C

我在定义 ->_C - 到 M1 和 M2 的可达状态的新转换时遇到了麻烦。我将 ->_C 的类型定义为:Q x 2^Σ x 2^Q。 它必须是一个集合,但是我不确定如何正式定义它。任何帮助将不胜感激。

【问题讨论】:

  • 你想要一台机器 M+ 使得 L(M+) = L(M1) U L(M2),还是别的什么? stackoverflow.com/a/7798776/847269 会回答你的问题吗?
  • 您好,感谢您的回复。我只想知道如何通过从以前的开始状态(q0_1 和 q0_2)复制它们的转换来定义从新开始状态到 M1 和 M2 状态的转换

标签: css discrete-mathematics finite-automata automata


【解决方案1】:

为什么是 Q x 2^Σ x 2^Q ?更好的 Q x Σ x 2^Q;转换是为每个可能的字母单独定义的。否则你不知道哪个状态属于哪个字母。

->C := { (q0+,x,P) : (q0_1,x,P) \in ->_1 OR (q0_2,x,P) \in ->_2 }

【讨论】:

  • 您好,感谢您的回复,我想要一个适合上图中自动机转换的定义。我的尝试如下:--->C = {(q0_+, A, q1) | (q0_1,A,q2) \in ->_1 AND (q0_1,B,q2) \in ->_2}.....但是我的问题是这不能同时处理 A 和 B,而只能处理 A。
  • 注意什么是变量,什么是字母。在您的图表中,A 和 B 是字母。在我的 ->_C 定义中,x 是一个变量,因此可以处理所有字母。您在评论中的版本有点不清楚。在 ->_2 中不能有从 q0_1 到 q_2 的任何转换,因为状态来自第一个自动机。如果你想使用字母而不是变量,你真的必须为每个字母分别定义集合并取并集。
猜你喜欢
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
相关资源
最近更新 更多