再帰プログラムを配布する方法がわかりません。現在は再帰的で単一のプログラムとして実行されますが、私の目標は、データのサブセットのみを生成する他のマシンにこのプログラムを配布することです。
プログラムの背景は次のとおりです。ターゲット(この場合は10)と最小/最大の重みを持つアイテムのリストを指定すると、それぞれの組み合わせが返されます。
だから3つのアイテムで、そして
Low = 2, 2, 2
high = 6, 6, 6
Target = 10
結果は次のとおりです。
2 2 4
2 3 3
2 4 2
3 2 3
3 3 2
4 2 2
作業を行う方法は次のとおりです。
void distribute (int i, int [] low, int [] high, final int rest, int [] sizes) {
// System.out.println (i + " " + rest + " " + sizes);
if (i == sizes.length - 1) {
if (rest < high [i]) {
sizes[i] = rest;
result.add (Arrays.copyOf (sizes, sizes.length));
}
}
else
for (int c = 0;
c <= java.lang.Math.min (high [i] - low [i], rest);
++c) {
sizes [i] = c;
distribute (i + 1, low, high, rest - c, sizes);
}
}
誰かが出力を配布する方法について何か考えがあるかどうか疑問に思っているので、上記の例では、サーバーが3つある場合、各サーバーはすべてを生成するのではなく、2つの一意のエントリのみを生成します。たとえば、事前に6つの結果があり、各マシンに2つを配布したいのですが、どうすればよいでしょうか。それは可能ですか?もしそうなら、論理は何ですか?
それが役立つ場合は、プログラム全体がここにあります:http: //pastebin.com/RikqPgKh