我有层次聚类树(使用链接)。每个集群在树形图中都有自己的级别,该级别对应于该集群的成本。我有n1集群的预算,成本为c1,n2集群的成本为c2,n3集群的成本为c3。问题是选择使用预算的集群来涵盖所有原始项目。并且c1> c2> c3。具有成本c1的簇可以明显地用于c2或c3簇。
对于只有一个预算类别,解决方案很简单:只需从根目录开始,在每个子树中,当我们低于c1时添加它。如果在子树之前完成n1个类别则没有解决方案。
对于两个类别,它也很简单。查找所有c1成本的候选人。用c2子簇的数量标记它们并对它们进行降序排序。选择具有最大标签的c1类别。然后选择c2群集。
但是对于超过2个类别来说问题很复杂,因为对c2类别的排序不一定跟踪c3预算。