高中 信息技术 浙教版 选修1 算法初步项目挑战: 旅游路线规划——寻找最想游览的环形旅游路线-表格式教案.docxVIP

高中 信息技术 浙教版 选修1 算法初步项目挑战: 旅游路线规划——寻找最想游览的环形旅游路线-表格式教案.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文档。上传文档
查看更多

教学设计

课程基本信息

学科

信息技术

年级

高三

学期

(春季)

课题

旅游路线规划——寻找最想游览的环形旅游路线

教科书

书名:信息技术选修一

出版社:浙江教育出版社出版日期:2019年7月

教学目标

1.利用项目教学,学会动态规划在现实生活中的应用。

2.理解并掌握动态规划的核心算法。

教学内容

教学重点:

1.该项目的数学方程式的推导。

2.动态规划算法的代码实现。

教学难点:

1.理解动态规划的算法思维。

2.数学方程式的推导。

教学过程

1.课堂导入

①问题提出:法法看到各项目小组推荐给他的旅游路线,并没有很满意,因为他觉得路线中的有些景点不是他最喜欢的,而有些他很喜欢的景点没有被规划在路线中。为了增加旅行的乐趣,在旅行的过程中,法法不希望下一个旅游点比当前旅游点的喜欢程使低,且所有去旅游的景点的乐趣值(乐趣值为某旅游网站给出的综合评价分)之和最大。他想让各项目小组地想办法,帮他找到一条满足以上两点的环形点路线。

②这条环形线路的要求:

请根据法法对各景点的喜好程度及各景点的乐趣值,重新设计算法,找出一条环形旅行路线,该路线满足:

a.下一个景点比当前景点的喜好程度高

b.线路中各景点乐趣值之和最大

2.解决问题

(1)解决问题的思路:

=1\*GB3①因为下一个景点比当前景点的喜好程度要高,可以推出景点喜好程度越高的被排在越后面游玩。

提问:是否需要对原始数据根据喜好程度重新编号?

[学生任务1]:根据项目中的景点表,按喜好程度重新编号

提问:双龙洞和仙都两个景点之间的指向关系

=2\*GB3②按要求,建立连边图,确定景点间的连通关系

[学生任务2]按“下一个景点比当前景点的喜好程度高的要求”,建立n*n的二维表,用来存放a景点与b景点间的关系,能到达的为1,不能到达的为0

=3\*GB3③根据动态规划的算法原理,推出数学推导式:

因为是环形路线,所以所有的景点都是可以到达“西湖”,所以在原有的景点的最后增加一个虚拟的景点“西湖”构成环形线路。并且增加两列,用来计算到达当前景点的最大乐趣

值和前驱景点的索引。

最终的最大乐趣值就转换为求f[12]的值。

推出动态转移方程式:a[j][0]a[i][0]或Map[i][j]==1

f[i][0]=

max(f[j][0])+a[i][0](0ji)

[学生任务3]

按照动态规划的算法思维,对本表剩余景点的最大乐趣值进行动算,并找出环形的线路。

3.代码实现

importpandasaspd

f=open(旅游线路.csv)

p=0

a=[]

s=西湖

line=f.readline().split()

line=f.readline().split()

whileline:

line[1]=int(line[1])

line[2]=int(line[2])

a.append(line)

line=f.readline().split()

foriinrange(len(a)-1):

forjinrange(len(a)-1,i,-1):

ifa[j][1]a[j-1][1]:

a[j],a[j-1]=a[j-1],a[j]

n=len(a)

f=[[0foriinrange(2)]forjinrange(n)]

foriinrange(1,n):

forjinrange(0,i):

ifa[j][1]a[i][1]andf[j][0]+a[i][2]f[i][0]:

f[i][0]=f[j][0]+a[i][2]

f[i][1]=j#记前驱节点的索引

print(最大的乐趣值是:,f[12][0])

print(所经过的景点是:)

p=f[n-1][1]

whilep!=0:

s=a[p][0]+--+s

p=f[p][1]

print(西湖--+s)

[学生任务4]理解程序,完成核心代码的书写

文档评论(0)

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

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

1亿VIP精品文档

相关文档