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

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

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

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

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

解答:

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

步骤:

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

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

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

相关推荐
怎么没有名字注册了啊1 分钟前
解决qt制作软件.app迁移问题(发布)Mac
开发语言·qt
大大杰哥1 分钟前
Docker笔记
java·docker
秋92 分钟前
学霸圈公认的 10 种高效学习习惯:从低效到顶尖的底层逻辑
人工智能·学习·算法
ch.ju4 分钟前
Java程序设计(第3版)第二章——选择结构
java
llm大模型算法工程师weng6 分钟前
Java高并发架构设计:从理论到实战的全链路解决方案
java·开发语言
gihigo19987 分钟前
MATLAB地震面波数值模拟方案
开发语言·matlab
CeshirenTester7 分钟前
Claude Code 不只是会写代码:这 10 个 Skills,才是效率分水岭
android·开发语言·kotlin
并不喜欢吃鱼14 分钟前
从零开始C++----四.vector的使用与底层实现
开发语言·c++
CQU_JIAKE14 分钟前
4.17【a]
java
Devin~Y16 分钟前
从Spring Boot到Spring AI:音视频AIGC内容社区Java大厂面试三轮连环问(含Kafka/Redis/安全/可观测性答案)
java·spring boot·redis·spring cloud·kafka·spring security·resilience4j