Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有最大重叠和大小限制的聚类列表_Java_Python_C++_Algorithm_Machine Learning - Fatal编程技术网

Java 具有最大重叠和大小限制的聚类列表

Java 具有最大重叠和大小限制的聚类列表,java,python,c++,algorithm,machine-learning,Java,Python,C++,Algorithm,Machine Learning,我有以下一组数字: group1: 12 56 57 58 59 60 61 62 63 64 75 89 91 100 105 107 108 Group Size: 40 group2: 56 57 60 71 72 73 74 91 92 93 94 100 105 107 108 110 111 Group Size: 30 group3: 57 58 91 107 108 110 112 114 117 118 120 127 129 139 184 Group Size: 15 gr

我有以下一组数字:

group1: 12 56 57 58 59 60 61 62 63 64 75 89 91 100 105 107 108 Group Size: 40
group2: 56 57 60 71 72 73 74 91 92 93 94 100 105 107 108 110 111 Group Size: 30
group3: 57 58 91 107 108 110 112 114 117 118 120 127 129 139 184 Group Size: 15
group4: 1 2 4 6 7 8 9 10 17 18 20 41 42 43 45 47 Group Size: 40
group5: 57 58 91 201 205 207 210 212 214 216 217 218 219 220 221 225 Group Size: 30
.
groupN: 50 51 52 53 54 210 214 216 219 225 700 701 702 705 706 708 Group Size: 40
现在我想将具有最大重叠的组聚集在一起,这样在聚集之后,集群中的最大大小不会超过90。例如,这里的集群是:(group1、group2、group3)、(group5、groupN)和group4。3组中的重叠元素如下所示:

Cluster1: (group1,group2,group3): 57 91 107 108 Cluster Size: (Group1_size+group2_size+group3_size =85 <90) 
Cluster2: group4: 1 2 4 6 7 8 9 10 17 18 20 41 42 43 45 47 Cluster Size: (group4_size < 40)
Cluster3: (group5,groupN): 201 214 216 219 225 Cluster Size: (group5_size + groupN_size 70 <90)
是否有一些现有的算法或技术可以帮助我实现这种大小受限的聚类


我试图通过找到任意两组之间的公共元素来形成簇,如果包含后的簇大小没有简单的最优解,则将其包含在组中。一个近似值如下:

  • 选择大小最大的组。让它的大小为x
  • 选择最大的组,使其大小小于90-x
  • 继续重复步骤2,直到找不到这样的组为止
  • 移除所选组,并从步骤1开始重复该过程

  • 在步骤1中,首先选择group1(或group4或groupN)。在步骤2中,您将选择group4。现在大小是80,没有小于90-80=10的组。因此,停止并移除这两组。在下一次迭代中,您将选择groupN,然后是group2,最后是group3。在上一次迭代中,您只有一个组,即group5。

    如果您想变得天真,您可以创建集群,直到它们达到您想要的大小:1。遍历现有集群;2.如果有足够的剩余空间,在其中添加组;否则,创建一个新集群。如果你想达到最佳状态,也许你可以从这里得到一些东西:祝你好运@阿莱格南非常感谢您的回复。是的,我确实想成为最佳人选。
    Cluster1: (group1, group2, group3): 12 56 57 58 59 60 61 62 63 64 71 72 73 74 75 89 91 92 93 94 100 105 107 108 110 111 112 114 117 118 120 127 129 139 184
    Cluster2: group4: 1 2 4 6 7 8 9 10 17 18 20 41 42 43 45 47
    Cluster3: (group5,groupN): 50 51 52 53 54 57 58 91 201 205 207 210 212 214 216 217 218 219 220 221 225 700 701 702 705 706 708