【发布时间】: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 年来处理整个数据集。您可能希望考虑寻找替代方法。
-
我建议在写代码之前去图书馆做一些研究。
-
我认为我们可以帮助您的最佳方法是确定您正在研究的图论问题,这样您就可以进行自己的研究。为此,我们需要更多有关问题的详细信息。
-
我希望要求只是一个好的解决方案,而不是最佳解决方案,并且课程教授了一些相关的软件包。在我看来,旅行商问题可以简化为这个问题。如果单个机器人具有足够大的电荷就足够了,则有一条路径可以访问所有节点的总距离不大于该机器人的最大每日距离。
标签: r algorithm graph combinatorics large-data