将加权图划分为等加权组

时间:2011-07-06 08:35:47

标签: algorithm graph partitioning

我有一个带有加权边和加权顶点的双向图。我想找到N组不相交的连接顶点,以便:

  1. 每组的总重量接近但不大于某个值TargetWeight
  2. 形成这些组的所选边缘的重量尽可能低。这里有一个问题:如果还选择了另一个边缘,边缘的重量会减少(重量的一部分在边缘之间共享)。一个例子:边缘E1具有重量20,边缘E2具有重量30,它们共享权重5.仅采用E1将导致重量20,同时采用E1和E2将导致45的总重量(仅采用共享重量)考虑一次)。
  3. N是事先已知的,但如果结果会大大改善,则允许N更大 TargetWeight是事先已知的,当低成本的多个小组优于高成本的大组时,没有真正的度量标准。

    在典型情况下,图表有大约50k个节点。该图表未存储在数据库中。

    您可以将此问题视为聚类算法,但有关聚类的一般性讨论可能与我需要的不同。我尝试过KMeans算法,但我发现结果不够好。现在我正在使用基于探索的启发式方法来检查某个选择对未来群体选择的影响程度。这种方法有效,但速度很慢。

1 个答案:

答案 0 :(得分:0)

我认为处理这类问题的最佳方法是:

  • 首先:定义基于的成本函数 你是两个标准:

    成本(图表)= SUM(距离(子图重量,TargetWeight))+ SUM(WeightEdges(子图)) 如果x> y并且等于y-x,则距离(x,y)非常大,否则

  • 第二:随机分割图形 进入N(或更多)不相交的组 子图

  • 第三步:浏览图表并从一个顶点移动一个顶点 分组到另一个并检查是否 总费用将减少