- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电路布线问题的一种快速算法
One Fast Algorithm for the Circuit Wiring Question
ZHANG Li-xiang1,ZHAO Xue-feng1,WANG Yu2
(1. the North West Normal University,GanSu LanZhou 730070; 2. Pingliang Maternal and Child Health Hospital, Gansu Pingliang 744000)
在一块电路板的上下两端分别有 n 个接线柱。根据电路设 计,要求用导线( i , j )将上端接线柱 i 和下端接线柱 j 相连, 如图1所示。其中X=〈 1,2,…n〉的一个排列,Y==〈 1,2,…n〉 的一个排列。导线( X,Y )称为电路板上的连线。因为上接线术 是个递增的序列, 要使电路连线不相交的充分必要条件是与连线 对应的下接线柱形成的新序列必须是递增序列时才满足。 在制作 电路板时, 要求将这 n 条连线分布到若干绝缘层上, 在同一层上 的连线不相交。电路布线问题要确定哪些连线安排在第一层上, 使得该层上有尽可能多的连线。 即该问题要求确定导线连线的最 大不相交的条数。
图 1 电路布线实例
1 用动态规划方法求解电路布线问题
设 Size[i][j] 为下端接线柱不超过 j ,上端接线柱不超过 i 的最大不相交集中边数 ( 电路布线问题的最优值为 Size(n,n)) 。 则用动态规划方法求解的递推公式如下:
据此可设计解电路布线问题的动态规划算法 mnset 如下。其中用 二维数组单元 size[i][j] 表示函数 Size(i,j) 的值。由算法 traceback 构造出最优解 MNS(n,n) ,用数组 net[0:m-1] 存储 MNS(n,n)中的m条连线。用JAVA实现的程序代码如下:
Public static void mnset(int []c, int [][]size)
{
int n=c.length-1;
for (int j=0;j1;i--)
if (size[i][j]!=size[i-1][j])
{
net[m++]=i;
j=c[i]-1;
}
if (jc[1])
net[m++]=1;
return m;//m 为电路连线最大条数;
}
算法mnset显然需要0(n2)计算时间和0(n2)空间。算法 traceback 需要 O(n) 计算时间。
2 用堆的数据结构求解电路布线问题 新算法采用了一种有趣的数据结构(堆的数据结构 [3] )结
合[4]中的技术来解决电路布线问题,该算法也是解决LCS问题 的一种有效算法.如图2所示针对图1的实例来说明。M为配对 点的集合, (i,j) 为配对点在结构图中的位置( i 为表的行, j 为 表的列)。
图2电路布线的配对点的结构图 M(针对图1的实例)
从图2可以看出每个配对点(i,j) €M是电路的连线,要使 电路同层连线最多(不相交),必须是堆结构中的配对点的行列 同时递增, 才能前后相连形成最长的堆链。 最长堆链的长度等于 同层电路连线的最多条数,其堆链上的各个配对点 (i,j )表示电 路的各条连线。 由图 2的实例中可以验证新算法的正确性。 图中 最长堆链长度为 5恰等于该电路同层的最多连线 5条, 5 条连线 分别为( 1,2)(2,4)(3,5)(4,7)(7,8)或(1,2)(2,4) (3,5)(6,6)(7,8 )。
按照动态规划的方法求解 T[i,j] (见[4]. ), 依照下面公式
(1).
当(i,j) € M, T[i,j] 没有定义;当 i=1 或 j=1 时,T[i,j]=1;
当 i,j 工1 且(i,j) €M
时,T[i,j]=1+max{ T(li,lj)}(1 li i,1 Ij j, (li,lj) € M)
(公式 (1) )。
在新算法中用到了 [4]中的算法1,需要按行来计算 M的集 合。同时应用公式(1)来计算每个M中T[i,j]也有效的应用了 [4] 中两个定理。
定理1.[4]设(i,j) € M,那么对所有的i‘ i,j j可推出
T[「,j] T[i,j],T[i,j ] T [i,j].
定理 2.[4]要计算出 T[i,j]( (i,j) € M,1 i,j n)是独立
于任何 T[i,q]( (i,q) € M,1 qw n).
依照上面两个定理我们用 [3] 中的数据结构里的有界堆
(Boundedheap)来对堆进行以下操作:
插入操作Insert(H,Pos,Value,Data), 把Pos点的值插入到
有界堆H中。
添加操作 IncreaseValue(H,Pos,
您可能关注的文档
最近下载
- 医药代表拜访技巧大揭秘:如何与医生进行有意义的对话.pptx VIP
- 2026年湖南中医药高等专科学校单招职业技能考试题库附答案.docx VIP
- 中国的世界文化遗产-英文版.ppt VIP
- 大连海事大学《思想道德与法治》课件-绪论、第一章-E.pptx VIP
- 医疗数据跨境传输2025年隐私保护技术路径研究.docx
- IEC62446-2:2020并网光伏系统运维标准解读.pptx VIP
- 《行政执法证据搜集与运用》课件.ppt VIP
- 供水管网施工组织设计(完整版).docx VIP
- 教学课件:高中化学 第四章 非金属及其化合物 4.3 硫和氮的氧化物(第2课时)课件 新人教版必修1.ppt VIP
- 《误差的来源与分类》课件.ppt VIP
文档评论(0)