计算机科学

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



1
求解K形问题的
团问题是公知的 -complete问题,其中所需要的集团的大小是输入的一部分。但是,k-clique问题具有简单的多项式时间算法(当k为常数时为O (n k))。当k为常数时,我对最著名的上限感兴趣。NPNPNPO(nk)O(nk)O(n^k)kkk 是否存在运行时间为?甲ø (Ñ ķ) -time算法也是可接受的。此外,这种算法的存在是否有复杂性理论的后果?O(nk−1)O(nk−1)O(n^{k-1})o(nk)o(nk)o(n^k)

3
是否可以遍历一棵树而无需递归,堆栈或队列,而只需几个指针?
半年前,我坐在一个数据结构课上,如果有人可以在不使用递归,堆栈,队列等(或任何其他类似数据结构)而仅使用几个指针的情况下遍历一棵树,教授将提供额外的荣誉。我想出了一个我认为是对这个问题的明显答案,最终被教授接受了。我和同一系的另一位教授坐在一门离散数学课上,他断言没有递归,堆栈,队列等就不可能遍历一棵树,而且我的解决方案无效。 那么,有可能还是不可能?为什么或者为什么不? 编辑:为澄清起见,我在具有三个元素的二叉树上实现了这一点-每个节点上存储的数据和指向两个孩子的指针。我的解决方案仅需少量更改即可扩展到n元树。 我的数据结构老师没有对树的变异施加任何限制,实际上,后来我发现他自己的解决方案是使用子指针在回落的过程中指向树的后方。我的离散数学教授说,根据树的数学定义,树的任何突变都意味着它不再是树,他的定义还将排除指向父代的任何指针,这与我上面解决它的情况相符。


2
堆-给出
最有可能在问过这个问题。来自CLRS(第二版)问题6.5-8- 给出一个时间算法,将k个排序列表合并为一个排序列表,其中n是所有输入列表中元素的总数。(提示:请使用最小堆进行k向合并。)O(nlgk)O(nlg⁡k)O(n \lg k)kkknnnkkk 由于有排序的列表且总共有n个值,所以我们假设每个列表包含n个kkknnn数字,而且每个列表都严格按升序排序,结果也将按升序存储。nknk\frac{n}{k} 我的伪代码看起来像这样- list[k] ; k sorted lists heap[k] ; an auxiliary array to hold the min-heap result[n] ; array to store the sorted list for i := 1 to k ; O(k) do heap[i] := GET-MIN(list[i]) ; pick the first element ; and keeps track of …

4
如何设计出建议可行烹饪食谱的算法?
我的课程中曾经有一位资深人士,他创建了一种算法,可以建议烹饪食谱。首先,各种疯狂的食谱都会出现。然后,她将用真实的食谱训练烹饪算法,并最终提出非常好的食谱。 我相信她使用了与贝叶斯定理或聚类有关的东西,但是她早已不复存在,算法也是如此。我已经在互联网上搜索过,但是寻找烹饪食谱会产生任何结果,但不是我想要的结果。所以,我的问题是: 可以使用哪些技术来设计(随机地)提出可行配方的算法(不使用固定配方的数据库)? 为什么我要寻找烹饪算法呢?好吧,这是真实世界中底层概念应用的一个很好的例子,这种算法在更接近真实世界的不同设置中很有用。

2
可确定的非上下文敏感语言
可以说大多数用来描述日常问题的语言都是上下文相关的。另一方面,有可能并且不难找到一些不是递归的,甚至不是递归可枚举的语言。 在这两种类型之间是递归的非上下文敏感语言。维基百科在这里举了一个例子: 不依赖上下文的递归语言的一个示例是其决策是EXPSPACE难题的任何递归语言,例如具有幂运算的一对等价正则表达式对。 那么问题就来了:还有哪些其他问题是可以确定的,但对上下文不敏感?这类问题是否与可判定的EXPSPACE-hard相同?



3
为什么不采用数值算法中数字的一元表示形式呢?
伪多项式时间算法是对输入值(幅度)具有多项式运行时间,而对输入大小(位数)具有指数运行时间的算法。 例如,测试数字是否为质数,需要循环从2到数字,并检查 mod是否为零。如果mod花费O(1)时间,则总时间复杂度将为O(n)。n - 1 n innnn−1n−1n-1nnn iii 但是,如果让为写入输入所需的位数,则(二进制),因此,问题的运行时间将是指数的O()。x = 日志n n = 2 x 2 xxxxx=lognx=log⁡nx = \log nn=2xn=2xn = 2^x2x2x2^x 我的问题是,如果我们考虑输入的一元表示形式,则始终为,则伪多项式时间将等于多项式时间复杂度。那么为什么我们从不这样做呢?x = nnnnx=nx=nx=n 此外,由于存在背包的伪多项式时间算法,因此通过取,背包将成为多项式,结果P = NPx=nx=nx=n

6
线性代数的哪些部分在计算机科学中使用?
我一直在阅读《线性代数及其应用》以帮助理解计算机科学材料(主要是机器学习),但我担心很多信息对CS毫无用处。例如,除非您尝试编写新的方程式求解器,否则了解如何有效地求解线性方程式系统似乎没有什么用。此外,这本书还讨论了跨度,线性相关性和独立性(矩阵有逆的时候)以及它们之间的关系,但是我想不出它在CS中的任何应用。那么,CS中使用线性代数的哪些部分?

5
图中负权重边的重要性是什么?
我进行了动态编程练习,发现了Floyd-Warshall算法。显然,它找到了图的所有对最短路径,其权重边可能为负,但没有负周期。 所以,我想知道负重边的现实意义是什么?简单的英语解释会有所帮助。


1
是否可以在不比较邻居的情况下验证列表的排序?
一个ññn通过每一个项目比较它的邻居作为排序-Item列表可以验证。在我的应用程序中,我将无法将每个项目与其相邻项目进行比较:相反,有时会在遥远的元素之间进行比较。鉴于列表包含三个以上的项目,并且比较是唯一受支持的操作,因此是否存在一个比较“网络”,以证明列表已排序,但至少缺少一个直接的邻居比较? 形式上,对于元素Ë一世Ë一世e_i的序列,我有一组索引对( j ,k )(Ĵ,ķ)(j,k)对于这些索引,我知道ËĴ&gt; eķËĴ&gt;Ëķe_j > e_k,ËĴ= eķËĴ=Ëķe_j = e_k还是ËĴ&lt; eķËĴ&lt;Ëķe_j < e_k。存在一对(l ,l + 1 )(升,升+1个)(l,l+1),这对比较集中缺少该对。那么,是否有可能证明序列已排序?
14 sorting 

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.