在R中生成非常多的组合

d34*_*tu5 2 algorithm r graph combinatorics large-data

我有大约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).每个机器人一天可以行进的数量存在约束.设计算法并编写程序(以任何商业规格或包装),以有效地计算所需机器人的数量和所有机器人行进的总距离.

Pat*_*han 10

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

  1. 用理论分析代替编程.也许你根本不需要完成这项工作.
  2. 看看你想对组合的结果做些什么,你能用它的特性限制你需要的组合,只生成有用的组合吗?
  3. 如果您在找到某些内容时可以停止下一个处理阶段,请尝试编写一个可以处理数据流的算法,并在遇到数据时停止.生成时将组合输入到组合中.

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