计算机科学

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



2
如何实际构造规则的扩展图?
我需要为n个顶点的一些小的固定d(例如3或4)构造d-正则展开图。 在实践中最简单的方法是什么?构造一个随机的d-正则图,证明它是扩展器? 我还阅读了有关作为扩展器的Margulis构造和Ramanujan图以及使用Z字形乘积的构造。Wikipedia给出了一个很好但很简短的概述:http : //en.wikipedia.org/wiki/Expander_graph#cite_note-10 但是我在实践中选择哪种方法? 对我来说,这些方法的实现似乎非常复杂,尤其是要理解甚至很具体。难道没有更简单的方法(可能基于排列左右)来实际生成一系列d-正则展开图吗? 构造d-正则二分式展开图可能更容易吗? 我还有一个问题:不良的d-regular扩展器家族如何?这样的想法有意义吗?在扩展器的意义上,能否构造出一系列尽可能不好的d-正则图(当然是相连的)? 提前致谢。

1
成对和的无FFT
假设我们给了nnn不同的整数,使得a1,a2,…,ana1,a2,…,ana_1, a_2, \dots, a_n0≤ai≤kn0≤ai≤kn0 \le a_i \le kn对于某一常数k>0k>0k \gt 0,和对于所有iii。 我们对找到所有可能的成对和的计数感兴趣。(允许i = j)。Sij=ai+ajSij=ai+ajS_{ij} = a_i + a_ji=ji=ji = j 一种算法是构造多项式度≤ ķ Ñ,并使用傅里叶变换方法和在所得的多项式读出与它们的系数的权力计算其平方。这是O (n log n )时间算法。P(x)=∑nj=1xajP(x)=∑j=1nxajP(x) = \sum_{j=1}^{n} x^{a_j}≤kn≤kn\le knO(nlogn)O(nlog⁡n)O(n \log n) 我有两个问题: 是否有不使用FFT 的算法?O(nlogn)O(nlog⁡n)O(n \log n) 是否知道更好的算法(即)?(允许FFT)。o(nlogn)o(nlog⁡n)o(n \log n)


1
Turing Machine是否可以确定NFA是否接受一串素数的字符串?
我想知道以下问题是否可以解决: 实例:具有n个状态的NFA A 问题:是否存在一些质数p,使得A接受长度为p的字符串。 我认为这个问题无法确定,但我无法证明。决策者可以轻松地拥有一种算法来确定特定数字是否为质数,但是我不知道它如何能够足够详细地分析NFA以确切知道它可以产生多少长度。它可以开始使用NFA测试字符串,但是对于无限的语言,它可能永远不会停止(因此不是决定者)。 当然,如果解决方案需要,则可以将NFA轻松更改为DFA或正则表达式。 这个问题是我一直在思考的一个自我准备问题,我将在两周内提出最后一个问题。

