动态规划-电路布线问题

                                           

问题描述:在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连,如图所示。其中π(i){1,2,…,n}的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任何1≤i<j≤n,第i条连线和第j条连线相交的充分且必要的条件是π(i)>π(j) 

电路布线问题要确定将哪些连线安排在第一层上,使得该层上有尽可能多的连线。换句话说,该问题要求确定导线集Nets={(i,π(i)),1≤i≤n}的最大不相交子集。

总结一下题干:①第i条连线和第j条连线相交要满足的条件:π(i)>π(j)

                         ②主要有这几个变量:1≤i≤n,1≤j≤n代表接线柱, π代表一种排列

主要要解决的问题:我要确定第一层怎么设计才能向上摞其他电路板,怎么摞?随便摞吗?不是的,我要考虑怎么让第一层电路板的连线最多。好,下面开始搭建数学模型:

记录N(i,j)的最大不相交子集为MNS(i,j)。Size(i,j)=|MNS(i,j)|。(Size(i,j)代表条数)

①当i等于1时,

我详细解释一下这个公式什么意思:在i等于1这种情况下,在已经存在连线π(1)的后面都可以安排线相连,但是在π(1)之前的线无法相连。

②当i大于1时,又分成三种情况:

2.1 j<π(i)时,这个时候划线的结果是前一个接线柱划线的结果(举例:N(2,7) = N (1,7),这个时候因为大于这个对应关系的线已经不需要画上了,所以对应的情况就是N(1,7)的划线情况)

即:此时,   。故在这种情况下,N(i,j)=N(i-1,j),从而Size(i,j)=Size(i-1,j)。

2.2  j≥π(i)时,

存在选择线和不选择线两种情况,我们只需要比较两个情况的最大值进行输出就可以了

最后呢,我们可以列出递推公式:

代码的话,可以参考一下这篇博客:https://blog.csdn.net/huangxy10/article/details/7782865

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值