0

我需要帮助以正则表达式的方式解决。The language of all strings defined over Σ = {X, Y, Z} with Y as the third letter and Z being the second last letter.

4

3 回答 3

2

如果你被允许使用交集(它确实保持理性),我会简单地把它说成ΣΣYΣ* & Σ*ZΣ. 如果你将它提供给Vcsn以对其进行标准化,你会得到:

In [1]: import vcsn

In [2]: vcsn.B.expression('([XYZ]{2}Y[XYZ]*)&([XYZ]*Z[XYZ])').derived_term().expression()
Out[2]: (X+Y+Z)ZY+(X+Y+Z)(X+Y+Z)Y(X+Y+Z)*Z(X+Y+Z)

调用derived_term是从表达式构建一个自动机,最后一个调用expression是从这个自动机中提取一个有理表达式。

于 2015-05-22T07:23:38.583 回答
1

给定 Σ = {X, Y, Z} ,您需要构建在其上定义的所有字符串的语言,其中 Y 为第三个字母,Z 为倒数第二个字母。

"ΣΣYΣ*ZΣ | ΣZY" 将是所需的正则表达式。

Σ* 的所有字符串都是 Σ 的 0 个或多个字符串的串联。

如您所见,这里 Y 是第三个元素,Z 位于倒数第二个位置。而且,Σ 可以替换为 X、Y 或 Z 元素中的任何一个。

于 2015-05-22T06:40:57.913 回答
-1

我认为正则表达式应该是这样的......

(x+y+z)zy(x+y+z)^*
于 2015-05-22T07:26:50.860 回答