在我的程序中,我有一个循环,它计算整数值并将其一个接一个地放入arraylist。 computetd整数值越高,它就越好。 现在我想继续计算,直到看起来不会有更好的整数值。也就是说,当计算的整数在一个范围内减小时,或者它不再变化时。我正在考虑,将当前计算值与最后一个x进行比较(我需要考虑多少值?)如果它总是小于或等于最后x个元素中的任何一个,我就停止计算。但是通过这种策略,我不能保证这是全球最大值,而只是一个本地......
这样做的好策略是什么?
修改 我知道找不到全局最大值是无法保证的。 但我对该功能的行为有一点了解: 我已计算的值越多,全局最大值出现的可能性就越小。
答案 0 :(得分:1)
嗯,似乎你需要假设一些启发式来评估何时停止。既然你不能说“我现在停下来,因为我发现了我的最大值”,你可以采用下列时装之一:
希望这会给你一些想法
答案 1 :(得分:1)
Reservoir Sampling。将值存储在较小的数组 A 中,该数组表示计算的整数值中的随机x样本。现在,对于一系列计算值,您可以将每个值与数组 A 中的值进行比较,如果找到递减趋势,则可以停止。这可以保证您处理全局最大值而不是本地。