Questions tagged «algorithm»

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


8
从整数流中查找运行中位数
可能重复: C语言中的滚动中值算法 假定从数据流中读取整数。查找迄今为止有效读取的元素的中位数。 我已经读过的解决方案:我们可以在左侧使用最大堆表示小于有效中位数的元素,在右侧使用最小堆表示大于有效中位数的元素。 处理传入的元素后,堆中的元素数量最多相差1个元素。当两个堆包含相同数量的元素时,我们发现堆根数据的平均值为有效中位数。当堆不平衡时,我们从包含更多元素的堆根中选择有效中位数。 但是我们将如何构造最大堆和最小堆,即我们如何知道有效中位数?我认为我们将在max-heap中插入1个元素,然后在min-heap中插入下一个1个元素,以此类推。纠正我,如果我在这里错了。
223 algorithm  heap  median 



5
ssl证书如何验证?
安全验证ssl证书需要执行哪些步骤?我(非常有限)的理解是,当您访问https站点时,服务器将证书发送给客户端(浏览器),浏览器从该证书获取证书的颁发者信息,然后使用该信息与颁发者联系,并以某种方式进行比较有效性证书。 这到底是怎么做的? 该过程如何使其不受中间人攻击? 是什么阻止一些随机的人设置自己的验证服务以用于中间人攻击,从而使一切“看起来”都是安全的?


9
log(n!)=Θ(n·log(n))吗?
我要证明log(n!)=Θ(n ·log(n))。 提示我应该用n n表示上限,而用(n / 2)(n / 2)表示下限。在我看来,这似乎并不那么直观。为什么会这样呢?我绝对可以看到如何将n n转换为n ·log(n)(即,记录方程的两边),但这有点倒退。 解决这个问题的正确方法是什么?我应该画递归树吗?对此没有任何递归,因此这似乎不是一种可行的方法。


30
炸弹掉落算法
我有一个n x m由非负整数组成的矩阵。例如: 2 3 4 7 1 1 5 2 6 2 4 3 4 2 1 2 1 2 4 1 3 1 3 4 1 2 1 4 3 2 6 9 1 6 4 “投下炸弹”将目标单元及其所有八个邻居的数量减少一,最小为零。 x x x x X x x x x 有什么算法可以确定将所有像元减少到零所需的最小炸弹数量? B选项(由于我不是认真的读者) …

10
排序10个数字的最快方法?(数字为32位)
我正在解决一个问题,它涉及非常快速地排序10个数字(int32)。我的应用程序需要尽可能快地对10个数字进行数百万次排序。我正在采样数十亿个元素的数据集,每次需要从中选择10个数字(简化)并对它们进行排序(并从排序的10个元素列表中得出结论)。 目前,我正在使用插入排序,但我想我可以针对10个数字的特定问题实现一个非常快速的自定义排序算法,该算法将胜过插入排序。 有谁知道如何解决这个问题?



12
填充/缩小(偏移,缓冲)多边形的算法
如何将多边形“膨胀”?也就是说,我想做类似的事情: 要求是新的(膨胀的)多边形的边/点都与旧的(原始)多边形的边/点都具有相同的恒定距离(在示例图片中,它们不是,因为从那以后,它必须对膨胀的顶点使用圆弧,但是让我们暂时忘记这一点;))。 我要寻找的数学术语实际上是向内/向外多边形偏移。+1表示要指出这一点。另一种命名方式是多边形缓冲。 搜索结果: 以下是一些链接: 多边形偏移策略研究 多边形偏移,问题 缓冲多边形数据

12
将最胖的人从超载的飞机上摔下来。
假设您有一架飞机,而且燃油低。除非飞机掉落3000磅的乘客重量,否则它将无法到达下一个机场。为了最大程度地挽救生命,我们希望首先将最重的人员从飞机上赶下。 哦,是的,飞机上有数百万人,我们希望找到一种最佳算法来查找最重的乘客,而不必对整个列表进行排序。 这是我尝试用C ++编写代码的代理问题。我想按重量对旅客舱单进行“ partial_sort”,但我不知道我需要多少元素。我可以实现自己的“ partial_sort”算法(“ partial_sort_accumulate_until”),但是我想知道是否有使用标准STL进行此操作的简便方法。
200 c++  algorithm  sorting  stl 

14
就地基数排序
这是一个很长的文字。请多多包涵。归根结底,问题是:是否存在可行的就地基数排序算法? 初步 我有很多小的固定长度字符串,它们只使用我要排序的字母“ A”,“ C”,“ G”和“ T”(是的,您猜对了:DNA)。 目前,我在STL的所有常见实现中都std::sort使用了introsort。这很好。但是,我相信,基数排序适合我的问题集完美,应该工作多在实践中更好。 细节 我已经用一个非常幼稚的实现测试了这个假设,对于相对较小的输入(大约10,000个),这是正确的(至少要快两倍以上)。但是,当问题规模变大(N > 5,000,000)时,运行时间将大大降低。 原因很明显:基数排序需要复制整个数据(实际上,在我的幼稚实现中不止一次)。这意味着我已经在主内存中放入了大约4 GiB,这显然会降低性能。即使没有,我也负担不起这么大的内存,因为问题的大小实际上变得更大了。 用例 理想情况下,该算法应适用于2到100之间的任何字符串长度,适用于DNA以及DNA5(允许附加通配符“ N”),甚至适用于带有IUPAC 模糊代码的 DNA (导致16个不同的值)。但是,我意识到所有这些情况都无法解决,因此我对速度的提高感到满意。该代码可以动态决定要调度到哪个算法。 研究 不幸的是,维基百科上关于基数排序的文章是没有用的。关于就地变体的部分是完整的垃圾。在上基数NIST-DADS部分排序旁边不存在的。有一篇听起来很有希望的论文,叫做“ 高效自适应就地基数排序”,它描述了算法“ MSL”。不幸的是,这篇论文也令人失望。 特别是,有以下几点。 首先,该算法包含一些错误,并且有很多无法解释的地方。特别是,它没有详细介绍递归调用(我只是假设它增加或减少了一些指针来计算当前的shift和mask值)。同样,它使用这些函数dest_group并且dest_address没有给出定义。我看不到如何有效地实现这些功能(也就是说,在O(1)中;至少dest_address是不平凡的)。 最后但并非最不重要的一点是,该算法通过将数组索引与输入数组内的元素交换来实现就位。显然,这仅适用于数值数组。我需要在字符串上使用它。当然,我可以拧紧强类型,并假设内存可以容忍我存储不属于它的索引。但这仅在我可以将字符串压缩到32位内存(假设32位整数)的情况下有效。那只是16个字符(在16> log(5,000,000)的那一刻,让我们忽略它)。 一位作者的另一篇论文没有给出任何准确的描述,但它给出了MSL的运行时间为亚线性的情况,这是完全错误的。 回顾一下:是否有希望找到一个可行的参考实现,或者至少一个对DNA字符串起作用的就地基数排序的良好伪代码/描述?

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.