そうしないと、分割統治アルゴリズムが機能しないため、強く相関しているように聞こえます(つまり、x
が増加すると、 も増加します)。y
x
y
これが事実であり、相関係数を計算できると仮定すると、中間点に相関係数を掛けて、期待値をより迅速に調整できる可能性があります。
私はこのアイデアをまったくテストしていないことに注意してください。可能な改善は、correlationFactor を移動平均にするか、xLow と xHigh の間の十分位数に基づいて事前計算することです。
f(x)
また、これは通話が比較的安価であることを前提としています。費用がかかる場合は、 への呼び出し数が増えるため、f(x)
節約ができなくなります。実際、これはばかげた考えだと思い始めています...
うまくいけば、次の疑似コードが私の意味を示しています。
DivideAndConquer(xLow, xHigh, correlationFactor, expectedValue)
xMid = (xHigh - xLow) * correlationFactor
// Add some range checks to make sure that xMid is within xLow and xHigh!!
y = f(xMid)
if (y == expectedValue)
return expectedValue
elseif (y < expectedValue)
correlationFactor = (xMid - xLow) / (f(xMid) - f(xLow))
return DivideAndConquer(xLow, xMid, correlationFactor, expectedValue)
else
correlationFactor = (xHigh - xMid) / (f(xHigh) - f(xMid))
return DivideAndConquer(xMid, xHigh, correlationFactor, expectedValue)