标签: combinatorics

简单的数字模式,将组合存储为唯一总和

这是一个数学问题,但我确信这必须出现在一些编程场景中,至少我希望如此,我想知道是否有这种情况的名称:

假设我有一个系列中的7个项目.为了这个例子,让我们使用一周中的几天.我希望用户提交他们计划在下一周进入的一周中的哪几天.它们带有一系列标准复选框,每周一个.

我想将它们在一个数据库字段中选择的日期存储为单个整数.

显然,我可以为每天分配一个数字,1 - 7(如果用户未选中所有选项,则保留0).但是如果一个用户选择星期一和星期二(1 + 2)而另一个用户选择星期三(3),那么我会遇到问题.

我还可以给一周中的每一天都有一些奇怪的独特之处,这样任何数字组合都不可能与任何其他组合相同.

我的希望是,不是为第二个场景组成这样一个系列,而是已经存在一些数字属性(可能是系列中每个数字的平方等),这些属性已经得到充分利用和尊重.理想情况下,这对编程来说非常熟悉,导出各个数字只需要很少的通用编程语言开销(在我的例子中是PHP).

我只是梦想这个,还是做这样的事情?

database math unique combinatorics

2
推荐指数
2
解决办法
1233
查看次数

重复变异代码(组合学)?

有没有人有Java代码来生成所有VARIATIONS WITH REPETITION?

有大量的排列和组合示例可供使用,变化必须是最简单的...浪费时间重新发明轮子感觉很愚蠢(必须为此编写大量代码).

VARIATIONS WITH REPETITION的一个例子可能是这样的:

(tupletSize=3, input= A, B)
AAA, AAB, ABA, BAA, ABB, BAB, BBA, BBB
Run Code Online (Sandbox Code Playgroud)

谢谢!

java algorithm recursion combinatorics

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

列举每五张卡片组合

我刚刚有一个脑块,我有一个Deck对象,并希望以迭代的方式从中获取每个5卡组合.有人可以告诉我如何做到这一点,我想它会是:

for(int i =0; i <52; i++){
    for(int j = i + 1 ; j < 52; j++){
        for(int k = j + 1; k < 52; k++{ 
            for(int l = k + 1; l < 52; l++){
                for(int m = l + 1; m < 52; m++){
                }
             }
         }
     }
  }
Run Code Online (Sandbox Code Playgroud)

它是否正确?

谢谢

java combinatorics

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

在R中生成非常多的组合

我有大约700个元素,并希望创建20的组合.可能的组合总数是[700 C 20] ~2.5e + 38组合.此大型数据集属于图表的规范.这是一个图优化问题,因此,我甚至想将约束应用于这组组合.

我正在使用R!为此目的,因为它具有丰富的包和大型数据集处理功能.我正在使用'combinat'包.但问题是,当我尝试计算这个时,我收到以下错误:

combn(theDataSet,20,myFunction)
Error in matrix(r, nrow = len.r, ncol = count) : 
  invalid 'ncol' value (too large or NA)
In addition: Warning message:
In combn(theDataSet, 20, myFunction) : NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

对此问题的任何解决方案,备用包或算法表示赞赏.也许任何处理结果的方法?

由于这是图优化问题,因此非常感谢与此相关的任何包或算法.

或者,如果有任何其他可用于解决此类问题的工具,请告诉我.

我是电子专业,所以我不太了解图优化的高级算法,我不得不采用组合方法.如果有更智能的方法解决这个问题,我很想知道.

请帮忙.

编辑:

由于你们中的一些人一直在问实际的问题,我只想简单介绍一下,因为在互联网上发布我的实际作业问题以获得线到线的答案并不值得尊敬.

抽象:

大约有700个节点,每个节点都必须由机器人每天充电.一些机器人(放置在圆顶内)携带一个具有约5000单位能量的源,每个节点需要不同的能量水平(所有节点的平均要求约为250,但对于某些节点,其范围从120个单位到500个单位)节点).给出了从节点到圆顶的距离以及从节点到彼此的距离(以矩阵形式的维度701x701).每个机器人一天可以行进的数量存在约束.设计算法并编写程序(以任何商业规格或包装),以有效地计算所需机器人的数量和所有机器人行进的总距离.

algorithm r graph combinatorics large-data

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

将一组划分为大小为k的子组

遇到了一个问题:找到将一组大小'n'分成大小为'k'的子组的所有可能方法.(这里 n%k = 0)

例如,设置为{1,2,3,4,5,6}以分成3个子组(k = 3,n = 6),可能的集合是

a){1,2,3},{4,5,6}

b){1,3,5},{2,4,6}

c){1,3,6},{2,4,5}

d){1,3,4},{2,5,6}等......

