计算机科学

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

1
矩形覆盖的网格
我们有一个ñ1× N2N1×N2N_1 \times N_2网格。我们对此网格矩形的集合,每一个矩形可被表示为一个ñ1N1N_1 -by- ñ2N2N_2二进制矩阵[RRR。我们想用这些矩形覆盖网格。 该集合覆盖问题的决策版本是否是NP-完整的? 输入:收集C= { R1,R2,… ,R大号}C={R1,R2,…,RL}\mathcal{C}=\{R_1,R_2,\dots,R_L\}在网格的矩形(输入尺寸:ñ1ñ2大号N1N2LN_1N_2L),和ķ∈ ñ+K∈N+K \in \mathbb{N}^+ 输出:子集小号⊂ çS⊂C\mathcal{S}\subset\mathcal{C}用| 小号| ≤ķ|S|≤K|\mathcal{S}|\leq K和小号S\mathcal{S}包含每个小区的至少一个矩形覆盖它。 我发现一维情况(ñ2= 1N2=1N_2=1)可以通过动态编程在多项式时间内求解:任何最优覆盖都将是 覆盖前ñ1− n1N1−n1N_1-n_1单元的某些子问题的最优覆盖。 一个1D矩形,即一个间隔,覆盖剩余的ñ1n1n_1元。 我认为DP不能解决2D问题:对于1D问题,您有个子问题要解决,但是对于2D问题,您有子问题(东北数网格上的晶格路径)。ñ1N1N_1(N1+ N2ñ2)(N1+N2N2)\binom{N_1+N_2}{N_2} 我认为问题可能是NP,但是我不确定(尽管看起来比P难),而且我还没有成功地从NP完全问题(3-SAT,顶点覆盖等)中找到多项式约简。 欢迎任何帮助或提示。


5
是什么使语言针对特定任务“优化”的?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 通常,有专门用于特定任务的编程语言。有些编程语言在数组算术方面很出色(例如矩阵和多维数组的使用),而有些编程语言则在很难用其他语言重现的高级数学上却要好得多(但仍然可能一样)。 考虑到大多数语言只是简单地编译成汇编语言,那么与其他语言相比,该语言使它对特定任务或最终目标更有利吗? 我说的是图灵完整的语言,与图灵等效的语言。

4
浮动误差导致的不平等
至少在Java中,如果我编写以下代码: float a = 1000.0F; float b = 0.00004F; float c = a + b + b; float d = b + b + a; boolean e = c == d; 价值将。我认为这是由于以下事实造成的:在精确表示数字的方式中,浮点数非常有限。但我不明白为什么只是改变的位置可能会导致这种不平等。ËËeF一升小号Ëfalsefalse一种aa 我在第3行和第4行中将 s都减小为1,但是的值变为:bbbËee牛逼[R ü ètruËtrue float a = 1000.0F; float b = 0.00004F; float c = a + b; …

9
如何在O(n)时间中找到5个重复值?
假设您有一个大小为的数组,其中包含从到(含)在内的整数,并且正好重复了5个。我需要提出一种算法,该算法可以找到O(n)时间中的重复数。我一生都无法想任何事情。我认为排序最好是O(n \ log n)?然后遍历数组将是O(n),从而导致O(n ^ 2 \ log n)。但是,我不确定是否需要排序,因为我已经看到一些棘手的东西,包括链接列表,队列,堆栈等。1n≥6n≥6n \geq 6111O (n )O (n log n )O (n )O (n 2 log n )n−5n−5n − 5O(n)O(n)O(n)O(nlogn)O(nlog⁡n)O(n\log n)O(n)O(n)O(n)O(n2logn)O(n2log⁡n)O(n^2\log n)

1
与列出所有解决方案有关的复杂性类?
我在Stack Overflow上阅读了一个问题,询问它是否是NP-很难在包含特定节点的图中列出所有简单循环,但我想到我想不出任何现有的复杂度类都非常适合谈论形式为“列出此问题的所有解决方案”的问题。从某种意义上说,NP类由一些问题组成,这些问题询问是否存在至少一个解决方案,FNP类要求产生一个单个的解决方案,而#P类则要求计算有多少个解决方案,但是这些都不涉及复杂性详尽列举所有可能的解决方案。 是否有用于描述给出一个多项式时间计算谓语形式”的问题复杂类和一个字符串,枚举所有针对是真受[插入一些适当的复杂性限制]?” 我知道,鉴于解决方案的数量可能比输入的大小成指数增长,但要限制这些限制可能很棘手,尽管这似乎并非不可克服。P(x ,y)P(X,ÿ)P(x, y)XXxÿÿyP(x ,y)P(X,ÿ)P(x, y)XXx

6
在理论背景下,计算机科学与数学有何区别?
我是计算机科学专业的大学学生,对数学学习充满热情。我坚信计算机科学或理论计算机科学是数学和逻辑学的直接分支,并且我认为计算机科学学位实际上必须始终以数学为导向。如果我错了,请纠正我。 坦白说,我觉得有没有很多在2个科目差异坦率地说,因为每个“计算”涉及“计算”,虽然每次“计算”可能不是“计算”。再次请提供大量信息和证据,如果我在这里误会了,请及时更新。谢谢

2
有效地插入到列表中,以最小化反转次数
假定两个可比较项的列表:u和s。令INV(u)为u中的求逆数。 我正在寻找一种有效的算法,以在不增加INV(u)的情况下将s的项插入u中。 基本上,我想将对象插入列表,同时保持“尽可能排序”,同时保持第一个列表的顺序。 例: u = [4,6,2,9,7] INV(u) = 3 ((4, 2), (6, 2) and (9, 7) s = [8,3,10] one optimal solution u' = [3, 4, 6, 2, 8, 9, 7, 10] INV(u') = 5 ((4, 2), (7, 2) and (9, 7) + (3,2), (8,7)) different optimal solution u' …

1
没有多态Lambda演算的朴素集理论模型?
在菲利普·沃德勒(Philip Wadler)关于免费定理的论文中,他在关于参数性的第二节中指出 没有多态lambda演算的幼稚集理论模型 在朴素的集合理论模型中,类型是集合,函数是集合理论函数,这似乎是合理的。那么,为什么他说没有多态Lambda演算的幼稚集合论模型呢?

4
巨型图上的Dijkstra算法
我对Dijkstra非常熟悉,并且对算法有一个特定的问题。如果我有一个巨大的图,例如35亿个节点(所有OpenStreetMap数据),那么我显然将无法在内存中使用该图,因此该图存储在数据库的磁盘上。 有一些库可用于计算此类图上的最短路径。他们如何做到这一点?更具体地说,他们如何加载图的必需部分以运行Dijkstra的算法? 根据我的统计数据,获取访问的每个顶点的邻接表将需要每10,000个节点大约1,500个数据库查询,因此显然不是他们如何做到的。那太慢了。 他们是如何做到的呢?我正在尝试自己实施。

3
查找“反回文”语言的示例
设Σ={0,1}Σ={0,1}\Sigma = \{ 0, 1 \}。语言L⊆Σ∗L⊆Σ∗L \subseteq \Sigma^* 据说有“反回文”属性,若对所有的字符串www这是一个回文,w∉Lw∉Lw\notin L。此外,对于每一个字符串uuu是不是回文要么u∈Lu∈Lu\in L或Reverse(u)∈LReverse(u)∈L\mathrm{Reverse}(u) \in L,但不能两者都(!)(异或)。 我了解反回文性质,但找不到具有此性质的任何语言。最近一个我能找到的是Σ∗∖LΣ∗∖L\Sigma^* \setminus L,但它不具有独占或部分...也就是说,例如,两个010101和101010是LLL。 谁能给我一个具有这种特性的语言的例子吗?甚至可能不止一个示例,因为我看不到这对语言有什么样的限制。(它必须是非常规的吗?上下文无关吗?或者甚至在RRR?等中也不是。)

2
空语上的Kleene star操作
在我的教科书中提到:其中是一种空语言。∅∗={ϵ}∅∗={ϵ}\emptyset^*=\{\epsilon\}∅∅\emptyset 但是,我们知道,其中是任何语言。大号大号·&∅ = ∅L⋅∅=∅L \cdot \emptyset = \emptyset大号LL 我无法直观地理解这个概念,因为Kleene星操作指向的事实。∅∗= ∅0∪ ∅1∪ ∅2∪ ⋯∅∗=∅0∪∅1∪∅2∪⋯\emptyset^*=\emptyset^0 \cup \emptyset^1 \cup \emptyset^2 \cup \cdots 那么为什么不等于呢? ∅∅∗∅∗\emptyset^*∅∅\emptyset

1
为什么要分开词法和解析?
可以使用状态机的一次传递来解析文档。两次通过,即有什么好处?有一个词法分析器将文本转换为令牌,并有一个解析器来测试这些令牌的生产规则?为什么没有一次将生产规则直接应用于文本的过程?

2
超级计算机的目的
去年秋天,我参观了伊利诺伊大学的Blue Waters超级计算机。我问是否有人使用过整个计算机。有人告诉我它总是在多个项目上工作。这让我想知道超级计算机的用途。也许蓝色水域是不寻常的,因为它必须由工业界和大学共享-我不知道。我认为管理单个超级计算机的处理器和内存会产生一些开销。构建小型计算机是否更具成本效益?谁能帮助我了解超级计算机的价值?还是有时它们专门用于单个项目?

4
什么
什么意思吗?log O (1 ) nlogO(1)n\log^{O(1)}n 我知道big-O表示法,但是这种表示法对我来说毫无意义。我也找不到任何东西,因为搜索引擎也无法正确解释。 在上下文中,我发现它的句子为“ [...],如果它使用空间并且最多使用则我们将其称为[efficiency]函数每件。”O (log n )log O (1 ) nO(logn)O(\log n)logO(1)n\log^{O(1)}n

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.