在R中生成大量组合[关闭]

Posted

技术标签:

【中文标题】在R中生成大量组合[关闭]【英文标题】:Generating a very high number of Combinations in R [closed] 【发布时间】:2012-11-06 15:10:35 【问题描述】:

我有大约 700 个元素,想要创建 20 个的组合。可能的组合总数为 [700 C 20] ~ 2.5e+38 个组合。这个大数据集属于图的规范。这是一个图优化问题,所以,我什至想将约束应用于这组组合。

我正在使用 R!出于此目的,因为它具有丰富的软件包范围和大型数据集处理能力。我正在使用“组合”包。但问题是,当我尝试计算它时,我收到以下错误:

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

对此问题的任何解决方案、替代包或算法表示赞赏。也许有任何处理结果的方法?

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

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

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

请帮忙。

编辑:

由于你们中的一些人一直在询问实际问题,因此我将对其进行摘要,因为将我的实际作业问题发布在互联网上以逐行回答是不光彩的。

摘要:

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

【问题讨论】:

这是非常多的组合。即使处理其中一个组合只需要 1 毫秒,您仍然需要 7.9e27 年来处理整个数据集。您可能希望考虑寻找替代方法。 我建议在写代码之前去图书馆做一些研究。 我认为我们可以帮助您的最佳方法是确定您正在研究的图论问题,这样您就可以进行自己的研究。为此,我们需要更多有关问题的详细信息。 我希望要求只是一个好的解决方案,而不是最佳解决方案,并且课程教授了一些相关的软件包。在我看来,旅行商问题可以简化为这个问题。如果单个机器人具有足够大的电荷就足够了,则有一条路径可以访问所有节点的总距离不大于该机器人的最大每日距离。 【参考方案1】:

您无法生成所有这些组合。这并不一定意味着您的整体问题无法解决。有几种方法:

    用理论分析代替编程。也许您根本不需要运行该作业。 看看你想对组合的结果做什么,你能用它的特性来限制你需要的组合集合,只生成有用的组合吗? 如果您可以在找到某些东西时停止下一阶段的处理,请尝试编写一个可以处理数据流的算法,并在遇到命中时停止。在生成时为其提供组合。

更具体的内容取决于您打算如何处理组合过程的结果。

【讨论】:

问题摘要已经贴在上面了。至于图的理论分析,我不是计算机科学专业的学生。也许您可以告诉我在哪里可以学习解决已发布问题的理论并给我一个有效的图算法(材料的链接,可能或已解决的类似问题),我将非常感谢问题摘要有已在上面发布。 在我看来,这在算法设计中是一个不平凡的问题,而不是对非 CS 学生来说很冷漠的问题。也许在过去几周课程中涵盖的任何内容中都有线索?您可能会被要求应用您最近学到的东西。【参考方案2】:

也许你不需要这么多的组合。我将使用该卷的代表性样本和/或将其划分并为每组执行的分析结果定义一个数字或索引。这会给我点来绘制,每个点基本上代表一组 N 个组合。我需要更多地了解这些组合代表什么才能提出其他替代方案。

【讨论】:

您好,感谢您的快速回复。实际问题摘要已在上面发布。以矩阵形式提供给我的参数值非常多样化,可以对问题进行抽样。

以上是关于在R中生成大量组合[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中生成不重复的组合对

R从n个元素的字符向量中生成大小为m的所有可能组合[重复]

编写一个循环来选择变量值的所有组合,在 R 中生成正方程值

在 C 中生成所有可能的数组值组合

Javascript - 在单个数组中生成所有元素组合(成对)

在python中生成组合