Questions tagged «regular-languages»

有关常规语言和个别语言的类的属性的问题。


4
为什么在正则表达式中没有排列?(即使普通语言似乎能够做到这一点)
问题 没有简单的方法来获取正则表达式的排列。 排列:将单词 (“ aabc”)转换为另一个顺序,而无需更改数字或字母种类。w = x1个… xñw=X1个…Xñw=x_1…x_n 正则表达式:正则表达式。 进行验证: “不重复的正则表达式排列”假设这样做会更简单,那么答案将创建JavaScript代码而不是正则表达式。 “如何查找给定文本中给定单词的所有排列” –答案也不使用正则表达式。 “正则表达式匹配所有{1,2,3,4}而不重复” –答案使用了正则表达式,但它既不适应也不简单。 这个答案甚至声称:“正则表达式不能满足您的要求。它不能从字符串生成排列”。 我正在寻找的解决方案 它应具有以下形式: »aabc«(或其他任何可以使用左括号和右括号的内容) (aabc)!(类似于(abc)?,但最后还有另一个符号) [aabc]!(类似于[abc] +,但最后还有另一个符号) 这些解决方案的优势 他们是: 简单 适应性强 可重用 为什么这应该存在 正则表达式是描述常规语言语法的一种方式。他们完全有能力成为任何一种常规语言。 假设常规语言功能强大,可以进行排列(下面有证明)–为什么没有简单的方法来表达这一点? 所以我的问题是: (为什么)我的证明错了吗? 如果正确:为什么没有简单的方法来表达排列? 证据 正则表达式是记录正则语言语法的一种方法。他们可以描述任何常规语言的语法。 描述任何常规语言(字母表中字母数量有限)的另一种语法是非确定性自动机(状态数量有限)。 具有有限数量的字母,我可以创建此自动机:(示例。正式形式:请参见下文) 接受“ abbc”排列的语法: (很抱歉上面的数字,也许有人知道如何使这部分看起来更好) s->ah¹ s->bh² s->ch³ h¹->bh¹¹ h¹->ch¹² h²->ah¹¹(没有错字!等价) h²->bh²² h²->ch²³ h³->ah¹² h³->bh²³ …

3
只能使用2个正则表达式操作无法表达的常规语言
我以为所有常规语言都可以用正则表达式表示(如果某种语言是常规语言,则可以用正则表达式表示),但是有人告诉我,您需要所有这三种常规运算(并置,并集和星号)举行。 例如,有人告诉我,如果我只能使用union和concatenation regex操作(3个中的2个),那将是我不能仅用这两个描述的常规语言。 与Kleene明星和工会相同。有哪些例子?

4
非常规的常规语言的联盟
我遇到了一个问题: “给出两种常规语言的示例,它们的并集不会输出常规语言。” 这让我感到非常震惊,因为我相信常规语言是在联盟下关闭的。对我来说,这意味着如果我使用两种常规语言并将它们结合起来,那么我必须获得一种常规语言。 而且我想我理解这一点的证明:用我的话来说,如果语言是规则的,则存在可以识别它们的自动机。如果采用所有状态(联合),并为入口点添加新状态,并使用epsilon修改新状态的转换函数,我们可以。我们还表明存在从每个状态等出发的路径。 您能告诉我哪里错了,或者可以用另一种方式解决这个问题。 问题的来源,练习4,法文。 同样,对交叉点也问相同的问题。

2
具有写保护输入的单带图灵机只能识别常规语言
这是问题所在: 证明不能在包含输入字符串的磁带部分上写入的单带图灵机只能识别常规语言。 我的想法是证明该特定TM等同于DFA。 使用此TM模拟DFA非常简单。 但是,当我想使用此DFA模拟TM时,会遇到问题。对于TM转换,DFA可以通过向右读取磁带并执行相同的状态转换来明确地模拟。δ(q,a )= (q′,a ,R )δ(q,a)=(q′,a,R)\delta(q,a)=(q',a,R) 对于,我无法弄清楚如何使用此DFA或NFA模拟左移,因为DFA仅向左读取且没有堆栈或要存储的东西。δ(q,a )= (q′,a ,L )δ(q,a)=(q′,a,L)\delta(q,a)=(q',a,L) 我应该考虑另一种方式吗?有人可以给我一些提示吗?谢谢。

2
如果
比方说,L⊆{0}∗L⊆{0}∗L \subseteq \{0\}^*。那么我们如何证明L∗L∗L^*是正规的呢? 如果LLL是规则的,那么当然L∗L∗L^*也是规则的。如果LLL是有限的,则它是规则的,而L∗L∗L^*也是规则的。另外我注意到,对于L={0p∣p is a prime}L={0p∣p is a prime}L = \{0^p \mid p \text{ is a prime}\},LLL是不是正规,L⊆{0}∗L⊆{0}∗L \subseteq \{0\}^*和L∗L∗L^*是有规律的。 但如何显示此为任何子集LLL的{0}∗{0}∗\{0\}^*?

