表明,对于任何语言 L1 和 L2,我们有 (1)。 L1L1^* = L1^*L1L1^*

Show that, for any languages L1 and L2, we have (1). L1L1^* = L1^*L1L1^*

我正在学习自动机理论和形式语言,对如何从我的 HW 中计算出 #3 感到困惑。 link to HW 提供如下:https://www.eecs.wsu.edu/~zdang/c317/Assignments/homework1.pdf

对于 3.1 我知道 L1L1^* 与说 L1^* L1L1^* 本质上是一样的,但不知道如何表达。我可以说如果我将两边除以 L1 我们有 L1^* = L1^* L1^* 因此 L1^* = L1^* 吗?

对于 3.2,我们得到方程 (L1^* L2)^* = (L1 + L2)^* 。为了证明右手边,我知道我们可以采用 L1^*,然后一遍又一遍地使用 L2,使其与左手边相同。我又一次不确定如何表达这个。

如有任何帮助,我们将不胜感激。

要显示 L1L1* = L1*L1L1*,我们需要显示 L1L1* 包含 L1*L1L1* 中的所有内容,反之亦然。

  • L1L1* 包含 L1*L1L1* 中的所有内容。后者包含 L1^aL1L1^b 中所有非负整数 a 和 b 的字符串。通过串联的结合性,我们可以将 L1^aL1L1^b 重写为 L1L1^(a+b) ,它必须在 L1L1*.

  • L1*L1L1* 包含 L1L1* 中的所有内容。后者包含 L1L1^b 中的字符串。通过求幂的零,我们有 L1^0 = {空字符串},通过语言连接和字符串与空字符串的连接,我们可以看到 L1^0L1L1^b = L1L1^b。但是 L1^0L1L1^b 在 L1*L1L1* 中,选择重复第一个 L1* 零次。

(L1*L2)* = (L1+L2)* 不正确。要看到这一点,只需注意后者包含 L1 中的所有内容,而后者不包含(对于非平凡的 L2)。也就是说,可以通过仅重复一次然后选择 L1 从后者获得 L1,但是要从前者获得任何 L1,我们必须至少重复一次,这迫使至少有一个 L2。