电路布线

在一块电路板的上、下两端分别有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这个东西:

  • 当(i,π(i)) 属于最优解
    MNS(i,j)时:Size(i,j)=Size(i-1,π(i)-1)+1, Size(i-1,π(i)-1)+1一定大于等于Size(i-1,j),为啥? 因为(i,π(i))
    属于最优解,那么在i之前必不可能会有超过两根导线在下方的接线柱大于π(i):

    ​ 如果在i之前有1根导线在下方的接线柱大于π(i),

    ​ 那么 size(i-1,j) == size(i,j) == Size(i-1,π(i)-1)+1.

    ​ 如果如果在i之前没有导线在下方的接线柱大于π(i)

    ​ size(i-1,j) < size(i,j) ,即<Size(i-1,π(i)-1)+1

  • 当(i,π(i)) 不属于最优解 MNS(i,j)时:Size(i,j)=Size(i-1,j) >=
    Size(i-1,π(i)-1)+1为啥? 首先这种情况下Size(i,j) > Size(i-1,π(i)-1),
    Size(i,j)=Size(i-1,j),既然这样Size(i-1,j)>=Size(i-1,π(i)-1)+1

来个例子:

π={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\j 1 2 3 4 5 6 7 8 9 10
1 0 0 0 0 0 0 0 1 1 1
2 0 0 0 0 0 0 1 1 1 1
3 0 0 0 1 1 1 1 1 1 1
4 0 1 1 1 1 1 1 1 1 1
5 0 1 1 1 2 2 2 2 2 2
6 1 1 1 1 2 2 2 2 2 2
7 1 1 1 1 2 2 2 2 3 3
8 1 1 2 2 2 2 2 2 3 3
9 1 1 2 2 2 2 2 2 3 4
10 1 1 2 2 2 2 2 2 3 4

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

从最右下角开始:

  • Size(10,10) 不等于Size(9,5)+1,故(10,6)不选,说明Size(i,j)=Size(i-1,j)

  • 再来看Size(9,10) 等于 size(8,9)+1,说明选中了Size(i,j)=Size(i-1,π(i)-1)+1

  • 再就看size(8,9) 这样依次类推

  • 最终选出(9 ,10),(7,9),(5,5),(3,4).

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

电路布线-----问题详解相关推荐

  1. STM32 VBAT外围电路接法详解--备用电源(纽扣电池)

    STM32 VBAT外围电路接法详解 给大家看几块开发板的VBAT外围电路的设计图: (1)不满足 (2)符合要求,但不是最佳 (3)不满足        (4)不满足        (5)最好的设计 ...

  2. 负电压是怎么产生的?负压电路工作原理详解

    负电压是怎么产生的?负压电路工作原理详解 2019-07-29 21:39:29 燚智能物联网知识 简介 在电子电路中我们常常需要使用负的电压,比如说我们在使用运放的时候常常需要给他建立一个负的电压. ...

  3. 电路分析 戴维南定理 详解课堂笔记

    1. 定理适用 (1)如果只求某特定支路(元件)的电量,为简化电路计算用 (2)实际应用中,对内部电路结构不明确的 二端 就是对外两根线,相当于一个端口 无源化:恒压源短路,恒流源断路(重点理解) e ...

  4. 综合布线五大技巧与综合布线规范详解

    1. 要确认电缆的拉力 当电缆在两个终端有多余时,应该按照需要的长度将其剪断,而不应将其卷起并捆绑起来.电缆的接头处反缠绕开的线段距离不应超过2厘米.过长会引起较大的近端串扰.在进行认证测试的时候,N ...

  5. 数据中心机房应该如何布线,机柜布线方法详解!

    在很多人的眼里,机柜就是一个柜子,只不过用来放置IT设备的柜子而已,但是事实并非如此.机柜的作用远远要比只是放置设备的柜子要高深得多.机柜系统性地解决了计算机应用中的高密度散热.大量线缆附设和管理.大 ...

  6. 过压电路保护元器件详解,一文就看明白了

    电子电路的精密元器件很容易在过压.过流.浪涌等情况时损坏.随着技术的发展,电子电路的产品日益多样化和复杂化,电路保护则变得尤为重要.电路被动保护元件也从简单的保险丝,种类多样化,防护性能更加优越. 在 ...

  7. 并联谐振电路工作原理详解,案例+计算公式,几分钟带你搞定

    昨天给大家分享了关于串联谐振的文章,今天给大家分享关于并联谐振的文章.(私信我的那个朋友,记得准备来看) 错过了串联谐振的朋友,可以直接点击下方标题跳转. 串联谐振是怎么工作的?案例+公式,几分钟,一 ...

  8. 电路分析题目详解(三)

    1.求转移电阻u0/is,已知g=2S 不需要去思考转移电阻是什么,他已经给公式了,带入即可. 我们需要一个能够九将s和u0联系起来的公式,然后求比值,可以将左右看成两组电流表并联电阻,然后化简为电压 ...

  9. MOS管驱动电路分析及详解-KIA MOS管

    ** MOS管驱动电路** 在使用MOS管设计开关电源或者马达驱动电路的时候,大部分人都会考虑MOS的导通电阻,最大电压等,最大电流等,也有很多人仅仅考虑这些因素.这样的电路也许是可以工作的,但并不是 ...

最新文章

  1. Android架构篇-2 国际化多语言
  2. python列表怎么写文件_python中以字典为元素的列表怎么写入文本文件
  3. xenapp 发布到外网更改公网IP。
  4. Python_time模块
  5. 大规模服务化对于服务治理的要求
  6. 初次联系导师短信模板_2020考研复试:提前联系导师的6点注意事项(附邮件模板)...
  7. 43 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-激活实际成本组件划分
  8. 00-各种工具下载链接汇总
  9. 爬虫爬取视频指定秒的画面
  10. java+pom.xml+是什么_pom.xml文件是啥
  11. ios 使用SourceTree,KDiff3进行代码的冲突解决步骤
  12. python 温度 符号_python中如何将华氏温度转换为摄氏温度?
  13. java 图片格式校验_(转载)Java对上传的图片进行格式校验以及安全性校验
  14. 今日头条搜索站长平台(入口)功能简介
  15. daimayuan每日一题#814 排队
  16. PrometheusAlert安装和其基本的使用
  17. 自媒体各大平台收益对比_各大自媒体平台的收益收益如何 以下是我个人的一个汇总...
  18. 计算机专业课app,‎App Store 上的“计算器-新版计算机”
  19. 如何面对无意义的生活
  20. 2020年南大计算机、软件工程考研经验分享

热门文章

  1. 美国拟发布纽扣电池或硬币电池安全标准和通知要求ANSI C18. 3M
  2. Python3记录--个人常用函数及资源(持续更新)
  3. IMAP和POP有什么区别?
  4. 华为新旗舰鸿蒙,华为新旗舰6月即将登场!鸿蒙系统+液态镜头,比Mate40更难购买...
  5. 小程序token有效期_微信小程序token过期时间后重新获取-微信小程序过期恢复步骤-微信小程序怎么找...
  6. 计算死亡率(百分号的输出)
  7. 平面设计怎么学,平面设计怎么学排版:夏雨老师
  8. raw图片处理软件:DxO PhotoLab for Mac
  9. Java流程控制01-用户交互Scanner
  10. MATLAB代码:基于多目标遗传算法的分布式电源选址定容研究