我有一个随机递归回溯算法来生成数独谜题(见这里)。它的平均工作速度足够快,但最坏情况下的运行时间慢得令人无法接受。这是 100 次试验的运行时间直方图(以毫秒为单位)(“更多”约为 200,000 毫秒!):
我想通过简单地在t ms后将其超时并使用新的随机种子重新启动来改进算法。为了防止这种情况无限重复,我要么在n次尝试后停止,要么在每次尝试失败后增加t 。如果t远大于中位数,则很有可能在随后的尝试中获得更快的运行速度。
问题:
- 如何调整不同处理器的超时时间t ?是否有一种快速、可靠的方法可以在每次运行之前对处理器性能进行基准测试?或者,我是否应该在多次运行中适应处理器,例如使用所有先前运行的平均运行时间?如果相关的话,我正在 Android 上运行它。
- 是否有更好的策略来完全避免运行时分布中的长尾?