算法分析与设计第五章作业

计科2101卓文哲 2022-12-11 23:20:16

目录

1. 请用回溯法的方法分析“最小重量机器设计问题”

2. 你对回溯算法的理解


1. 请用回溯法的方法分析“最小重量机器设计问题”

1.1 说明“最小重量机器设计问题"的解空间

 解空间为解空间树的每个分支。例如,当n = 3,m = 3为例,该问题的解空间为:

(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2 ,2), (1, 2, 3), (1, 3, 1), (1, 3, 2), (1, 3, 3),

(2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3),

(3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 2, 1), (3, 2, 2), (3, 2, 3), (3, 3, 1), (3, 3, 2), (3, 3, 3)

1.2 说明 “最小重量机器设计问题"的解空间树

 

1.3 在遍历解空间树的过程中,每个结点的状态值是什么

 每个节点存放当前机器的总价格,以及当前机器总重量(通过两个状态值为遍历进行减枝)。

2. 你对回溯算法的理解

在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法,这个解释又更加的精简而正确。用白话讲回溯法就是深度搜索问题隐含的图,找到正确的路径)。 

求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。

其适用的场景——
1、求任一个解时,只要搜索到问题的一个解就可以结束。
2、判断有没有解、解的个数。

...全文
74 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-数据结构与算法 发布问题, 以便更快地解决您的疑问
内容概要:本文是一份系统性的Go语言并发编程实战教程,通过构建一个可运行的并发URL健康检查器项目,全面讲解了Go中goroutine、channel、select、WaitGroup、Mutex、context、超时控制、worker pool、限流、错误收集和优雅退出等核心并发机制。文章从基础概念入手,结合代码示例与实战项目,深入剖析常见并发模式如Worker Pool、Pipeline、Fan-out/Fan-in,并指出典型陷阱及修复方法,最后提供增强功能与测试建议,帮助开发者掌握生产级并发编程的最佳实践。; 适合人群:已掌握Go基础语法,具备一定开发经验(工作1-3年)的后端或云原生开发人员;希望深入理解Go并发模型并提升高并发系统设计能力的工程师。; 使用场景及目标:① 学习如何正确使用goroutine与channel进行任务调度和数据通信;② 掌握context在取消、超时和请求链路追踪中的应用;③ 构建可控并发度的worker pool避免资源耗尽;④ 实现错误汇总、限流、优雅退出等生产级特性;⑤ 避免goroutine泄漏、死锁、数据竞争等常见问题。; 阅读建议:建议边阅读边动手实现文中的URL健康检查器项目,结合-race检测工具验证并发安全性,并尝试完成文末练习任务以深化理解;重点关注context传播、channel所有权、单一状态持有者等设计原则,在实践中体会“不要通过共享内存来通信”的Go哲学。

434

社区成员

发帖
与我相关
我的任务
社区描述
广东外语外贸大学信息科学与技术学院
算法 高校
社区管理员
  • brisksea
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