を最小化するインデックスi
を見つける方法。加重リストの真ん中を見つける
例:
ex1: A = [1, 2, 3, 4, 5], i = 3
ex2: A = [1, 2, 3], i = 2
ex3: A = [9, 1, 2, 3, 4], i = 1
ex4: A = [1, 2, 3, 4], i = 3
を最小化するインデックスi
を見つける方法。加重リストの真ん中を見つける
例:
ex1: A = [1, 2, 3, 4, 5], i = 3
ex2: A = [1, 2, 3], i = 2
ex3: A = [9, 1, 2, 3, 4], i = 1
ex4: A = [1, 2, 3, 4], i = 3
iが値abs([:I]) - 合計(SUM([I:]))を我々はS によって示すものとします。すべての値を知っていれば最小値を見つけることができますか?単純な反復を行い、この値を見つけます。
ここで問題は、S iの値を計算することです。これは非常に難しいことではないことが判明しました:まず、すべての要素SUMの合計を計算します。次に、左から右に反復し、現在の位置の左にあるすべての要素の合計を累積します(左の数字は iです)。 S i = abs((SUM-left i) - 左 i)。
だから、あなたが何をする必要があるか、入力オーバー2回の反復である - 値S を見つけるために、合計と第二を計算するために1私は(およびそれらの最小値を見つけます。)。
'numpy.cumsum'はここで便利かもしれません – timgeb
今後の読者のためには、' numpy.cumsum'は基本的に2回目の繰り返しでお勧めする合計を計算します。 (左i)また、SUM = left Nも明らかです。絶対差を最小限に抑える要素を見つけるためには2番目の反復が必要ですが、コードは短くてきれいになります –
すべてのインデックスに対して反復処理を行い、コスト関数を計算し、最小のコストでインデックスを出力しますか? –