Regex 正则表达式。规则的还是不规则的?

Regex 正则表达式。规则的还是不规则的?,regex,regular-language,Regex,Regular Language,我只是想对这些表达式,以及它们是不规则的还是规则的,有第二点看法 {0^n 1^m | n>=m>=0}常规 {0^n 1^m | n,m>=0}*常规 {0^n0^n | n>=0} 有人能证实这是真的吗?{0^n 1^m | n>=m>=0}由于FSM无法跟踪n是什么以确保n>=m,所以FSM不能表示表达式 {0^n 1^m | n,m>=0}*--FSM似乎可以表示这一点,但存在一些问题。与第一个问题不同,n和m彼此无关,因此没有FSM创建问题。问题是n和m必须在多次通过机器时保持不变。同

我只是想对这些表达式,以及它们是不规则的还是规则的,有第二点看法


{0^n 1^m | n>=m>=0}
常规

{0^n 1^m | n,m>=0}*
常规

{0^n0^n | n>=0}


有人能证实这是真的吗?

{0^n 1^m | n>=m>=0}
由于FSM无法跟踪n是什么以确保n>=m,所以FSM不能表示表达式

{0^n 1^m | n,m>=0}*
--FSM似乎可以表示这一点,但存在一些问题。与第一个问题不同,n和m彼此无关,因此没有FSM创建问题。问题是n和m必须在多次通过机器时保持不变。同样,由于没有内存,这是不可能的


{0^n0^n | n>=0}
——这对于FSM也很简单。它看起来很像第二个问题的FSM。RE是
(00)*

{0^n1^m | n>=m>=0}
,因为FSM无法跟踪n是什么以确保n>=m,所以FSM不能表示表达式

{0^n 1^m | n,m>=0}*
--FSM似乎可以表示这一点,但存在一些问题。与第一个问题不同,n和m彼此无关,因此没有FSM创建问题。问题是n和m必须在多次通过机器时保持不变。同样,由于没有内存,这是不可能的


{0^n0^n | n>=0}
——这对于FSM也很简单。它看起来很像第二个问题的FSM。RE是
(00)*

似乎你应该把这个标记为家庭作业。哦,对不起,我是新来的,我不知道有一个hw标记。你能证实这一点吗?或者你只是来批评我对网站的运作方式一无所知?你说的是一个从未使用过的M。我认为你需要校对你的问题。当你只有
n
s时,你为什么要提到
M
?我不明白为什么第三个是不规则的。我猜你的意思是‘n’0s后面跟着另一个‘n’零,或者只是‘m’零,其中m=2n,这显然是正常的。看起来你应该把这个标记为家庭作业。哦,对不起,我是新来的,我不知道有一个hw标记。你能证实这一点吗?或者你只是来批评我对网站的运作方式一无所知?你说的是一个从未使用过的M。我认为你需要校对你的问题。当你只有
n
s时,你为什么要提到
M
?我不明白为什么第三个是不规则的。我假设你的意思是‘n’0s后跟另一个‘n’零,或者仅仅是‘m’零,其中m=2n,这显然是规则的。我相信你可以为
{0^n 1^m | n,m>=0}*
创建一个FSM,就像我们可以为
0^n
构建一个NFA,我们可以为
1^m
构建一个NFA一样。因此,尽管合并,我们可以为
0^n 1^m
构建NFA,因此将kleene闭包应用于合并很简单。似乎我们可以将其表示为RE
(0 | 1)*
@Bodyloss-如果不是因为最后的kleene星,你是对的。问题是,当你从第二个FA(1^m)循环回到第一个FA时,n和m的值必须保持与第一次通过机器时相同——如果没有内存,这是不可能的。噢,说
n,m>=0
是否意味着当我们通过机器时,
n=m
?如果不是,那么你肯定可以用汤普森构造法构造
A*
其中
A={0^n1^m | n,m>=0}
?它并不是说n=m(如果是这种情况,那么只有一个变量)。这意味着,无论它们是什么值,在机器的一次执行中,每次通过机器的身体时,它们都是恒定的。假设输入字符串为001001;你建议的那台机器很容易通过。但是,目标机器必须拒绝00101(例如,允许00110011但拒绝001101)。我相信您可以为
{0^n 1^m | n,m>=0}*
创建一个FSM,因为我们可以为
0^n
构建一个NFA,也可以为
1^m
构建一个NFA。因此,尽管合并,我们可以为
0^n 1^m
构建NFA,因此将kleene闭包应用于合并很简单。似乎我们可以将其表示为RE
(0 | 1)*
@Bodyloss-如果不是因为最后的kleene星,你是对的。问题是,当你从第二个FA(1^m)循环回到第一个FA时,n和m的值必须保持与第一次通过机器时相同——如果没有内存,这是不可能的。噢,说
n,m>=0
是否意味着当我们通过机器时,
n=m
?如果不是,那么你肯定可以用汤普森构造法构造
A*
其中
A={0^n1^m | n,m>=0}
?它并不是说n=m(如果是这种情况,那么只有一个变量)。这意味着,无论它们是什么值,在机器的一次执行中,每次通过机器的身体时,它们都是恒定的。假设输入字符串为001001;你建议的那台机器很容易通过。但是,目标机器必须拒绝00101(例如,允许00110011但拒绝001101)。