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

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

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

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

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

解答:

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

步骤:

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

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

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

相关推荐
A boy CDEF girl几秒前
【JavaEE】阻塞队列
java·开发语言·java-ee
302wanger几秒前
ARTS-算法-长度最小的子数组
算法
WanderInk2 分钟前
JavaWeb CRUD 与分页系统架构学习教程
java·后端·架构
_Djhhh5 分钟前
权限系统设计方案实践(Spring Security + RBAC 模型)
java·linux·数据库·spring
天上掉下来个程小白24 分钟前
开发环境搭建-06.后端环境搭建-前后端联调-Nginx反向代理和负载均衡概念
java·运维·spring boot·后端·nginx·负载均衡·苍穹外卖
lizz3126 分钟前
机器学习中的线性代数:奇异值分解 SVD
线性代数·算法·机器学习
试着生存27 分钟前
java根据List<Object>中的某个属性排序(数据极少,顺序固定)
java·python·list
酷爱码27 分钟前
2025DNS二级域名分发PHP网站源码
开发语言·php
_星辰大海乀27 分钟前
LinkedList 双向链表
java·数据结构·链表·list·idea
MSTcheng.30 分钟前
【C语言】动态内存管理
c语言·开发语言·算法