计算机科学

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

1
“无流量”难题难解难关吗?
“无流”拼图由一个正整数和n × n网格图中的一组(无序)成对的不同顶点组成,这样每个顶点最多为一对。此类难题的一种解决方案是图中的一组无向路径,以使每个顶点恰好在一个路径中,并且每个路径的端点都是难题对的一对顶点中的一个。此图像是Flow Flow拼图的一个示例,并且此图像是另一个Flow Free Puzzle的解决方案的一个示例。ññnn × nñ×ñn \times n 是否存在问题“是否存在针对“无流程难题”的解决方案?” NP难吗?是一元还是二进制是否重要?ññn


2
为什么MIPS包含shmt和区分功能/操作码?
对于MIPS设计器为何要包含5个专用于移位的位并具有独立的操作码和功能位,我感到困惑。 因为MIPS是RISC,所以我假设只有几条指令才能完成移位操作,所以这5位看起来很浪费空间,因为它们可以立即放入。我假设操作码和函数是分开的,以区分R型和I型指令,但这可以通过将操作码扩展1位来完成。使用这两种R型指令时,它们的长度可能为22位。如果I型和J型指令希望保留其立即数和地址,则此方法将无效,但看起来两者都是不必要的。

1
测试四面体是否位于多面体中
我有一个四面体 和一个多面体。受限制,使其始终与共享所有顶点。我想,以确定是否的谎言里面。Ťtt 吨p 吨pppŤttpppŤtt ppp 我想在问题上添加一个细节,以防可能对解决方案有所帮助:是Delaunay四面体,面是三角形,并且相对于顶点都是Delaunay。四面体是德劳内如果外接球的顶点包含在它里面没有其他的顶点。A面是强烈德洛奈如果存在其表面上含有该面的顶点,但没有其他顶点一个外接球上或内部的。Ťttpppppp 下图显示了空间中的相同问题: 2 d2D2D 原始多边形ppp: 的顶点的Delaunay三角剖分ppp: 对三角形进行内部/外部测试的结果Ťtt(阴影三角形位于 ,其余三角形位于外部):ppp 所需结果(在三角形外部修剪): 我最初的问题是在3D空间中,因此上图中的三角形转换为四面体,多边形转换为任意多面体。我已经弄清楚了这个问题的一些表述:pŤttpppppp 公式1 的唯一可以在之外的部分是它的边缘和三角形面,但通常可能存在一个,其表面上所有的外部都具有边,因此,也可以将此问题公式化为:测试四面体是否存在位于之外的面?p p t t pŤttpppppp ŤttŤtt ppp 公式2 对于这个问题,我还有另一种可能的观点,但是缺乏任何正式的想法:从 几何学上讲,如果在外部,那么它将始终粘附在的外表面上。因此,如果我们可以计算等高线(非正式地是外边界) 和使得和是的顶点集,则如果位于。 ŤttC ^ V Ç V p V = V 吨 ∪ V p V 吨,V p吨,p C ^ V = C ^ V …

