Этот вопрос спрашивает, как вычислить декартово произведение для данного числа векторов. Поскольку число векторов известно заранее и довольно мало, решение легко получить с помощью вложенных циклов.
Теперь предположим, что на выбранном вами языке вам дается вектор векторов (или список списков, или набор множеств и т. Д.):
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], ... ]
Я бы продолжил рекурсию. Например, в быстром и грязном питоне,
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 справляется с работой лучше, как в этот вопрос .)