一道算法期末应用题及解答

1.印刷电路板布线区划分成为n m 个方格,确定连接方格a 到方格b 的最短布线方案。

在布线时,只能沿直线或者直角布线,为避免交叉,已经布线的方格做了封锁标记,其他线路不允许穿过被封锁的方格,某待布线电路板如下图所示,灰色方格为已封锁位置:

(1)描述求解该问题的算法策略和解题步骤;

(2)针对方格中数据,求得从方格a 到方格b 的最短布线方案,并说明求解的全过程。

解答:

(1)、每个结点最多有4 个扩展方向,搜索的方向比较盲目,因此求最短布线比较适合采用FIFO 分枝搜索策略。

步骤:

  1. 开始时,唯一的活结点是a,进入活结点队;
  2. 从活结点队中取出队头成为E- 结点;
    3、对E- 结点寻找可行位置入队;
    4、重复该过程直到b 结点或者队为空;
    5、如果b 结点终止则倒推输出路径,否则输出失败

(2)、活结点的扩展轮次如下图中编号所示:

布线路径如图中箭头所示。

相关推荐
爱编程的小生几秒前
Easyexcel(6-单元格合并)
java·excel
Domain-zhuo7 分钟前
JS对于数组去重都有哪些方法?
开发语言·前端·javascript
浦东新村轱天乐8 分钟前
神经网络反向传播算法公式推导
神经网络·算法·机器学习
小白不太白95010 分钟前
设计模式之 迭代器模式
java·设计模式·迭代器模式
闲人一枚(学习中)12 分钟前
设计模式-创建型-单例模式
java·单例模式·设计模式
逝去的紫枫16 分钟前
Python Selenium:Web自动化测试与爬虫开发
开发语言·python·selenium
SUN_Gyq20 分钟前
什么是 C++ 中的模板特化和偏特化? 如何进行模板特化和偏特化?
开发语言·c++·算法
码上一元24 分钟前
【百日算法计划】:每日一题,见证成长(026)
算法
Coderfuu24 分钟前
Java技术复习提升 10异常
java·开发语言
愿天垂怜30 分钟前
【C++】C++11引入的新特性(1)
java·c语言·数据结构·c++·算法·rust·哈希算法