Questions tagged «formal-languages»

与形式语言,语法和自动机理论有关的问题

2
具有非上下文无关补语的上下文无关语言示例
上下文无关的语言不会在补充条件下封闭。在讲座中,我们得到了与Wikipedia相同的论点:对于 既和是上下文无关,但它们的交点不是。由于无上下文语言在联合之下是封闭的,因此它们在补充时也不能封闭。A={anbncm; m,n∈N0}andB={ambncn; m,n∈N0},A={anbncm; m,n∈ℕ0}andB={ambncn; m,n∈ℕ0},A = \{\mathtt a^n \mathtt b^n \mathtt c^m;~m, n ∈ ℕ_0\}\quad\text{and}\quad B = \{\mathtt a^m \mathtt b^n \mathtt c^n;~m, n ∈ ℕ_0\},AAABBBA∩BA∩BA ∩ B 但是,这仅表明三种语言,和是一种上下文无关的语言,具有非上下文无关的补语,但对于哪一种语言而言,这不是真的。那是什么AAABBBA¯¯¯¯∪B¯¯¯¯A¯∪B¯\overline A \cup \overline B 另外,是否有一个最小且优雅的示例,它提供了上下文无关的语言以及非上下文无关的补语(可能是二进制字母)?

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 这似乎足以处理我们在教科书练习中看到的许多情况。当然,如果您有更好的建议,则可以用其他任何以代数形式指定语言的文本方法来代替。

2
查找上下文无关语法生成的语言
这是《龙书》中的一个问题(对于翻译错误,我深表歉意,我手头没有英文版本): 该语法生成​​什么语言? 小号→ 一个小号b 小号∣ b S一个小号| εS→aSbS∣bSaS∣ϵS \rightarrow a S b S \mid b S a S \mid \epsilon 我不知道该怎么办。书中有关语言的定义说明了这一点(本章中的内容差不多): 语言是任何解析树都可以产生的所有单词的集合。 因此,如果我想根据这种语法制作“任何”解析树,则可以仅使用前两个规则来递归地继续构建它。我搜索了一下,并得出了每个规则都必须使用一次的印象,但是我不确定。如果有人能够提供一些解决此类问题的技巧,那将非常有帮助。

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

3
轻松证明无上下文语言在循环移位下被关闭
语言L的循环移位 (也称为旋转或共轭)定义为\ {yx \ mid xy \ in L \}。根据维基百科(和此处),无上下文语言在此操作下是封闭的,参考了Oshiba和Maslov的论文。有一个容易证明这一事实的证据吗?大号LL{ ÿ X | X ý ∈ 大号}{yx∣xy∈L}\{ yx \mid xy \in L \} 对于常规语言,闭包以这种形式讨论为“ 证明在循环运算符下关闭了常规语言 ”。

1
推断优化类型
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 


2
如何证明这种语言不是上下文无关的?
我有以下语言 {0i1j2k∣0≤i≤j≤k}{0i1j2k∣0≤i≤j≤k}\qquad \{0^i 1^j 2^k \mid 0 \leq i \leq j \leq k\} 我正在尝试确定它适合哪种Chomsky语言课。我可以看到如何使用上下文相关的语法实现它,因此我知道它至少是上下文相关的。似乎没有上下文无关的语法是不可能的,但是我在证明这一点上遇到了问题。 这似乎是通过了分叉抽取的引理,因为如果将全部放在任何单词的第三部分(包含所有uvwxyuvwxyuvwxy222 s的部分)中。它可以根据需要将和x泵抽多次,并且将保留该语言。如果我错了,你能告诉我为什么吗,如果我是对的,我仍然认为这种语言不是上下文无关的,那么我怎么证明呢?vvvxxx

1
上下文无关语言的无限联合是否总是上下文无关?
令,,,为无上下文语言的无限序列,每种语言通用字母Σ定义。令L为L_1,L_2,L_3,\ dots的无限联合;即L = L_1 \ cup L_2 \ cup L_3 \ cup \ dots。L1L1L_1L2L2L_2L3L3L_3……\dotsΣΣΣLLLL1L1L_1L2L2L_2L3L3L_3……\dots L=L1∪L2∪L3∪…L=L1∪L2∪L3∪…L = L_1 \cup L_2 \cup L_3 \cup \dots L是否始终LLL是上下文无关的语言?