3
NFA是否接受另一个NFA的子集,是否有有效的测试?
因此,我知道测试常规语言是否为常规语言的子集是可以确定的,因为我们可以将它们都转换为DFA,计算,然后测试该语言是否为空。小号ř ∩ ˉ 小号RRRSSSR∩S¯R∩S¯R \cap \bar{S} 但是,由于这需要转换为DFA,因此DFA以及测试算法可能就输入NFA中的状态数而言呈指数关系。 在多项式时间内有已知的方法吗?总的来说,该问题是否已被证明是Co-NP完整的? 请注意,问题出在Co-NP中,因为而不是接受的单词将是的多项式证明者。RRRSSSR⊈SR⊈SR \not \subseteq S 编辑:这是不正确的,因为不能保证这样的单词在状态数上将是多项式。

7
是常规的,如果是正常吗?
如果是规则的,是否遵循是规则的? AA2A2A^2AAA 我尝试证明: 是的,出于矛盾,假设不是规则的。然后。阿2 = 阿⋅ 甲AAAA2=A⋅AA2=A⋅AA^2 = A \cdot A 由于两种非常规语言的连接不是常规的,所以不能是常规的。这与我们的假设相矛盾。因此,是常规的。因此,如果是规则的,则是规则的。 A A 2 AA2A2A^2AAAA2A2A^2AAA 证明正确吗? 我们可以将其概括为,等吗?而且如果是规则的,那么不必是规则的吗?A3A3A^3A4A4A^4A∗A∗A^*AAA 示例:不是常规的,但是是常规的。A={12i∣i≥0}A={12i∣i≥0}A=\lbrace 1^{2^i} \mid i \geq 0\rbraceA∗A∗A^*

2
常规和非常规语言的相交和并集
令为常规,常规,为非常规。证明不规则或反例。L1L1L_1L1∩L2L1∩L2L_1 \cap L_2L2L2L_2L1∪L2L1∪L2L_1 \cup L_2 我试过了:看。这是正常的。我可以构造为这样的有限自动机:是规则的,是规则的,因此消除对所有的路径(有限量)从用于路径的有限量。因此,整个过程只剩下有限的路径。这个东西与不相交,但是我如何证明(正则)和(非正则)的并集不是正则?L1∖(L2∩L1)L1∖(L2∩L1)L_1 \setminus (L_2 \cap L_1)L1L1L_1L2∩L1L2∩L1L_2 \cap L_1L1∩L2L1∩L2L_1 \cap L_2L1L1L_1L2L2L_2L1∖(L1∩L2)L1∖(L1∩L2)L_1 \setminus (L_1 \cap L_2)L2L2L_2

2
是否可以有效确定所有无上下文和常规语言?
我碰到了该图,该图表明无上下文和常规语言是有效问题(假设为)的(适当)子集。我完全理解有效的问题是所有可确定问题的子集,因为我们可以解决它们,但可能需要很长时间。PP\mathrm{P} 为什么所有无上下文和常规语言都可以有效地确定?这是否意味着解决它们将不会花费很长的时间(我的意思是我们无需更多上下文即可知道)?

1
证明的补
我想证明使用闭包属性来对的补码不是常规的。{ 0ñ1个ñ| ñ ≥0 }{0ñ1个ñ∣ñ≥0}\{0^n1^n \mid n \geq{} 0\} 我了解泵引理可以用来证明不是常规语言。我也了解常规语言在补码操作下是封闭的。但是,这是否还暗示着非常规语言的补语也是非常规的?{ 0ñ1个ñ| ñ ≥0 }{0ñ1个ñ∣ñ≥0}\{0^n1^n \mid n \geq{} 0\}

3
为什么用联合,串联和星号运算定义正则表达式?
甲定期expresssion递归定义 aaa对某些a∈Σa∈Σa \in \Sigma是正则表达式, εε\varepsilon是一个正则表达式, ∅∅\emptyset是一个正则表达式, (R1∪R2)(R1∪R2)(R_1 \cup R_2),其中R1R1R_1和R2R2R_2是正则表达式是一个正则表达式, (R1∘R2)(R1∘R2)(R_1 \circ R_2),其中R1R1R_1和R2R2R_2是正则表达式是一个正则表达式, (R1)∗(R1)∗(R_1)^*其中R1R1R_1是正则表达式是正则表达式。 该定义摘自第64页的 西普瑟,迈克尔。计算理论导论,第三版。参与学习,2012年。 现在,我有以下问题。 为什么不定义包含intersection,complement或者reverse操作? 如果我们改变了第4项,我们得到一个等价定义,即,对于每个普通的语言,有修改的正则表达式,反之亦然?R1∩R2R1∩R2R_1 \cap R_2 我知道此定义是完整且定义明确的,但是为什么它比其他等效的,定义良好且完整的定义更可取呢?

