计算机科学

为学生,研究人员和计算机科学从业者提供的问答

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

1
哪种算法可以计算出两组的最大选择?
给定两个整数,它们的长度可能不相等,如何通过在两个向量之间的对应数字对之间选择最大值,并在较短的向量中插入额外的零以弥补大小差异,来确定可能的最大结果? 例如,考虑以下两个向量作为输入: [8 1 4 5] [7 3 6] 插入零和结果和的选择是: [0 7 3 6] => Maximums: [8 7 4 6] => Sum is: 25 [7 0 3 6] => Maximums: [8 1 4 6] => Sum is: 19 [7 3 0 6] => Maximums: [8 3 4 6] => Sum …

1
“ CPS”方法严重损害了SML / NJ的性能;所需的推理
在对学习F# 的评论中:使用其他编程语言的哪些书籍可以翻译为F#以学习功能概念?Makarius说: 请注意,“ CPS”方法对SML / NJ中的性能造成了很大的损害。它的物理评估模型违反了硬件中内置的太多假设。如果您采用Isabelle / HOL之类的SML大型符号应用程序,则带有CPS的SML / NJ大约会问世。比传统堆栈的Poly / ML慢100倍。 有人可以解释原因吗?(最好有一些示例)这里是否存在阻抗不匹配?

6
图灵机可以决定的语言
令 有图灵机R决定(我不是说承认)语言吗?大号∅L∅={⟨M⟩∣M is a Turing Machine and L(M)=∅}.L∅={⟨M⟩∣M is a Turing Machine and L(M)=∅}.L_\emptyset = \{\langle M\rangle \mid M \text{ is a Turing Machine and }L(M)=\emptyset\}.L∅L∅L_\emptyset 似乎用来显示同样适用。{A∣A is a DFA and L(A)=∅}{A∣A is a DFA and L(A)=∅}\{A \mid A \text{ is a DFA and } L(A)=\emptyset\}

1
在立方无三角形图中独立设置
我知道立方无三角形图中的最大独立集是NP完全的。 如果我们要求独立集合的大小恰好是,它是否仍是NP完全?| V| / 2|V|/2|V|/2 基本上,立方无三角形图问题上的独立集合问题的YES实例必须完全具有节点。没有实例的独立大小小于| | V | / 2。| V| / 2|V|/2|V|/2| V| / 2|V|/2|V|/2


1
无法从NFA转换为DFA
我有一个简单的问题,就是假设给定是DFA的字母集,那么制作一个DFA就能接受所有以双字母(aa,bb)开头或以双字母(aa,bb)结尾的输入。给定的语言。Σ = { a ,b }Σ={一种,b}\Sigma =\{a, b\} 我试图通过以下方法来解决此问题: 生成正则表达式 制作相应的NFA 使用Powerset构造来推导DFA 最小化DFA中的状态数 第1步: 给定问题的正则表达式为(除其他之外): ((aa|bb)(a|b)*)|((a|b)(a|b)*(aa|bb)) 步骤2: 给定表达式的NFA为: (来源:livefilestore.com) 在表格形式中,NFA为: State Input:a Input:b ->1 2,5 3,5 2 4 - 3 - 4 (4) 4 4 5 5,7 5,6 6 - 8 7 8 - (8) - - 第3步:使用Powerset结构转换为DFA: Symbol, State …

3
是否可以确定给定算法是否渐近最优?
是否存在以下问题的算法: 给定图灵机确定语言, 是否有图灵机决定使得 ? L M 2 L t 2(n )= o (t 1(n ))中号1个M1M_1大号LL中号2M2M_2大号LLŤ2(n )= o (t1个(n ))t2(n)=o(t1(n))t_2(n) = o(t_1(n)) 函数和分别是图灵机和的最坏情况下的运行时间。t 2 M 1 M 2Ť1个t1t_1Ť2t2t_2中号1个M1M_1中号2M2M_2 空间复杂度如何?

3
关于一系列主题的算法书籍
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。没有足够详细信息的答案可以被编辑或删除。 我的任务是为我们的小公司(约15人)建立有关算法的书籍库。预算超过5k,但肯定少于1万,所以我可以买很多书。这里的所有人都至少具有CS或紧密相关领域的学士学位,因此,尽管我会获得像Cormen这样的基本教科书,但我对高级主题的好书更感兴趣。(我将获得Knuth的4卷,顺便说一句。) 一些主题列表如下: 排序算法 图算法 字符串算法 随机算法 分布式算法 组合算法 等等 本质上,我在关于CS中与算法和数据结构相关的主要主题的书籍中寻找好的建议。尤其是超出一门好学校学士学位课程的算法和数据结构课程通常涵盖的内容。我知道这个问题很模糊,因为我正在寻找通用的有用材料。我们开发的软件主要是系统级的东西,处理大量数据。 理想的选择是找到可以涵盖大多数人可能尚未听说的相当新的酷数据结构和算法的任何内容。 编辑:这是我认为应该得到的一些初步书籍: Cormen等人的算法简介。 算法设计,克莱因伯格,塔多斯 Knuth的计算机编程艺术第1-4卷 Vazirani的近似算法 Williamson,Shmoys的近似算法设计 Moghani,Raghavan的随机算法 Sipser计算理论导论 Arora的计算复杂性,巴拉克 Garey和Johnson撰写的《计算机与难处理》 Schrijver的组合优化 我的同事希望与其他有关语言设计,编译器和形式方法的技术和算法的书籍包括: 皮尔斯的类型和编程语言 贝尔的模型检查原理,加藤 编译器:Aho,Lam,Sethi,Ullman编写的原理,技术和工具 编译器设计手册:优化和机器代码生成,第二版,Srikant,Shankar 垃圾收集手册:Jones,Hosking和Moss的自动内存管理技术

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

