Questions tagged «algorithms»

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

14
您知道最模糊的排序算法是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我刚刚通过sortvis.org博客文章阅读了有关cyclesort的文章。这可能是迄今为止我所听说过的最晦涩的一种语言,因为它使用的是我不熟悉的数学(检测整数集置换中的周期)。 您所知道的最晦涩的是什么?

30
什么是一些著名的一线或两线程序和方程式?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我正在尝试一个新平台,并且试图编写一个处理不超过60个字符的字符串的程序,我想用一些著名的或众所周知的小代码块填充数据存储,方程式,因为编程和数学与我的软件主题保持一致。该代码可以使用任何语言,也可以使用来自任何数学学科的方程式,只要它们的总长度小于60个字符即可。我怀疑人们会为此而烦恼。 例如, #include<stdio.h> int main(){printf ("Hi World\n");return 0;} 完全是60个字符! 非常感谢您的智慧!

5
算法:如何将O(n)和O(nlog(n))求和?
我有以下算法,该算法查找重复项并将其删除: public static int numDuplicatesB(int[] arr) { Sort.mergesort(arr); int numDups = 0; for (int i = 1; i < arr.length; i++) { if (arr[i] == arr[i - 1]) { numDups++; } } return numDups; } 我试图找到这种情况下最坏的情况。我知道mergesort是nlog(n),在我的for循环中,我正在遍历整个数据集,因此算作n。我不确定该如何处理这些数字。我应该把它们加在一起吗?如果要这样做,我将如何做?


5
用于计算目标最大子弹路径的算法。2 ricochets
对不起,标题很抱歉,但我没有更好的措辞... 因此,任天堂在Wii上开发了一款名为WiiPlay的出色游戏(是!)。里面有9个迷你游戏,而我最喜欢的一个叫做《坦克》!。这是关于销毁COM敌方坦克而又不致使自己遭到破坏的事情。这是一个关卡的屏幕截图: 摧毁坦克的一种方法是发射子弹。有一个石灰绿色的敌方坦克,可以发射高速子弹,两次弹跳(对着墙壁和方块)。您会看到,如果玩家的坦克停在现在的位置,如何立即将其摧毁,因为位于中央的石灰坦克可以按照我在图像上绘制的绿色路径发射子弹。 作为一名业余程序员,我一直想知道石灰罐如何确定朝哪个方向射击以击打玩家罐。 我自己考虑过,但是没有提出任何可能的算法。如果他们启发了某人,我将解释我的结论。为了简单起见,我假设一堵墙是子弹可以弹到的任何表面。因此,一个孤立的矩形块形成了四个墙。 我得出的结论是,子弹跳线始终位于平行四边形的一侧或变成平行四边形的相反顶点的两个点。它瞄准的射击敌方坦克和玩家坦克不一定是其他两个顶点,而是肯定位于与平行四边形的四个边中的任何一个共线的直线上。这是形成平行四边形的4种可能方式的说明: HOR-VER意味着子弹首先撞击水平的墙壁,然后撞击垂直的墙壁。 然后我被卡住了。我曾考虑过绕一条连接敌方坦克和玩家坦克的地图绕线移动,以查看它是否与任何墙面的任何两个击打形成平行四边形,但这并不总是可行的,因为敌方坦克和玩家坦克不是必须与平行四边形的顶点重合。 另外,我不确定算法的一般流程。该算法是否采用以下两种结构中的任何一种,或者我对这两种结构都错了? 不断找出可能的路径,并始终将其标记为最佳路径(可以是最短,最模糊,最不可避免的路径,或者是基于多个标准的组合加权评估),而忽略了其余的路径。毕竟,剩下的一个是最好的选择。 首先确定首先由子弹到达的所有墙壁(子弹不需要弹跳到任何其他墙壁即可到达这些墙壁中的每一个),然后确定这些墙壁中的每个墙壁上的所有可到达范围(有时不可能到达目标上的遥远点)如果您附近还有一堵墙,则没有弹跳的墙),然后再次确定所有带有弹跳的可到达​​墙,以及在这些墙上可到达的所有范围。这4个过程可以通过类似于光线跟踪的方法来完成。在每个过程中,如果玩家的坦克被任何射线击中,请根据该射线找出子弹路径。 我认为该算法很难弄清楚,原因是: 子弹可以向任何方向发射;和 在数学上,每堵墙上都有无数个点,在线上有无数个点。 但是任天堂的人还是成功了,所以...有人有主意吗?

