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

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

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

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

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

解答:

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

步骤:

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

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

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

相关推荐
遇到困难睡大觉哈哈3 分钟前
Harmony os——ArkTS 语言笔记(四):类、对象、接口和抽象类
java·笔记·spring·harmonyos·鸿蒙
四问四不知8 分钟前
Rust语言进阶(结构体)
开发语言·后端·rust
拿破轮10 分钟前
使用通义灵码解决复杂正则表达式替换字符串的问题.
java·服务器·前端
j***518911 分钟前
Java进阶,时间与日期,包装类,正则表达式
java·mysql·正则表达式
q***99414 分钟前
index.php 和 php
开发语言·php
oioihoii17 分钟前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++
程序员东岸26 分钟前
《数据结构——排序(中)》选择与交换的艺术:从直接选择到堆排序的性能跃迁
数据结构·笔记·算法·leetcode·排序算法
程序员-King.28 分钟前
day104—对向双指针—接雨水(LeetCode-42)
算法·贪心算法
笙年43 分钟前
JavaScript Promise,包括构造函数、对象方法和类方法
开发语言·javascript·ecmascript
WZTTMoon1 小时前
Spring Boot 启动全解析:4 大关键动作 + 底层逻辑
java·spring boot·后端