1
有指导的工会发现
考虑一个有向图在该图上可以动态添加边并进行一些特定的查询。GGG 示例:不相交的森林 考虑以下查询集: arrow(u, v) equiv(u, v) find(u) 第一个向图形添加箭头,第二个确定,最后一个找到等价类的规范表示,即使得表示。ü ↔ * v ↔ * - [R (Û )Ü ↔ * v [R (v )= - [R (Û )u→vu→vu→vu↔∗vu↔∗vu↔^*v↔∗↔∗↔^*r(u)r(u)r(u)u↔∗vu↔∗vu↔^*vr(v)=r(u)r(v)=r(u)r(v)=r(u) 有一种众所周知的算法,它使用不相交集森林数据结构以准恒定的摊销复杂度实现这些查询,即O(α(n))O(α(n))O(α(n))。请注意,在这种情况下,equiv是使用实现的find。 更复杂的变体 现在,我对一个方向很重要的更复杂的问题感兴趣: arrow(u, v) confl(u, v) find(u) 第一个添加箭头,秒确定是否存在从和均可到达的节点,即。最后一个应该返回对象,使得暗示其中应该易于计算。(例如,为了进行计算)。目的是找到一个好的数据结构,使这些操作快速进行。u→vu→vu→vwwwuuuvvvu→∗←∗vu→∗←∗vu→^*←^*vr(u)r(u)r(u)u→∗←∗vu→∗←∗vu→^*←^*vr(u)∙r(v)r(u)∙r(v)r(u) \bullet r(v)∙∙\bulletconfl 周期数 该图可以包含周期。 我不知道是否有一种方法可以有效地和增量地计算强连接的组件,以便仅针对主要问题考虑DAG。 当然,我也希望为DAG提供解决方案。这将对应于最小公共祖先的增量计算。 天真的方法 不相交的森林数据结构在这里没有帮助,因为它忽略了边的方向。请注意,在图形不汇合的情况下,不能是单个节点。r(u)r(u)r(u) 可以定义并在时将定义为。但是如何逐步计算呢?r(u)={v∣u→∗v}r(u)={v∣u→∗v}r(u)=\{v ∣ u→^*v\}∙∙\bulletS1∙S2S1∙S2S_1\bullet S_2S1∩S2≠∅S1∩S2≠∅S_1 ∩ …

1
两个变量的渐近分析?
对于具有多个变量的函数,如何定义渐近分析(大o,小o,大theta,大theta等)? 我知道Wikipedia文章上有一部分,但是它使用了许多我不熟悉的数学符号。我还发现了以下论文:http : //people.cis.ksu.edu/~rhowell/asymptotic.pdf然而,该论文篇幅很长,提供了渐近分析的完整分析,而不仅仅是给出定义。同样,数学符号的频繁使用使它很难理解。 有人能提供没有复杂数学符号的渐近分析的定义吗?

2
简化n个多选k的复杂度
我有一个递归算法,其时间复杂度相当于从n中重复选择k个元素,我想知道是否可以得到一个更简化的big-O表达式。在我的情况下,可能大于并且它们独立增长。kkknnn 具体来说,我期望一些显式的指数表达式。到目前为止,我能找到的最好的结果是基于Stirling的近似值,所以我可以使用它,但是我想知道是否可以得到更好的东西。O(n!)≈O((n/2)n)O(n!)≈O((n/2)n)O(n!) \approx O((n/2)^n) O((n+k−1k))=O(?)O((n+k−1k))=O(?)O\left({{n+k-1}\choose{k}}\right) = O(?)

4
寻找“指纹”集合
假设我们有10个人,每个人都有喜爱的书籍清单。对于给定的人X,我想找到X的一个特殊子集,该子集仅被X所喜欢,也就是说,没有其他人喜欢X的特殊子集中的所有书。我认为这个特殊子集是X的唯一“指纹”。 我希望能找到有关找到此类集合的方法的建议。(虽然这听起来像是一个家庭作业问题,但它与我要解决的生物学研究中的问题有关。)
11 algorithms  sets 

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.