Estoy tratando de escribir un algoritmo que me permita iterar sobre todos los puntos deseados dentro de un espacio n-dimensional para encontrar el mínimo de una función f (x) donde x es un vector de tamaño n.Recorrido de un espacio n-dimensional
Obviamente, la búsqueda de un espacio de 2-D o 3-D es bastante sencillo, sólo tiene que hacer:
for(int i = 0; i < x; i++) {
for(int j = 0; j < y; j++) {
//and so on for however many dimensions you want
Desafortunadamente, para mi problema, la dimensionalidad del espacio no es fijo (soy escribir un buscador mínimo generalizado para muchas funciones en un programa estadístico) y entonces tendría que escribir bucles para cada valor de n que quiero usar, que en última instancia podría ser bastante grande.
He estado tratando de entender cómo podría hacer esto utilizando recursividad pero no puedo ver la solución, aunque estoy seguro de que hay uno allí.
La solución no tiene que ser recursiva, pero debe ser general y eficiente (a la línea más interna de ese bucle anidado se le llamará muchísimo ...).
La forma en que estoy que representa el volumen de búsqueda es una matriz 2D de doble:
double[][] space = new double[2][4];
Esto representaría un espacio 4d con el mínimo y máximo atado en cada dimensión en la posición 0 o 1 de la matriz, respectivamente. Por ejemplo:
dim 0 1 2 3
min(0):-10 5 10 -0.5
max(1): 10 55 99 0.2
¿Alguna idea?
No estoy realmente nuevo, acabo de perder a mi cuenta desde hace mucho tiempo: P – Chilly
¿Cómo se maneja el rango con decimales, es decir, '-0.5' a' 0.2'? Además, ¿qué datos necesitará en el bucle interno para procesarlo? Una variedad de puntos? – mellamokb
Sin embargo, no creo que mi cerebro funcione muy bien con recursividad (probablemente no sea así), así que aún no he probado nada, solo he estado mirando la pared de mi garaje tratando de visualizarlo. – Chilly