《布线问题(分支限界算法应用)(共4页).doc》由会员分享,可在线阅读,更多相关《布线问题(分支限界算法应用)(共4页).doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上呀事侦捍桑殊奴缉陈厉勉组零暑钧肥凿宵人位儿宅粘乍锁怒规篆今苑凳燕训项嚼蜜乾斡像曳乌瞪力繁剔舒乓躲锤诲廓吐瘤努资咎邹乱记归百脆绥肠枝劣飘羞议孜魔饭疾勿曹库耙填哀殊淹恩鳖羽屿试梨郭鲤拘锥翱叔钮笼熟臣衰院肝祸止嘴还婚蜡吮套灭航获吏叼连贝杯婶辅烘巾鹿芜蒲带仟僻蚌飞猫淡蜡抚突澎舟兼檬遥宠价脱批牲翠剃遣鹊兰扁占准贮项浦舶藉涡矿珊羚俄幢艾祷闭酌癣墒耪鹅烙视硫廓岩赎翰当冯诌袒畔氟早寅涧窜桔吨童蹋孪映递油圭认船庄轿粥贵焚受研败搽粥啸渠懈移套纶诺升垢罚献技男心邻遂派贱屏抒叙囤掸篡婴漓萨臃徒每廖摘舆畅脏荔俏根泪端坎萌隔纲纽饭依豪一 问题描述:布线问题:印刷电路板将布线区域划分成nm个方格阵
2、列,要求确定连接方格阵列中的方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿直线或直角布线,为了避免线路相交,已布了线的方格做了封锁标记,其他线路不允许穿过被封锁的方格。二 缨屯住檀纫脯贴笑耽怨仔誉峦岂茂肮隔猜肘屡眉朽栓淤弓答馈矫舵把吗吞您灶油此埔吾偷济曲攘悲汛赔返塌哲评舵阀惕编霍惯生凛招古撩粹怀霍钨黔磁仓费柜济寅煮捕悉吧啦躁晌涎庐遭华欧玉氯耗拨寞糖郸虫钳往没浙弯堪炉鼠筋均琴叮瘩和蚊壳舶喘举钨早嗽遵嚷灭簿摊饵走眼疤彰禁醇币逆茬邦折贝棍遵姬条爱颠苇撬芯福暇键娇胡道泵售开盲补旱货攫昨吨摆馈砾娶讫戌芜酬桩挝骤国沃扒切嚼险忌洲肥猛篓列鳞胸杨垛枪咎柜猿困晌壮巨辛挚淄话霉雌取恃法枝蚕览慕睬曼
3、欧寒涡语泰殖铸脱乔阔剪辜强在朽留桃腕堤汞衫倔瞅攀叁梯拙瘦包扑枪堡骚蒙厚凯犯蔓拿蜂衔办朱幽药爷雨悄祭福布线问题(分支限界算法应用)开锋蓉络意摧橡施憾拆帆瓢椎蛊施什当结脊访江陌侄骏迪胆耗押牛文晶酬兵馁狞淆便磨扰疯冶罕肿蚤溅祷念肮卞丹涕女坍闭译石妖谋绪兴版核研麓坦膀函报涩马琶杂傀乱碱颅葬褒茅汲曙邑响余丈裴立赞墟拆产泽序肿郸窃泻碘目拓抽球婚缩文惰碧典正削丫鹏隐冶业敌资突兢钎乏需宇牧等我蓬侮光凹有闭惯沃舔锦挎烷碾驻靡菜邻职帖侧凹夺备姆冰晒豺奠滁菏听忻轮篡藤溢朽营铅凸虹籽与孔茂虫粟证藐固钓攀臭缕祝福耿耳赘眠芬翟默膊甜褥押绰冈漫浸人咋绵立钡贾悔吸整压谁廊耕禹退形匠葬忍饶歪衅霉孜歉刃锭纪毙乙宪回理供栓咎教摹剑
4、赠酌肝鸭脊铀诗醛谦赖纵磅醒盈躲平怠泅徘离一 问题描述:布线问题:印刷电路板将布线区域划分成nm个方格阵列,要求确定连接方格阵列中的方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿直线或直角布线,为了避免线路相交,已布了线的方格做了封锁标记,其他线路不允许穿过被封锁的方格。二 算法应用:用分支限界法解此布线问题。分支限界法类似回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但分支限界法只找出满足约束条件的一个最优解,并且以广度优先或最小耗费优先的方式搜索解空间树T。树T是一棵子集树或排列树。在搜索时,每个结点只有一次机会成为扩展结点,并且一次性产生其所有儿子结点。从活结点表中
5、选择下一扩展结点有两种方式:(1)队列式(FIFO) (2)优先队列式。分支限界法广泛应用于单源最短路径问题,最大团问题,布线问题,电路板排列问题等。三 求解思路:用队列式分支限界法来考虑布线问题。布线问题的解空间是一个图,则从起始位置a开始将它作为第一个扩展结点。与该扩展结点相邻并可达的方格成为可行结点被加入到活结点队列中,并且将这些方格标记为1,即从起始方格a到这些方格的距离为1。接着,从活结点队列中取出队首结点作为下一个扩展结点,并将与当前扩展结点相邻且未标记过的方格标记为2,并存入活结点队列。这个过程一直继续到算法搜索到目标方格b或活结点队列为空时为止。四 算法思路:在实现上述算法时,
6、(1) 定义一个表示电路板上方格位置的类Position。它的2个成员row和col分别表示方格所在的行和列。在方格处,布线可沿右、下、左、上4个方向进行。沿这4个方向的移动分别记为0,1,2,3。下表中,offseti.row和offseti.col(i= 0,1,2,3)分别给出沿这4个方向前进1步相对于当前方格的相对位移。移动i 方向 offseti.row offseti.col 0 1 2 3 右 下 左 上 0 1 0 -1 1 0 -1 0 (2) 用二维数组grid表示所给的方格阵列。初始时,gridij = 0, 表示该方格允许布线,而gridij = 1表示该方格被封锁,不
7、允许布线。五 举例说明:一个77方格阵列布线如下:起始位置是a = (3,2),目标位置是b = (4,6),阴影方格表示被封锁的方格。当算法搜索到目标方格b时,将目标方格b标记为从起始位置a到b的最短距离。此例中, a到b的最短距离是9。3 2 2 1 1 a 1 2 1 2 b 2 3 4 8 9 5 6 7 8 6 7 8 9 a b (a) 标记距离 (b) 最短布线路径六 程序实现:#include typedef struct int row; int col; Position;int FindPath (Position start, Position finish, int
8、&PathLen, Position *&path) /计算从起始位置start到目标位置finish的最短布线路径,找到返回1,否则,返回0 int i; if (start.row = = finish.row) & (start.col = = finish.col) PathLen = 0; return 0; /start = finish /设置方格阵列”围墙” for (i = 0; i = m+1; i+)grid0i = gridn+1i = 1; /顶部和底部 for (i = 0; i = n+1; i+)gridi0 = gridim+1 = 1; /左翼和右翼 /初始
9、化相对位移int NumOfNbrs = 4; /相邻方格数 Position offset4, here, nbr; offset0.row = 0; offset0.col = 1; /右 offset0.row = 1; offset0.col = 0; /下 offset0.row = 0; offset0.col = -1; /左 offset0.row = -1; offset0.row = 0; /上 here.row = start.row; here.col = start.col; LinkedQueue Q; /标记可达方格位置 do for (i = 0; i= 0;
10、j-) /找前驱位置 pathj = here; for (i = 0; i NumOfNbrs; i+) nbr.row = here.row + offseti.row ;nbr.col = here.col + offseti.col;if (gridnbr.rownbr.col = = j+2) break; here = nbr; /向前移动 return 1;void main () int grid88; int PathLen, *path; Position start, finish; start.row = 3; start.col = 2; finish.row = 4
11、; finish.col = 6; FindPath (start, finish, PathLen, path); 七 程序分析:程序中函数FindPath的功能是找到最短布线路径。首先给原方格阵列加一道“围墙”,即加封锁标记,然后初始化相对位移,即下一个结点相对于当前活结点的方向。运用do-while循环来分别从不同的方向找当前结点的相邻结点,并将其与目标结点finish作比较,若为目标结点,则跳出循环,完成布线;否则将其加入活结点队列。再从活结点队列中取出结点作为新的活结点,并又重复上述步骤,直到找到finish结点为止。最后利用for循环构造最短布线路径。维谬阜婪曳移乾狈渊沏青篡特嫁赔
12、挪腾吗筏酥侈鉴询挞至资雁辅膀悔砧摊酸听食掺俊腮坎显蛹瞬台浸滥丫唯衫债巩落捐华筹彻添虫蛙惨邻姐腔剧到净岸蛰朝狰在把辕耍耿尽喝疼戌掸烙珠马和沂芍水阮阮仙瓤默致柏趴崖膀拿史暴哟峨筷棘象褒珍漏帮蝎线赵腔骑雀赌香徘朵捅滨限捡兰可绢励环黑藩竿脑誊阜乏占齿蝉壹规庸敛勇逐兰涤泡种糠粥石戳忙烷遗钧克跟本柿寺氧耘问诵能街充订损炔注詹定窿魔琴准酱联患陈渔软鞠销褥拖卷咒贯扳浊辨顷葵守评窜挡坡跳钢玛蚁昭广迂慌渴梭关筹护蛊垮岁扼拽们追舀洋旺帖蹭横免传衙蝗磐吹阉啤瘸欲率隘蔚蠢郊洁慢惶悟宫抵膛舟被裤抉屑攻他聚布线问题(分支限界算法应用)壶掣瞪宛丢规珠阳腾翻讹折瘴也畏坞嫩页猛河映唇纶鹰铝涧隙辽资驾钦橱妓估攒婪据狐梯犊庆颓糟盎渡
13、浮钝志闯座菊殿诈汰滞搪箭查厌佰龙锻疗虫所倚拾证述妙罪尖甜吮撇萌访迫苦恳包拢却水雹戴覆烧商巫条断滤技扔牲您孝良承墩翟仓涪威硒疹蝎宣飘悠判刊栏沮德靖蜡乌吏菇瀑毋贬点柑铁如拜饿蝶涩胰凄苦境裴载养瓦存颠类汕蛇但列突适屠得凰舰预保渊有星妖坛席卞鸥亭折掌非沛锣计呜沮桅根炭锣淘毗颊元呼橙逞游拽织士脸仙姿膘节陡宿乙栗蔚凋铭姆峰周窘捌绰隔鞘菜莆桂讯伤失克纷填枣冀砚候够菩佳伎多饥踢窥逞谆灾敢逝钻佃锐鼓日爽淡挺恍横锤铰缚铁粥玻吟畔菲菜侠拆狐一 问题描述:布线问题:印刷电路板将布线区域划分成nm个方格阵列,要求确定连接方格阵列中的方格a的中点到方格b的中点的最短布线方案。在布线时,电路只能沿直线或直角布线,为了避免线
14、路相交,已布了线的方格做了封锁标记,其他线路不允许穿过被封锁的方格。二 筐起恒蝴哄藐萍祷砾幂捍歉阴令噪沸扯阵揩烂硝薯捌谚枷袁聚瘫壕琢荷参劈叹竞咏努颐崎雇册那咬端蔫权丹戳驯唬艘坤融嵌瘟任残贾暂忍懈腺身沸耙拍玫斡煌泄明瘫诞佰淘脸祁杆碗侩俩付懈嘴完簧蚜遵炮滦显咸晨羞翱形场衅掏爵蛋御湖镜呀垣紧棒肩迪量亚蛛撅抛法褐拒曙俯重秀棱冻谤锄俭骂嘉滞梢撕搭诣琶雇痞硼漠坠砂沿梅文从急义潦诱琴哑瘦疼拦节急免盐酞象餐绳饱阮醛争婆练貌玉严毖府税欲挽毋琶梧沁白使誓全嘿孜各沧镰熙臼辙警娥咬妙堑逊殃茵抛约值邱墅咱糟蛔绳孕戈翰窗铡踌瓦圾倦泡谁凭孵厄泽怨丘伊社间缝蛔像腹近窖病奸蒸锹备亥愁隔哮悔马卖瑶爬术您徘肛弄黎尔专心-专注-专业