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

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

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

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

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

解答:

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

步骤:

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

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

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

相关推荐
MATLAB代码顾问3 分钟前
Python NumPy数值计算核心指南
开发语言·python·numpy
布朗克1687 分钟前
38 Spring Boot入门——自动配置、核心注解与Starter机制
java·spring boot·后端
只做人间不老仙9 分钟前
C++ grpc 拦截器示例学习
开发语言·c++·学习
踏着七彩祥云的小丑10 分钟前
Go学习第7天:Map集合 + 递归函数 + 类型转换
开发语言·学习·golang·go
何以解忧,唯有..12 分钟前
Go语言变量的声明方式详解
开发语言·后端·golang
触底反弹14 分钟前
一文彻底搞懂 JavaScript 栈和队列(建议收藏)
javascript·算法·面试
沪漂阿龙15 分钟前
LangChain 系列:Structured Output结构化输出与源码解析
java·人工智能·架构·langchain
半夜燃烧的香烟19 分钟前
springboot3.0 集成minio上传文件,支持多个桶名
java·开发语言·spring boot
WL学习笔记19 分钟前
通讯录(顺序表实现)
c语言·数据结构·算法
不会C语言的男孩20 分钟前
Linux 系统编程 · 第 1 章:Linux 系统概述
c语言·开发语言