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

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

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

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

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

解答:

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

步骤:

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

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

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

相关推荐
han_hanker5 小时前
@Validated @Valid 用法
java·spring boot
小CC吃豆子5 小时前
详细介绍一下静态分析工具 SonarQube
java
CheerWWW5 小时前
深入理解计算机系统——位运算、树状数组
笔记·学习·算法·计算机系统
DevOpenClub5 小时前
全国三甲医院主体信息 API 接口
java·大数据·数据库
上海合宙LuatOS5 小时前
LuatOS扩展库API——【exremotecam】网络摄像头控制
开发语言·网络·物联网·lua·luatos
言慢行善5 小时前
SpringBoot中的注解介绍
java·spring boot·后端
一勺菠萝丶5 小时前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
feng_you_ying_li5 小时前
C++11,{}的初始化情况与左右值及其引用
开发语言·数据结构·c++
xiaotao1315 小时前
JS new 操作符完整执行过程
开发语言·前端·javascript·原型模式
TE-茶叶蛋5 小时前
结合登录页-PHP基础知识点解析
android·开发语言·php