为什么是 {a^n a^n | n >= 0} 正则?

Why is {a^n a^n | n >= 0} regular?

我理解 {a^n b^n | n >= 0} 不规则的原因和证明。 Why is {a^nb^n | n >= 0} not regular?

我的一个习题的解法是:{a^n a^n | n >= 0}正则。我怎样才能证明这个论点?

是,语言{an an | n >= 0} 是常规语言。为了证明某种语言是正则的,可以画出它的dfa/regular表达式。您可以按如下方式为这种语言做驱动:

因为“a<sup>n</sup>a<sup>n</sup> for n >= 0”是相同的如“a<sup>2n</sup> for n >=0”,即 "set of all string contests of even number of symbol a" 即常规 — 正则表达式是 (aa)*.

注意,正则表达式只能用于正则语言,因此证明 {an an | n >= 0} 是一种常规语言。 DFA 将是:

我建议您阅读这篇文章 why languages like {an bn | n >= 0} are not regular

首先将定义更改为等效的 L = {a^2n | n >= 0}。现在观察任何属于 L 的字符串都是 2 a 的倍数。然后将该定义更改为 (aa)*,这是一个 正则表达式 ,因为它仅使用原语来表达常规语言 - 单个字符 (a)、连接 (aa) 和 Kleene 星 (*)。现在你完成了。