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

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

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

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

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

解答:

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

步骤:

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

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

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

相关推荐
eddietao几秒前
什么是 fail-fast?什么是 fail-safe?
java·面试
程序员小羊!1 分钟前
05 JAVA面向对象
java·开发语言
MrJson-架构师3 分钟前
AgentScope Java 2.0:打造分布式、企业级智能体底座
java·开发语言·分布式
凡人叶枫3 分钟前
Effective C++ 条款01:视 C++ 为一个语言联邦
linux·开发语言·c++·effective c++·编程范式·语言联邦
装不满的克莱因瓶8 分钟前
了解不同机器学习模型的分类
人工智能·python·算法·机器学习·ai·分类·数据挖掘
我爱吃土豆18 分钟前
Agent 的记忆机制
开发语言·数据库·人工智能
白露与泡影8 分钟前
SEATA:Server 到 Golang Client 全链路走读
开发语言·后端·golang
QiLinkOS9 分钟前
合肥气链科技有限公司本质总结
c++·科技·算法·gitee·开源
小小龙学IT15 分钟前
Go 后端开发实战:构建高性能 RESTful API 服务
开发语言·golang·restful
2501_9318037520 分钟前
线性筛(欧拉筛):从原理到应用
算法