Questions tagged «algorithms»

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

9
为什么不可能产生真正的随机数?
我试图解决一个爱好问题,该问题需要生成一百万个随机数。但是我很快意识到,使其变得独特变得越来越困难。我阅读了《算法设计手册》,以了解有关随机数生成的信息。 它有以下一段我完全无法理解。 不幸的是,生成随机数看起来比实际要容易得多。实际上,从根本上不可能在任何确定性设备上产生真正的随机数。冯·诺依曼[Neu63]最好说:“任何考虑产生随机数的算术方法的人,当然都处于犯罪状态。”我们所能期望的最好是伪随机数,它像一串数字如果它们是随机生成的。 为什么在任何确定性设备中都不可能产生真正的随机数?这句话是什么意思?

8
有哪些方法可以避免递归算法中的堆栈溢出?
题 解决由递归算法引起的堆栈溢出的可能方法是什么? 例 我正在尝试解决Project Euler问题14,并决定尝试使用递归算法。但是,该程序以java.lang.StackOverflowError停止。可以理解 该算法确实使堆栈溢出,因为我尝试为大量生成Collat​​z序列。 解决方案 所以我想知道:假设您的递归算法编写正确,并且最终会导致堆栈溢出,那么有什么标准方法可以解决堆栈溢出的问题呢?我想到了两个概念: 尾递归 迭代 想法(1)和(2)是否正确?还有其他选择吗? 编辑 最好查看一些代码,最好使用Java,C#,Groovy或Scala。 也许不要使用上面提到的Project Euler问题,这样它就不会被其他人宠坏,而是采用其他算法。阶乘可能,或类似的东西。

6
算法可以申请专利吗?[关闭]
那么算法可以申请专利吗? 我看到了这句话,使我想到: 直到2021年,每个人都至少会放弃对轮廓点算法的改进申请专利,直到2021年。因此,Outliner项目的开发人员可以随意实现他们的想法。 取自此Codeplex项目。

2
您将如何实施Google搜索?[关闭]
假设在一次采访中被问到“您将如何实施Google搜索?” 您将如何回答这样的问题?可能有一些资源可以解释Google如何实现某些功能(BigTable,MapReduce,PageRank等),但这并不完全适合采访。 您将使用什么总体架构,以及如何在15-30分钟的时间内解释这一点? 我将首先说明如何构建一个可处理约10万个文档的搜索引擎,然后通过分片扩展到约5000万个文档,然后再扩展一次体系结构/技术。 这是20,000英尺的视图。我想要的是细节-您在面试中如何实际回答。您将使用哪种数据结构。您的架构由什么服务/机器组成。典型的查询延迟是多少?故障转移/大脑分裂问题怎么办?等等...

