Обход n-мерного пространства

Я пытаюсь написать алгоритм, который позволит мне перебирать все нужные точки в n-мерном пространстве, чтобы найти минимум функции f(x), где x — вектор размера n. .

Очевидно, что поиск в двумерном или трехмерном пространстве довольно прост, вы можете просто сделать:

for(int i = 0; i < x; i++) {
    for(int j = 0; j < y; j++) {
        //and so on for however many dimensions you want

К сожалению, для моей задачи размерность пространства не фиксирована (я пишу обобщенный поиск минимума). для многих функций в статистической программе), и поэтому мне пришлось бы писать циклы для каждого значения n, которое я хочу использовать, что в конечном итоге может быть довольно большим.

Я пытался придумать, как это сделать с помощью рекурсии, но не нашел решения, хотя уверен, что оно есть.

Решение не обязательно должно быть рекурсивным, но оно должно быть общим и эффективным (самая внутренняя строка в этом вложенном цикле будет вызываться ужасно много...).

Объем для поиска я представляю в виде двумерного массива значений типа double:

double[][] space = new double[2][4];

Это будет представлять четырехмерное пространство с минимальной и максимальной границей в каждом измерении в позиции 0 или 1 массива соответственно. Например:

dim         0   1   2   3
    min(0):-10  5  10  -0.5
    max(1): 10 55  99   0.2

Есть идеи?

7
задан Chilly 6 April 2012 в 09:06
поделиться