我有一个带有加权边和加权顶点的双向图。我想找到N组不相交的连接顶点,以便:
N是事先已知的,但如果结果会大大改善,则允许N更大 TargetWeight是事先已知的,当低成本的多个小组优于高成本的大组时,没有真正的度量标准。
在典型情况下,图表有大约50k个节点。该图表未存储在数据库中。
您可以将此问题视为聚类算法,但有关聚类的一般性讨论可能与我需要的不同。我尝试过KMeans算法,但我发现结果不够好。现在我正在使用基于探索的启发式方法来检查某个选择对未来群体选择的影响程度。这种方法有效,但速度很慢。
答案 0 :(得分:0)
我认为处理这类问题的最佳方法是:
首先:定义基于的成本函数 你是两个标准:
成本(图表)= SUM(距离(子图重量,TargetWeight))+ SUM(WeightEdges(子图)) 如果x> y并且等于y-x,则距离(x,y)非常大,否则
第二:随机分割图形 进入N(或更多)不相交的组 子图
第三步:浏览图表并从一个顶点移动一个顶点 分组到另一个并检查是否 总费用将减少