Algorithm 找到一对比最小化一个具有两个参数的函数的值
我有一个函数F(x,y),其中x和y是整数,两个数组a,b各有n个元素。我需要找到两个使F(a[I],b[j])的值最小的数字I,j。有没有比搜索所有n^2个不同组合更好的方法?函数F为不同的参数返回不同的值Algorithm 找到一对比最小化一个具有两个参数的函数的值,algorithm,search,Algorithm,Search,我有一个函数F(x,y),其中x和y是整数,两个数组a,b各有n个元素。我需要找到两个使F(a[I],b[j])的值最小的数字I,j。有没有比搜索所有n^2个不同组合更好的方法?函数F为不同的参数返回不同的值 编辑:在我的问题中,数组a,b代表两个对立的军队在直线的两点上发射的n个炮弹,从时间=0开始。该函数是一个oracle函数,它返回两个碰撞的确切时间,我需要找到首先碰撞的一对。如果它们没有碰撞,甲骨文将返回它们在没有其他炮弹的情况下碰撞的时间。因为甲骨文总是返回炮弹碰撞的时间,我假设它们是
编辑:在我的问题中,数组a,b代表两个对立的军队在直线的两点上发射的n个炮弹,从时间=0开始。该函数是一个oracle函数,它返回两个碰撞的确切时间,我需要找到首先碰撞的一对。如果它们没有碰撞,甲骨文将返回它们在没有其他炮弹的情况下碰撞的时间。因为甲骨文总是返回炮弹碰撞的时间,我假设它们是直接相互射击的。它们都是在时间
t=0时发射的,因此唯一的变量是速度。我们可以在a
中找到最快的炮弹,只要找到使值F(a[i],b[c])
最小化的最佳i
,其中c
是一个常数,例如0
,然后我们通过将该bestI
与b
中的所有值进行比较来找到最佳j
,从而找到解决方案,它最小化了F(a[bestI],b[j])
。这是O(n)。这样你也可以得到最小值,如果你只需要最好的i
和j
,你可以再次找到最小值F(a[c],b[j])
,其中c
又是一个常数。因为你的预言书总是返回炮弹碰撞的时间,我假设它们是直接相互射击的。它们都是在时间t=0时发射的,因此唯一的变量是速度。我们可以在a
中找到最快的炮弹,只要找到使值F(a[i],b[c])
最小化的最佳i
,其中c
是一个常数,例如0
,然后我们通过将该bestI
与b
中的所有值进行比较来找到最佳j
,从而找到解决方案,它最小化了F(a[bestI],b[j])
。这是O(n)。这样你也可以得到最小值,如果你只需要最好的i
和j
你可以再次找到最小值F(a[c],b[j])
,其中c
又是一个常数。1。如果没有关于函数的任何信息,真的很难帮助你,你知道一些关于它的信息吗?2.你对阵列了解多少?它们分类了吗?别的?3.这真的取决于前两个问题的答案,但你可能想看看“遗传算法”@T.G。对不起,没有信息,我编辑了原始的帖子1。如果没有关于函数的任何信息,真的很难帮助你,你知道一些关于它的信息吗?2.你对阵列了解多少?它们分类了吗?别的?3.这真的取决于前两个问题的答案,但你可能想看看“遗传算法”@T.G。很抱歉,缺少信息,我编辑了原始帖子