Questions tagged «runtime-analysis»

有关用于估计随着输入大小增加算法的运行时间增加的方法的问题。

1
用两个递归调用解决递归关系
我正在研究quicksort的最坏情况下的运行时,条件是它不会为very的各种定义进行非常不平衡的分区。 为了做到这一点,我问自己一个问题如果快速排序总是发生在分区的情况下那么运行时间将是什么,使得元素在左分区中,而在右分区中(在中间保留元素,即枢轴)。T(n,p)T(n,p)T(n, p)0&lt;p≤120&lt;p≤120 < p \leq {1\over 2}⌊p(n−1)⌋⌊p(n−1)⌋\lfloor{p(n-1)}\rfloor⌈(1−p)(n−1)⌉⌈(1−p)(n−1)⌉\lceil(1 - p)(n - 1)\rceil111 不难看出,为最坏的情况给出了上限,在最坏的情况下,是允许的最大不平衡分区,因为任何分数分区都将更加平衡,运行时更短,并且不允许任何分数。T(n,p)T(n,p)T(n, p)ppp&gt;p&gt;p> p&lt;p&lt;p

3
大O:嵌套循环依赖
我收到了Big O的作业分配。我受嵌套的for循环的困扰,该循环取决于先前的循环。这是我的作业问题的修改版本,因为我确实很想理解它: sum = 0; for (i = 0; i &lt; n; i++ for (j = 0; j &lt; i; j++) sum++; 让我失望的j &lt; i部分是那部分。似乎它几乎像阶乘一样执行,但是要加上。任何提示将不胜感激。

3
如果选择最大元素作为枢轴,Quicksort是否始终具有二次运行时间?
如果您有快速排序算法,并且始终选择最小(或最大)元素作为枢轴;我是否假设如果您提供一个已经排序的数据集,无论您的“已排序”列表是按升序还是降序,都将始终获得最差的性能? 我的想法是,如果您始终为枢轴选择最小的元素,那么“已排序”输入是按升序还是降序排序并不重要,因为选择相对于枢轴进行排序的子集始终是一样大小?

1
为什么取消负周期的复杂度?
我们想用通用的负周期抵消算法来解决最小成本流问题。也就是说,我们从随机有效流开始,然后我们不选择任何“良好”负周期,例如最小平均成本周期,而是使用Bellman-Ford发现最小周期并沿发现的周期增加。设为图中节点的数量,为边的数量,为图中边缘的最大容量,为图中边缘的最大成本。然后,我的学习资料声称:VVVAAAUUUWWW 开始时的最高费用不得超过AUWAUWAUW 沿一个负周期的增加将成本降低至少一个单位 最低费用的下限是0,因为我们不允许负费用 每个负周期都可以在O(VA)O(VA)O(VA) 并且他们从中得出算法的复杂度为。我理解每个声明背后的逻辑,但认为复杂性不同。具体来说,最大扩充数量由每个扩充的一个流量单位给出,将的成本降至零,从而为我们提供了最大的扩充。我们需要为每个发现一个负循环,因此我们将最大扩增次数乘以发现一个循环所需的时间(),并得出算法的。O(V2AUW)O(V2AUW)O(V^2AUW)AUWAUWAUWAUWAUWAUWVAVAVAO(A2VUW)O(A2VUW)O(A^2VUW) 这可能是学习资料中的错误(这是教授提供的文字,而不是课程中的学生笔记),还是我的逻辑错误?
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.