1
测试语言是否正常的算法
是否有算法/系统程序来测试语言是否正常? 换句话说,在给定的代数形式指定的语言(想到像L={anbn:n∈N}L={anbn:n∈N}L=\{a^n b^n : n \in \mathbb{N}\}),测试语言是否正常。想象一下,我们正在编写一个Web服务,以帮助学生完成所有作业。用户指定语言,然后Web服务将以“常规”,“非常规”或“我不知道”进行响应。(我们希望Web服务尽可能不频繁地回答“我不知道”。)是否有任何好的方法可以自动执行此操作?这容易处理吗?是否可以确定(即是否可以保证我们永远不需要回答“我不知道”)?是否存在合理有效的算法来解决此问题,并且能够针对实际中可能出现的许多大多数语言提供“不知道”以外的答案? 证明语言不规则的经典方法是激进引理。但是,似乎需要在某些时候进行手动洞察(例如,选择要泵送的单词),因此我不清楚是否可以将其转化为算法。 证明一种语言正常的经典方法是使用Myhill-Nerode定理来推导有限状态自动机。这看起来是一种很有前途的方法,但是它确实需要能够以代数形式对语言执行基本操作。对于我来说,目前尚不清楚是否有系统的方法可以对代数形式的语言象征性地执行所有可能需要的操作。 为了使这个问题更好地解决,我们需要确定用户如何指定语言。我愿意提出建议,但我在想这样的事情: L={E:S}L={E:S}L = \{E : S\} 其中是一个单词表达式,S是一个在长度变量上的线性不等式的系统,具有以下定义:EEESSS 每个就是一个字表达。(这些代表可以在∑ ∗中包含任何单词的变量。)x,y,z,…x,y,z,…x,y,z,\dotsΣ∗Σ∗\Sigma^* 每个是一个字表达。(此处x r表示字符串x的反方向。)xr,yr,zr,…xr,yr,zr,…x^r,y^r,z^r,\dotsxrxrx^rxxx 中的每一个都是单词表达。(示例性地,Σ = { a ,b ,c ,… },因此a ,b ,c ,…表示基础字母中的单个符号。)a,b,c,…a,b,c,…a,b,c,\dotsΣ={a,b,c,…}Σ={a,b,c,…}\Sigma=\{a,b,c,\dots\}a,b,c,…a,b,c,…a,b,c,\dots 每是一个字表达式中,如果η是一个长度可变。aη,bη,cη,…aη,bη,cη,…a^\eta,b^\eta,c^\eta,\dotsηη\eta 单词表达的串联是单词表达。 每个的是一个长度可变。(这些代表可以采用任何自然数的变量。)m,n,p,q,…m,n,p,q,…m,n,p,q,\dots 每个是长度可变的。(这些代表相应单词的长度。)|x|,|y|,|z|,…|x|,|y|,|z|,…|x|,|y|,|z|,\dots 这似乎足以处理我们在教科书练习中看到的许多情况。当然,如果您有更好的建议,则可以用其他任何以代数形式指定语言的文本方法来代替。

4
无星级语言与常规语言
我想知道,由于本身是无星星的语言,是否存在不是非星星的常规语言?你能举个例子吗?a∗a∗a^* (摘自Wikipdia) Lawson将无星语言定义为: 如果可以用由字母,空集符号,所有布尔运算符(包括补码)和级联构造而成的正则表达式来描述常规语言,则该常规语言是无星形的,但没有Kleene星形。 这是没有星星的证明:a∗a∗a^* ∅∅\emptyset⟹ Σ * = ˉ ∅ ⟹ 甲⊆ Σ Σ *甲Σ * ⟹ 甲⊆ Σ 甲* = ‾ Σ *(Σ ∖ 甲)Σ *是没有星星的是没有星星的 如果那么是没有星星的 如果然后是无星号的⟹⟹\Longrightarrow Σ∗=∅¯Σ∗=∅¯\Sigma^*=\bar{\emptyset}⟹⟹\LongrightarrowA⊆ΣA⊆ΣA\subseteq\SigmaΣ∗AΣ∗Σ∗AΣ∗\Sigma^*A\Sigma^*⟹⟹\LongrightarrowA⊆ΣA⊆ΣA\subseteq\SigmaA∗=Σ∗(Σ∖A)Σ∗¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯A∗=Σ∗(Σ∖A)Σ∗¯A^*=\overline{\Sigma^*(\Sigma \setminus A)\Sigma^*} 在最后一行中,我们有,因为任何不是形式的单词都在包含一个字母反之亦然。A∗=Σ∗(Σ∖A)Σ∗¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯A∗=Σ∗(Σ∖A)Σ∗¯A^*=\overline{\Sigma^*(\Sigma \setminus A)\Sigma^*}A∗A∗A^*Σ∖AΣ∖A\Sigma \setminus A


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.