У меня есть массив double x[]
длины 11 и функция f(double x[])
.Я хочу найти минимум функции f()
путем дискретизации.Поэтому для заданных значений val1, val2, ..., valn
мне нужен цикл через все кортежи x в {val_1, ..., val_n} ^ 11.Я мог бы легко использовать 11 вложенных циклов, но действительно ли это самый эффективный из всех, что я мог сделать?
Редактировать: Чтобы прояснить ситуацию: функция f () определена в 11-мерном наборе.Я хочу оценить функцию на вершинах 11-мерной сетки.Для размера сетки h
возможные значения для записей массива x[]
могут быть 0
, h
, 2*h
, ..., n*h
= val_1, val_2, ..., val_n,Таким образом, в начале f(val_1, val_1, ..., val_1)
должен быть оценен, затем f(val_1, val_1, ...,val_1, val_2)
, ... и в и f(val_n, val_n, ..., val_n)
.На самом деле меня не волнует порядок, но меня волнует скорость, потому что таких кортежей много.Чтобы быть точным, есть n ^ 11 таких кортежей.Так что для n = 10 f()
приходится оценивать 10 ^ 11 раз.Мой компьютер может оценивать f()
примерно 5 * 10 ^ 6 раз в секунду, поэтому для n = 10 оценка f()
занимает 5 часов.Вот почему я ищу наиболее эффективный способ его реализации.