【问题标题】:I'm trying to solve DFA我正在尝试解决 DFA
【发布时间】:2017-09-14 12:26:23
【问题描述】:

我必须做 L1 U L2 和交叉点 L1 n L2

【问题讨论】:

  • 这是一道数学题。不会编程!?

标签: automata dfa nfa


【解决方案1】:

您可以运行正式的笛卡尔积机器构造,以算法推导出 L1 和 L2 的交集和并集的自动机。但是,由于这些语言非常简单,因此提供语言并为每种语言写下 DFA 可能会更简单。

L1 是所有至少有一个 a 的 as 和 bs 字符串的语言。 L2是所有至少有两个b的as和bs字符串的语言。

要接受L1和L2的交集,我们至少需要看到一个as和两个bs。下面,我们有六个状态:

  1. q0,初始状态,我们需要一个 a 和两个 bs
  2. q1,我们还需要两个 bs
  3. q2,我们还需要一个 b
  4. q3,我们不再需要(接受状态)
  5. q4,我们仍然需要一个 a 和一个 b
  6. q5,我们还需要一个a

    --->q0-a->q1-b->q2-b->q3 -b->q4-a->q2 q3 -b->q5-a->q3

(缺少转换的地方,它们是自循环)

请注意,有六个状态:这与我们分别在两个和三个状态的原始 DFA 上进行笛卡尔积机器构造相同。

对于联合,我们可以使用完全相同的 DFA,并将接受状态集更改为 q1、q3、q5。这捕捉到了这样一个事实,即当任一条件为真时我们现在接受(并且状态 q1 和 q5 是其中一个,但不是两个(如在 q3 中)条件都满足)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2014-02-08
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多