Questions tagged «algorithm»

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


30
需要可预测的随机发生器
我是一名网络游戏开发商,但我遇到了随机数问题。假设一位玩家有20%的机会用剑获得暴击。这意味着5个匹配中有1个至关重要。问题是我在现实生活中的结果非常糟糕-有时玩家在5次点击中获得3分,有时15次点击中没有得分。战斗时间很短(3-10次击中),因此获得良好的随机分布非常重要。 目前,我使用PHP mt_rand(),但是我们只是将代码移至C ++,所以我想在游戏的新引擎中解决此问题。 我不知道解决方案是某种统一的随机生成器,还是想起以前的随机状态来强制正确分配。
151 c++  algorithm  random 

4
有人实际上有效地实施了斐波那契堆吗?
你们中有没有人实施过斐波那契堆?几年前,我这样做了,但是比使用基于数组的BinHeaps要慢几个数量级。 那时,我认为这是一门宝贵的课程,说明研究并不总是像它声称的那样好。但是,许多研究论文声称其算法基于使用斐波那契堆的运行时间。 您是否曾经设法产生有效的实施方案?还是您使用的数据集如此之大,以至于斐波那契堆更有效?如果是这样,一些细节将不胜感激。

9
把猫扔出窗户
想象一下,您在猫的高楼大厦中。猫可以从低矮的窗户掉下来,但如果从高处摔落会死。您如何用最少的尝试次数找出猫可以存活的最长下落? 显然,如果您只有一只猫,则只能进行线性搜索。首先从一楼扔猫。如果它仍然存在,请从第二个开始扔掉。最终,从地板f掉下来的猫会死。然后,您知道f-1楼是最大安全楼。 但是,如果您有不止一只猫怎么办?现在,您可以尝试某种对数搜索。假设该建筑物有100层,而您有两只相同的猫。如果您将第一只猫扔出50层而死,那么您只需线性搜索50层。如果您第一次尝试选择较低的楼层,您甚至可以做得更好。假设您选择一次解决20层楼的问题,而第一个致命楼层是#50。在这种情况下,您的第一只猫将在20和40楼的飞行中幸存下来,然后从60楼死亡。您只需要分别检查41到49楼。总共进行了12次尝试,这比尝试使用二进制消除法所需的50次尝试要好得多。 通常,对于带有2只猫的n层建筑物,什么是最佳策略,哪一种是最坏情况的复杂性?n层和m只猫怎么办? 假设所有猫都是同等的:它们都将存活或死于从给定窗户掉落的猫。同样,每一次尝试都是独立的:如果一只猫摔倒幸存下来,那就完全没有伤害了。 这不是家庭作业,尽管我可能已经解决了一次学校作业。今天,这只是一个异想天开的问题,我不记得了。如果有人知道此问题或解决方案算法的名称,则奖励积分。

23
滚动或滑动窗口迭代器?
我需要在序列/迭代器/生成器上可迭代的滚动窗口(又称滑动窗口)。可以将默认Python迭代视为一种特殊情况,其中窗口长度为1。我当前正在使用以下代码。有没有人有更多的Python风格,更少的冗长或更有效的方法来执行此操作? def rolling_window(seq, window_size): it = iter(seq) win = [it.next() for cnt in xrange(window_size)] # First window yield win for e in it: # Subsequent windows win[:-1] = win[1:] win[-1] = e yield win if __name__=="__main__": for w in rolling_window(xrange(6), 3): print w """Example output: [0, 1, 2] [1, 2, …
150 python  algorithm 

6
将多个过滤器应用于pandas DataFrame或Series的有效方法
我有一种情况,用户想要将多个过滤器应用于Pandas DataFrame或Series对象。本质上,我想有效地将​​用户在运行时指定的一堆过滤(比较操作)链接在一起。 过滤器应为可加性的(又称每个过滤器应缩小结果)。 我当前正在使用,reindex()但这每次都会创建一个新对象并复制基础数据(如果我正确理解了文档)。因此,这在过滤大型Series或DataFrame时可能效率很低。 我认为使用apply(),map()或类似的方法可能更好。我对Pandas来说还很陌生,因此仍然想尽一切办法。 TL; DR 我想采用以下形式的字典,并将每个操作应用于给定的Series对象,并返回一个“过滤后的” Series对象。 relops = {'>=': [1], '<=': [1]} 长例子 我将从当前的示例开始,仅过滤单个Series对象。以下是我当前正在使用的功能: def apply_relops(series, relops): """ Pass dictionary of relational operators to perform on given series object """ for op, vals in relops.iteritems(): op_func = ops[op] for val in vals: filtered = op_func(series, val) series …
148 python  algorithm  pandas 

