私はサイズが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. 2つの配列間の最も近い点のインデックス
- 3. 特定の数字の上下に最も近い要素を見つける
- 4. javascript/jquery - 配列に最も近い値を見つける
- 5. Pythonの2つのリスト/配列に最も近いアイテムを見つける
- 6. 球面上の最も近い点のペアを見つける
- 7. 回の特定の配列に最も近い時間を見つけ
- 8. Visual Studio 2010で6つ以上の最近のプロジェクトを表示
- 9. 最も最近のファイルの文字列を検索するバッチファイル
- 10. 2つのポリゴンの最も近い点
- 11. 2つの以上の文字列
- 12. 2つ以上の文字列のstrlen?
- 13. 特定の文字列に最も近い文字列を一致させる
- 14. 配列内に3つ以上の等しいオブジェクトがありますか?
- 15. n個の数字の配列内の2つの最も近い数字の間の距離を求める。 (Presorted Arrays)
- 16. javascriptの - 最も近い整数に
- 17. ユーザ入力から配列で最も近い値を見つける
- 18. 最も近い整数に切り上げる
- 19. Pythonリスト(アルファベット順)に「最も近い」文字列を見つける
- 20. 文字列配列。私は、以下の文字列配列を持つ
- 21. 3つの文字列の中で最も長い共通部分シーケンス
- 22. 距離行列の5つの最も近いサンプルのインデックスを見つける
- 23. 最も近いCCSpriteを見つける
- 24. tsql - 検索で最も近い数字に一致する
- 25. Excel:数字を最も近いten2に集める方法は?
- 26. JavaScriptの最も近いペアアルゴリズム
- 27. 最も近いjqueryの
- 28. jQueryの最も近いリターン
- 29. 検索最も近い数が
- 30. T-SQL:マップグリッド上のオブジェクトの最も近い場所を見つける
1.例が非常に役に立ちます。 2.±記号を使用できます。 –
あなたが言葉で求めていることは簡単です - array1の要素にかかわらず、array2,3,4の最小要素を取ると、合計も最小になります。しかし、あなたは何か違うことを知りたいと思う。 –