私は、n次元空間内のすべての目的の点を反復処理して、関数f(x)の最小値を見つけるアルゴリズムを作成しようとしています。ここで、xはサイズnのベクトルです。
明らかに、2次元または3次元空間の検索はかなり簡単で、次のようにすることができます。
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の2次元配列です。
double[][] space = new double[2][4];
これは、配列の位置0または1の各次元で、それぞれ最小および最大の境界を持つ4d空間を表します。例えば:
dim 0 1 2 3
min(0):-10 5 10 -0.5
max(1): 10 55 99 0.2
何か案は?