使用随机比较进行排序

时间:2014-04-03 21:14:33

标签: algorithm sorting probability

给出一个列表,其中对于每对元素(A,B),概率P(A> B),P(A

2 个答案:

答案 0 :(得分:6)

让我们忽略P(A=B)(我们可以说它会在<,>之间平均分割并将其更改为<=,>=)。

现在,让我们看一个类似但直观上更容易的问题:

  • 让我们找到最佳作业,P(arr[0]<arr[1])*...*P(arr[i]<arr[i+1])*...*P(arr[n-2]<arr[n-1])是最大的。
  • 这是一个更容易解决的问题,因为我们现在只考虑相邻元素(而不是P(arr[0]<arr[n-1]) - 我们使用'较少'信息。[证据缺少atm]。

现在,我们正在寻求最大化概率,这相当于最大化:

log{P(arr[0]<arr[1])} + ... + log{P(arr[n-2]<arr[n-1])}

反过来相当于最小化:

-log{P(arr[0]<arr[1])} - ... - log{P(arr[n-2]<arr[n-1])}

这是TSP,边缘有权重:

w(v,u) = -log(P(v<u))

然而,TSP是NP-Complete,除非缺失的证明假设是错误的(仍然在思考它......) - 这意味着没有已知的多项式解决方案来解决这个问题,或者至少是相邻的元素只有变异。

答案 1 :(得分:0)

我认为最简单的方法是将元素推送到优先级队列中。使用这3个概率,概率最高的概率始终位于最高位置。流行的那个和下一个最高的浮动。继续弹出直到你完成。我认为这种方法会起作用