寻找最大集合

时间:2014-09-17 14:33:03

标签: algorithm statistics filtering

我有一个包含4个表的数据库。

其中三个表包含有关特定实体(实例,命令和工作程序)的信息。第四个表(试验)包含有关这三者和一些其他数据的组合的数据。

我想从试验中找到一个集合,这样每个使用的实例都在同一个命令和worker上执行,我想找到最大的可用集合。例如:

如果每个实例(大约150个)在worker 1上运行,命令1 - 这将是一个完整的集合。但是一个非常小的完整集合,因为它们只有1个实例/命令/工作集。

更好的是:

查找50个在10个机器/命令对上运行的实例 - 忽略其余实例。

我的桌子大小不大,大约150个实例,5个命令和30个工人。到目前为止,这些数据共有8000次试验。

我可以想到一种蛮力的方法:

对于每个唯一的工作人员/命令对计数实例,找到最大的数字,然后选择具有该工作人员/命令对的所有试验。如果我为最大的n个工人/命令对做了这个,我可以将它们组合起来,但这似乎是一个很好的解决方案。

我的其他选择语言有什么问题,但我更喜欢(按照优先顺序)R,MySQL,PHP,Java,C等。

1 个答案:

答案 0 :(得分:1)

听起来好像你有一个二分图,其中一个部分中的顶点对应于实例,另一个部分中的顶点对应于命令/工人对,而边缘对应于试验。您希望找到实例和命令/工作线对的子集,从而导致biclique最大化某个大小参数;也许边缘数量?不幸的是,无论你指定目标,问题都可能是NP难的。

然而,algorithm to enumerate all maximal bicliques可能值得一试。