为维度9的向量生成所有可能的组合

时间:2014-02-13 17:35:56

标签: combinations permutation

v = {x: x in {-1,0,1}}使|v| = 9

的维度成为可能

向量x中的每个元素v都可以3个可能的值-1,01

如何生成向量v的所有可能组合?


Example: v = {1,0,-1,0,0,1,1,1,0},v = {-1,0,-1,1,0,0,1, 1,0}等...

我会3^9组合吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

这个想法是这样的:

您对 v 的每个元素都有一个位置(在您的情况下为9):

- - - - - - - - -

每个位置可以包含三个不同的值(-1 | 0 | 1),然后组合的总数等于3 * 3 * 3 * 3 * 3 * 3 * 3 * 3 * 3 = 3 ^ 9。

生成此类组合仅模拟此过程,例如使用for循环,例如三个职位:

values[] = {-1, 0, 1};
for (i = 0; i < 3; i++)
    for (j = 0; j < 3; j++)
        for (k = 0; k < 3; k++)
            print values[i], values[j], values[k]

在您的情况下,您需要九个嵌套循环!更简单的实现将涉及递归,但有时更难以理解。无论如何,这是一个想法:

values[] = {-1, 0, 1};
void generate(int position)
{
    if (position == 0) {
        println();
        return;
    }

    for (int i = 0; i < 3; i++) {
        print(values[i], ", ");
        generate(position - 1);
    }
}

// call the function with
generate(9);

这个another answer更详细地解释了递归生成器的工作原理。

答案 1 :(得分:1)

如果你使用的是python,你可以这样做:

import itertools
v = itertools.product([-1,0,1], repeat=9)
# v will be a generator
# to have the whole list as tuples
list_v = list(v)

# Verify the number of combination
print len(list(v))

它会给你:19683,或3 ^ 9