Questions tagged «algorithms»

算法是定义明确的问题解决方案的一系列明确定义的步骤。如果您的问题与算法的设计和分析有关,请使用此标签。

8
对数复杂度的算法直觉
我相信我对,和这样的复杂性有一定的了解。Θ (n )Θ (n 2)O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)Θ(n2)Θ(n2)\Theta(n^2) 就列表而言,是一个常量查找,因此它只是成为列表的开头。 是我遍历整个列表的位置,而对于列表中的每个元素遍历该列表一次。Θ (n )Θ (n 2)O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)Θ(n2)Θ(n2)\Theta(n^2) 除了只知道位于和之间,有没有类似的直观方法来掌握它?Θ(logn)Θ(log⁡n)\Theta(\log n)Θ (n )O(1)O(1)\mathcal{O}(1)Θ(n)Θ(n)\Theta(n)


7
图灵机“按定义”是功能最强大的机器吗?
我同意图灵机可以解决“所有可能的数学问题”。但这是因为它只是算法的机器表示:首先执行此操作,然后执行该操作,最后输出该算法。 我的意思是,任何可以解决的问题都可以用算法来表示(因为这正是“可解决”的定义)。这只是一个重言式。我在这里没说新话。 通过创建算法的机器表示,它也将解决所有可能的问题也不是什么新鲜事。这也仅仅是重言式。因此,当说图灵机是最强大的机器时,实际上,这实际上意味着最强大的机器是最强大的机器! “最强大”的定义:可以接受任何语言的语言。 “算法”的定义:做任何事情的过程。“算法”的机器表示:一台可以做任何事情的机器。 因此,合乎逻辑的是算法的机器表示将成为功能最强大的机器。艾伦·图灵给我们带来了什么新东西?

4
什么是尾递归?
我知道递归的一般概念。在研究quicksort算法时,我遇到了尾递归的概念。在MIT 18:30秒的视频中,快速排序算法的视频中,教授说这是一种尾递归算法。我不清楚尾递归到底意味着什么。 有人可以举例说明这个概念吗? SO社区在此处提供了一些答案。

