• 1.38 MB
  • 2022-04-29 14:30:23 发布

最新人教版语文五年级上册第16课-《珍珠鸟》课件PPT教学讲义ppt课件.ppt

  • 58页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'人教版语文五年级上册第16课-《珍珠鸟》课件PPT 16.珍珠鸟执教人:甘伟真好!朋友送我一对珍珠鸟 自读提示:1.读准生字,如有不懂的生字词就勾画下来;2.边读边思考:珍珠鸟是一种什么样的鸟? 二、默读课文,归纳珍珠鸟的感情变化怕人----渐渐胆大----开始亲近----完全信赖 1、文章开头部分写珍珠鸟是一种“怕人”的鸟,有什么用意?(联系全文思考)这是为了写“我”关爱珍珠鸟作铺垫。先写珍珠鸟怕人,与后文写珍珠鸟亲近人构成对比。 2、小鸟为什么会由“怕人”渐渐“信赖人”?(注意找出“我”的举动的语句以及小鸟的反应)我的举动小鸟的反应 珍珠鸟的反应“我”的举动感到格外轻松自在用吊兰垂蔓盖鸟笼,为鸟布置温暖的窝“很少扒开叶蔓瞧它们”渐渐敢伸出小脑袋瞅瞅我添食加水也不睁大好奇的眼去惊动它们雏鸟可以自由飞出笼子活动不管它开着窗子也不飞走;落在我的书桌上不去伤害它蹦到“我”的杯子上喝茶自主探究我不动声色地写甚至啄着我颤动的笔尖我抚一抚它细腻的绒毛它友好地啄两下我的手指落在肩上,趴在肩头睡着了关爱 它先是()我较远,见我不去伤害它,便一点点()近,然后()到我的杯子上,()下头来喝茶,再()过脸()我的反应。离挨俯偏蹦瞧瞧根据课文内容在括号里填上合适的动词 “挨近”“蹦”“俯下”“喝”“偏”“瞧瞧”“跑到”“绕”“蹦来蹦去”等词语,是作者把人的性灵赋予珍珠鸟,是珍珠鸟似乎也有了一个顽皮孩子的神情和心理。作者心中充满温柔的爱意,用诗意的语言描写了人与鸟的第一次亲密接触。 珍珠鸟的心理活动1.起先,我精心的布置鸟巢,他可能想:();2.随后,我很少惊动他们时,他也许在想:();3.渐渐地,我不管他、不伤害他时,他大概在想:();4.后来,我抚一抚他细腻的绒毛时,他一定在想:()。 “我”对鸟布置居室营造氛围爱护怕人渐渐胆大鸟对“我”:开始亲近完全信赖 从“我”的一举一动可以看出,“我”作为一个强者,不但没有以强凌弱,反而超脱私欲的爱心为他们营造一个宽松、自由的空间,也因此赢得了它们对人的信赖。 3、“我”从和鸟儿的相处中得到了哪些感受?信赖,往往创造出美好的境界。 本文描写了珍珠鸟的形状、色彩、动态,使小鸟憨直。顽皮、活泼的形象跃然纸上。文章落笔在鸟,实则写人,通过描写人与小鸟之间的感情沟通,表达对互相信赖、和谐美好的世界的渴望和追求。。文章主题 “我”说:你是一只的鸟.“鸟”说:你是一个的人.人鸟情语 “信赖,往往创造出美好的境界”从这句话中我们可以感悟到: 感悟:无论是人与鸟之间,还是人与人之间,都需要真诚的信赖。信赖是创造美好情景的基础。 鸟语花香、惊弓之鸟、鸟尽弓藏、百鸟争鸣关于鸟的诗句例如:春眠不觉晓,处处闻啼鸟。(孟浩然)几处早莺争暖树,谁家新燕啄春泥。(白居易)两个黄鹂鸣翠柳,一行白鹭上青天。(杜甫)鸟向檐上飞,云从窗里出。(吴均)关于鸟的成语例如: 学习要点理解回溯法的深度优先搜索策略。掌握用回溯法解题的算法框架(1)递归回溯(2)迭代回溯(3)子集树算法框架(4)排列树算法框架24 通过应用范例学习回溯法的设计策略。(1)装载问题;(2)批处理作业调度;(3)符号三角形问题(4)n后问题;(5)0-1背包问题;(6)最大团问题;(7)图的m着色问题(8)旅行售货员问题(9)圆排列问题(10)电路板排列问题(11)连续邮资问题25 有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。回溯法回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。26 问题的解空间问题的解向量:回溯法希望一个问题的解能够表示成一个n元式(x1,x2,…,xn)的形式。注意:同一个问题可以有多种表示,有些表示方法更简单,所需表示的状态空间更小(存储量少,搜索方法简单)。n=3时的0-1背包问题用完全二叉树表示的解空间,其解空间为{(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1),(1,1,0),(1,1,1)}定义了问题的解空间后,还应将解空间很好地组织起来,使得能用回溯法方便地搜索整个解空间,通常将解空间组织成树或图的形式27 生成问题状态的基本方法扩展结点:一个正在产生儿子的结点称为扩展结点活结点:一个自身已生成但其儿子还没有全部生成的节点称做活结点死结点:一个所有儿子已经产生的结点称做死结点深度优先的问题状态生成法:如果对一个扩展结点R,一旦产生了它的一个儿子C,就把C当做新的扩展结点。在完成对子树C(以C为根的子树)的穷尽搜索之后,将R重新变成扩展结点,继续生成R的下一个儿子(如果存在)回溯法在搜索解空间树时,通常采用两种策略避免无效搜索:其一是用约束函数在扩展结点处剪去不满足约束的子树;其二是用限界函数剪去得不到最优解的子树.这两类函数统称为剪枝函数.28 回溯法的基本思想回溯法的解题步骤:(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。29 递归回溯回溯法对解空间作深度优先搜索,因此,在一般情况下用递归方法实现回溯法。voidbacktrack(intt){if(t>n)output(x);elsefor(inti=f(n,t);i<=g(n,t);i++){x[t]=h(i);if(constraint(t)&&bound(t))backtrack(t+1);}}30 迭代回溯采用树的非递归深度优先遍历算法,可将回溯法表示为一个非递归迭代过程。voiditerativeBacktrack(){intt=1;while(t>0){if(f(n,t)<=g(n,t))for(inti=f(n,t);i<=g(n,t);i++){x[t]=h(i);if(constraint(t)&&bound(t)){if(solution(t))output(x);elset++;}}elset--;}}31 迭代回溯用回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。在任何时刻,算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为O(h(n))。而显式地存储整个解空间则需要O(2h(n))或O(h(n)!)内存空间。32 子集树与排列树遍历子集树需O(2n)计算时间遍历排列树需要O(n!)计算时间voidbacktrack(intt){if(t>n)output(x);elsefor(inti=0;i<=1;i++){x[t]=i;if(legal(t))backtrack(t+1);}}voidbacktrack(intt){if(t>n)output(x);elsefor(inti=t;i<=n;i++){swap(x[t],x[i]);if(legal(t))backtrack(t+1);swap(x[t],x[i]);}}33 装载问题有一批共n个集装箱要装上2艘载重量分别为c1和c2的轮船,其中集装箱i的重量为wi,且装载问题要求确定是否有一个合理的装载方案可将这n个集装箱装上这2艘轮船。如果有,找出一种装载方案。例如,当n=3,c1=c2=50,且w=[10,40,40]或者w=[20,40,40]34 装载问题容易证明,如果一个给定装载问题有解,则采用下面的策略可得到最优装载方案。(1)首先将第一艘轮船尽可能装满;(2)将剩余的集装箱装上第二艘轮船。将第一艘轮船尽可能装满等价于选取全体集装箱的一个子集,使该子集中集装箱重量之和最接近。由此可知,装载问题等价于以下特殊的0-1背包问题。用回溯法设计解装载问题的O(2n)计算时间算法。在某些情况下该算法优于动态规划算法。35 装载问题算法设计:解空间:子集树可行性约束函数(选择当前元素):voidbacktrack(inti){//搜索第i层结点if(i>n){//到达叶结点if(cw>bestw)bestw=cw;return;}if(cw+w[i]<=c){//搜索左子树x[i]=1;cw+=w[i];backtrack(i+1);cw-=w[i];}backtrack(i+1);//x[i]=0;}36 装载问题改进算法:上界函数(不选择当前元素):当前载重量cw+剩余集装箱的重量r当前最优载重量bestwvoidbacktrack(inti){//搜索第i层结点if(i>n){bestw=cw;return;}r-=w[i];if(cw+w[i]<=c){//搜索左子树x[i]=1;cw+=w[i];backtrack(i+1);cw-=w[i];}if(cw+r>bestw){//x[i]=0;搜索右子树backtrack(i+1);}r+=w[i];}37 装载问题构造最优解:通过在类Loading中增加两个私有数据成员x和bestx。x用于记录从根至当前节点的路径;bestx记录当前最优解。38 装载问题迭代回溯:数组x记录了解空间树中从根到当前扩展结点的路径,这些信息已包含了回溯法在回溯时所需的信息。因此利用数组x所含的信息,可讲上述回溯法表示成非递归的形式。由此可进一步省去0(n)递归栈空间。39 批处理作业调度给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度的完成时间和。批处理作业调度问题要求对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最小。tji机器1机器2作业121作业231作业323这3个作业的6种可能的调度方案是1,2,3;1,3,2;2,1,3;2,3,1;3,1,2;3,2,1;它们所相应的完成时间和分别是19,18,20,21,19,19。易见,最佳调度方案是1,3,2,其完成时间和为18。40 批处理作业调度解空间:排列树voidFlowshop::Backtrack(inti){if(i>n){for(intj=1;j<=n;j++)bestx[j]=x[j];bestf=f;}elsefor(intj=i;j<=n;j++){f1+=M[x[j]][1];f2[i]=((f2[i-1]>f1)?f2[i-1]:f1)+M[x[j]][2];f+=f2[i];if(fn)sum++;elsefor(inti=1;i<=n;i++){x[t]=i;if(Place(t))Backtrack(t+1);}}43 0-1背包问题解空间:子集树可行性约束函数:上界函数:templateTypepKnap::Bound(inti){//计算上界Typewcleft=c-cw;//剩余容量Typepb=cp;//以物品单位重量价值递减序装入物品while(i<=n&&w[i]<=cleft){cleft-=w[i];b+=p[i];i++;}//装满背包if(i<=n)b+=p[i]/w[i]*cleft;returnb;}44 最大团问题给定无向图G=(V,E)。如果UV,且对任意u,vU有(u,v)E,则称U是G的完全子图。G的完全子图U是G的团当且仅当U不包含在G的更大的完全子图中。G的最大团是指G中所含顶点数最多的团。U是G的最大团当且仅当U是G的最大独立集。1245312453如果UV且对任意u,vU有(u,v)E,则称U是G的空子图。G的空子图U是G的独立集当且仅当U不包含在G的更大的空子图中。G的最大独立集是G中所含顶点数最多的独立集。对于任一无向图G=(V,E)其补图G=(V1,E1)定义为:V1=V,且(u,v)E1当且仅当(u,v)E。45 最大团问题解空间:子集树可行性约束函数:顶点i到已选入的顶点集中每一个顶点都有边相连。上界函数:有足够多的可选择顶点使得算法有可能在右子树中找到更大的团。voidClique::Backtrack(inti){//计算最大团if(i>n){//到达叶结点for(intj=1;j<=n;j++)bestx[j]=x[j];bestn=cn;return;}//检查顶点i与当前团的连接intOK=1;for(intj=1;jbestn){//进入右子树x[i]=0;Backtrack(i+1);}}复杂度分析最大团问题的回溯算法backtrack所需的计算时间显然为O(n2n)。1245346 图的m着色问题给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的2个顶点着不同颜色。这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问题。47 解向量:(x1,x2,…,xn)表示顶点i所着颜色x[i]可行性约束函数:顶点i与已着色的相邻顶点颜色不重复。图的m着色问题voidColor::Backtrack(intt){if(t>n){sum++;for(inti=1;i<=n;i++)cout<voidTraveling::Backtrack(inti){if(i==n){if(a[x[n-1]][x[n]]!=NoEdge&&a[x[n]][1]!=NoEdge&&(cc+a[x[n-1]][x[n]]+a[x[n]][1]temp)temp=valuex;}returntemp;}voidCircle::Compute(void){//计算当前圆排列的长度floatlow=0,high=0;for(inti=1;i<=n;i++){if(x[i]-r[i]high)high=x[i]+r[i];}if(high-lown)Compute();elsefor(intj=t;j<=n;j++){Swap(r[t],r[j]);floatcenterx=Center(t);if(centerx+r[t]+r[1]