我尝试做的是,首先找到集合中的大小k的所有组合.然后循环遍历这些组合,找出哪些组合可以组合在一起以找到子组列表.

但我相信这种方法的时间复杂性非常糟糕.有没有更好的方法来解决这个问题?

java algorithm combinatorics time-complexity

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

阵列的所有组合

我有阵列

a = ["w1", "w2", "w3"]
Run Code Online (Sandbox Code Playgroud)

如何使用每个值组合生成新数组?我需要输出看起来像这样:

["w1", "w2", "w3", "w1 w1", "w1 w2", "w1 w3", "w2 w1", "w2 w2", "w2 w3", "w3 w1", "w3 w2", "w3 w3", "w1 w1 w1", "w1 w1 w2", "w1 w1 w3", "w1 w2 w1", "w1 w2 w2", "w1 w2 w3", "w2 w1 w1", "w2 w1 w2", "w2 w1 w2", "w2 w1 w3", "w2 w2 w1", "w2 w2 w2", "w2 w2 w3", "w2 w3 w1", "w2 w3 w2", "w2 w3 w3", "w3 w1 w1", "w3 …
Run Code Online (Sandbox Code Playgroud)

ruby arrays algorithm combinations combinatorics

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

Python - 仅当条件适用时组合

假设我有一个巨大的元组列表:

tuples = ([1, 2], [2, 1], [3, 2], [25, 73], [1, 3]...)
Run Code Online (Sandbox Code Playgroud)

截至目前,该列表有 360000 个元素(它们是互质数列表)。我需要组合 3 个元组,这样每个组合上只有 3 个不同的数字,例如:

([2, 1], [3, 1], [3, 2])
([2, 1], [5, 1], [5, 2])
Run Code Online (Sandbox Code Playgroud)

在生成组合列表时,我需要丢弃具有 4 个或更多不同数字的组合。

如果我尝试暴力破解并测试每个组合,我最终会得到360000 choose 3哪些7.77 * 10^15可能的组合进行测试。

编辑:我试图解决的问题是:

找到以下形式的互质对的所有组合:

(a, b), (a, c), (b, c)
Run Code Online (Sandbox Code Playgroud)

对于 c < 120000

我采取的步骤:

  1. 为两个数字都小于 120000 的所有 Coprime 对生成三叉树
  2. (问题 - 生成组合,暴力破解是行不通的)

python math combinations combinatorics

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

如何生成一组给定长度和元素总和的所有元组?

我想要一个函数,它生成一组(或一个列表)所有可能的元组,具有给定的长度和元素的总和。元组的元素不应该是负整数。

例如对于以下输入

get_tuple(length=3, total=2)
Run Code Online (Sandbox Code Playgroud)

我想得到以下输出:

[(1, 0, 1), (2, 0, 0), (1, 1, 0), (0, 0, 2), (0, 1, 1), (0, 2, 0)]
Run Code Online (Sandbox Code Playgroud)

Python 中的标准库可以做到这一点吗?如果没有,如何编写一个可以做到的函数?

python recursion combinatorics

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

创建每个可能的团队组合 - 组合优化

如果标题不能准确描述我正在做的事,请道歉.

我正在努力为幻想体育比赛建立每一个可能的假设团队.这意味着将所有可用的球员组合在一起,每个球员都有自己所在球队的特征,他们的位置和工资,这限制了一支球队的人数.我遇到的麻烦是找到一种内存有效的方法将它们全部组合起来.

我做了一个示例数据集:

 player_pool <- data.frame(id = seq(1,30), salary = seq(1,30), team = rep(LETTERS[seq(from=1, to=5)],6), position = rep(LETTERS[seq(from=1, to=5)],6))
Run Code Online (Sandbox Code Playgroud)

在这30名球员中,我想选择每支球队8人,其中至少有1名来自5个角色的球员,不超过3名来自同一球队的球员,总薪水不超过50.

例如,这将是一个有效的团队:

 id salary team position
 1   1      A   A
 2   2      B   B
 3   3      C   C
 4   4      D   D
 5   5      E   E
 6   6      A   A
 7   7      B   B
 8   8      C   C
Run Code Online (Sandbox Code Playgroud)

每支球队不超过两名球员,每名球员至少1名,总薪水为36名.

我一直在尝试使用包来逐步实现所有~6MM组合的公式iterpc,查找并计算每一步的薪水/团队编号.这让我可以在每一步都将所有内容都安装到内存中,但速度非常慢且效率低下 - 这相当于创建了每个可能的团队并连续应用规则.

任何替代方法都会很棒!

simulation combinations r combinatorics

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

3个顶点上有多少个无向图?

无向图包含3个顶点。可以形成多少个无向图?我尝试了组合公式,但答案错误。

algorithm combinations analysis combinatorics

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