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

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

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

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

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

解答:

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

步骤:

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

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

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

相关推荐
玄同7651 分钟前
Python 数据类型:LLM 语料与 API 参数的底层处理逻辑
开发语言·人工智能·python·自然语言处理·llm·nlp·知识图谱
Slow菜鸟6 分钟前
Java基础 | 布隆过滤器
java·开发语言
比奇堡派星星12 分钟前
Linux Hotplug 机制详解
linux·开发语言·驱动开发
云飞云共享云桌面25 分钟前
河北某机器人工厂8个研发设计共享一台SolidWorks云主机
运维·服务器·网络·数据库·算法·性能优化·机器人
元亓亓亓1 小时前
LeetCode热题100--152. 乘积最大子数组--中等
算法·leetcode·职场和发展
molaifeng1 小时前
像搭积木一样理解 Golang AST
开发语言·后端·golang
SystickInt1 小时前
C语言 UTC时间转化为北京时间
c语言·开发语言
执笔论英雄1 小时前
【RL】Slime训练流程
算法
黎雁·泠崖1 小时前
C 语言动态内存管理进阶:常见错误排查 + 经典笔试题深度解析
c语言·开发语言
xixixiLucky1 小时前
IDEA中MAVEN项目找依赖的快捷插件
java·maven·intellij-idea