長さが等しくない可能性のある2つの整数のベクトルが与えられた場合、2つのベクトル間の対応する数のペアの間の最大値を選択して累積し、サイズの違いを補うために短いベクトルに追加のゼロを挿入して、可能な最大結果をどのように決定できますか?
たとえば、次の2つのベクトルを入力として考えます。
[8 1 4 5]
[7 3 6]
ゼロと結果の合計を挿入するための選択肢は次のとおりです。
[0 7 3 6] => Maximums: [8 7 4 6] => Sum is: 25
[7 0 3 6] => Maximums: [8 1 4 6] => Sum is: 19
[7 3 0 6] => Maximums: [8 3 4 6] => Sum is: 21
[7 3 6 0] => Maximums: [8 3 6 5] => Sum is: 22
したがって、この場合、アルゴリズムは25を返します。
ゼロを小さいベクトルに配置するすべての順列を計算することにより、ブルートフォースでこれを行うことができます(上記と同様)。これは計算コストが高く、一方のベクトルが他方のベクトルのサイズのちょうど半分の場合に最悪です。
ベクトルの長さが異なる場合でも、長いベクトルの長さに比例する線形時間で回答を計算する方法はありますか?そうでない場合、選択されている階乗順列の数よりも優れているでしょうか?
3
これを使用して、2つの文の類似度のランク付けに関連する別の検索アルゴリズムの最大結果を計算しています。正しい、並べ替えは受け入れられません。
—
WilliamKF 2013年
ベクターの長さの違いについて何か約束しましたか?あなたの例では、欠けているゼロは1つだけです。欠落しているゼロの数が少ないことがわかっている場合は、より効率的なアルゴリズムがあります(たとえば、欠落しているゼロの数が定数の場合、動的プログラミングアルゴリズムを線形時間で実行できます)。
—
DW