了解Quickselect平均运行时间的推导

问题描述

我试图理解this快速选择算法的平均运行时间的推导。我对几点感到困惑。

首先,他们开始于:

假设我们要从中选择第k个最小元素的字段是[1,...,n]的随机排列。我们在算法过程中选择的枢轴元素也可以看作是给定的随机排列。在算法过程中,我们总是从该置换中选择下一个可行的枢轴,因此它们是随机选择的,因为每个元素与随机置换中的下一个可行元素发生的可能性相同。

枢轴元素如何仅仅是一个随机排列?下一个可行的枢轴如何均匀地随机化?它不取决于k和所选的第一个枢轴吗?这一切如何考虑这样一个事实,即在算法结束之前选择的枢轴总数甚至不固定,并且取决于中间选择以及k?

接下来,答案是:

一个简单的,但非常重要的是,观察:我们仅比较两个元素ij(具有i<j)当且仅当它们中的一个被选择作为第一枢轴[min(k,i),max(k,j)]范围内的元素。如果首先选择了该范围内的另一个元素,则它们将永远不会被比较,因为我们将继续在其中未包含元素i,j中至少一个元素的子字段中进行搜索

由于上述观察以及枢轴随机选择均匀的事实,ij之间进行比较的概率为:

2/(max(k,j) - min(k,i) + 1)

max(k,i) + 1种可能性中有两个事件。)

分母(max(k,i) + 1)怎么样?首先,可以从n个值的整个范围中选择第一个枢轴,同样,我也不明白这是如何考虑选择多个枢轴的,而将来枢轴的选择取决于之前选择的枢轴。

这个问题也与理解概率有关,所以请让我知道是否需要在其他地方发布。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)