Questions tagged «algorithms»

在数学和计算机科学中,算法是一种有效方法,表示为用于计算函数的定义明确的指令的有限列表。算法用于计算,数据处理和自动推理。

4
算法入门(CLRS)书的必备数学技能
我已经对基本算法有所了解。现在,我计划研究更多高级算法,并决定继续学习“算法简介”。 我不确定,在读这本书之前我是否需要提高数学技能?(我几乎忘记了我在高中和大学学习的数学)如果这本书需要强大的数学知识,请提出一些有益的学科。 我想学习算法的实现,设计和分析。

7
是否有任何算法模式可以保护网络上的任何内容,以确保我是第一个创建该内容的人?
几年前,有一位黑客(不记得他是谁)完全披露了给定系统中的漏洞,但为了确保没人对此表示赞赏,他创建了某种PGP密钥。 我当时的理解是,他创建了一个密钥以确保自己是发现它的那个人,但是没有透露自己的真实身份,只是创建了一种机制来证明他是那个创建披露的人。 。 好。我了解算法和密码学的工作原理。但是我仍然不明白如何创建一个密钥来保护网络上公开的给定内容,以证明您是最先创建它的人!这只是言语! 真的有可能吗?确保您可以凭经验证明的过程应该是什么?我是否理解正确,或者可能错过了一些与此案有关的东西? 我希望这个问题足够具体,基本上就是如何保护您在网络上创建的内容(一段,一段代码,一个单词等),并确保您是第一个创建该内容的人。给定上下文。 据我所知,我不知道这是怎么可能的,但是我对是否有可行的方法很感兴趣。在那儿?