14
固有随机/非确定性算法的单元测试
简而言之,我当前的项目涉及“约束随机事件”的创建。我基本上是在制定检查时间表。其中一些是基于严格的计划约束;您每周星期五10:00 AM进行一次检查。其他检查是“随机的”;有一些基本的可配置要求,例如“每周必须进行3次检查”,“必须在9 AM-9PM的时间之间进行检查”以及“在同一8小时内不应进行两次检查”,但是在为一组特定的检查配置的任何限制内,得出的日期和时间均不可预测。 单元测试和TDD,IMO在此系统中具有巨大的价值,因为它们可以用于按增量方式构建它,而整套需求仍然不完整,并确保我不会“过度设计”它来做我不喜欢的事情目前不知道我需要。严格的时间表对TDD来说是小菜一碟。但是,当我为系统的随机部分编写测试时,我发现很难真正定义要测试的内容。我可以断言调度程序产生的所有时间都必须在约束范围内,但是我可以实现通过所有此类测试的算法,而实际时间却不是很“随机”。实际上,这正是发生的事情。我发现了一个问题,尽管时间无法精确预测,但它属于允许的日期/时间范围的一小部分。该算法仍然通过了我认为我可以合理做出的所有断言,并且我无法设计在这种情况下会失败的自动测试,但是在给出“更​​多随机”结果时通过。我必须证明该问题是通过重组一些现有测试以重复多次来解决的,并目视检查生成的时间是否在整个允许范围内。 有没有人提供设计非预期行为的提示? 感谢所有的建议。主要观点似乎是,我需要进行确定性测试才能获得确定性,可重复性和可肯定的结果。说得通。 我创建了一组“沙盒”测试,其中包含用于约束过程(可能为任意长的字节数组在最小值和最大值之间变长的过程)的候选算法。然后,我通过一个FOR循环运行该代码,该循环为该算法提供了几个已知的字节数组(刚开始时从1到10,000,000的值),并使该算法将每个值限制为1009到7919之间的值(我使用质数来确保算法不会在输入和输出范围之间经过一些偶然的GCF)。计算得到的约束值,并生成直方图。要“通过”,所有输入都必须反映在直方图中(为了确保我们不会“丢失”任何值),直方图中任意两个存储桶之间的差不能大于2(实际上应小于等于1) ,但请继续关注)。获胜的算法(如果有)可以直接剪切并粘贴到生产代码中,并进行永久测试以进行回归。 这是代码: private void TestConstraintAlgorithm(int min, int max, Func<byte[], long, long, long> constraintAlgorithm) { var histogram = new int[max-min+1]; for (int i = 1; i <= 10000000; i++) { //This is the stand-in for the PRNG; produces a known byte array var buffer …

3
什么是帮手?是设计模式吗?是算法吗?
也许有点tongue之以鼻,但由于我无法在Google的任何地方找到此答案,因此请确保Software Engineering拥有以下答案: 什么是帮手? 我已经看到该名称在每个地方都被使用(模块名称,类名称,方法名称),好像语义是深刻而有意义的,但是在计算机科学的背景下(尽管我没有学位),我从未在任何地方看到描述或定义! 是设计模式吗?是算法吗?我曾经在一个程序中工作过,在该程序中,模块和类都被称为somethingsomethinghelper(其中某些东西也是相当通用的),然后我立即将其重命名为对我来说有意义的东西,但是我感觉好像在这里丢失了一些东西!


20
是否存在在以下类中性能大大优于实际的算法?[关闭]
昨晚我正在与另一位程序员讨论,即使O(1)可能是O(1),如果O(1)算法中存在一个较大的常数,则O(n)的运算也可能会胜过它。他不同意,所以我把它带到了这里。 是否有一些算法示例大大优于其下面的类?例如,O(n)比O(n)快或O(n 2)比O(n)快。 在数学上,当您忽略常数因子时,可以针对具有渐近上限的函数证明这一点,但是这样的算法在野外是否存在?在哪里可以找到它们的示例?它们用于什么类型的情况?
39 algorithms  big-o 

10
如何学习算法和数据结构?[关闭]
这是我先前的问题的延续,我曾问过有必要学习算法和数据结构。我觉得是的。 现在,我在这样的环境中工作:我永远不会有机会通过实验或实践或任何作业来学习它。什么是正确的方法,例如正确的书籍,正确的问题,正确的资源,我可以花六个月或一年或两年的时间来学习算法和数据结构?并且以一种可以将问题与数据结构和算法相关联的方式来塑造我的思想。


11
人脑的随机数生成算法?[关闭]
您是否知道或已设计出任何实用的,易于学习的“头脑中”算法,从而使人们可以生成(有点“真实”)随机数?“头上”是指..优选地没有任何外部工具或设备。同样,期望高输出(每分钟许多随机数)。 在SO上询问此问题,但并没有引起太大兴趣。也许这更适合程序员。

12
我需要了解被称为程序员的算法和数据结构吗?[关闭]
自从我从事编码工作已经六年了。编码各种东西,例如ActionScript,JavaScript,Java,PHP,Ajax,XML HTML,ASP等。我使用过数组,映射,链接列表,集合等,无论我在哪里工作,都喜欢我。但是每当我接受采访时,人们很可能会问我有关哈希,树,堆栈和队列的问题。一些关于如何处理排序算法的问题。我不知道我是否应该真正认识他们,还是应该停止自称程序员。即使我在问所有这些问题的人选择了我,我的内心也会告诉我,他们永远不会让我做这些事情。我真的需要知道所有这些吗?


9
算法比编程语言重要吗?
在当前(2013年)的Google Code Jam竞赛中,与仅使用40行代码即可解决同一问题的Python人员相比,C ++和Java人员花费了200多行代码。 Python不能直接与C ++和Java相提并论,但是我认为冗长程度的差异可能会对算法的效率产生影响。 与选择语言相比,知道正确的算法有多重要?能否以更好的方式(使用相同的算法)以C ++或Java来实现出色实现的Python程序,这是否与某些编程语言的自然冗长性有关?
35 java  c++  algorithms  python 

4
电子表格背后的数据结构是什么?
我想了解如何解决电子表格(一组命名或以其他方式标识的单元格,其中包含引用其他单元格的值或公式)。我曾尝试查看现有项目,但由于GUI,序列化,事件等操作太多,以至于找不到电子表格。 简单地说,它是如何工作的?

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.