高中 信息技术 浙教版 选修1 算法初步3.2算法的设计-表格式教案.docxVIP

高中 信息技术 浙教版 选修1 算法初步3.2算法的设计-表格式教案.docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

教学设计

课程基本信息

学科

信息技术

年级

高三年级

学期

秋季

课题

算法的设计

教科书

书名:算法初步

出版社:浙江教育出版社出版日期:2022年1月

教学目标

1.通过设计算法解决问题以及对算法的的层层改进,体验算法效率的差别(信息意识)。

2.掌握算法分析的一般方法和过程,能够分析算法的时空复杂度(计算思维和信息意识)。

3.活用之前掌握的算法来解决实际问题(数字化学习与创新)。

4.利用程序设计语言编写程序实现算法(计算思维)。

5.通过对算法的改进,体会实际算法设计过程中为提高算法效率不断精益求精的探索精神(信息社会责任)。

教学内容

教学重点:

1.分析算法的时空复杂度,思考得出有效的改进方法。

2.利用程序设计语言编写程序实现算法。

教学难点:

分析算法的时空复杂度,思考得出有效的改进方法。

教学过程

一、微课引入

师:同学们好,通过前面的学习,我们已经掌握了算法评价和度量的相关知识,在算法设计中,我们就可以利用这一知识对算法进行设计并加以改进。今天我们就针对一个实际问题来体验算法设计和优化的过程。

二、微课学习

问题呈现

为了快速准确地将快递商品运送到消费者手中,物流行业有许多亟待解决的问题。

快递件装集装箱问题:某物流公司的运输车辆有限,当快递件从某个中转站A到中转站B的过程中,必须要考虑将哪些快递件装箱并进行运输,才能更好地满足客户需求。

现在假设中转站A中共有n个快递件,每个快递件有一个体积参数vi,和重要程度参数w

1.设计解决问题的正确算法

师:用计算机解决问题,需要在分析问题的基础上,根据问题特征进行抽象和建模并设计算法,最后用某种程序设计语言予以实现。

(1)抽象和建模

师:问题需要从n个快递件选择某几个快递件装箱,在不超过车厢容量的前提下使得装上车的快递件重要程度之和最大。联系题目中提到的两个参数,设定三个数组描述每个快递件的参数:

vi

wi

xi

所以该问题的解空间为{x1,x2,x3,…,xn},其中xi=1或者x

(2)设计算法

针对这个问题的解空间树,可以采用回溯法搜索整个解空间。回溯法按照深度优先的搜索方式,从初始状态出发,根据产生子节点的约束条件搜索问题的解。当发现当前节点的状态不满足约束条件时,就回溯并尝试其他搜索路径,直到找到问题的解。在2n

i=1

根据约束条件,逐层判断每个快递件是否装入车厢,若装入的快递件总体积没有超出车厢的容量V,则可以选择装入(xi=1

举例示范(n=4,V=5):

进一步思考可以发现还存在几种特殊情况:

1.若所有快递件都可以装上车,则无需通过回溯法计算。

2.如上图所示,四个圆框处的搜索是可以省略的,因为在当前情况下,第4个快递件无论装不装车都无法超过前面出现过的最大值。经过进一步思考发现前t层的装入情况确定后当前重要程度之和为curw,而第t+1层到第n层的快递件重要程度之和为rsum,此时若将其全部装入车厢后的重要程度之和curw+rsum仍然没有超过之前已经得到的最优方案的重要程度之和bestw,则没有继续向下搜索的必要。在搜索时将该条件作为限界条件,表示为:

curw+rsumbestw

(3)程序实现

根据以上分析得到的约束条件和限界条件,程序代码如下:

(4)分析算法的时间和空间复杂度

解决该问题的解空间树的第1层到第n层节点总数为2n+1?1,减去根节点后,左右孩子节点总数均为2n?1。搜索左边孩子节点需要用到约束条件,时间复杂度为O1,搜索右边孩子节点需要用到限界条件,时间复杂度为On

由于采用递归回溯来实现该算法,在程序运行过程中需要使用“栈”,根据时间复杂度的分析,每个节点至多进栈1次,所以算法的空间复杂度为O2

2.降低算法时间复杂度

(1)分析改进方案

目前采用的回溯法的时间复杂度为On×

原算法的约束条件为:i=1

采用动态规划算法,可以转化为:i=2

即:i=2

采用j?表示到达车厢容量V之前的某一目标容量,约束条件可以描述为:

k=1i

前i个物品中选取若干个物品装入容量不超过j?的车厢时获得的最大价值用fij

f

(2)改进算法

(3)分析算法的时间和空间复杂度

算法主要是通过两层for循环实现的,所以其时间复杂度为On×V,由于采用二维数组f进行辅助存储,因此空间复杂度为

3.降低算法空间复杂度

(1)分析改进方案

采用动态规划算法后,由于算法的空间复杂度为On×

考虑用一维数组dp表示二维数组f,采用重复覆盖的方式记录每个容量j对应的最大价值:

dp

(2)改进算法

(3)分析算法的时间和空间复杂度

一维数组仍采用两层for循环实现的,所以其时间复杂度保持不变,为On×V,但由于采用二维数组dp进行辅助存储,因此空间复杂度为

三、课堂小

文档评论(0)

180****6794 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档