【问题标题】:What is Order Statistics and ith smallest?什么是订单统计和最小的?
【发布时间】:2015-09-24 04:06:02
【问题描述】:

这学期我有一个算法课程。一切都很好,直到我到达关于订单统计的讲座。

这是该讲座的第一张幻灯片:

Order Statistics
Select the ith smallest of n elements (the
element with rank i).
• i = 1: minimum;
• i = n: maximum;
• i = ⎣(n+1)/2⎦ or ⎡(n+1)/2⎤: median.
Naive algorithm: Sort and index ith element.
Worst-case running time = Θ(n lg n) + Θ(1)
= Θ(n lg n)

我无法理解以下内容:

什么是订单统计?

在n 个元素中的第 i 个最小的上是什么意思?请问我需要一个例子来知道什么是“ith”!!

对这些有什么简单的解释吗?

我只知道这与分而治之有关,因为下一张幻灯片就是关于它的:)。

【问题讨论】:

标签: algorithm statistics divide-and-conquer


【解决方案1】:

"Order statistics" 是“按升序排序的 N 元素序列的第 K 个元素”的花哨名称。幻灯片的其余部分简单地说明了这个想法,解释了 1 阶统计是序列中的最小元素,n 阶统计是最大元素,n/2 阶统计是 中位数,以及以此类推。

【讨论】:

    【解决方案2】:

    它的顺序统计与数组中的第 i 个最小元素相同。例如,假设我们有一个数组 A[Size] ={ 3,4,-3,-2,0, 1,10,2,14} 并且我们想要对应于第 4 个的元素。排序统计,然后我们的函数或程序将返回值 1。此算法利用随机分区和对随机选择函数的递归调用。

    伪代码如下:

     RSelect( Array[], p,r, i)
    
     if p == r
          return A[p]
     q = RandomPartition(Array[],p,r)
     k = q - p + 1
     if i == k // case that the pivot is the answer 
     return Array[q]
    
     else if i<k
         return RSelect(Array,p, q-1,i)
     else
         return RSelect(Array, q+1, r, i-k)
    

    该算法是一种分治算法,它使用递归来分解问题,方法是选择在随机分区函数中完成的随机枢轴,以帮助对数组进行分区并丢弃大于或小于的值枢轴取决于第 i 个 Order 统计量是大于还是小于枢轴。例如,如果它的顺序统计量小于枢轴,它将丢弃大于枢轴的值。因为在 Partition 函数中返回的枢轴值在正确的位置。

    【讨论】:

    • 您好 Caltor,感谢您的意见。 R_select 算法是一种分而治之的算法,用于在 O(n) 中找到它的 Order 统计量。这也可以通过首先使用 MergeSort 或 Quick Sort 在 O(nlogn) 时间内对数组进行排序并仅选择 k 元素来实现,其中 k 对应于与输入数组对应的所需 ith-Order Statistic。
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2012-05-09
    • 2016-03-13
    • 1970-01-01
    相关资源
    最近更新 更多