2
是什么使PROLOG Turing完整?
我知道可以通过构建一个模拟图灵机的程序来证明PROLOG是图灵完备的: turing(Tape0, Tape) :- perform(q0, [], Ls, Tape0, Rs), reverse(Ls, Ls1), append(Ls1, Rs, Tape). perform(qf, Ls, Ls, Rs, Rs) :- !. perform(Q0, Ls0, Ls, Rs0, Rs) :- symbol(Rs0, Sym, RsRest), once(rule(Q0, Sym, Q1, NewSym, Action)), action(Action, Ls0, Ls1, [NewSym|RsRest], Rs1), perform(Q1, Ls1, Ls, Rs1, Rs). symbol([], b, []). symbol([Sym|Rs], Sym, …

1
构造不等价的二元矩阵
我正在尝试使用元素0或1 构造所有不等式的 ×矩阵(或者,如果需要的话,则 ×)。给出等价矩阵的操作是同时交换i和j行以及i和j列。例如。对于Ñ × Ñ 1 ↔ 2 (0 0 0 0 1 1 1 0 0)〜(1 0 1 0 0 0 0 1 0)8 × 88×88\times 8n × nñ×ñn\times n1 ↔ 21↔21\leftrightarrow2 ⎛⎝⎜001010010⎞⎠⎟〜⎛⎝⎜100001100⎞⎠⎟(000011100)〜(101000010)\begin{equation} \left( \begin{array}{ccc} 0 & 0 & 0 \\ 0 & 1 & 1 \\ 1 …

1
TLB和数据缓存如何工作?
我正在尝试考试,但我意识到我对TLB和数据缓存的工作方式感到困惑。 我知道TLB本质上是最近使用的物理地址的缓存。但是,我正在看教科书中的一个图表(如下所示),但我不知道其中发生了什么。我猜它突然分裂了物理地址,并用它来索引缓存。但是为什么它分别显示缓存和数据?为什么字节偏移量只是浮动?我很确定缓存也应该存储数据。我认为它的唯一目的不是确定其内部是否有命中或失误。 我为我的无知事先表示歉意,但是这本书几乎没有涵盖TLB的内容(只不过是一页纸),并且在解释TLB和缓存之间的关系方面做得不好。

1
为什么对b序列使用bzip2的压缩率如此跳跃?
library(ggplot2) compress <- function(str) { length(memCompress(paste(rep("a", str), collapse=""), type="bzip2")) / nchar(paste(rep("a", str), collapse="")) } cr <- data.frame(i = 1:10000, r = sapply(1:10000, compress)) ggplot(cr[cr$i>=5000 & cr$i<=10000,], aes(x=i, y=r)) + geom_line() 压缩比从“ a”的37开始,达到39“ a” s的收支平衡(压缩比= 1)。图表开始时非常平稳,并且突然以98“ a”的速度渐渐前移,并从此逐渐变小。 局部低点和平滑部分似乎也很不稳定和随机。有人可以向我解释为什么bzip2在此示例中显示此行为吗?

6
如何在一个数组中实现两个堆栈?
我首先要说这不是一个作业问题。我正在阅读算法简介-著名的CLRS文字,以成为更好的程序员。我正在尝试解决本书中自己提出的问题和练习。 我试图解决锻炼; Tibial 10.1-2从第10章基本数据结构从CLRS第二版。其状态如下: 说明如何在一个数组A [1..n]中实现两个堆栈,除非两个堆栈中的元素总数为n,否则两个堆栈都不会溢出。PUSH和POP操作应在O(1)时间中运行。 到目前为止,我想出的解决方案是: 让数组A [1..n]实现两个堆栈:S1 [1..i]和S2 [i..n]。 对于PUSH-S1和PUSH-S2操作,如果堆栈“已满”,则开始将元素推入另一个堆栈(例如,当尝试将新元素推入时,如果堆栈S1已满,则将该元素推入堆栈S2,反之亦然)。 这种方法的问题是我将无法可靠地进行POP-S1或POP-S2,因为无法“记住”哪个元素属于哪个堆栈。如果堆栈的元素是(键,值)对,键是堆栈号,那么要弹出一个元素,在最坏的情况下,我必须搜索i或(ni)次-这将是O(n )(如果我在这里错了,请随时纠正我),它不是O(1)。 我已经在这个问题上花了很长时间了。我在正确的轨道上吗?有人可以给我解决该问题的可能指示吗? 通常,我应该如何“思考”这些问题?还是只有真正有才智的人才能解决这类问题?解决/解决此类问题(例如获得经验)是否可以帮助我变得更好? 我在等待启蒙。

2
没有快速算法的
在多项式时间内可以解决的困难决策问题有哪些例子?我正在寻找最佳算法“慢”的问题,或者最快的已知算法“慢”的问题。 这是两个示例: 识别完美图形。Liu和Vuskovic在他们的FOCS'03论文[1]Cornuéjols中给出了该问题的时间算法,其中n是顶点数。我不确定是否已改善此限制,但据我了解,为了获得更快的算法,或多或少需要突破。(作者在[1]的期刊版本中给出了O (n 9)时间算法,请参见此处)。Ø (ñ10)Ø(ñ10)O(n^{10})ññnØ (ñ9)Ø(ñ9)O(n^9) 识别地图图形。Thorup [2]给出了一个相当复杂的算法,其指数为(大约?)。也许甚至可以大大改善这一点,但是我没有很好的参考。120120120 我对具有实际重要性的问题特别感兴趣,并且获得“快速”(甚至是实际的)算法已经有好几年了。 [1]Cornuéjols,Gérard,刘新明和Kristina Vuskovic。“用于识别完美图形的多项式算法。” 计算机科学基础,2003年。会议论文集。第44届IEEE年度研讨会。IEEE,2003年。 [2] Thorup,Mikkel。“在多项式时间内映射图。” 计算机科学基础,1998年。会议论文集。第39届年度研讨会。IEEE,1998年。

3
将DAG签约到新DAG中的最小尺寸
我们有一个DAG。我们在节点上有一个函数(松散地说,我们为节点编号)。我们想使用这些规则创建一个新的有向图:F:V→NF:V→NF\colon V\to \mathbb N 只有具有相同编号的节点才能签到相同的新节点。。(但是,。)F(x)≠F(y)⇒x′≠y′F(x)≠F(y)⇒x′≠y′F(x) \neq F(y) \Rightarrow x' \neq y'x′≠y′⇏F(x)≠F(y)x′≠y′⇏F(x)≠F(y)x' \neq y'\nRightarrow F(x) \neq F(y) 我们在新节点之间添加所有旧边:(x,y)∈E∧x′≠y′⟺(x′,y′)∈E′(x,y)∈E∧x′≠y′⟺(x′,y′)∈E′(x,y) \in E \land x' \neq y' \iff (x',y')\in E'。 此新图仍然是DAG。 | V'|的最小值是多少?|V′||V′||V'|?创建最小新图的算法是什么?

1
存在工会的情况下NFA和DFA之间的指数分离
最近,有人提出了一个有趣的问题,随后将其删除。 对于常规语言大号LL,其DFA复杂度是接受它的最小DFA的大小,而它的NFA复杂度是接受它的最小NFA的大小。众所周知,至少在字母的大小不受限制的情况下,两个复杂度之间存在指数分隔。确实,考虑由字母构成的语言大号ñLnL_n,该字母由不包含所有符号的所有单词组成。使用Myhill-Nerode定理,可以轻松计算DFA复杂度。另一方面,NFA复杂度仅为(如果允许多个初始状态,则为{ 1 ,… ,n }{1,…,n}\{1,\ldots,n\} n n + 12n2n2^nnnnn+1n+1n+1)。 有关删除的问题,DFA覆盖的复杂性语言,这是最小的CCC,使得LLL可以写成的DFA复杂语言最多的(不一定是不相交)工会CCC。覆盖复杂度的DFA LnLnL_n仅222。 NFA复杂度与DFA覆盖复杂度之间是否有指数级的距离?

1
谁是Paxos的立法者?
在开创性的分布式系统论文《兼职议会》(Paxos协议)中,Leslie Lamport列举了参与Paxon议会协议的虚构立法者。 根据本文,他指出: 我给希腊立法者提供了在该领域工作的计算机科学家的名字,并在Guibas的帮助下将其译为伪造的希腊方言。 有人知道立法者的名字是关于科学家的吗?论文中的立法者名单和相应的计算机科学家将是理想的选择。 我认为论文中提到的第一位立法者“Λινχ∂”以南希·林奇的名字命名,因为它可以发音为“林奇”。此外,参考书目中的“ΛεωνίδαςΓκίμπας”是Leo Guibas。我完全不知道其他人是谁。

6
格子有什么用?
维基百科说: 完整的格子出现在数学和计算机科学的许多应用中 是否仅是指计算中使用的标准布尔代数是一个完整的格?通过在晶格的抽象级别上进行工作,而不是专门使用布尔逻辑,我们有什么收获? 谷歌搜索没有找到关于这个主题的很多东西,但是我可能使用了错误的关键词。

4
图有两个/三个不同的最小生成树?
我试图找到一种有效的方法来检测给定图G是否具有两个不同的最小生成树。我还试图找到一种方法来检查它是否具有3个不同的最小生成树。我曾经想过的天真的解决方案是运行一次Kruskal算法,然后找到最小生成树的总权重。稍后,从图中移除一条边并再次运行Kruskal算法,并检查新树的权重是否为原始最小生成树的权重,因此对图中的每条边也是如此。运行时是O(| V || E | log | V |),这一点都不好,我认为有更好的方法来执行。 任何建议都会有所帮助,在此先感谢

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.