8
是否有一部分程序可以避免停顿问题
我只是在阅读有关停止问题的另一种解释,这使我想到我所看到的所有示例中涉及的问题都涉及无限序列。但是我从不在程序中使用无限序列-它们花费的时间太长。现实世界中的所有应用程序都有上限和下限。甚至实数也不是真正的实数-它们是存储为32/64位等的近似值。 因此,问题是,是否存在可以确定程序是否暂停的子集?对于大多数程序来说足够好了吗?我可以建立一套可以确定程序的“可暂停性”的语言结构吗?我敢肯定,这已经在某处研究过,所以任何指针都将不胜感激。语言不会完全完成,但是是否有几乎完全完成这件事呢? 很自然地,这样的构造必须排除递归和无边界的while循环,但是我可以编写一个没有那么容易的程序。 作为示例,从标准输入中读取内容必须是一定范围的,但这很容易-根据问题域的不同,我将输入限制为10,000,000个字符,以此类推。 tia [更新] 阅读评论和答案后,也许我应该重申我的问题。 对于所有输入都受限的给定程序,您可以确定该程序是否暂停。如果是这样,语言的约束是什么,输入集的极限是什么。这些构造的最大集合将确定可以推论为停止或不停止的语言。是否对此进行了一些研究? [更新2] 答案是肯定的,可以回溯到1967年,网址是http://www.isp.uni-luebeck.de/kps07/files/papers/kirner.pdf 明斯基已经在1967年提出论点,认为至少可以在理论上解决有限状态系统的停顿问题[4]:“ ...任何有限状态机,如果完全留给自己,最终将陷入一个完美的周期重复模式。这种重复模式的持续时间不能超过机器内部状态的数量……” (因此,如果您坚持使用有限的图灵机,则可以构建一个oracle)

3
存在哪些替代数字食谱的现代方法?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 过去,《数字食谱》一书被认为是数值算法的黄金标准参考书。最早的Fortran版本紧随其后的是C,C ++和其他版本,从而使它更新了。通过这些,它为当今的最新算法提供了参考代码。 较早的版本现在可以在线免费获得。 不幸的是,我认为它现在仅作为一个历史性的书集才最有用。在我看来,“软件工程”实践已经过时了,实际内容并没有与文献同步。 现代程序员应该看什么类似的全面而平易近人的参考书呢?

9
学习算法成为一名真正的程序员是否必不可少?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我是一名PHP程序员,直到现在我还不需要学习算法。 现在,我开始学习Python(一种真正的编程语言),因为我需要使用matplotlib。从阅读Python算法书籍开始然后学习matplotlib和numpy是否有意义,还是我应该跳到matplotlib和numpy? 最好的祝福,

8
为什么将需要排序数据的二进制搜索比线性搜索更好?
我一直听说线性搜索是一种幼稚的方法,并且由于渐近复杂性的提高,二进制搜索的性能要优于线性搜索。但是我从来不明白为什么在二进制搜索之前需要排序时,为什么它比线性搜索更好? 线性搜索为O(n),二进制搜索为O(log n)。这似乎是说二进制搜索更好的基础。但是二进制搜索需要O(n log n)对最佳算法进行排序。因此,二进制搜索实际上不应该更快,因为它需要排序。 我正在阅读CLRS,作者在其中表示,在插入排序中而不是使用朴素的线性搜索方法,最好使用二进制搜索来查找必须插入项目的位置。在这种情况下,这似乎是合理的,因为在每次循环迭代时,都有一个可以应用二分查找的排序列表。但是在通常情况下,对于不能保证我们需要搜索的数据集,由于排序要求,使用二进制搜索实际上并不比线性搜索差吗? 我是否忽略了使二进制搜索比线性搜索更好的实际考虑因素?还是不考虑排序所需的计算时间而认为二进制搜索比线性搜索更好?

