计算机科学

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

7
TCS入门书籍列表,供那些对TCS不太了解的人使用[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 如果您必须向希望在入门级学习更多有关TCS的人推荐书籍,例如自动机理论,算法学,复杂性理论等,那么您会为那些有兴趣并想了解更多信息的人推荐什么书? TCS,但没有接触过它吗?
10 education 

1
类Koch雪花(和其他奇异)网络拓扑的分析和参考
在计算机网络和高性能群集计算机设计中,网络拓扑是指节点通过链接连接以形成通信网络的方式的设计。常见的网络拓扑包括网格,圆环,环形,星形,树形等。可以对这些拓扑进行分析研究,以确定与它们的预期性能相关的属性。这样的特性包括直径(一对节点之间的最大距离,如果此类节点进行通信必须经过的链路数量),节点之间的平均距离(在网络中所有节点对上)以及对分带宽(网络两半之间的最坏情况的带宽)。自然地,存在其他拓扑和度量。 考虑基于科赫雪花的网络拓扑。这种拓扑的最简单化身由完全连接的设置中的三个节点和三个链接组成。直径为1,平均距离为1(如果在节点内部包括通讯,则为2/3)等。 拓扑的下一个版本由12个节点和15个链接组成。一共有三个群集,每个群集具有三个节点,每个群集通过三个链接完全连接。此外,还有三个原始节点,它们使用六个附加链接连接三个集群。 事实上,节点和在化身链路的数目由下列递推关系描述: Ñ (1 )= 3 大号(1 )= 3 Ñ (ķ + 1 )= Ñ (ķ )+ 3 大号(ķ )大号(ķ + 1 )= 5 大号(ķ ) 希望这种拓扑结构的形状清晰; 化身k看起来像kķkkN(1)=3N(1)=3N(1) = 3 L(1)=3L(1)=3L(1) = 3 N(k+1)=N(k)+3L(k)N(k+1)=N(k)+3L(k)N(k+1) = N(k) + 3L(k) L(k+1)=5L(k)L(k+1)=5L(k)L(k+1) = 5L(k)kkk科赫雪花的化身。(一个关键的区别是,就我的想法而言,我实际上是在连续迭代中保持1/3和2/3节点之间的链接,以便每个“三角形”都完全相连并且上述递归关系成立)。kthkthk^{th} 现在开始提问: 是否已经研究了该网络拓扑,如果这样,它叫什么?如果已经进行了广泛的研究,有没有参考资料?如果不是,此拓扑的直径,平均距离和对等带宽是多少?在成本(链接)和收益方面,这些与其他拓扑相比如何? 我听说过“星辰之星”的拓扑结构,我认为它与此相似,但并不完全相同。如果有的话,这似乎更像是“指环”,或类似的东西。自然地,可以对该拓扑的定义进行调整,并且可以提出更高级的问题(例如,我们可以为早期阶段引入的链路分配不同的带宽,或者讨论这种拓扑的调度或数据放置)。更一般而言,我也对任何对异国情调或研究较少的网络拓扑结构(无论实用性)的参考都感兴趣。 再次道歉,如果这表明对相关研究结果不了解,请您提出任何见解。

3
所有NP问题都可以简化为NP完全问题:那么NP问题又如何不能成为NP完全问题呢?
我的书这样说 如果决策问题B在P中并且A减少到B,则决策问题A在P中。 如果B在NP中,则决策问题B是NP完全的;对于NP中A中的每个问题,A都会减少为B。 如果C在NP中,则决策问题C是NP完全问题;对于某些NP完全问题B,决策问题C简化为C。 所以我的问题是 如果B或C处于NP完全状态,并且NP中的所有问题都归结为一个NP完全问题,那么使用第一个规则,怎么一个NP问题都不是NP完全的? 如果A减少到B,B会减少到A吗?

3
测试二叉树是否为搜索树并计算完整分支的算法
我需要创建一个递归算法,以查看二叉树是否为二叉搜索树,并用假定的全局计数变量计算有多少个完整分支(一个有左右两个子节点的父节点)。这是我的数据结构类的作业。 到目前为止,我有 void BST(tree T) { if (T == null) return if ( T.left and T.right) { if (T.left.data < T.data or T.right.data > T.data) { count = count + 1 BST(T.left) BST(T.right) } } } 但是我真的无法弄清楚这一点。我知道该算法无法解决问题,因为如果第二个if语句不正确,则计数将为零。 有人可以帮我解决这个问题吗?


3
邻接矩阵特征值的直觉
我目前正在努力了解Cheeger界和Cheeger不等式的使用,以及它们在频谱划分,电导,扩展等方面的使用,但是我仍然很难对邻接矩阵的第二个特征值有一个直观的认识。 通常,在图论中,我们遇到的大多数概念都非常容易理解,但是在这种情况下,我什至无法提出什么样的图的第二特征值会非常低或非常高。 我一直在阅读SE网络上四处询问的类似问题,但它们通常是指不同领域中的特征值(多元分析,欧几里得距离矩阵,相关矩阵 ...)。 但是关于频谱划分和图论的事情却一无所获。 在图和邻接矩阵的情况下,有人可以分享他对第二特征值的直觉/经验吗?


4
NSPACE(O(n))中的一种语言,很可能不是DSPACE(O(n))中的一种语言
实际上,我发现上下文相关语言集CSLCSL\mathbf{CSL}(接受的语言)没有像(常规语言)或(无上下文语言)。而且,开放式问题不如“类似”问题那么著名:“ “。=NSPACE(O(n))=LBA=NSPACE(O(n))=LBA\mathbf{=NSPACE(O(n)) = LBA}REGREG\mathbf{REG}CFLCFL\mathbf{CFL}DSPACE(O(n))=?NSPACE(O(n))DSPACE(O(n))=?NSPACE(O(n))\mathbf{DSPACE(O(n))} =^{?} \mathbf{NSPACE(O(n))}P=?NPP=?NP\mathbf{P} =^{?} \mathbf{NP} 好吧,真的有这样的类比吗? 是否有一种语言无法证明为 (例如完整语言)?D S P A C E (O (n ))N PCSLCSL\mathbf{CSL}DSPACE(O(n))DSPACE(O(n))\mathbf{DSPACE(O(n))}NPNP\mathbf{NP} 此外:是否有一种语言在以下意义上是“完整的”:如果我们可以证明在我们得到吗?C S L L D S P A C E (O (n ))D S P A C E (O (n ))= N S P A C E (O (n ))LLLCSLCSL\mathbf{CSL}LLLDSPACE(O(n))DSPACE(O(n))\mathbf{DSPACE(O(n))}DSPACE(O(n))=NSPACE(O(n))DSPACE(O(n))=NSPACE(O(n))\mathbf{DSPACE(O(n)) …

5
给定一组有限的有限字符串,是否存在已知的构造语法的方法?
从我的阅读看来,大多数语法都与生成无限数量的字符串有关。如果您采用其他方法怎么办? 如果给定n个长度为m的字符串,那么应该有可能生成一个将生成这些字符串以及仅这些字符串的语法。 有已知的方法吗?理想情况下,我可以研究一种技术名称。或者,我将如何进行文献搜索以找到这种方法?

2
无等级的联合查找与路径压缩的复杂性
Wikipedia表示不进行路径压缩的按等级合并会产生的摊销时间复杂度,而通过等级压缩和路径压缩会产生的摊销时间复杂度(其中是Ackerman函数的反函数)。但是,它没有提到没有联合等级的路径压缩的运行时间,这就是我通常自己实现的时间。O (α (n ))αO (对数n )O(log⁡n)O(\log n)O (α (n ))O(α(n))O(\alpha(n))αα\alpha 如果没有路径压缩优化,那么使用路径压缩优化进行联合查找的摊还时间复杂度是多少?

3
正则表达式可以是无限的吗?
我知道可以使用正则表达式定义的语言和DFA / NFA(有限自动机)可以识别的语言是等效的。同样,语言也不存在DFA 。但是仍然可以使用正则表达式(就此而言,任何非正则语言都可以)来编写。但是我们知道,每一种具有正则表达式的语言都具有可以识别该正则表达式的DFA(与我之前的声明相矛盾)。我知道这是一件微不足道的事情,但是正则表达式的定义是否包含它应该是有限的条件?{ ε } ∪ { 01 } ∪ { 0011 } 。。。。。。{ 0ñ1个ñ| Ñ≥0}{0n1n|n≥0}\{0^n1^n|n \ge 0\}{ ε } ∪ { 01 } ∪ { 0011 } 。。。。。。{ϵ}∪{01}∪{0011}.....。\{ \epsilon \} \cup \{01\} \cup \{0011\}......

2
有人可以解释这张关于平板分配的图吗?
我试图了解Slab分配的工作原理,以及为什么它与普通分页不同或更好。 我发现了该图,如果有更多说明,我认为将对您有所帮助。 一些问题: 3KB和7KB项代表什么?他们必须以某种方式联系起来吗?为什么用这种方式包装? 在缓存列中,缓存是灰色框还是灰色框内的白色/蓝色框?灰色盒子是一堆缓存吗? 这些平板仅仅是蓝框,还是整个“物理连续页面”都是平板? 我真的很感谢您的帮助。谢谢!

1
为什么在GPU上进行比较如此昂贵?
在尝试提高碰撞检测类的性能时,我发现在gpu上花费了大约80%的时间,它花费在if / else条件上只是试图弄清楚应该循环通过的存储桶的界限。 更确切地说: 每个线程都有一个ID,通过该ID从内存中获取其三角形(每个3个整数),并通过这3个线程获取其顶点(每个3个浮点)。 然后将顶点转换为整数网格点(当前为8x8x8),并将其转换为该网格上的三角形边界 要将3个点转换为边界,它会在每个点中找到每个维度的最小值/最大值 由于我使用的编程语言缺少minmax内在函数,因此我自己做了一个代码,看起来像这样: procedure MinMax(a, b, c): local min, max if a > b: max = a min = b else: max = b min = a if c > max: max = c else: if c < min: min = c return (min, max) …


1
分段求和问题的分段树实现的时间复杂度证明
我知道可以使用段树来找到的子数组的总和。根据此处的教程,该操作可以在时间内完成。一个AAO(对数n )O(log⁡n)\mathcal{O}(\log n) 但是我无法证明查询时间确实是。此链接(以及许多其他链接)说,我们可以证明在每个级别上,已处理的最大节点数为,因此。O(对数n )O(log⁡n)\mathcal{O}(\log n)444O(4对数n )= O(对数n )O(4log⁡n)=O(log⁡n)\mathcal{O}(4 \log n) = \mathcal{O}(\log n) 但是,我们怎么可能通过矛盾来证明这一点呢? 如果是这样,如果我们将分段树用于高维数组的范围和,该证明将如何扩展? 例如,我可以考虑通过将原始矩阵划分为4个象限(类似于线性阵列中的一半)来找到一个子矩阵总和,以构建一个象限分段树,但是证明使我难以理解。

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.