1
有趣的排序问题
给定一个带有编号球的管(随机)。管子上有孔以移走球。考虑一个操作的以下步骤: 您可以从孔中拾取一个或多个球,并记住拾取球的顺序。 您需要将管道向左侧倾斜,以使管道中的剩余球向左移动,并占据移除球所产生的空白空间。 您不应更改从烟斗中拾取编号的球的顺序。现在,您可以使用由球的运动产生的空余空间将它们重新放回管道中。 步骤1至3被视为一项操作。 找出按升序对编号的球进行排序所需的最少操作。 例如:如果管包含:[ 1 4 2 3 5 6 ] [1 4 2 3 5 6][1\ 4\ 2\ 3\ 5\ 6] 然后,我们可以取出和和,如果我们倾斜管的左侧,我们得到,和我们插入的顺序对管的端部以获得。4 5 6 [ 1 2 3 ] (4 5 6 )[ 1 2 3 4 5 6 ]445566 [1 2 3][1\ 2\ 3] (4 …

1
检索有向无环图的传递闭合的高效算法
我正在尝试解决图形问题(这不是为了做作业,只是为了练习我的技能)。给出了DAG ,其中V是顶点集合,E是边线。该图被表示为邻接表,所以甲v是包含的所有连接的一组v。我的任务是找到它的顶点是从每个顶点可达v ∈ V。我使用的解决方案的复杂度为 O (V 3)G(V,E)G(V,E)G(V,E)VVVEEEAvAvA_vvvvv∈Vv∈Vv\in VO(V3)O(V3)O(V^3),带有传递闭包,但是我在博客中读到它可以更快,尽管它没有揭示如何实现。谁能告诉我另一种方法(具有更好的复杂性)来解决DAG中的传递闭包问题?

3
理论CS和数学-自学建议
我是非CS毕业生,并且我的研究领域与CS无关。但是,作为成为计算机科学家的更大计划的一部分,我希望获得与CS相关的理论计算机科学和数学方面的扎实背景。我进行了大量研究,并选择了以下关于CS和数学的最佳/非常好的书籍,并希望就以下方面提出您的意见: 所涵盖主题的完整性(请推荐我错过的任何内容) 覆盖的材料/杀伤力较大的区域重叠(请推荐应从清单中删除的书籍) 学习书籍的顺序(我以应该学习的顺序列出) 该列表感觉太长了,因此,我建议删除一些书籍,而又不会失去CS所需的核心知识。 因此,这些书是: WW索耶(WW Sawyer)的《数学家的喜悦》 如何证明它:Daniel J. Velleman的结构化方法 如何解决:G。Polya数学方法的一个新方面 格雷格·迈克尔森(Greg Michaelson)通过Lambda微积分进行函数式编程的简介 Al Aho和Jeff Ullman撰写的计算机科学基础(http://i.stanford.edu/~ullman/focs.html) 具体数学:Graham,Knuth和Patashnik的计算机科学基础 Michael Sipser的计算理论导论 John E. Hopcroft,Rajeev Motwani,Jeffrey D. Ullman对自动机理论,语言和计算的介绍 计算复杂性:概念观点,作者:Oded Goldreich 计算复杂性:现代方法,Boaz Barak的Sanjeev Arora RM Wilson的JH van Lint撰写的组合课程 可计算性:Nigel Cutland的递归函数理论导论 计算机与顽固性:NP完全性理论指南,作者:Johnson MR Garey 递归函数理论和有效可计算性Hartley Rogers GH Hardy,JE Littlewood和G.Polya的不平等现象 数学逻辑:一门练习课程(第一部分):命题微积分,Bookean代数,RenéCori的谓词微积分,Daniel Lascar 数学逻辑:一门练习课程(第二部分):递归理论,Godel定理,集合论,模型论(作者RenéCori,Daniel Lascar)
14 books 

2
Bellman-Ford算法-为什么无法按顺序更新边缘?
的Bellman-Ford算法确定从源的最短路径到所有其它顶点。最初,与所有其他顶点之间距离设置为。然后计算从到每个顶点的最短路径;这正好为 迭代。我的问题是:小号∞ 小号| V | − 1ssssss∞∞\inftysss|V|−1|V|−1|V|-1 为什么需要迭代?|V|−1|V|−1|V|-1 如果以其他顺序检查边缘会不会很重要? 假设,如果我先检查边缘1,2,3,然后在第二次迭代中检查2,3,1。 麻省理工学院的埃里克教授说顺序并不重要,但是这使我感到困惑:如果算法的值取决于边缘但是是在之后更新的,该算法是否会错误地基于边缘更新节点?x2x2x_2x1x1x_1x1x1x_1x2x2x_2


2
传播输入的功能
我想知道从n位数字到n位数字的函数fff是否具有以下特征: fff应该是双射的 无论fff和f−1f−1f^{-1}应该是可计算的相当快 fff应该返回与其输入没有显着相关性的数字。 原因是: 我想编写一个对数据进行操作的程序。数据的某些信息存储在二进制搜索树中,其中搜索关键字是字母的符号。随着时间的流逝,我在字母表中添加了更多符号。新符号只是获得下一个可用的免费号码。因此,树将始终对较小的键具有较小的偏差,这将导致比我认为需要的更多的重新平衡。 我的想法是与到裂伤符号数fff使得它们的整个范围内的广泛普及[0,264−1][0,264−1][0,2^{64}-1]。由于符号号仅在输入和输出期间才有关系,而符号输入只发生一次,因此应用此功能应该不会太昂贵。 我曾考虑过Xorshift随机数生成器的一次迭代,但是尽管从理论上讲应该是可行的,但我真的不知道一种撤消它的方法。 有人知道这样的功能吗? 这是一个好主意吗?

2
设置相似度-计算Jaccard索引而没有二次复杂度
我有一组n个集合,需要为它们计算一种“唯一性”或“相似性”值。我已经将Jaccard索引确定为合适的指标。不幸的是,Jaccard索引一次只能操作两组。为了计算所有集合之间的相似度,将需要按n 2个 Jaccard计算的顺序。ññnñ2ñ2n^2 (如果有帮助,通常在10到10000之间,并且每个集合平均包含500个元素。而且,最后,我不在乎任何两个特定的集合有多相似-而是,我只在乎内部相似度是多少整个集合集的总和是(换句话说,该组中所有Jaccard索引的均值(或均值的至少足够准确的近似值))ññn 两个问题: 有没有办法在没有复杂度的情况下仍然使用Jaccard索引?ñ2ñ2n^2 有没有比我上面建议的方法更好的方法来计算一组集合之间的集合相似性/唯一性?

1
平面1合3 SAT的平面度条件
平面3SAT是NP完全的。平面3SAT实例是3SAT实例,对于该3SAT实例,使用以下规则构建的图形是平面的: X一世X一世x_iX一世¯X一世¯\bar{x_i} 为每个子句添加一个顶点CĴCĴC_j (x一世,X一世¯)(X一世,X一世¯)(x_i,\bar{x_i}) X一世X一世x_iX一世¯X一世¯\bar{x_i} (x1个,X2),(X2,X3),。。。,(xñ,X1个)(X1个,X2),(X2,X3),。。。,(Xñ,X1个)(x_1,x_2),(x_2,x_3),...,(x_n,x_1) 特别是,规则5构建了一个“主干”,将子句拆分为两个不同的区域。 平面1合3 SAT也是NP完全的。 (x一世,X我+ 1)(X一世,X一世+1个)(x_i,x_{i+1})

2
随机算法分类
来自维基百科,关于随机算法 一个具有区分算法使用随机输入减少的预期运行时间或内存使用情况,但总是有一个正确的结果在有限时间终止,并且 概率算法其中,根据不同的随机输入,有机会产生错误结果(蒙特卡罗算法)或通过发出失败或失败终止信号未能产生结果(拉斯维加斯算法)的结果。 我想知道第一种“ 算法 ”如何使用随机输入来减少预期的运行时间或内存使用率,但是总是在有限的时间内以正确的结果终止? 它和可能无法产生结果的拉斯维加斯算法之间有什么区别? 如果我理解正确,则概率算法和随机算法不是同一概念。概率算法只是一种随机算法,另一种是那些使用随机输入来减少预期的运行时间或内存使用量,但总是在有限的时间内以正确的结果终止的算法?

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.