当前位置:嗨网首页>书籍在线阅读

24-算法设计

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.4.2 算法设计

(1)定义问题的解空间

可以把最优工程布线问题解的形式为n元组:{x1,x2,…,xi,…,xn},分量xi表示最优布线方案经过的第i个方格,而方格也可以用(x,y)表示第x行第y列。因为方格不可重复布线,因此在确定xi时,前面走过的方格{x1,x2,…,xi−1}不可以再走,xi的取值为S−{x1,x2,…,xi−1},S为可布线的方格集合。

特别注意:和前面的问题不同,因为不知道最优布线的长度,因此n是未知的。

(2)解空间的组织结构

问题的解空间是一棵m叉树,m=4。树的深度n是未知的。如图6-60所示。

755.jpg

图6-60 解空间树(m叉树)

(3)搜索解空间

搜索从起始结点a开始,到目标结点b结束。

  • 约束条件:非障碍物或边界且未曾布线。
  • 限界条件:最先碰到的一定是距离最短的,因此无限界条件。
  • 搜索过程:从a开始将其作为第一个扩展结点,沿a的右、下、左、上4个方向的相邻结点扩展。判断约束条件是否成立,如果成立,则放入活结点表中,并将这个方格标记为1。接着从活结点队列中取出队首结点作为下一个扩展结点,并沿当前扩展结点的右、下、左、上4个方向的相邻结点扩展,将满足约束条件的方格记为2。依此类推,一直继续搜索到目标方格或活结点表为空为止,目标方格里的数据就是最优的布线长度。

构造最优解过程从目标结点开始,沿着右、下、左、上4个方向。判断如果某个方向方格里的数据比扩展结点方格里的数据小1,则进入该方向方格,使其成为当前的扩展结点。依此类推,搜索过程一直持续到起始结点结束。