Kl算法及 1-优化 2-式划分java实现

Kl算法及 1-优化 2-式划分java实现Kl算法λ-优化与 2 式划分JAVA实现Kl算法KL 算法是 Kernighan 与 Lin 两个人在 1970 年设计一个图划分算法,是在寻找图 G 的一个极小成本的可许划分。KL 算法也是一种基于贪心算法的划分算法,通过交换两模块中的元素实现两模块间通信代价极小化。由于贪心算法会导致局部最优解,KL 算法在交换模块中元素时把所有可能交换后产生的...
摘要由CSDN通过智能技术生成

Kl算法及 1-优化 2-式划分java实现

Kl算法

KL 算法是 Kernighan 与 Lin 两个人在 1970 年设计一个图划分算法,是在寻找图 G 的一个极小成本的可许划分。KL 算法也是一种基于贪心算法的划分算法,通过交换两模块中的元素实现两模块间通信代价极小化。由于贪心算法会导致局部最优解,KL 算法在交换模块中元素时把所有可能交换后产生的代价增益都计算出来,从中选择一个最好的交换元素进行交换。这样在某种程度上降低了局部最优的风险,但会造成算法的时间复杂性。不过,KL 算法在很大程度上会给出全局最优解。实验表明 KL 算法给出的划分通信代价极小化是最好的。
【异构分布式嵌入式系统的优化设计方法,许巾一,陈仪香,李凯旋,2020 年 1 月】

λ-优化与 2 式划分

λ 优化:两个集合间的λ点互换是指交换这两个集合的λ元素。1-互换是将一个集合的单点与另一个集合的单点进行互换。一个配置称为 1-优化,若不再存在 1-互换导致划分成本的下降。
2 式划分:最简单划分问题是:给一个 2n 节点的图 G,其中每
个节点都拥有相同的尺寸,寻找一个极小成本划分将 2n 节点划分成都含有 n
个节点的两个集合。
算法具体详细逻辑可参考文章链接: Kernighan-Lin算法.

JAVA实现


import java.util.Arrays;

public class Kl
{
   

	public static void main(String[] args)
	{
   
		double[][] matr=
	    	{
   
	    	    {
   0, 0, 0.5, 0, 0.5, 0, 0, 0},
	    	    {
   0, 0, 0.5, 0.5, 0, 0, 0, 0},
	    	    {
   0.5, 0.5, 0, 0.5, 1, 0.5, 0, 0},
	    	    {
   0, 0.5, 0.5, 0, 0, 1, 0, 0},
	    	    {
   0.5, 0, 1, 0, 0, 0.5, 1, 0},
	    	    {
   0, 0, 0.5, 1, 0.5, 0, 0.5, 0.5},
	    	    {
   0, 0, 0, 0, 1, 0.5, 0, 0.5},
	    	    {
   0, 0, 0, 0, 0, 0.5, 0.5, 0},};//导入通信代价矩阵
		char[] charA= {
   'a','c','d','f'};//初始化分组1
		char[] charB= {
   'b','e','g','h'};//初始化分组2
		
		System.out.print("初始2-划分集为:\n{");
		for(char i:charA)
			System.out.print(i+",");
		System.out.print("}\n{");
		for(char i:charB)
			System.out.print(i+",");
		System.out.println("}");
		
		int[] A= new int[charA.length]
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值