一、问题描述
在一块电路板的上下两端分别有n个接线柱。根据电路设计,要求用导线 (i,π(i)),将上端接线柱 i 与下端接线柱 π(i) 相连,
如图,其中 π(i),1<=i<=n,是(1,2……,n)的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任何 1<=i π(s)。
在制作电路板时,要求将这n条线分布到若干个绝缘层上,在同一层上的连线不能相交。电路布线问题要确定将哪些连线安排在第一层上,使得该层上有尽可能多的连线。换句话说,该问题要求确定导线集Nets = { (i,π(i)),1<=i<=n }的最大不相交子集。
二、算法思路
1、最优子结构性质
N(i,j)表示上面节点i与下面节点j连线的左侧区域内(包括i j连线)的连线集合,MNS(i,j)表示连线左侧区域内最大不相交连线子集,Size(i,j)表示MNS(i,j)集合中连线的个数。
在这里注意N(i,j)和MNS(i,j)表示的都是集合!!内存储