我正试图弄清楚无限的语言改变答案。

显示以下语言是可解除的: $$ l={\ langle a,b \ rangle:\ text {$ a,b $是dfas,$ l(b)$是有限的,$ l(a) / l(b)= l(0 ^ * 1 ^ *)$} \}。$$

(我在谈论正确的分裂。)

我们知道如何检查DFA的语言是否有限,给出了两个DFA,我们知道如何检查他们的语言是否相等。我知道上述问题的算法使用DFA,因此有必要具有DFA来决定这些问题。

我试图弄清楚<跨度类=“math-container”> $ | l(b)|=idty $ 更改答案。据我所知,因为 $ | l(b)| <\ idty $ ,我们可以显式构造一个接受 $ l(a)/ l(b)$ ,而if如果 $ l(b)=infty $ 我们所知道的是关于存在的 $ dfa $ 接受 $ l(a)/ l(b)$

但是,即使 $ l(b)$ 是无限的语言,因为有一个有限数量的DFA,其中一个接受 $ L(a)/ l(b)$ ,我肯定知道有一个图灵机决定语言 $ l $ 。 右?

有帮助吗?

解决方案

你真正的要求是给定自动机 $ a,b $ ,我们可以构建一种自动机,他们的语言是左额字 $$ l(a)\ backslash l(b)={w:\存在x \ in \ sigma ^ * \ text {s.t. x \在l(a)\ text {和} xw \中l(b)\}。 $$ (问题有同于转到正确的商品,可以类似地处理。)

这里是这样的结构。假设 $ a,b $ 是dfas与状态 $ q_b $ ,初始状态 $ q_ {0a},q_ {0b} $ ,转换函数 $ \ delta_a,\ delta_b $ 和最终状态 $ f_a,f_b $ 。我们使用状态构建NFA $ q=(\ {0 \} \ times q_a \ times q_b)\ cup(\ {1 \} \ times q_b)$ ,初始状态 $ \ langle 0,q_ {0a},q_ {0b} \ rangle $ ,最终状态 $ \ {1 \} \ times f_b $ ,以及以下转换函数 $ \ delta $

  • $ \ delta(\ langle 0,q_a,q_b \ rangle,\ epsilon)={\ langle 0,\ delta_a(q_a,\ sigma),\ delta_b(q_b ,\ sigma)\ rangle:\ sigma \ in \ sigma \} $ 为所有 $ q_a \ in q_a \ setminus f_a $ $ q_b \在q_b $ 中。
  • $ \ delta(\ langle 0,q_a,q_b \ rangle,\ epsilon)={\ langle 0,\ delta_a(q_a,\ sigma),\ delta_b(q_b ,\ sigma)\ rangle:\ sigma \ in \ sigma \} \ cup \ {\ langle 1,q_b \ rangle \} $ 对于所有 $ q_a \在f_a中$ $ q_b \在q_b $ 中。
  • $ \ delta(\ langle 1,q_b \ rangle,\ sigma)={\ langle 1,\ delta_b(q_b,\ sigma)\ rangle \} $ 对于所有 $ \ sigma \ in \ sigma $ $ q_b \在q_b $ 中。

其他提示

这是一个问题的不同版本,其中有问题的语言是 $ l(a)\ setminus l(b)$

这是一个用于决定 $ l $

的算法

  • 使用产品构造构建DFA $ C $ ,其语言是 $ l(a)\ setminus l( b)$
  • let $ d $ 是一种dfa,其语言是 $ 0 ^ * 1 ^ * $ 。< / li>
  • 使用产品施工再次构建DFA $ E $ ,其语言是 $ l(c)\ delta l (d)$
  • 检查(使用bfs / dfs)是否从其初始状态访问的 $ e $ 的某些最终状态。
  • 如果从初始状态无法访问最终状态,则输出“是”。否则输出“否”。

正如您所看到的,沿途遇到的语言是有限的还是无限的,对于该算法来说绝对没有差异。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top