电路布线算法
要求: 电路布线算法的要求,随机生成一个上端接线柱i与下端接线柱π(i)(10个),求解最大不相交子集MNS(i,j),并求出导线集Nets。
解决方案: 首先通过算法pailie随机生成一个排列表示导线集,数组下标i表示上端接线柱,c[i]表示与i相连的下端接线柱;其次用算法mnset得出一个二维数组size[i][j]表示函数Size(i,j)的值,并以此为基础通过算法traceback构造最优解MNS(n,n)。
代码用书上的,其中,要注意的一点是数组是从下标1开始与接线柱对应的。
代码如下:
package exercise;
import java.util.ArrayList;
public class CircuitWiring {
//随机生成1-10的一个排列表示下端接线柱π(i)
public int [] pailie() {
int[] c = new int[11];
c[0] = 0;
ArrayList<Integer> temp = new ArrayList<Integer>();
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i < 11; i++) {
temp.add(i);
}
//随即抽取集合的数字给数组
int index = 1;
while (true) {
if(list.size()==10){