4
为什么多项式时间称为“有效”?
为什么在计算机科学中将最多多项式的复杂度视为有效的? 对于任何实际应用(a)来说,复杂度为的算法比及时运行的算法(即要快得多,但是前者被认为效率低下,而后者是有效的。逻辑在哪里?nlognnlog⁡nn^{\log n}n80n80n^{80} (a)例如,假设宇宙中的原子数约为。1080108010^{80}

3
为什么二元搜索比三元搜索快?
在搜索的阵列使用二进制搜索元素需要,在最坏情况下日志2次 Ñ迭代因为,在每一个步骤中,我们修剪我们的搜索空间的一半。相反,如果我们使用“三元搜索”,则每次迭代都将减少三分之二的搜索空间,因此最坏的情况应该是log 3 N &lt; log 2 N迭代...ññN日志2ñ日志2⁡ñ\log_2 N日志3ñ&lt; 日志2ñ日志3⁡ñ&lt;日志2⁡ñ\log_3 N < \log_2 N 似乎三元搜索更快,那么为什么要使用二元搜索呢?

12
在夏娃不知情的情况下,如何与鲍勃验证号码?
您需要检查您的朋友鲍勃(Bob)是否输入了正确的电话号码,但是您不能直接问他。您必须将问题写在卡片上,然后交给伊夫,夏娃将把卡片带给鲍勃,并将答案返回给您。除问题外,您还必须在卡上写些什么,以确保Bob可以对消息进行编码,以使Eve无法读取您的电话号码? 注意:该问题在“ Google面试问题”列表中。结果,网络上有成千上万个此问题的版本,其中许多没有清晰甚至正确的答案。 注2:这个问题的狡猾答案是鲍勃应该写“给我打电话”。是的,这非常聪明,“开箱即用”,无所不包,但是没有使用CS领域中我们称之为英雄“鲍勃”和窃听对手“夏娃”的任何技巧。 更新: 您和Bob都可以手工合理完成的算法的加分。 更新2: 请注意,鲍勃不必向您发送任何消息,而仅需确认自己具有正确的电话号码,而夏娃无法对其进行解码,因此可能会或可能不会导致更简单的解决方案。

2
雷诺和泰曼的增长顺序定义
我正在阅读卡尔·雷诺兹(Carl Reynolds)和保罗·泰曼(Paul Tymann)撰写的一本名为《计算机科学原理》的书(由Schaum的提纲出版)。 第二章以顺序搜索示例介绍算法,该搜索简单地循环访问名称列表,如果在列表中找到给定名称,则返回TRUE。 作者继续说(第17页): 我们说顺序搜索算法的“增长顺序”是n。表示为T(n)。我们还说,增长顺序在T(n)的某个恒定因子之内的算法具有NLsay的theta。“顺序搜索的n为n。” 问题的大小为n,即要搜索的列表的长度。 我发现这确实很难遵循。这本书到处都是错误,所以我不确定是我遗漏了什么还是上面的段落中有错字。一般来说,我很少看到以“ ... say”结尾的句子。 我很困扰。 T代表什么?这本书没有解释。是时间还是Theta? 如果“ NL的theta”表示“顺序搜索的n为n”。L代表什么?“线性”还是“长度”? 我已写信给出版商,要求解释。他们说他们会将我的信息转发给作者。他们没有回答。我也尝试过查看其他资源,但仍然感到the惑,觉得我误会了一些东西,因此,在我对本段进行解码之前,请不要放松。 如果有人拥有该书的副本,并且已经理解该段落。然后,如果您能让我知道该段是否正确或用其他方式解释,将不胜感激。谢谢。

2
要找到未排序数组的中位数,我们可以在n 个元素的时间内进行最小堆操作,然后可以以n / 2个元素中的一个来提取一个中值。但是这种方法将花费O (n log n )时间。Ø (ñ 日志n )O(nlog⁡n)O(n\log n)ñnnn / 2n/2n/2Ø (ñ 日志n )O(nlog⁡n)O(n \log n) 我们可以在时间内通过某种方法执行相同操作吗?如果可以,那怎么办?O (n )O(n)O(n)

7
最小生成树与最短路径
最小生成树算法和最短路径算法有什么区别? 在我的数据结构课程中,我们介绍了两种最小生成树算法(Prim和Kruskal)和一种最短路径算法(Dijkstra)。 最小生成树是图形中跨越所有顶点的树,并且树的总权重最小。最短路径很明显,它是从一个顶点到另一个顶点的最短路径。 我不明白的是,由于最小生成树的总权重最小,树中的路径不是最短的路径吗?有人可以解释我所缺少的吗? 任何帮助表示赞赏。

3
无向树中只有一个遍历的最长路径
有两种使用深度优先搜索的标准算法来查找无向树中的最长路径: 从随机顶点开始DFS 并找到离它最远的顶点;说是。vvvv′v′v' 现在从开始DFS,以找到离它最远的顶点。该路径是图中的最长路径。v′v′v' 问题是,这可以更有效地完成吗?我们可以用一个DFS或BFS做到吗? (这可以等效地描述为计算无向树的直径的问题。)



7
解释算法渐近复杂度与算法设计实践的相关性
在算法和复杂度中,我们关注算法的渐近复杂度,即,随着输入大小达到无穷大,算法使用的资源量。 在实践中,需要一种能够在有限(尽管可能非常大)实例数量上快速运行的算法。 在我们感兴趣的有限数量的实例上在实践中运行良好的算法不需要具有良好的渐近复杂度(有限数量的实例上的良好性能并不意味着关于渐进复杂性的任何内容)。类似地,具有渐近复杂性的算法在实际中对我们感兴趣的有限数量的实例(例如,由于常量较大)可能无法很好地工作。 为什么我们使用渐近复杂性?这些渐近分析在实践中如何与算法设计相关?

3
确定动态编程的子问题
我已经多次使用动态编程技术,但是今天有一个朋友问我如何定义子问题,我意识到我无法提供客观的正式答案。您如何正式定义要使用动态编程解决的问题的子问题?

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.