5
这是否是识别算法的“大O”符号的正确“规则”?
我一直在学习有关大O表示法的更多信息,以及如何根据算法编写方式对其进行计算。我遇到了一组有趣的“规则”,用于计算算法“大O”表示法,我想看看自己是在正确的轨道上还是在正确的道路上。 大O表示法:N function(n) { For(var a = 0; i <= n; i++) { // It's N because it's just a single loop // Do stuff } } 大O表示法:N 2 function(n, b) { For(var a = 0; a <= n; a++) { For(var c = 0; i <= b; c++) { …
29 algorithms  big-o 

7
我应该继续投资于数据结构和算法吗?[关闭]
这些天来,我在数据结构和算法上投入了大量资金,并试图解决一些编程难题。 我正在尝试使用Java和Clojure进行编码和解决。 我在浪费时间吗?我是否应该在我已经知道的技术和框架上进行更多的投资,以便获得更深入的知识(内幕和外幕)并能够更快地使用它们进行编码? 通过研究数据结构和算法,我是否将成为一名更好的程序员,或者这些学科仅在大学期间才重要?

9
配色方案的产生-理论和算法
我将生成图表,并且我正在寻找有关配色方案和算法示例的一些理论。 问题示例: 如何产生互补或相似的颜色? 如何产生柔和,冷和暖的颜色? 如何生成任意数量的随机但截然不同的颜色? 如何将所有内容转换为十六进制三元组(网页颜色)? 我的实现将在AS3中进行,但欢迎使用伪代码中的任何示例。

3
电梯使用哪种算法来找到最短的下单路径?
我一直在尝试模拟一个电梯,就像往常一样,我一次只做一个简单的命令就非常简单,然后以队列的形式向电梯添加内存,以便按压下的顺序移动地板,这显然不是最佳方法。 因此,目前我使用的是一种非常简单且“近视”的逻辑,即对于当前楼层,找到离我最近的楼层并将其设置为我的下一个目的地,然后循环直到列表中没有更多的楼层。 但这并不总是有效,例如,电梯位于5层建筑的3层,并获得订单4,5,2,最短路径为2-> 4-> 5,花费4层,但是使用此逻辑根据代码的不同,花费5的4-> 5-> 2有相同的机会被选中。 如何找到最短的路径并使电梯更高效?

5
别人可以为我的开源算法申请专利吗?[关闭]
我编写了一个递归搜索算法来查找体素数据结构的边界,以便更有效地呈现它。我环顾四周,或者它是一种简单明了的技术,没有人为它申请专利,或者它是新颖的,而且以前没有人这样做。 它在GitHub上公开“发布”并受GPL保护。我想向其他人展示它,看看是否可以改进... 我担心尽管我已经撰写并发布了该书,但有人可能会尝试为同一想法申请专利。 我是安全的吗?是否受到开放源代码软件的保护?还是我必须像大手笔和专利巨魔一样保护自己? 我相信软件专利是邪恶的,并且为了编写出最好的软件,很多人需要看到它。不过,我担心这可能只是关于如何编写软件的幼稚观点,我对其他人的想法感到好奇。

3
哪种字符串搜索算法实际上是最快的?
我一直被困在最快的字符串搜索算法上一段时间,听到了很多意见,但是最后我不确定。 我听到有人说最快的算法是Boyer-Moore,有人说Knuth-Morris-Pratt实际上更快。 我一直在寻找它们两者的复杂性,但是它们看起来大致相同O(n+m)。我发现在最坏的情况下,博耶·摩尔O(nm)要比具有O(m + 2 * n)的克努斯·莫里斯·普拉特复杂。其中,n =文本长度,m =模式长度。 据我所知,如果我使用加利尔定律,博耶-摩尔的情况将是最糟的。 我的问题,总的来说,这实际上是最快的字符串搜索算法(此问题包括所有可能的字符串算法,而不仅仅是Boyer-Moore和Knuth-Morris-Pratt)。 编辑:由于这个答案 我要寻找的是: 鉴于文本T和图形P我必须找到所有的出场P在T。 P和T的长度也来自[1,2 000 000],程序必须在0.15秒内运行。 我知道KMP和Rabin-Karp足以在该问题上获得100%的分数,但是我想尝试实施Boyer-Moore。哪种模式搜索最合适?

5
为什么mergesort O(log n)?
Mergesort是分治法,是O(log n),因为输入被反复减半。但是它不应该是O(n),因为即使每个循环的输入减半,每个输入项也需要迭代以在每个减半的数组中进行交换?在我看来,这本质上是渐近O(n)。如果可能,请提供示例并说明如何正确计算操作!我还没有编码任何东西,但是我一直在网上寻找算法。我还附上了Wikipedia用来直观地显示mergesort如何工作的gif图像。
27 algorithms  big-o 

4
MapReduce不仅是分而治之的应用程序吗?
将问题划分为较小的问题,直到可以独立解决各个问题,然后将它们组合起来以回答原始问题,这就是所谓的分而治之算法设计技术。[请参阅:CLR算法简介] 最近,这种解决计算问题(特别是在非常大的数据集领域)的方法被称为MapReduce,而不是分而治之。 我的问题如下:MapReduce仅仅是依赖于分而治之方法的专有框架吗?还是在某些方面有使其独特的独特之处?
26 algorithms 

3
如何找到带有虫洞节点的最短路径?
这是我想通过代码执行的示例。我知道您可以使用跳转点搜索轻松地从绿色节点到红色节点,甚至A *也不会出现问题。但是,如何计算变形呢? 在图中,您可以看到,沿着蓝色路径,从绿色节点到红色节点仅需8步。蓝色路径会立即将您的位置从一个紫色节点移动到另一个紫色节点。花费2个动作的中间空间是您必须移动到的两个变形区域之间的一个点。 显然,走蓝色路径更快,因为您只需要(大约)移动一半到黄色路径,但是我该如何编程呢? 为了解决此问题,我们假设您可以使用图形周围有多个紫色“变形”,并且我们确切知道每个紫色点将变形到什么位置以及它们在图形上的位置。 有些紫色经线是双向的,而有些不是,这意味着,有时您只能从一侧进入经线,而在扭曲后不能返回。 我已经考虑了解决方案,但得出的结论是,我可以通过检查到每个变形点的距离(减去单向点)以及这些点之间的差以及与之接近的点来计算问题。 。 该程序必须弄清楚采用第二种经线比从第一条跳跃走更有益。因此,与其先移动6个点,然后进行变形,然后再步行剩余的8步(这比根本不使用经线要快),不如先移动6个点,然后再进行两次移动到第二个经线。 编辑:我意识到蓝色的路径实际上将采取12步,而不是8步,但问题仍然相同。

4
该XOR值交换算法是否仍在使用或有用
当我刚开始工作时,大型机组装程序程序员向我展示了如何在不使用传统算法的情况下将它们交换为值: a = 0xBABE b = 0xFADE temp = a a = b b = temp 他们用来交换两个值(从一点到一个大的缓冲区)的是: a = 0xBABE b = 0xFADE a = a XOR b b = b XOR a a = a XOR b 现在 b == 0xBABE a == 0xFADE 它交换了2个对象的内容,而无需第三个临时存储空间。 我的问题是:这个XOR交换算法是否仍在使用,它仍然在哪里适用。
25 algorithms 

5
确定算法是否为O(log n)
我正在刷新我的CS理论,我想知道如何识别算法O(log n)的复杂性。具体来说,有一种简单的方法可以识别它吗? 我知道O(n)通常是一个循环;O(n ^ 2)是一个双循环;O(n ^ 3)是一个三重循环,以此类推。O(log n)怎么样?

4
用伪代码:=是什么意思?
标题为“ 算法实现 ”的部分具有以下代码: // Return RC low-pass filter output samples, given input samples, // time interval dt, and time constant RC function lowpass(real[0..n] x, real dt, real RC) var real[0..n] y var real α := dt / (RC + dt) y[0] := x[0] for i from 1 to n y[i] …
25 algorithms 

9
算法问题是好的面试问题吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我最近和一位程序员发生了争执。他正在面试新职位,并被问到以下问题: 给出一个从X到Y的数字序列,但缺少一个元素,因此N为YX-1,在O(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.