java - 确定数组列表中全局最大值的好方法是什么

标签 java algorithm

在我的程序中,我有一个循环,它计算整数值并将其一个接一个地放入数组列表中。 计算的整数值越高越好。 现在我想继续计算,直到似乎不会出现更好的整数值。也就是说,当计算的整数在一定范围内减少或不再改变时。我正在考虑,将当前计算值与最后一个 x 进行比较(我需要关心多少值?)如果它总是小于或等于最后一个 x 元素中的任何一个,我将停止计算。但采用这种策略,我不能保证这是全局最大值,而只是局部最大值......

做到这一点的好策略是什么?

编辑: 我知道不能保证找到全局最大值。 但我对该函数的行为有所了解: 我已经计算的值越多,出现全局最大值的可能性就越小。

最佳答案

嗯,看来您需要假设一些启发式方法来评估何时停止。由于您不能说“我现在停止,因为我找到了最大值”,因此您可以采用以下方式之一继续:

  • 保持当前最大值,并将下一个值与当前值进行比较,如果较小,则增加计数器。如果计数器达到 X(您的参数),您就会停止
  • 使用概率分布函数,其在 0 处的概率为 1,在 +inf 处的概率为 0。这可以根据您的喜好定制。然后,您只需增加所见值的数量或较小值的计数器,然后使用该计数器来估计使用该函数的概率。如果 prob < X(再次是你的参数),你就停止。

希望这能给你一些想法

关于java - 确定数组列表中全局最大值的好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14500303/

相关文章:

java - 我从哪里开始制作 Android 2D 游戏?

java - 为什么 Appletviewer 抛出 AccessControlException : access denied

c++ - 如何从多个 vector 中找到不相同的元素?

performance - O(log N) == O(1) - 为什么不呢?

algorithm - 如何在一次迭代中计算DFS中有向加权图路径的总权重?

java - 我在 Maven 构建中得到 "The build could not read 1 project"因为未定义的版本

Java面向对象编程和多态性

java - 创建应用程序时 Eclipse 中的问题

algorithm - 在带循环的有向图中查找所有路径

javascript - 将自行车分配给人们 - 第一优先级(最近的自行车到最近的人)