3
如何在数据中表达微妙的关系?
“ A”与“ B”和“ C”有关。在这种情况下,我如何证明“ B”和“ C”也可能相关? 例: 以下是有关百老汇最近一部戏剧的一些头条新闻: 大卫·马梅特(David Mamet)的格伦加里(Glengarry)格伦·罗斯(Glen Ross),由阿尔·帕西诺(Al Pacino)主演,在百老汇开幕 Al Pacino在“ Glengarry Glen Ross”中:评论家们怎么看? 阿尔·帕西诺(Al Pacino)在百老汇(Broadway turn)赢得了平淡的评论 剧院评论:Glengarry Glen Ross正在努力推销明星 Glengarry Glen Ross;嘿,谁杀死了Klieg灯? 问题: 对这些记录进行模糊字符串匹配将建立一些关系,但不会建立其他关系,即使人类读者可以从更大的数据集中从上下文中选择它们。 我如何找到暗示#3与#4相关的关系?它们都可以很容易地连接到#1,但不能互相连接。 这种数据或结构是否有(可查询的)名称?我在寻找哪种算法? 目标: 给定1,000个标题,系统会自动提示这5个项目可能都是同一件事。 老实说,我编写程序已经很久了,我不知如何正确表达这个问题。(如果有道理,我不知道不知道)。 这是一个个人项目,我正在用Python编写它。在此先感谢您的任何帮助,建议和指示!

8
根据历史划分公平团队的策略/算法
我们是一群定期打地板球的人。每节课都是从划分团队的艰巨任务开始的。 那么,有什么比自动选择团队更好的选择呢? 因此,鉴于团队组合和结果的历史记录,以及参加此特定会议的人员列表,找到最佳团队的最佳策略是什么?最佳来说,我指的是尽可能多的团队。 有任何想法吗? 编辑:为了清楚起见,我必须根据其选择的数据将是这样的: [{ team1: ["playerA", "playerB", "playerC"], team2: ["playerD", "playerE", "playerF"], goals_team1: 10, goals_team2: 8 }, { team1: ["playerD", "playerB", "playerC"], team2: ["playerA", "playerE", "playerG"], goals_team1: 2, goals_team2: 5 }, { team1: ["playerD", "playerB", "playerF"], team2: ["playerA", "playerE", "playerC"], goals_team1: 4, goals_team2: 2 }]

3
高效图聚类算法
我正在寻找一种在大型图形上查找聚类的有效算法(它具有大约5000个顶点和10000条边)。 到目前为止,我正在使用在JUNG java库中实现的Girvan–Newman算法,但是当我尝试去除很多边缘时,它的速度相当慢。 您能建议我一个适合大图的更好的选择吗?

7
如果/ else阻止如何将真值表变为最小
如何获取真值表并将其转换为压缩的if块? 例如,假设我有一个真值表,其中A和B是条件,而x,y和z是可能的动作: A B | x y z ------------- 0 0 | 0 0 1 0 1 | 0 0 1 1 0 | 0 1 0 1 1 | 1 0 0 如果阻塞,则可以转换为以下内容: if(A) { if(B) { do(x) } else { do(y) } } else { do(z) } 这是一个简单的示例,但是我经常遇到几种情况,这些情况以不同的方式组合在一起会产生不同的输出,并且很难找出最紧凑,最优雅的方式在if块中表示其逻辑。


3
有哪些算法可以为图形上的绘图线选择颜色?
我对可以以编程方式实现的用于生成绘图线的RGB或HSV颜色,以使其在视觉上与相邻像素不同的算法或规则感兴趣。 我知道在专业地图制作中,有一些算法或规则可确保地图上没有两个相邻的国家/地区使用相同的颜色。我也可以认为Microsoft Office Excel可以为绘图线(红色,蓝色,紫色/橙色)选择良好的色调/阴影。 这是我正在谈论的示例-我需要为黑色背景上的12条线生成颜色。我使用网络安全的RGB颜色代码手动对此处的颜色进行了硬编码。当这些线重叠时会出现问题-很难分辨是看着紫色,还是略深的紫色或紫色。我正在寻找一种更好的算法来为此类绘图线生成颜色。 这是一个使用Flot绘图库进行jQuery的示例,它具有一系列漂亮的图形颜色:
19 algorithms  color 

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.