私はサイズが2^N(N = 25)の4つの配列を持っています。配列の要素は私のアルゴリズムによって生成されています。これらはソートされていますが、数字を含みます。ここで、array1の各要素をとり、array2、array3、array4の要素を選択する必要があります。これらの合計が最小になるようにしなければなりません(a1 [k] + -a2 [j] + - a3 [m] + -A4 [T]。 私は問題をマージK外形寸法に似ていると思います。文学/実装/ヒューリスティックためにいくつかの一点にできるのと同じを行うため。 よろしく、 Allahbakshについては配列の3つ以上の最も近い数字
答えて
ステップ1 配列1 [k]は、配列2又はARRAY3の数値を見つけるか、その弾性率が[k]を配列1に近くなるようarray4。
eg .
array1 = {1, 3, 67}
array2 = {-31, 7, 47}
array3 = {-1, 2, 10}
array4 = {14, 15, 66}
For array1[0] (ie. 1), the number closest to it is in array3 and its -1 as mod(-1) = 1
ステップ2 残りの2つの配列のうち、お互いに近い数のペアを見つけます。全4つのアレイから
eg .
array2 = {-31, 7, 47}
array4 = {14, 15, 66}
Closest elements are 7 and 14 with -7 + 14 = 7.
は、最終的にあなたが分(A4 [T] - - A3 [M] + A1 [K] + -a2 [J] +)を取得する(再度係数を考慮する)。
したがって、array1から1の場合、1 - 1 - 7 + 14 = 7?しかし、あなたはもっとうまくいくでしょう:1 + 7 + 10-14 = 4. – Henrik
これは解を指数関数的に爆破します。私はこれを行うブルートフォースの方法はforループに入れることだと思います。 Nが増加するにつれて巨大な計算力を必要とする4つのアレイのための4つのループ。 KDMマージの発見的アルゴリズムはありますか? –
@Henrick:良いキャッチ。私はアプローチを再訪する必要があります。 –
この問題はO(n)で解決できると思います。すべての配列を結合セットにマージして、2番目の値が配列番号になるようにしてください。それを反復し、各反復形式で4つの値から答えを出し、各ステップで、選択された数の間の最大距離を計算する - >この値を最小にする。
各配列から最小の数字を持つ初期結果配列。
public Integer[] findClosest(int[][] unionSet, Integer[] result) {
for (int i = 0; i < unionSet.length; i++) {
int value = unionSet[i][0];
int position = unionSet[i][1];
int currentDistance = getDistance(result);
Integer[] temp = Arrays.copyOf(result, result.length);
temp[position] = value;
int newDistance = getDistance(temp);
if (newDistance <= currentDistance) {
result = temp;
}
}
return result;
}
private int getDistance(Integer[] result) {
int max = 0;
int min = 0;
for (int i = 1; i < result.length; i++) {
if (result[i] != null) {
if (result[i] > result[max]) {
max = i;
}
if (result[min] != null && result[i] < result[min]) {
min = i;
}
}
}
return Math.abs(result[max] - result[min]);
}
- 1. 3次元以上の点の最も近いペア(分裂と征服)
- 2. Pythonの最も近い値の数字
- 3. 特定の数字の上下に最も近い要素を見つける
- 4. 2つの配列間の最も近い点のインデックス
- 5. エラーと最も近い3つの合計:文字列定数の前に予期しないunqualified-id
- 6. 最も近い一致文字列
- 7. Perl - 2つ以上の文字列の最も長い共通接頭辞?
- 8. リストから最も近い数字のグループを見つける
- 9. ペアの配列で最も近い数のペアを見つける最も速い方法は何ですか?
- 10. エリクシールの配列に最も近いもの
- 11. 配列(ルビー)で3つ以上のエントリを持つバブルソートエラー
- 12. javascript/jquery - 配列に最も近い値を見つける
- 13. 文字列に最も近いpalindromeを見つける
- 14. 配列のポイントから3つの最も近い座標を見つける方法Java
- 15. Pythonの2つのリスト/配列に最も近いアイテムを見つける
- 16. 文字列に最も近いものを取得
- 17. 配列に基づく3つ以上の要素のオートフィルタ
- 18. Numpy:与えられた数字に最も近いn個のエントリを持つ配列を返す
- 19. 2つのnumpy配列で最も近い値を見つける
- 20. 球面上の最も近い点のペアを見つける
- 21. PHP - 数字の最も近い倍数への丸め0.5
- 22. 切り上げられた配列から最も近い整数を見つける
- 23. 2つ以上の文字列配列を結合
- 24. 回の特定の配列に最も近い時間を見つけ
- 25. 配列の各要素の最も近い値を見つける方法は?
- 26. Visual Studio 2010で6つ以上の最近のプロジェクトを表示
- 27. 最も最近のファイルの文字列を検索するバッチファイル
- 28. 2つのポリゴンの最も近い点
- 29. 2次元配列の最も近い値をPythonで探す
- 30. 配列の値に最も近いキーを取得する
1.例が非常に役に立ちます。 2.±記号を使用できます。 –
あなたが言葉で求めていることは簡単です - array1の要素にかかわらず、array2,3,4の最小要素を取ると、合計も最小になります。しかし、あなたは何か違うことを知りたいと思う。 –