与えられA[1..n]た:実数 の配列。
目標D[1..n]:次のような配列
D[i] = min{ distance(i,j) : A[j] > A[i] }
または、より高い値の要素がない場合は、デフォルト値(0など)。ここでは本当にユークリッド距離を使いたいと思います。
例:
A = [-1.35, 3.03, 0.73, -0.06, 0.71, -0.21, -0.12, 1.49, 1.41, 1.42]
D = [1, 0, 1, 1, 2, 1, 1, 6, 1, 2]
n明らかなO( ^ 2)ソリューションを打ち負かす方法はありますか?私がこれまでに成し遂げた唯一の進歩は、D[i] = 1いつでもA[i]極大ではないということです。私はよく考えていて、何も思いつきませんでした。最終的にこれを2Dに拡張したいと思っています(つまりA、D行列です)。