Ich habe vier Arrays der Größe 2^N wo N = 25. Die Elemente von Arrays wurden von meinem Algorithmus generiert. Diese sind sortiert, enthalten aber Zahlen. Jetzt muss ich jedes Element von array1 nehmen und Elemente von array2, array3, array4 so auswählen, dass die Summe von ihnen minimal sein sollte (wenn ich Sum sage, kann ich a1 [k] + -a2 [j] + - a3 [m] nehmen + -a4 [t]. ich denke, es zu K Dimension verschmelzen Problem ähnlich ist. Kann jemand Punkt in der Literatur/Implementierung/Heuristik für das gleiche zu tun. Grüße, AllahbakshMatch Drei oder mehr Nächste Zahlen von Arrays
Antwort
Schritt 1 für array1 [k], finden eine Reihe in array2 oder array3 oder array4 so dass ihr Modul näher an array1 [k].
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
Schritt 2 Dann finden Sie von den verbleibenden 2 Arrays ein Paar Zahlen, die näher beieinander liegen. (Wiederum betrachten Modul)
eg .
array2 = {-31, 7, 47}
array4 = {14, 15, 66}
Closest elements are 7 and 14 with -7 + 14 = 7.
Schließlich Sie min (a1 [k] + a2 [j] + - a3 [m] + - a4 [t]) erhalten von allen 4-Arrays.
Also für 1 von Array1 ergibt dies: 1 - 1 - 7 + 14 = 7? Aber Sie können es besser machen: 1 + 7 + 10 - 14 = 4. – Henrik
Dies wird die Lösung exponentiell sprengen. Ich denke, der brutale Weg, dies zu tun, ist es, es in eine Schleife zu bringen. Also 4 für eine Schleife für vier Arrays, die eine große Rechenleistung benötigen, wenn N zunimmt. Gibt es einen heuristischen Algorithmus für die KDM-Zusammenführung? –
@ Henrick: guter Fang. Ich muss den Ansatz noch einmal überprüfen. –
Ich denke, dieses Problem könnte in O (n) gelöst werden, füge alle Arrays in Vereinigungsmenge zusammen, so zweiten Wert wird Array-Nummer sein. Iterate durch und auf jeder Iteration Form Antwort von 4 Werten, auf jedem Schritt maximale Distanz zwischen ausgewählten Zahlen berechnen -> diesen Wert minimieren.
Init-Ergebnis-Array mit den kleinsten Zahlen aus jedem Array.
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. euklidische Entfernung für drei (oder mehr) Vektoren
- 2. Arrays von ganzen Zahlen
- 3. Überprüfung der Gleichheit von drei oder mehr Strings in Java
- 4. Das nächste Match in einem Select
- 5. Regex Lookbehind mit 1 oder mehr Zahlen
- 6. Sortierung Nächste Zahlen von Array mit
- 7. Arbeiten mit Arrays von reellen Zahlen und komplexen Zahlen
- 8. Split mehr Werte in zwei oder mehr Arrays
- 9. in Python importieren zwischen drei oder mehr Dateien nicht funktioniert
- 10. Dreidimensionale Arrays von ganzen Zahlen in C++
- 11. Effizientere Strategie für die() oder match()
- 12. maximale (höchste) und minimale (niedrigste) Wert von drei ganzen Zahlen
- 13. Welcher Teil von Zahlen hat mehr Entropie?
- 14. Einfachere Weise drei Zahlen des Sortierens
- 15. MKPinAnnotationView: Sind mehr als drei Farben verfügbar?
- 16. Suchen Sie das höchste Produkt von drei Zahlen
- 17. Das nächste C# entspricht dem F # -Match-Ausdruck?
- 18. Mapping zwei (oder mehr) Arrays in eine mit Unterstreichung.js
- 19. Elixier: Pattern Match oder Guard
- 20. MATCH-Klausel mit Filtereigenschaften oder MATCH mit einer WHERE-Klausel?
- 21. PHP match zwei Arrays und geben Sie eine Farbe
- 22. Match Strings mit Zahlen und Buchstaben 6 Länge
- 23. Java Neo4j Cypher oder Match
- 24. Match Text Blöcke von Zeilenumbrüchen
- 25. Den Wert eines Arrays zu einer Liste von Zahlen machen?
- 26. Kombinieren von drei int-Arrays in einem, Java
- 27. Matplotlib, Erstellen von gestapelten Histogramm aus drei ungleich langen Arrays
- 28. Merging zwei Javascript-Arrays drei Elemente zu einer Zeit
- 29. VBA Match-Funktion funktioniert nicht mit großen Zahlen
- 30. Convert NSString ein Array von Arrays von Zahlen zu NSArray
1. Ein Beispiel wird sehr hilfreich sein. 2. Sie können das ± -Zeichen verwenden. –
Was Sie in Wörtern fragen ist trivial - nehmen Sie die minimalen Elemente von Array2, 3 und 4, unabhängig von dem Element von Array1, dann wird auch die Summe minimal sein. Aber ich vermute, du willst etwas anderes wissen. –