5
有关语言规则性的充分必要条件
下列哪种说法是正确的? 存在关于语言规则性的充分必要条件,但尚未发现。 语言的规则性没有充分和必要的条件。 抽动引理是语言不规则的必要条件。 抽动引理是语言不规则的充分条件。 我知道#(4)是正确的,而#(3)是错误的,因为“此陈述的反义词是不正确的:满足这些条件的语言可能仍然是不规则的”,但是关于(1)和(2)?


3
什么是无上下文语言的补充?
我需要知道什么类别的CFL是封闭的,即什么集合是CFL的补充。我知道CFL不是在补码下关闭的,我知道P在补码下是关闭的。由于CFL PI可以说CFL的补语包含在P中(对吗?)。仍然存在一个问题,CFL的补语是P还是整个P的适当子集。对于如何显示CFL​​的补语是整个P(如果是这种情况),我将不胜感激。⊊⊊\subsetneq

2
涉及非理性数字的语言不是CFL
我正在一本教科书中进行艰苦的练习,但我不知道该如何进行。这是问题所在。假设我们的语言为其中是一些无理数。我如何证明不是上下文无关的语言?大号= { 一个我b Ĵ:我≤ Ĵ γ ,我≥ 0 ,Ĵ ≥ 1 } L={aibj:i≤jγ,i≥0,j≥1}L = \{a^ib^j: i \leq j \gamma, i\geq 0, j\geq 1\}γ γ\gamma大号LL 在是理性的情况下,构造接受该语言的语法非常容易。但是因为不合理,所以我真的不知道该怎么办。看起来没有任何抽水式引理可以在这里工作。也许Parikh的定理在这里适用,因为从直觉上看,这种语言没有伴随的半线性Parikh图像。γ γ\gammaγγ\gamma 此练习摘自第4章练习25的Jeffrey Shallit撰写的“形式语言和自动机理论第二门课程”。 我将非常感谢您的帮助或朝着正确的方向前进。谢谢!

1
从一组基本语言和闭包属性构造所有无上下文语言?
查看正则表达式的一种方法是对以下事实的结构性证明:可以通过从少量语言开始并通过一组固定的较小闭包属性来组合正则语言来构造正则语言。具体来说,如果我们以空语言,包含空字符串的语言以及所有单字符字符串的语言开始,则可以使用并集,串联和Kleene星号来组合所有可能的常规语言。 是否有一组基本语言和闭包属性可用于生成所有且仅上下文无关的语言?(要澄清:我不是问您是否可以为所有CFL编写正则表达式,我知道这是不可能的。相反,我想知道是否有一种方法可以基于CFL为CFL设计类似正则表达式的框架相同的基本原则。)

2
测量FSA语法之间“相似性”的方法?
我正在使用一种模式匹配算法,该算法生成一个非循环的有限状态自动机,该自动机接受给定的文本字符串及其所有子字符串。FSA算法正在音乐流(例如MIDI数据)的符号表示上运行。音乐流已经过预处理,可以将每首歌曲分为未标记的“段”。一个FSA被用于每首歌曲的每个段中产生:如果我有歌曲,各自分成ÿ段,我会Ñ ⋅ ý单独的FSA。nnnyyyn⋅yn⋅yn \cdot y 我想将每个部分的FSA与我的语料库中的其他FSA进行比较。最终目标将是在相似性空间内进行聚类,并根据其构造指标的相似性提出细分的“类别”。因此,特别令人感兴趣的是每个FSA定义的语法(大致对应于片段中音乐内容的某些组成部分)。是否有一些技巧可以比较这样的东西?尽管可能存在更好/更有效的技术,但我想到了KL散度(例如,使用它比较与给定FSA相关联的字符串的分布)。 同样,如果这个问题是(1)轻而易举的或(2)表示有更深的误解或(3)在其他地方回答了,则表示歉意。我是一个真正的小伙子,伙计们!

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.