其他分享
首页 > 其他分享> > 2021-07-02

2021-07-02

作者:互联网

电路布线:

在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i)) 将上端接线柱i与下端接线柱π(i)相连,如下图。

在这里插入图片描述
)]
其中π(i),1≤ i ≤n,是{1,2,…,n}的一个排列。导线(i, π(i))称为该电路板上的第i条连线。对于任何1 ≤ i ≤ j ≤n,第i条连线和第j条连线相交的充要条件是π(i)> π(j).

在制作电路板时,要求将这n条线分布到若干个绝缘层上,在同一层上的连线不能相交。

换句话说,该问题要求确定导线集Nets = {i,π(i),1 ≤ i ≤ n}的最大不相交子集。

分析(最优子结构的构造):

设(i,π(i) )为 上方第i个接线柱接到下方第π(i)个接线柱。

N(i,j)是上方有i个接线柱,下方有j个界限组的情况。

MNS(i,j)是N(i,j)情况下的最优解。Size(i,j)=|MNS(i,j)|。

当i=1时,上方只有一个接线柱,当j>=π(i) 时,N(i,j)才有线,且为一根.

在这里插入图片描述

当i>1时:

​ 1.j<π(i): (i,π(i)) 都不在N(i,j)的情况之内,故可以直接忽略该条导线,即忽略上方第i个接线柱.此时 N(i,j)=N(i-1,j),即Size(i,j)=Size(i-1,j)

​ 2.j>=π(i):

  1. (i,π(i)) 属于最优解 MNS(i,j),此时任意的(t, π(t))∈ MNS(i,j)有t < i且π(t)<
    π(i),(t, π(t))与(i, π(i))相交(t<i,因为i是当前上方最后的一个接线柱,π(t)<
    π(i),不这样的话,会相交)…

    在这种情况下,MNS(i,j)-{(i, π(i))}是N(i-1, π(i)-1)的最大不相交子集

    (因为,如果说MNS(i,j)-{(i, π(i))} 不是N(i-1, π(i)-1)的最大不相交子集,也就是N(i-1,
    π(i)-1)的最大不相交子集另有其他集合假设为x吧,那么这个集合的导线与(i, π(i)) 肯定不会相交,那么N(i-1,
    π(i)-1) 并上 x
    其导线数必然大于MNS(i,j),这就与MNS(i,j)是N(i,j)的最优解的条件相矛盾.故MNS(i,j)-{(i,
    π(i))}是N(i-1, π(i)-1)的最大不相交子集)

    于是有Size(i,j)=Size(i-1,π(i)-1)+1

  1. (i,π(i)) 不属于最优解 MNS(i,j)
    ,也就是说在(i,π(i))这条导线之前,必有至少两条导线在下方的接线柱是在π(i)的后面.这种情况下我们可以直接忽略(i,π(i))这条导线,就有N(i,j)=N(i-1,j),于是有Size(i,j)=Size(i-1,j)

经过上述的分析有如下递推公式:

在这里插入图片描述

这里想一下,为啥 A,B可以合并成max这个东西:

来个例子:

π={8,7,4,2,5,1,9,3,10,6},即电路连线为(1,8)(2,7)(3,4)(4,2)(5,5)(6,1)(7,9)(8,3)(9,10)(10,6)

i\j12345678910
10000000111
20000001111
30001111111
40111111111
50111222222
61111222222
71111222233
81122222233
91122222234
101122222234

回溯: 我们看当(i,π(i)) 属于最优解 MNS(i,j)时:Size(i,j)=Size(i-1,π(i)-1)+1,根据这个条件来进行回溯

从最右下角开始:

第一次发博客,排版有点烂

标签:02,10,接线柱,07,导线,MNS,相交,2021,Size
来源: https://blog.csdn.net/m0_46288608/article/details/118423288