一种随机选择带有噪声的集合顶部元素的算法

时间:2018-08-15 17:19:27

标签: python set probability

我想找到一个给出排序列表的方法(例如,在python中),选择带有错误epsilon的顶部元素。

一种方法是选择概率p <1的顶部元素,然后选择p'

理想情况下,尽管我希望使用一种方法,该方法考虑到顶部元素的获胜余量并带有一些噪音。即:

给出一个列表[a,b,c,d,e,....],其中a是最大的元素,b是第二大的元素,依此类推,

以概率p <1选取顶部元素,其中p取决于a-b的值,p'取决于b-c的值,依此类推。

2 个答案:

答案 0 :(得分:0)

您不能完全做到这一点,因为如果您有 n 个元素,则连续元素之间只会有 n-1 个区别。做类似事情的标准方法是fitness proportionate selection(链接提供了Java和ruby的代码,应该相当容易翻译成其他语言)。

对于该想法的其他变体,请查找选择运算符以查找遗传算法(有多种选择)。

答案 1 :(得分:0)

一种方法是选择元素k,其概率与exp(-(x[k] - x[0])/T)成比例,其中x[0]是最小元素,T是自由参数,类似于温度。这是通过对热力学的类比得出的,在这种情况下,低能量(小x[k]状态)的可能性更大,而高能量(大x[k])状态的可能性更大,但可能性较小;温度的影响是仅关注最可能的状态(T接近零)或从所有元素中选择具有几乎相等概率(大T)。

基于这种类比的模拟退火方法,也许您可​​以从中得到一些启发。

编辑:请注意,此方法使具有几乎相等值的元素具有几乎相等的概率;根据您的描述,听起来这就是您想要的。

第二编辑:我把它倒退了;我在上面写的内容使较小的值更有可能出现。与exp(-(x[n - 1] - x[k])/T)成正比的概率,其中x[n - 1]是最大值,取而代之的是更大的值。