算法java实现--动态规划--电路布线问题
2017-11-30 17:00
621 查看
/* * dianlubuxian.java * Version 1.0.0 * Created on 2017年11月30日 * Copyright ReYo.Cn */ package reyo.sdk.utils.test.dy; /** * <B>创 建 人:</B>AdministratorReyoAut <BR> * <B>创建时间:</B>2017年11月30日 下午4:58:56<BR> * * @author ReYo * @version 1.0 */ /** * 电路布线问题(动态规划) * @author Lican * */ public class dianlubuxian { public int[] c;// public int[][] size;//最大不想交子集 public int[] net; public dianlubuxian(int[] cc) { this.c = cc; this.size = new int[cc.length][cc.length];//下标从1开始 this.net = new int[cc.length]; } public void mnset(int[] c, int[][] size) { int n = c.length - 1; for (int j = 0; j < c[1]; j++) {//i=1时,分了两种情况,分别等于0,1 size[1][j] = 0; } for (int j = c[1]; j <= n; j++) { size[1][j] = 1; } for (int i = 2; i < n; i++) {//i大于1时,同样分了两种情况(当i=n时单独计算,即此方法最后一行) for (int j = 0; j < c[i]; j++) {//第一种 size[i][j] = size[i - 1][j]; } for (int j = c[i]; j <= n; j++) {//第二种 size[i][j] = Math.max(size[i - 1][j], size[i - 1][c[i] - 1] + 1); } } size = Math.max(size[n - 1] , size[n - 1][c - 1] + 1); } //构造最优解 public int traceback(int[] c, int[][] size, int[] net) { int n = c.length - 1; int j = n; int m = 0; for (int i = n; i > 1; i--) { if (size[i][j] != size[i - 1][j]) { net[m++] = i; j = c[i] - 1; } } if (j >= c[1]) net[m++] = 1; System.out.println("最大不相交连线分别为:"); for (int t = m - 1; t >= 0; t--) { System.out.println(net[t] + " " + c[net[t]]); } return m; } public static void main(String[] args) { int[] c = { 0, 8, 7, 4, 2, 5, 1, 9, 3, 10, 6 };//下标从1开始,第一个数,0不算,总共10个数 dianlubuxian di = new dianlubuxian(c); di.mnset(di.c, di.size); int x = di.traceback(di.c, di.size, di.net); System.out.println("最大不相交连线数目为::" + x); } }
相关文章推荐
- 算法java实现--动态规划--电路布线问题
- 动态规划排线算法问题java语言实现 在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连
- 算法java实现--分支限界法--布线问题
- 【算法数据结构Java实现】Java实现动态规划(背包问题)
- 算法java实现--动态规划--0-1背包问题
- 算法java实现--动态规划--流水作业调度问题
- 背包问题算法的JAVA实现
- 【算法】01背包问题的Java实现
- java实现最大子序列问题——————性能最优的算法
- 算法设计--电路布线问题(分支限界法求解)
- 常用算法Java实现之(1)------约瑟夫问题(丢手帕问题)
- AIX 程序设计大赛-AIX正方形问题算法及Java程序实现(方案二)
- 汉诺塔问题的算法分析与实现(Java)
- 算法问题《Card Game》的数学模型和Java实现
- 八皇后问题 java实现,算法两则
- Java实现约瑟夫算法问题
- 大学常见算法的java实现及思考-汉诺塔问题
- 动态规划解决矩阵链乘问题的java编码实现
- java实现的n后问题体现拉斯维加斯算法
- 电路布线(动态规划C++实现)