如何实现Kernighan-Lin算法以找到使用Java最大化成本的分区

时间:2014-11-21 16:09:37

标签: java algorithm graph max partitioning

我正在尝试实施Kernighan-Lin算法来进行图形分区,以找到MAXIMIZED成本而不是最小化成本。我已经使用下面的伪代码实现了最小化版本,但是,我不确定如何修改它以便它找到最大化的值。 这是我用来实现最小化版本的伪代码。

  
      
  1. 功能Kernighan-Lin(G(V,E)):
  2.   
  3. 确定节点的平衡初始分区为集合A和B
  4.   
  5. A1:= A; B1:= B
  6.   
  7.   
  8. 计算A1中所有a的D值和B1中的b
  9.   
  10. for(n:= 1 to | V | / 2)
  11.   
  12. 从A1找到[i],从B1找到b [j],这样g [n] = D [a [i]] + D [b [j]] - 2 * c [a [i]] [b [j]]是最大的
  13.   
  14. 将a [i]移动到B1,将b [j]移动到A1
  15.   
  16. 从本次传递中的进一步考虑中移除[i]和b [j]
  17.   
  18. 更新A1 = A1 \ a [i]和B1 = B1 \ b [j]
  19. 元素的D值   
  20. 结束
  21.   
  22. 找到最大化g_max的k,g [1],...,g [k]
  23. 的总和   
  24. if(g_max> 0)然后
  25.   
  26. 用b [1],b [2],...,b [k]
  27. 交换a [1],a [2],...,a [k]   
  28. 直到(g_max <= 0)
  29.   
  30. 返回G(V,E)
  31.   

0 个答案:

没有答案