标签: combinations

计算n的值选择k

评估n选择k值的最有效方法是什么?我认为蛮力方式是找到n阶乘/ k阶乘/(nk)阶乘.

更好的策略可能是根据这个递归公式使用dp .有没有其他更好的方法来评估n选择k?

language-agnostic algorithm combinations

32
推荐指数
4
解决办法
5万
查看次数

`scipy.misc.comb`比ad-hoc二项式计算更快吗?

是否确定现在scipy.misc.comb确实比特别实施更快?

根据一个旧的答案,统计:Python中的组合,这个自制函数比scipy.misc.comb计算组合时更快nCr:

def choose(n, k):
    """
    A fast way to calculate binomial coefficients by Andrew Dalke (contrib).
    """
    if 0 <= k <= n:
        ntok = 1
        ktok = 1
        for t in xrange(1, min(k, n - k) + 1):
            ntok *= n
            ktok *= t
            n -= 1
        return ntok // ktok
    else:
        return 0
Run Code Online (Sandbox Code Playgroud)

但是在我自己的机器上运行一些测试后,使用这个脚本似乎不是这样的:

from scipy.misc import comb
import random, time

def choose(n, k):
    """
    A fast way to …
Run Code Online (Sandbox Code Playgroud)

python math combinations combinatorics scipy

31
推荐指数
1
解决办法
890
查看次数

在Ruby中将数组数组合并到只有前向的所有可能组合中

我有一个数组数组,如下所示:

[['1','2'],['a','b'],['x','y']]
Run Code Online (Sandbox Code Playgroud)

我需要将这些数组组合成一个字符串,其中包含所有三个集合的所有可能组合,仅向前.我已经看到很多关于任何顺序的所有可能组合的例子,这不是我想要的.例如,我不希望第一组中的任何元素出现在第二组之后,或者第三组中的任何元素出现在第一组或第二组之前,依此类推.因此,对于上面的示例,输出将是:

['1ax', '1ay', '1bx', '1by', '2ax', '2ay', '2bx', '2by']
Run Code Online (Sandbox Code Playgroud)

数组的数量和每组的长度是动态的.

有人知道如何在Ruby中解决这个问题吗?

ruby arrays combinations unique

28
推荐指数
3
解决办法
7386
查看次数

从数组中获取大小为n的所有组合的算法(Java)?

现在我正在尝试编写一个带有数组和整数n的函数,并给出每个大小为n的组合的列表(所以是int数组的列表).我能够使用n个嵌套循环编写它,但这仅适用于特定大小的子集.我无法弄清楚如何推广它适用于任何大小的组合.我想我需要使用递归?

这是3个元素的所有组合的代码,我需要一个适用于任意数量元素的算法.

import java.util.List;
import java.util.ArrayList;

public class combinatorics{
    public static void main(String[] args) {

        List<int[]> list = new ArrayList<int[]>();
        int[] arr = {1,2,3,4,5};
        combinations3(arr,list);
        listToString(list);
    }

    static void combinations3(int[] arr, List<int[]> list){
        for(int i = 0; i<arr.length-2; i++)
            for(int j = i+1; j<arr.length-1; j++)
                for(int k = j+1; k<arr.length; k++)
                    list.add(new int[]{arr[i],arr[j],arr[k]});
    }

    private static void listToString(List<int[]> list){
        for(int i = 0; i<list.size(); i++){ //iterate through list
            for(int j : list.get(i)){ //iterate through array
                System.out.printf("%d ",j);
            }
        System.out.print("\n");
        } …
Run Code Online (Sandbox Code Playgroud)

java combinations combinatorics

28
推荐指数
2
解决办法
6万
查看次数

如何生成给定List的幂集?

我正在尝试生成长度为N的给定List的所有2 ^ N-1种可能组合的集合.该集合将组合中的元素数量映射到包含特定长度组合的有序组合列表.例如,对于List:

[A, B, C, D]
Run Code Online (Sandbox Code Playgroud)

我想生成地图:

{
    1 -> [{A}, {B}, {C}, {D}]
    2 -> [{A, B}, {A, C}, {A, D}, {B, C}, {B, D}, {C, D}]
    3 -> [{A, B, C}, {A, B, D}, {A, C, D}, {B, C, D}]
    4 -> [{A, B, C, D}]
}
Run Code Online (Sandbox Code Playgroud)

生成的数据库应保持原始顺序(其中[]表示有序系列(List),并{}表示无序组(Set)),并尽可能快地运行.

我整天都在努力处理一些递归代码(我知道实现应该是递归的)但是无法深入了解它.

有没有我可以使用的参考/这种算法的现成实现?

java algorithm combinations list

27
推荐指数
2
解决办法
3万
查看次数

如何计算R中的组合和排列?

我刚开始学习概率,我正在寻找可以在linux上工作的工具.

我找到了一些组合软件包http://rss.acs.unt.edu/Rdoc/library/Combinations/html/00Index.html但是当我尝试安装它们时,该过程失败并显示以下消息:

> install.packages("Combinations")
Installing package(s) into ‘/home/maxim/R/x86_64-pc-linux-gnu-library/2.13’
(as ‘lib’ is unspecified)
Warning message:
In getDependencies(pkgs, dependencies, available, lib) :
  package ‘Combinations’ is not available (for R version 2.13.1)
Run Code Online (Sandbox Code Playgroud)

combinations r

26
推荐指数
3
解决办法
11万
查看次数

PHP:如何获得1D阵列的所有可能组合?

可能重复:
算法将采用数字或单词并在PHP中查找所有可能的组合
组合,处置和排列

我已经在SO上阅读/尝试了很多建议的答案,但没有一个能解决问题

$array = array('Alpha', 'Beta', 'Gamma');
Run Code Online (Sandbox Code Playgroud)

如何获得所有可能的组合?

预期产量:

array('Alpha',
      'Beta',
      'Gamma',
      'Alpha Beta',
      'Alpha Gamma',
      'Beta Alpha',
      'Beta Gamma',
      'Gamma Alpha',
      'Gamma Beta',
      'Alpha Beta Gamma',
      'Alpha Gamma Beta',
      'Beta Alpha Gamma',
      'Beta Gamma Alpha',
      'Gamma Alpha Beta',
      'Gamma Beta Alpha')
Run Code Online (Sandbox Code Playgroud)

注意:我正在寻找的答案应包括所有组合和所有不同的安排.例如:'Alpha Beta''Beta Alpha'是两个不同的字符串,两者都应该在输出数组中.

提前致谢

php combinations

26
推荐指数
1
解决办法
2万
查看次数

List <List <int >>的组合

我有一个这种类型的列表List>包含这个

List<int> A = new List<int> {1, 2, 3, 4, 5};
List<int> B = new List<int> {0, 1};
List<int> C = new List<int> {6};
List<int> X = new List<int> {....,....};
Run Code Online (Sandbox Code Playgroud)

我希望拥有这样的所有组合

1-0-6
1-1-6
2-0-6
2-1-6
3-0-6
Run Code Online (Sandbox Code Playgroud)

等等.

据你说这是使用Linq解决这个问题吗?

c# linq generics combinations list

25
推荐指数
3
解决办法
2万
查看次数

PHP数组组合

我有一个7个数字(1,2,3,4,5,6,7)的数组,我想要成对的5个数字,如(1,2,3,4,5),(1,2,3) ,4,6,),(1,2,3,4,7).(1,2,3,4,5)等于(4,5,3,1,2)

我想知道PHP或任何算法中是否有函数可以执行此操作?我不知道从哪里开始.你能帮助我吗 ?

我希望将7个给定数字(它们从一个数组中取出)的所有组合放入5个插槽中,无视顺序

php arrays combinations

25
推荐指数
3
解决办法
3万
查看次数

从具有重叠的池中挑选无序组合

我有值池,我想通过从某些池中挑选来生成所有可能的无序组合.

例如,我想从池0,池0和池1中选择:

>>> pools = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
>>> part = (0, 0, 1)
>>> list(product(*(pools[i] for i in part)))
[(1, 1, 2), (1, 1, 3), (1, 1, 4), (1, 2, 2), (1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 3), (1, 3, 4), (2, 1, 2), (2, 1, 3), (2, 1, 4), (2, 2, 2), (2, 2, 3), (2, 2, 4), (2, 3, 2), (2, 3, 3), (2, 3, 4), …
Run Code Online (Sandbox Code Playgroud)

python combinations combinatorics

25
推荐指数
5
解决办法
794
查看次数

标签 统计

combinations ×10

combinatorics ×3

algorithm ×2

arrays ×2

java ×2

list ×2

php ×2

python ×2

c# ×1

generics ×1

language-agnostic ×1

linq ×1

math ×1

r ×1

ruby ×1

scipy ×1

unique ×1