30
您如何计算一组循环数据的平均值?
我想计算一组循环数据的平均值。例如,从指南针的读数中我可能有几个样本。当然,问题在于如何处理环绕。相同的算法可能对表盘有用。 实际问题更加复杂-统计量在“环绕”的球体或代数空间(例如加性群mod n)中意味着什么。答案可能不是唯一的,例如359度和1度的平均值可以是0度或180度,但从统计学上讲0更好。 对我来说,这是一个真正的编程问题,我试图使它看起来不只是一个数学问题。
147 algorithm  math  geometry 

18
如何检查两个列表在Python中是否循环相同
例如,我有以下列表: a[0] = [1, 1, 1, 0, 0] a[1] = [1, 1, 0, 0, 1] a[2] = [0, 1, 1, 1, 0] # and so on 它们似乎不同,但是如果假定起点和终点相连,那么它们在循环上是相同的。 问题是,每个列表的长度为55,并且仅包含三个1和52个零。如果没有循环条件,则有26,235(55选择3)个列表。但是,如果存在条件“循环”,则存在大量循环相同的列表 目前,我通过以下方式循环检查身份: def is_dup(a, b): for i in range(len(a)): if a == list(numpy.roll(b, i)): # shift b circularly by i return True return …
145 python  algorithm 

23
检查列表是否已排序的Python方法
有没有一种pythonic的方法来检查列表是否已经排序ASC或DESC listtimestamps = [1, 2, 3, 5, 6, 7] 诸如此类的东西isttimestamps.isSorted()会返回True或False。 我想输入一些消息的时间戳列表,并检查事务是否以正确的顺序出现。



8
Amazon Recommendation功能如何工作?
亚马逊推荐技术的屏幕背后是什么技术?我认为,亚马逊的推荐目前是市场上最好的,但是它们如何为我们提供这样的相关推荐呢? 最近,我们参与了类似的推荐类项目,但是肯定希望从技术角度了解Amazon推荐技术的来龙去脉。 任何输入将不胜感激。 更新: 该专利说明了如何进行个性化推荐,但这不是技术性的问题,因此,如果可以提供一些见解,那将是非常好的。 根据Dave的评论,亲和力分析构成了此类推荐引擎的基础。另外,这里还有一些有关该主题的好读物 揭秘市场篮子分析 市场篮分析 亲和力分析 建议阅读: 数据挖掘:概念和技术

18
检测两个矩形相交的算法?
我正在寻找一种算法来检测两个矩形是否相交(一个以任意角度相交,另一个仅以垂直/水平线相交)。 测试一个角是否在另一个ALMOST中是可行的。如果矩形形成十字形,则失败。 避免使用直线的斜率似乎是个好主意,因为直线的斜率需要特殊情况。

14
将数字插入排序的数字数组的有效方法?
我有一个已排序的JavaScript数组,并且想在该数组中再插入一个项目,以使结果数组保持排序状态。我当然可以实现一个简单的quicksort样式的插入函数: var array = [1,2,3,4,5,6,7,8,9]; var element = 3.5; function insert(element, array) { array.splice(locationOf(element, array) + 1, 0, element); return array; } function locationOf(element, array, start, end) { start = start || 0; end = end || array.length; var pivot = parseInt(start + (end - start) / 2, 10); if …

22
使用两个队列实现堆栈
之前有人问过类似的问题 有,但这里的问题是反向的话,使用两个队列,栈。问题... 鉴于两个队列与他们的标准操作(enqueue,dequeue,isempty,size),实现堆栈与它的标准操作(pop,push,isempty,size)。 应该有两个解决方案版本。 版 A:推入物品时,堆叠应该高效;和 版本B:弹出项目时,堆栈应高效。 我对算法比对任何特定语言的实现都更感兴趣。但是,我欢迎以我熟悉的语言表达的解决方案(爪哇,C#,蟒蛇,vb,javascript,的PHP)。

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.