我遇到过这个问题:
令0 <α<.5为某个常数(与输入数组长度n无关)。回想一下QuickSort算法采用的Partition子程序,如讲座中所述。通过随机选择的枢轴元素,分区子程序产生的分裂是什么概率,其中两个子阵列中较小的子阵列的大小是原始阵列大小的α倍?
Its answer is 1-2*α.
有谁能解释我这个答案是怎么来的?请帮助。
答案 0 :(得分:9)
枢轴元素的选择是随机的,具有均匀分布。
数组中有N个元素,我们假设N很大(或者我们不会得到我们想要的答案)。
如果0≤α≤1,则小于枢轴的元素数量小于αN的概率是α。元素数大于的数量小于αN的概率是相同的。如果α≤1/ 2,则这两种可能性是排他性的。
要说较小的子阵列长度≥αN,可以说这些条件都不成立,因此概率为1-2α。
答案 1 :(得分:3)
数组长度为n。 对于较小的阵列长度&gt; =αn,枢轴应大于αn个元素。同时,枢轴应小于αn个元素(否则较小的阵列大小将小于要求)
因此,在n个元素中,我们必须在(n-2α)n个元素中选择一个。
所需概率为n(1-2α)/ n。
因此1-2α
答案 2 :(得分:3)
解决问题的另一种方法(对于那些不耐烦地理解它的人,就像我一样)。
<强>首先强> 由于我们讨论的是“两个子阵列中较小的一个”,因此它的长度小于1/2 * n(n - 原始数组中的元素数)。
<强>第二强> 如果0 < a&lt; 0.5表示a * n也小于1/2 * n。 因此,我们从现在开始讨论两个随机选择的整数,最低点为0,最高点为1/2 * n。
<强>第三强> 让我们想象一下骰子的数字从1到6的两侧。让我们选择一个从1到6的数字,例如4.现在滚动骰子。每个数字的概率为1/6,是该滚动的结果。因此,对于事件“结果小于或等于4”,我们的概率等于每个结果的概率之和。并且我们有数字1,2,3和4.总共p(x <= 4)= 4 * 1/6 = 4/6 = 2/3。因此,事件“输出大于4”的概率是p(x> 4)= 1-p(x <= 4)= 1 - 2/3 = 1/3。
<强>四强> 让我们回到我们的问题。 “所选号码”现在是* n。我们将使用从0到(1/2 * n)的数字掷骰子得到k - 最小子阵列中的元素数量。结果以(a * n)最高为界的概率等于从0到(a * n)的所有结果的概率之和。并且任何特定结果k的概率是p(k)= 1 /(1/2 * n)。
因此p(k <= a * n)=(a * n)*(1 /(1/2 * n))= 2 * a。
由此我们可以很容易地得出结论p(k> a * n)= 1-p(k <= a * n)= 1 - 2 * a。
答案 3 :(得分:2)
概率是,所需元素的数量/元素的总数。 在这种情况下,((1-αn) - (αn))/ n 由于α介于0和0.5之间,(1-α)必须大于α。因此,它们之间包含的元素数量将是, (1-α-α)N =(1-2α)N 所以,概率是, (1-2α)N / N =1-2α
答案 4 :(得分:2)
其他答案没有完全点击我,所以这是另一个想法:
如果2个子阵列中至少有一个必须为,则可以推断出枢轴也必须位于位置。矛盾显而易见。如果数据透视为,则存在小于的子数组。根据相同的原因,枢轴也必须是。枢轴的任何较大值将产生比“右侧”更小的子阵列。
这意味着,如下图所示:
我们想要计算的是该事件的概率(称之为A),即。
我们计算事件概率的方法是将成分结果的概率加总,即枢轴位于。
该总和表示为:
这很容易简化为:
取消一些后,我们得到:
答案 5 :(得分:0)
考虑一个大小为100的数组,其中包含值从1到100的元素(未排序)。 可以将随机选择的数据透视表放置在1到100的任意位置,并且将其放置后会将数组分为两部分。 由于alpha大于0且小于50,因此拆分的较小尺寸不能为0,因此它应该为1或大于1直至49。 当枢轴放置在位置1到49(含)之间时,这将是拆分的第一部分,说A(从1到49),而剩下的第二部分B(从99到51)。 如果将枢轴放置在位置52到100(含)之间,则拆分A的第一部分(从51到99)到第二部分B(从49到1)。
让我们说枢轴已放置
在位置1处,拆分的左侧包含大小为1的A,右侧包含大小为99的B。
在位置2处,拆分的左侧包含2号大小的A,右侧包含98号大小的B。
...
在位置49处,该拆分在左侧包含大小为49的A,在右侧包含大小为51的B。
位置52,则拆分在左侧包含大小为51的A,在右侧包含大小为49的B。
在位置53处,拆分的左侧包含大小为52的A,右侧包含大小为48的B。
...
在位置100处,拆分的左侧包含大小为99的A,右侧包含大小为1的B。
在前49个拆分中,A保持小于B,在接下来的49个拆分中,B保持小于A。
通过说“两个子数组中较小的一个的大小≥原始数组的大小的α倍”,它要求的上述不平衡分割之间的平衡分割数。 此处有两个这样的平衡拆分
在位置50处,拆分的左侧包含大小为50的A,右侧包含大小为50的B。
位置51处的拆分在左侧包含大小为50的A,在右侧包含大小为50的B。
因此有98个不平衡拆分和2个平衡拆分,因此可以计算为
(拆分总数)-(不平衡拆分数)
(100)-(2 * 49)
2个平衡分割。
答案 6 :(得分:0)
另一种方法: 列出“更平衡”选项:
αn + 1 to (1 - α)n - 1
αn + 2 to (1 - α)n - 2
...
αn + k to (1 - α)n - k
总共k。我们知道最平衡的是n / 2 to n / 2,所以:
αn + k = n / 2 => k = n(1/2 - α)
同样,列出“不太平衡”选项:
αn - 1 to (1 - α)n + 1
αn - 2 to (1 - α)n + 2
...
αn - m to (1 - α)n + m
总共m。我们知道最不平衡是0到n,所以:
αn - m = 0 => m = αn
因为所有这些选项都以相同的概率发生,所以我们可以使用概率的频率定义,所以:
Pr{更平衡} =(更平衡的总数)/(选项的总数)=>
Pr{More balanced} = k / (k + m) = n(1/2 - α) / (n(1/2 - α) + αn) = 1 - 2α