我正在尝试编写一个算法,让我遍历 n 维空间内的所有所需点,以找到函数 f(x) 的最小值,其中 x 是大小为 n 的向量。
显然,搜索 2-d 或 3-d 空间非常简单,您可以简单地执行以下操作:
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[][] space = new double[2][4];
这将表示一个 4d 空间,在数组的位置 0 或 1 的每个维度中分别具有最小和最大界限。例如:
dim 0 1 2 3
min(0):-10 5 10 -0.5
max(1): 10 55 99 0.2
有任何想法吗?