この質問は、与えられた数のベクトルのデカルト積を計算する方法を尋ねます。ベクトルの数は事前にわかっていてかなり少ないため、ネストされたforループを使用して解を簡単に取得できます。
ここで、選択した言語で、ベクトルのベクトル(またはリストのリスト、セットのセットなど)が与えられたとします。
l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]
デカルト積を計算するように求められた場合、それは
[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]
再帰を続行します。たとえば、quick&dirty pythonでは、
def cartesianProduct(aListOfLists):
if not aListOfLists:
yield []
else:
for item in aListOfLists[0]:
for product in cartesianProduct(aListOfLists[1:]):
yield [item] + product
それを繰り返し計算する簡単な方法はありますか?
(注:答えはPythonである必要はありません。とにかく、この質問のように、Pythonではitertoolsの方がうまく機能することを認識しています。)