Regex 如何定义“一个”呢;“语言”;使用正则表达式?

Regex 如何定义“一个”呢;“语言”;使用正则表达式?,regex,math,Regex,Math,我想用正则表达式定义“某种语言”。这些要求是: 语言必须包含无限多的字符串 基础字母表必须至少有三个不同的字符 我还需要画一个接受该语言字符串的确定性有限状态自动机 给出有限状态自动机接受的两个字符串和不接受的两个字符串 鉴于这一系列要求,到目前为止(基于我对集合论及其相关数学的20年记忆),我提出了以下建议,并希望集合论、正则表达式和形式语言定义专家提供一些意见(我知道你们中有许多人对这门学科有着浓厚的既得利益) 以下内容是否至少接近于实现(1)和(2)?(4)实际上意味着什么?例如,根据要求

我想用正则表达式定义“某种语言”。这些要求是:

  • 语言必须包含无限多的字符串
  • 基础字母表必须至少有三个不同的字符
  • 我还需要画一个接受该语言字符串的确定性有限状态自动机
  • 给出有限状态自动机接受的两个字符串和不接受的两个字符串
  • 鉴于这一系列要求,到目前为止(基于我对集合论及其相关数学的20年记忆),我提出了以下建议,并希望集合论、正则表达式和形式语言定义专家提供一些意见(我知道你们中有许多人对这门学科有着浓厚的既得利益)

    以下内容是否至少接近于实现(1)和(2)?(4)实际上意味着什么?例如,根据要求(1),如果集合(理论上)可以容纳无限多个字符串,那么我们如何满足要求(4),即“给定两个被(FSA)接受的字符串和两个不被接受的字符串”

    我目前(相当容易出错)的解决方案是:

    字母表:

    ∑ = {s,a,e,t,n}
    
    语言:

    L* = { Ø , ∈ , taste, set, ate, sane, ….} 
    
    或(使用正则表达式)

    有人要吗


    谢谢。

    首先,正则表达式
    [saetn]*
    将接受您选择的字母表上的所有字符串,因此您将无法找到两个不在该语言中的字符串(该语言为
    L=∑*
    ),并且无法满足要求(4)

    不是有效的语言,因为语言不能包含
    Ø
    。空集不是字符串(语言是一组字符串,而不是一组集合)。让我们删除
    Ø

     L = { ε , taste, set, ate, sane, ...} 
    

     L = { ε , taste, set, ate, sane } 
    
    以下内容是否至少接近于实现(1)和(2)

    它不满足(1),因为没有合理的模式使
    具有任何意义。语言看起来是有限的


     L = { ε , taste, set, ate, sane } 
    
    将是一种有效的有限语言,其中
    ε
    表示空字符串。所有有限语言都是正则的,因为您可以创建一个表达式,该表达式是该语言中所有字符串的
    | taste | set | ate | sane

    当您选择字母表
    ∑ = {s,a,e,t,n}
    ,它有5个元素


     L = { ε , taste, set, ate, sane } 
    
    (4)实际上意味着什么

    这意味着语言不能包含字母表中的所有字符串。
    ∑*
    中必须至少有两个字符串不在该语言中,并且必须显示它们是什么。这并不妨碍语言的无限性

    无限语言的一个例子是:

    L = { ε, s, a, t, ss, aa, tt, sss, aaa, ttt, ssss, ... }
    
    该语言(在字母表
    {s,a,t}
    上)包含不超过一个不同字符的所有字符串。接受这种语言的正则表达式是
    s*| a*| t*
    。语言显然是无限的,任何包含两个不同符号的字符串,如
    at
    sat
    都不在语言中。该语言满足所有要求。还有许多其他语言可以满足所有要求


    我将把DFA的图纸留给你。如果您对此有任何疑问,请随时对我的答案发表评论。

    [saetn]*
    表示“[]中的任何字符为零或更多”。换句话说,你的正则表达式将允许
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss。我今天处于学习模式。请随时为该错误提供正确的解决方案。好吧,只允许您在其中的单词
    (taste | set | ate | sane)*
    。“零或更多的(味道、设置、吃或理智)”啊哈!谢谢你!我现在想知道如何将集合限制在这些词上,才能与(1)中的“无限字符串”要求相适应……这个问题似乎是离题的,因为它是关于理论计算机科学,而不是编程。它应该去感谢你保尔专业!!很好,我的直觉引导我专注于单个字符/字母,而不是单词,因为这不会促进基于字符/字母集的无限阅读。太感谢你了!我从90年代初就没有做过这些,甚至不再编写(C++)程序。所以,非常生锈。教授冥想和瑜伽,对我的智力/认知过程也不是好兆头。我用JFLAP做DFA。期待它!:)**非常感谢你。。保普!喜欢你在我的方法中隔离所有问题并提出解决方案的方式。惊人的天才!