



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电路板布线问题印刷电路板将布线区域分成nm个方格阵列,如下图(a).精确的电路布线问题要求确定连接方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿直线或直角布线,如下图(b)所示。为了避免线路相交,已布了线的方格做了封锁标记,其它线路不允许穿过被封锁的方格。 a b a b图(a)图(b) 采用队列式(FIFO)分枝限界法解此问题,它的解空间树是一个无向图。首先结点a作为第一个扩展结点。与该扩展结点相邻并且可达的方格成为可行结点被加入到活结点队列,这些结点被加入队列的顺序是:右、下、左、上。将这些方格标记为1,它表示从起始方格a到这些方格的距离为1。接着从活结点队列中取出队首结点作为下一个扩展结点,并将与扩展结点相邻且未标记过的方格标记为2,并以右、下、左、上的顺序将这些结点存放到活结点队列中。这个过程一直持续到算法搜索到目标方格b或者活结点队列为空时停止。注意到,搜索过程在遇到标记封锁的方格时,自动放弃此方格。下图是在77方格阵列中布线的例子。其中,起始点的位置是a=(3,2),目标是位置b=(4,6).有!号的方格表示被封锁。搜索过程如下图(c)所示。 !! !! !! a ! ! ! b! ! ! ! ! ! ! 1! 3 2 !!2 1 !!!!1 a 1 2 !2 1 2 ! ! b! 2 3 4 ! ! ! 5 6 7 8! ! ! 6 7 8 图 (c) 图 (d) 本例中,a到b的最短距离是9。要构造出与最短距离相应的最短路径,须从目标方格开始向起始方格回溯,逐步构造出最优解。每次向比当前方格标号小1的相邻方格移动,直至到达起始方格为止。图(d)给出了该例子的最短路径,它是从目标方格b移动到(5,6),然后移至(6,6),,最终移至起始方格a。在算法实现时,首先定义一个表示电路板上方格位置的类Position,它有两个私有成员row和col,分别表示方格所在的行和列。在电路板的任一方格处,布线可沿右、下、左、上四个方向进行,分别记为移动0,1,2,3。offseti.col=1表示向右前进一步; offseti.col=-1表示向左前进一步。在这两种情况下,都有,offseti.row=0。类似地讨论向下和向上前进的情况。一般用一个二维数组grid表示所给的方格阵列。初始时,gridij=0,表示该方格允许布线,而gridij=1表示该方格不允许布线(有封锁标记)。为了便于处理边界方格的情况,算法对所给的方格阵列的四周设置一道“围墙”,即增设标记为1的附加方格。算法开始时测试初始方格与目标方格是否相同。若相同,则不必计算,直接返回最短距离0。否则,算法设置方格阵列的围墙,初始化位移矩阵offset。算法将起始位置的距离记为2。因为数字0和1用于表示方格的开放或封闭状态,所以,表示距离不用这两个数字,因而将所有的距离值都加2。实际距离应为标记距离减2。算法从起始位置start开始,首先标记所有标记距离为3的方格,并存入活结点队列,然后依次标记所有标记距离为4,5, 的方格,直至到达目标方格finish或活结点队列为空时为止。 程序8-3-1 布线问题的队列式分枝限界算法bool FindPath(Position start,Position finish,int& PathLen,Position * &path)/计算从起点位置start到目标位置finish的最短布线路径,找到最短布线路/径则返回true,否则返回false if(start.row=finish.row) & (start.col=finish.col) PathLen=0; return true; /start=finish /设置方格阵列“围墙” for(int i=0; i= m+1; i+) grid0i=gridn+1i=1; /顶部和底部 for(int i=0; i= n+1; i+) gridi0=gridim+1=1; /左翼和右翼 /初始化相对位移 Position offset4; offset0.row=0; offset0.col=1;/右 offset1.row=1; offset1.col=0;/下 offset2.row=0; offset2.col=-1;/左 offset3.row=-1; offset3.col=0;/上int NumOfNbrs=4;/相邻方格数Position here,nbr;Here.row=start.row;Here.col=start.col;Gridstart.rowstart.col=2;/标记可达方格位置LinkedQueue Q;Do /标记相邻可达方格 For(int I=0; I=0; j-) pathj=here; /找前驱位置 for(int i=0; iNumOfNbrs; i+) nbr.row=here.row+offseti.row; nbr.col=here.col+offseti; if(gridnbr.rownbr.col=j+2) break; here=nbr;/向前移动 re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高科技农业项目合作租赁保证金协议
- 2025年智慧校园家长参与型学生实践基地共建共享协议
- 2025年医疗单位麻醉专业岗位安全规范服务合同
- 2025年生态农业科技园建设与绿色产品认证合同
- 2025年度茶楼茶叶销售与茶文化体验合作合同范本
- 2025年度智能工厂设备安装与操作培训服务合同
- 2025年幼儿园定制化营养膳食服务及后勤管理合作协议
- 2025年跨境电商平台综合代理业务合同书
- 2025年医院病房及公共区域精细化清洁保养合同
- 2025年互联网虚拟股权投资收益权转让及项目运营合作协议
- 2025届山东省青岛五十八中高一物理第二学期期末考试试题含解析
- 智能建筑中机器人的应用与装配式施工技术
- 医院培训课件:《基于医院感染防控的安全注射》
- 2025年档案管理与信息资源利用考试试题及答案
- 工业空调培训课件模板
- 防汛安全教育试卷(含答案)
- 2025届上海市高考英语考纲词汇表
- 陕西省特种设备隐患排查清单(2025年)
- 快递行业交通安全培训
- 货款转让协议书
- 燃气公司加气站操作规程及安全要求
评论
0/150
提交评论