串的组词范例6篇

串的组词范文1

|设为首页|加入收藏|联系站长|免费会员|VIP会员|

六一儿童节主持词

[晚会致辞]庆六一“金星闪烁”文艺晚会开场词

[晚会致辞]“快乐童心,畅想六一”暨校园艺术节闭幕式主持词

[晚会致辞]庆六一少儿文艺汇演主持词

[晚会致辞]六一儿童节诗歌朗诵会主持词

[节日串词]婚育新风进万家暨庆“六一”儿童节文艺汇演主持稿

[晚会致辞]六一诗歌朗诵会主持词

[节日串词]庆祝六一国际儿童节少儿文艺汇演主持词

[节日串词]六一国际儿童节诗歌朗诵会主持词

[组织人事]庆祝“六一”国际儿童节文体展演主持词

[节日串词]庆祝六一国际儿童节少儿文艺汇演主持词

[节日串词]幼儿园庆六一文艺晚会主持词

[节日串词]六一儿童节诗歌朗诵会主持词

[节日串词]庆六一少儿文艺汇演主持词

[节日串词]庆“六一”文艺演出主持词

[节日串词]庆“六一”少儿文艺汇演主持词

[节日串词]庆“六一”文艺演出主持词

[节日串词]“六一”《放飞希望》联欢会主持词

[晚会致辞]庆“六一”文艺演出主持词

[晚会致辞]庆“六一”少儿文艺汇演主持词

六一儿童节节目

[节日串词]商场六一游戏

[节日串词]庆“六一”我献艺(三句半)

[节日串词]为六一儿童节创编的三句半

[晚会节目]六一晚会即景三句半

[晚会节目]庆“六一”我献艺(三句半)

[晚会节目]为六一儿童节创编的三句半

[节日串词]六一晚会即景三句半

六一儿童节串词

[晚会致辞]小学生庆“六一”活动串联词

[晚会致辞]六一文艺演出串词

[晚会致辞]学校庆“六一”师生文艺汇演节目串词

[节日串词]庆六一节目串词

[节日串词]艺术节闭幕式暨六一儿童节大队集会串词

[节日串词]小学生庆祝“六一”国际儿童节活动串联词

[节日串词]六一串词

[节日串词]六一国际儿童节贺词

[节日串词]六一节目经典台词

[节日串词]庆六一广场文化活动串连词

[节日串词]幼儿园六一演出主持人串词

[节日串词]六一节目串词

[节日串词]庆六一广场文化活动串连词

[节日串词]六一文艺演出串词

[节日串词]六一活动串词

[节日串词]艺术节闭幕式暨“六一”文艺汇演程序串词

[节日串词]庆六一儿童节目串词

[节日串词]小学六一文艺汇演主持串词

[节日串词]幼儿园六一演出主持人串词

[晚会致辞]新一小2003学年六一活动串词

[晚会致辞]六一活动串词

[晚会致辞]艺术节闭幕式暨“六一”文艺汇演程序串词

[晚会致辞]庆六一儿童节目串词

[晚会致辞]小学六一文艺汇演主持串词

[晚会致辞]幼儿园六一演出主持人串词

[节日串词]六一串词

[节日串词]六一国际儿童节贺词

六一儿童节致词

[八荣八耻]六一致词

[庆典致辞]在“六一”儿童节英语晚会上的致词

[节日串词]六一致词

[节日串词]六一致词

[庆典致辞]六一儿童节致辞

[组织人事]“六一”节的献词(二)

[组织人事]“六一”献词

[八荣八耻]六一节目经典台词

六一儿童节讲话稿

[群众团体]“六一”国际儿童节学生代表发言

[群众团体]庆祝“六一”国际儿童节文艺演出的领导讲话

[群众团体]在六一“牵手留守儿童,助其健康成长”活动上的讲话

[群众团体]名誉校长在庆祝“六一”国际儿童节上的讲话

[群众团体]六一国际儿童节少先队辅导员发言稿

[群众团体]校长在庆“六一”表彰活动会上的讲话

[群众团体]副县长庆祝“六一”国际儿童节讲话

[组织人事]关于庆祝今年“六一”国际儿童节的通知

[组织人事]六一儿童节祝辞

[组织人事]参加中学六一国际儿童节的发言稿

[节日串词]县财政局六一工作总结

[节日串词]公司幼儿园六一节贺信

[节日串词]在庆“六一”集体离队入团仪式上的讲话

[节日串词]六一节目串词

[节日串词]庆六一儿童节目串词

[节日串词]六一活动串词

[节日串词]参加中学六一国际儿童节的发言稿

[节日串词]庆祝六一儿童节活动方案

[节日串词]市妇联六一活动小结

[节日串词]县委书记在希望小学庆“六一”汇报演出时的讲话

[节日串词]庆祝“六一”节讲话稿

[节日串词]“六一”节学生代表讲话

[节日串词]庆“六一”暨表彰大会发言稿

[节日串词]在庆‘六一’双合格表彰大会暨亲子绘画展活动上的讲话

[节日串词]区委副书记在庆六一暨春蕾计划表彰大会上的讲话

[节日串词]在“六一”儿童节大会上的讲话

[节日串词]在全县庆祝“六一”国际儿童节捐助特困女童仪式上的讲话

[八荣八耻]“六一”节学生代表讲话

[八荣八耻]庆“六一”暨表彰大会发言稿

[八荣八耻]区委副书记在庆六一暨春蕾计划表彰大会上的讲话

[八荣八耻]在“六一”儿童节大会上的讲话

[企划方案]市妇儿工委六一义诊法律咨询活动方案

[请话要领]在某学校校庆祝“六一”儿童节上的讲话

[请话要领]六一节“十佳儿童”代表发言

[晚会致辞]在耒阳市民办幼儿园庆六一文艺汇演上的致辞

[庆典致辞]在“六一”文艺会演暨捐资助学大会的讲话

[庆典致辞]中学六一国际儿童节的发言稿

[庆典致辞]校庆祝六一儿童节活动方案

串的组词范文2

关键词:词串教学 阅读 小学

中图分类号:G623.2 文献标识码:A 文章编号:1004-6097(2013)10-0052-02

作者简介:唐春艳(1979―),女,瑶族,广西富川人,研究生学历,小学高级教师,广西贺州市富川县第三小学语文教师。研究方向:小学语文教学。

说到词串,我们能够自然地联想到低年级学生利用词串识字的情景,即将原本孤立的词语,通过创设一定的语言环境,将各个单独的词语串联起来,能够表现某个特定的画面、意境等,让学生借助这些词串以阅读散文的形式来学习,借助韵文的形式和韵文的情境来识字。笔者为了让阅读课堂教学更有活力,便在低年级识字的基础上严格依据教材的特点,不断进行拓展和延伸。

一、抓住词串,把握文章要领

在文本阅读中,我们发现有的词串能够将整篇文章的意思概括在内,是整篇文章的“纲”和“领”。在教学过程中,笔者让学生在文本阅读的过程中抓住关键词,然后再理解每一个词在具体的语言环境中所表达的意思,同时在串词的过程中,还帮助学生理清文章的脉络。

教学《开天辟地》这篇课文时,当学生初读课文之后,笔者便出示下列一组词串:开天辟地和与日俱增、昏天黑地和大刀阔斧、顶天立地和变化多端、混沌不分。这时,笔者让学生大声朗读,然后再问大家通过读这组词语发现了什么?学生有的说这几个词语都带有天地;有的说这些成语都和开天辟地有关。这组词串本来是课后“读读背背”的内容,正是因为这些词语与故事情节的发展相吻合,又能够概括这篇课文的主要内容,笔者便巧妙地将其应用在这里。然后笔者再让学生根据这些词语将整篇文章分段,在这个过程中,学生能够清晰地将整篇文章的脉络层次理清,同时也能够更好地理解成语的意思。之后笔者要求学生用这些词语简要说明一下课文主要讲了一件什么事情?学生回答:在很久很久之前,天地之间混沌不分,而且一片黑暗,于是便大刀阔斧将天地劈开,但是为了不让天地重新合拢,便用身体顶天立地,这时他的身体也与日俱增,最后也筋疲力尽,从此倒下了。正是由于意识到了这组词串和故事情节发展的吻合,笔者才利用这样的方法,促使学生更加深入地理解了教材。

二、品读词串,营造诗画意境

所谓意境,便是作品中所描述的形象和表现的思想感情巧妙地融合在一起而形成的一种艺术境界。在语文教学过程中,老师可以通过创设适宜的教学意境,然后再利用词串引导学生展开想象,从而激发学生的审美情思。在学习过程中,笔者通过让学生品读感悟,引导其欣赏文字所蕴含的浓浓的诗意美。比如:在学习《二泉映月》这篇文章时,老师只需要抓住课文中描写二泉月夜的词语,然后不断朗读,便能让这些词语描绘的诗情画意展现在学生面前。教师通过创设出优美而深邃的意境,可以让学生进一步领悟《二泉映月》的创作历程。

三、紧扣词串,层层展开教学

老师让学生提炼出来的词语是与课文中的某一部分内容具有一定关联的,因此,这样的内容便能与课文中的内容形成一种统一的情境。在学习的过程中,词串可以作为教学的一条主线,贯穿整个教学环节,反复使用词串,便有利于提高教学质量。

如《望月》主要描写的是清丽的月光洒在平静的江面上的幽静场景。教师先让学生阅读课文,再让学生画出文章描写景象的词语。当学生读完之后,老师看看学生画出的词语,再将自己备课的词语展示出来:“安详、吐洒、清辉、晶莹、闪烁、跳动、剪影、隐约、花边。”老师让学生对照一下自己画的词语,并提问:同学们,这些词语分别描写了什么呢?学生回答:“这些词语分别描写的是月光、江边两岸的景色”。老师说:“很对,这篇课文就是先描写江面的景色,再描写江边两岸的景色。”通过这样的学习过程,再让学生将这些词语放入到课文中进行朗读,感受文中所描绘的意境,从而增加学生的阅读兴趣。在这个过程中,老师通过词串让学生能够更好地掌握文章每一部分所描写的内容,然后再进行深入学习,从而提高语文阅读教学的质量.

四、巧用词串,构建多元的立体教学模式

在教学过程中不断进行朗读训练,有内容、有意识地培养学生进行感情朗读,便能加强对学生的情感熏陶。在教学过程中,词串有利于促进学生对生字的学习,为学生在学习的过程中提供一个生动有趣的语言环境。教学中,教师要善于将这些词串巧妙地结合在一起,让他们能够相辅相成,从而促进学生语文学习能力的提高。老师在进行教学时,可以让学生在读书的过程中先将每一个字音都读准确、读通顺,然后再让学生进行朗读,最后再采用个人展示朗读、小组轮读等形式组织学生朗读。运用这种方式的主要目的是增强学生的学习技能,一次不熟悉,第二次总能够熟悉。因此,通过巩固记忆的办法能让学生认识更多的生字。这种教学方法是根据小学生认字的实际情况设计的,是将读文和识字不断整合的结果。

读书的同时学生也在识字,由于学生已经把生字在文章中标出,学生将词串读一次,同时也在不断强化记忆,从而可以将单个词从词串中挑选出来并加强记忆,再将生词从字中挑选出来单独记忆,测试识字的效果。感情朗读是词串教学的主要方式,教学时可以在学生熟练朗读的基础上指导学生将词串所包含的意思表达出来,感受其人文精神,从而充实自己的情感。

一年级《识字5》主要描写的是海滨的美丽景色。在教学过程中,笔者首先引导学生认真地观察课文中的插图,欣赏晚霞映照的大海、宁静的港湾、归航的渔船、飞翔的海鸥、追逐的浪花和沙滩上光着脚丫拾贝壳的孩子,再通过读文、看图进行联想,感受大海的美丽。在这个基础上,笔者不断指导学生进行有感情的朗读,让学生在朗读的过程中能够理解课文的含义,积累语言。朗读词串的过程不仅可以提高学生学习的效率,而且也有利于为教师教学提供创造性的空间。因此,我们要不断通过领会教材编排者的意图,充分发掘教材的多重功能,然后再进行科学整合,以此提高学生的语文能力。

五、总结

教学是一门艺术,词串就是一首欢快轻盈的乐曲,能够让教学充满活力,从而增强学生的学习兴趣。结合词串开展阅读教学,能够让学生更加清晰地掌握整篇文章的脉络,让他们感受到语言文字的无穷魅力。总之,词串教学在阅读教学中占有非常重要的地位,因此,教师必须有目的地进行教学,循序渐进,这样才能让词串教学灵动起来,使阅读教学更加生动、活泼、有效。

参考文献:

[1]孙晓军.低年级识字课课堂教学模式初探[J].天津市教科院学报,1998,(3).

串的组词范文3

关键词:苏教版;语文;词串;教学;建议

1、引言

“词串”是苏教版低年级语文教材中识字教学的一个特色内容,简单的来讲“词串”的内容就是每一行设置三个词语,并且每一课包含着四行,在同一行上填充的三个词语必须具有相同的词性,这就好比每一个词语都被串联在一起,整体看来就形成了一幅含有很多景物的虚拟画面。如果将他们分开来学习就是几个相互独立的词语,表面上互不相关,联系起来就又变成了一首前后押韵的小诗。这就是苏教版词串识字的最大特色,能够创设出丰富多彩的教学情境,将词语更加形象直观的表现出来。

2、词串教学的研究与发展

2.1早期阶段

词串教学的方法最早始于苏教版的小学语文教材,虽然其具备着良好的教学效果,但是在早期阶段没有被普遍的认可,只有部分学校对其进行了研究试用。在经过一定阶段的编排重组后,主张教学方法要贴近学生的生活,并且注重方法的指导,重点强调了其方法的整体性、形象性、可读性。在经过部分小学的试验教学之后,发现学生对词串教学的方法很感兴趣,并且能够有效地提高教学效率,因此可以看来早期阶段的词串教学方法发展比较顺利。

2.2发展与反思阶段

在经过了早期的发展之后,词串教学的方法一时间得到了广泛的关注,并且越来越的机构以及学者投入了词串教学的功能性、继承性、创新性的研究工作。经过不断的研究、探索和反思,将词串教学的情境性、生活型定为主要的教学方式,扩大了教学的实践范围。但是如何在教学实践中真正的体现情境教学与生活性教学的功能,发挥其重要的作用成为一个难题。

3、词串教学的原理

词串教学就是围绕一个特定的时空物事中心,然后在选定相关的词语,按照一定的意义进行来接,组成一定的词串,进行分行排列的押韵重组。并且这种方法具有其显著地特点,就是注重整体性、形象性、可读性。

其次,词串教学的语文教育功能是多方面的,小学生在课堂教学中对词串教学的方法非常感兴趣。通过这一类型课文的学习,能够让学生们更加轻松愉快的掌握课文中生字、生词,并且还能够大幅的提升小学生们的思维能力和空间想象能力。不但产生了学习字词、课文的浓厚兴趣,还为以后的阅读和写作奠定坚实的基础。通过词串的教学,能够帮助学生高效的进行汉子的识与记,能够帮助学生充分的认识事物、鉴赏出其中的美感体验、形成初步的审美能力,能够对以后的阅读和写作产生有效地过渡。

4、课堂教学的方法探索

当我们对词串教学的原理有了充分的认识之后,如何在教学中更进一步的发挥其以认字为中心的多功能效应,实现其教学的高效性成为一个重要的课题。

4.1揭题入境

在实际的教学实践中,教师应该遵循快速入题的原则,通过简短的指导将学生带入到课文的情境之中,充分的调动起学生学习的积极性和热忱情绪。例如在学习《识字5》课程时,教师可以通过提问问题的导入方式,提问:小朋友们你们谁去过大海啊?你们最喜欢大海的什么景色?(列举金色的沙滩、五彩的贝壳、湛蓝的海水、迷人的海风、雪白的浪花)讲述大海是多么的令人向往啊!来!小朋友们,让我们一起走入大海,去感受大海的美景,去看一看迷人的风情。这节课我们就来学习《识字5》,在展示一组有关于大海景物的词串。

4.2凭借文本自学字词

对于小学基础的儿童来说,他们已经学习了汉语拼音,并且有了一定的字词基础,具备了一定的初步识字能力。因此,教师要充分发挥学生的主体作用,将学习识字的主动权交还给他们,在一旁进行积极的鼓励,调动他们识字的热情与创造能力,这样一来可以很大程度上提高小学生的学习能力。例如,在教学中先引导学生借助拼音与字形的观察,来初步的进行生字词的认读,有效地建立起文字符号与声音的联系。在一定的熟悉之后在引导学生进行连词的认读,充分发挥他们的想象创造能力,教师此时还应该联系生活实际,结合情境图来进行旁敲侧击,让学生充分的建立起文字符号、语义、声音、字形的联系。通过实践的教学研究可以得出结论,通过这种方法进行教学,能够充分发挥学生思维的积极性与主动性,牢固的建立联系,增强记忆效果。

4.3词图对照

在学生达到正确认读字词的基础之上,教师可以引导学生按照自己的理解来参考课文图画,在通过图画的观察中找出与词语相对称的具体事物以及美感体验。

4.4诵读词串,展开联想,进入情境,品味欣赏

词串教学方法的一个重要环节就是诵读词串,它能够进一步的帮助学生认识事物、整体结合,达到自动化学习的目的。与此同时还能培养学生对祖国文字美的深厚的情感,更好地发挥其方法的多功能效应。

5、结语

综上所述,进行苏教版小语词串的教学应用是一项系统性工程,教师应该积极采取相应的措施,通过词串教学的方法有效地指导小学生进行高效的学习,为他们以后的学习、发展奠定坚实的基础。

参考文献

串的组词范文4

关键词 最长公共子序列;动态规划;递减子序列;回文词

中图分类号:G642 文献标识码:B

文章编号:1671-489X(2014)24-0109-03

Discussion of Longest Common Subsequence Problem in Course of Analysis and Design of Algorithm//LIU Wenqiang, ZHOU Bo, SANG Haitao, GU Zeyuan, HAN Na

Abstract This paper introduces a dynamic programming algorithm of the longest common subsequence problem in the course of analysis and design of algorithm, by use of which this paper solves the longest descending subsequence problem and the construction of the palindromic sequence problem. By solving the two problems, will help students draw inferences about other cases from one instance, inspire students’ thinking, apply their knowledge to all, improve the ability of problem solving.

Key words longest common subsequence; dynamic programming; descending subsequence; palindromic sequence

在算法分析与设计课程中,最长公共子序列问题是一个可用动态规划方法求解的经典最优化问题,它可以描述两个序列之间的“相似度”。该问题是一个十分实用的问题,利用该问题可以有效地求解许多实际问题。

该问题描述为:给定两个序列X和Y,当另一序列Z既是X的子序列,又是Y的子序列时,称Z是序列X和Y的公共子序列;如果Z是X与Y的公共子序列中长度最大的,则称Z是X和Y的最长公共子序列[1]。例如,序列X={A,B,C,B,D,A,B},Y={B,D,C,A,B,A},则序列{B,C,A}和序列{B,C,B,A}都是X与Y的公共子序列,而{B,C,B,A}是X与Y的一个长度为4的最长公共子序列。

可以用穷举法求解该问题,但穷举法的时间复杂度较高,为指数级,效率较低。利用动态规划方法可有效求解该问题,其时间复杂度为多项式级,效率较高。

1 最长公共子序列问题的动态规划算法

下面给出一个定理,该定理表明最长公共子序列问题具有最优化结构性质。

定理1[2] 设序列X={x1,x2,…,xm},序列Y={y1,y2,…,

yn},且X与Y的最长公共子序列为Z={z1,z2,…,zk},则有:

1)若xm=yn,则zk=xm=yn,且Zk-1是Xm-1和Yn-1的最长公共子序列;

2)若xm≠yn,则zk≠xm,则Z必是Xm-1和Y的最长公共子序列;

3)若xm≠yn,且zk≠yn,则Z是X和Yn-1的最长公共子序列。

由此可见,两个序列的最长公共子序列中包括了这两个子序列的前缀的最长公共子序列,因此该问题具有最优子结构性质。

设用c[i][j]保存序列Xi={x1,x2,…,xi}和Yj={y1,y2,…,

yj}的最长公共子序列的长度,则根据定理1可得c[i][j]满足的递推关系式如下[3]:

根据该递推关系式,利用自底向上的计算方式可以设计出求解最长公共子序列问题最优值的算法,算法描述如下:

int c[100][100];

void LCSlength(char x[], char y[], int m, int n)

{ //动态规划法求最长公共子序列的最优值算法

int i,j;

for(i=0; i<=m; i++) c[i][0]=0;

for(j=0;j<=n;j++) c[0][j]=0;

for(i=1;i<=m;i++)

for(j=1;j<=n;j++)

{

if(x[i]==y[j]) c[i][j] = c[i-1][j-1]+1;

else if(c[i-1][j]>=c[i][j-1]) c[i][j] = c[i-1][j];

else c[i][j] = c[i][j-1];

}

}

2 利用最长公共子序列求解最长递减子序列

最长递减子序列问题描述 给定由n个整数a1,a2,…,

an构成的序列,在这个序列中随意删除一些元素后可得到一个子序列ai,aj,ak,…,am,其中1≤i≤m≤n,i

kak>…>am,则称序列ai,aj,

ak,…,am为原序列的一个递减子序列,长度最长的递减子序列即为原序列的最长递减子序列。

该问题在ACM国际大学生程序设计竞赛中有很多应用,很多问题的原型可以归结为该问题。最长递减子序列问题可以用动态规划方法直接求解,思路是先求出以原序列中的每一个元素为尾元素的最长递减子序列的长度,然后从中选择长度最大的即为整个序列的最长递减子序列。该问题也可以利用最长公共子序列问题来求解,该方法与直接动态规划方法求解时间复杂度相当。

利用最长公共子序列求解最长递减子序列 由于最长递减子序列问题是求解一个给定序列的最长递减子序列,因此要用最长公共子序列问题来求解最长递减子序列问题,首先要构造出第二个序列,即让原序列和哪个序列求最长公共子序列才能得到原序列的最长递减子序列。显然,只需将原序列降序排序,得到降序序列,再让原序列和降序序列求一下最长公共子序列,则这个最长公共子序列即为原序列的一个最长递减子序列。要注意的是,在最长公共子序列算法中,两个参数数组都是字符数组,在求解最长递减子序列问题时,需先将两个参数数组改为整型数组。算法如下:

void LIS(int a[],int x[],int m)

//该算法求解x[1:m]这个长度为m的整型数组的最长递减子序列长度

{

for(int i=1;i<=m;i++) //输入数组x

scanf(“%d”,&x[i]);

for(int i=1;i<=m;i++) //数组a为数组x的副本

a[i]=x[i];

mergesort(a,1,m); //对数组a进行递减归并排序

LCSLength(x,a,m,m); //求数组x与数组a的最长公共子序列长度

}

3 利用最长公共子序列求解回文词的构造问题

回文词的构造问题描述 对于任意给定的一个字符串(由大写字母、小写字母和数字字符构成),都可以通过插入若干个字符的方法将其变成一个回文串。例如:给定一个字符串Ab3bd,在插入两个字符后就可以变成一个回文串,如可以在A的左边添上一个d,再在最后一个d之前添上一个A,这样改造后的字符串为dAb3bAd,它是一个回文串。那么对于任意给定的一个字符串,最少要插入几个字符才能将其变成回文串呢?该问题是IOI2000中的一道经典题目,可以直接用动态规划方法来求解,但也可以巧妙地利用最长公共子序列问题来求解。

利用最长公共子序列求解回文词的构造问题 假定给定的字符串表示为X=x1x2x3…xn,它有n个字符,该问题要求的是一个最小的整数m,使得存在一个字符串X′=y1y2y3…ym+n,它有m+n个字符,满足X是X′的一个子串,而且X在X′中可以是不连续的,并且X′是一个回文串。其实,X′就相当于是在X中插入m个字符后得到的字符串,且它是一个回文串。例如,若X=Ab3bd,则最小的整数m为2,即在X中插入2个字符后可以变成一个回文串,得到的新串为X′,X′=dAb3bAd或X′=Adb3bdA,显然X是X′的子串,而且在X′中是不连续的。

现在把X′中的字符分为两类。对于X′中的字符来说,如果与它相对称的字符是新添加的,那么就将这样的字符看成是第一类,把它保存在集合set1中;反之,如果与它相对称的字符是属于集合X的,那么就将这样的字符看成是第二类,把它保存在集合set2中。

例如:对于前面的这个例子来说,X=Ab3bd,X′=dAb3bAd,在X′中与最后一个位置上的d相对称的字符是第一个位置上的d,它是新添加的,因此最后一个位置上的d属于集合set1;与第二个位置上的A相对称的字符是第六个位置上的A,它也是新添加的,因此第六个位置上的A也属于集合set1,因此set1={A,d};而对于X′中第三个位置上的b,相对称的字符是第五个位置上的b,它不是新添加的,是原来X中的字符,因此第三个位置上的b属于集合set2;与X′中第四个位置上的3相对称的字符是该字符本身,它也不是新添加的,是原来X中的字符,因此第四个位置上的3属于集合set2;与X′中第五个位置上的b相对称的字符是第三个位置上的b,它也不是新添加的,是原来X中的字符,因此第五个位置上的b也属于集合set2,因此set2={b,3,b}。那么关于两个集合set1和set2,很容易得到下面两个性质:

1)由这两个集合中的字符恰好构成字符串X,即有集合set1中的字符个数加上集合set2中的字符个数必等于字符串X中的字符个数n,可以表示为|set1|+|set2|=n;

2)集合set2中的字符恰好构成字符串X的一个回文子串。

由这两个性质不难看出,要将X变成回文串,其实只需看集合set1中有几个字符即可,集合set1中有几个字符就需要添加几个字符,因为集合set2中的字符已经具有回文性质。那么最少需要添加几个字符才能使X变成回文串,也就是让集合set1中的字符个数尽可能少,而集合set1的中的字符个数等于n减去集合set2中的字符个数,即|set1|=n-|set2|。因此,要想使集合set1的中的字符个数尽可能少,就要使集合set2中的字符个数尽可能多,这个问题实质上就是求字符串X的最长回文子串。当求出X的最长回文子串后,最少需要添加的字符个数就等于X的长度n减去最长回文子串的长度。

那么如何求给定字符串X的最长回文子串呢?X的最长回文子串实质上就是X的一个回文子串,且该子串在X的所有回文子串中是长度最长的一个。这里要注意的是X的回文子串可以是不连续的,而回文子串有一个非常重要的性质,那就是正着读和反着读是一样的。既然正着读和反着读是一样的,那显然只需将字符串X翻转得到它的逆串Y,然后求X与Y的最长公共子序列即为字符串X的最长回文子串。因此,求回文词的构造问题的方法就是:首先将给定的字符串X翻转得到它的逆串Y,然后求X与Y的最长公共子序列,那么X的字符个数n减去最长公共子序列的长度即为将X变成回文串时最少需要添加的字符个数。

算法如下:

int huiwen(int n,char x[],char y[]) //该算法求解x[1:n]

这个长度为n的字符串变为回文串时最少要插入的字符个数

{

for(int i=1;i<=n;i++) //向字符数组x中输入一个字符串

scanf(”%c”,&x[i]);

for(int i=1;i<=n;i++) //求字符串x的逆串,保存在字符数组y中

y[i]=x[n-i+1];

LCSLength(x,y,n,n); //求原串x与逆串y的最长公共子序列长度

return n-c[n][n]; //返回将串x变为回文串最少要插入的字符个数,c为全局数组

}

4 结论

文章介绍了算法分析与设计课程中最长公共子序列问题的动态规划算法,然后重点讨论了它的两个应用,即应用最长公共子序列问题求解最长递减子序列问题和回文词的构造问题,并给出相关的求解算法。笔者在授课过程中通过讲解这两个应用,使得学生对最长公共子序列问题有了更深刻的理解,有助于学生学以致用,举一反三,收到了非常好的效果。

参考文献

[1]郑宗汉,郑晓明.算法设计与分析[M].2版.北京:清华大学出版社,2011:186-189.

[2]王晓东.算法设计与分析[M].北京:清华大学出版社,

2006:71-74.

[3]郑翠玲.最长公共子序列算法的分析与实现[J].武夷学院学报:自然科学版,2010,29(2):44-48.

*基金项目:本文系2014年黑龙江省高等教育教学改革项目“工程能力为目标的程序设计课程体系研究”(项目编号:JG2014010997)、

串的组词范文5

关键词:编译原理;教学案例;相似性检测

中图分类号:G64文献标识码:A 文章编号:1673-9795(2014)04(A)-0000-00

Design of an Integrated Application-oriented Teaching Instance

in “Compiler Principle”

ZHANG Ni,YAN Di-xin,LU Wei-zhong

(School of Electronic and Information Engineering, USTS, Suzhou 215011)

Abstract: Facing to the practice problems of the lack of the "compiler principle" teaching,the paper designed an integrated application-oriented teaching instance . The instance make compiler principle course as center, and integrate using of the relations knowledge of other professional courses,and has a similar detection function which can detect similarity of the students’ project, and verify the originality of students’ project. The design and implementation of the instance are completed by different combinations and expansion of knowledge. The instance make up for the deficiencies in teaching process, and also has a certain practicality.

Key words: Compiling Principles; teaching instance; similarity detection

“卓越工程师教育培养计划”是教育部于2010年6月启动的为期10年(2010―2020年)的重大改革项目。该计划旨在培养一大批创新能力强、适应社会经济发展需要的高质量工程技术人才[1-3]。编译原理课程作为计算机专业卓越工程师培养计划中一门核心专业基础课程,在新形势下要求其教学过程必须以学生为中心,巩固理论知识,加强实践教学,注重学生创新意识的培养。

然而,由于编译原理课程教学内容不仅包含形式语言、有限自动机、正规文法、正规表达式和LL(1)分析法等理论知识,而且编译的每个阶段都包含大量的复杂算法,学生在学习过程中感到抽象和难以理解[4]。通过对国内各高等院校教学现状的调查,目前编译原理课程教学过程中存在编译教学难点较多[5],实践环节缺少实际应用背景和以及未与其他课程进行有效的融合[6]等几个方面问题。为了达到“卓越计划”培养目标,必须对现有的教学方法和手段进行改革,探讨如何将编译原理课程的理论知识应用于实践或实际项目和如何加强编译原理课程与其他计算机课程之间的联系的问题,更好地将理论知识点贯穿融合到实践教学或实际项目中。

本文在“卓越计划项目”的资助下,将案例教学法[7,12,13]引入编译原理课程的教学过程中。通过选取恰当的理论知识点,结合数据结构、面向对象程序设计等计算机专业的相关课程,设计了一个能吸引学生兴趣,实践强化的综合应用型教学案例。

1 案例设计思想及意义

在计算机专业程序设计类课程的教学过程中,学生提交作业的形式是源程序的电子文档,这为有些同学拷贝和抄袭提供了便利,不仅影响学生对课程的掌握度,还影响了老师判分的公正性。程序相似性检测技术能够对学生提交的程序设计作业进行检测,验证学生作业的原创性,帮助教师在大量的学生作业中找出相似性较高,即存在抄袭嫌疑的作业对象[11],也有利于发现学生的创新性成果。通常程序相似性检测过程由程序源代码预处理,源代码转化,相似性比较,结果检测四个阶段构成。

在设计案例时,我们用编译原理课程中词法分析和语法分析算法思想来完成代码相似性检测过程中的源代码预处理和源代码转化两个阶段,使用数据结构课程中学过的字符串比较算法(如最长公共子序列算法等)作为相似性检测算法,可以选择案例开发环境有Eclipse,VC6.0和VS2010等。

此案例以编译原理课程为中心,结合了数据结构、面向对象程序设计等计算机专业的相关课程,实现了具有程序相似性检测功能的系统。大多数学生在理解和掌握案例中给出知识点的基础上,通过对其进行不同组合来完成案例的设计和程序实现,达到教学的基本要求,基础好的学生在掌握已给出案例的基础上选择更难的知识点来设计和实现案例,学到更多知识。使学生通过一个综合案例的设计和实现,巩固了多门课程的相关知识点,弥补了课程教学中缺乏实践的问题,加强计算机相关课程之间的横向联系,培养学生的学以致用的实践能力和创新能力。

2 案例相关的知识点

案例教学法的核心是案例的设计,案例设计应该与教学内容、教学进度相适宜,能恰当地融入相关的知识点。本案例的相关知识点有:与编译原理课程相关的基于程序设计语言的词法分析程序实现方法(手工方式)和基于LEX的词法分析程序实现方法(自动方式);与数据结构课程相关的一些字符串比较算法,如最长公共子序列(LCS)算法,Halstead算法和RKR-GST算法等;以及有一定的面向对象编程基础,能使用JAVA,C++,C#等其中一种语言编写程序。学生在熟悉和掌握这些知识点的基础上进行案例的设计和实现。

2.1 词法分析程序的实现方法

词法分析程序的工作原理是,从左至右扫描源程序的字符串,按照词法规则(正则文法规则)识别出一个个正确的单词,并转换成该单词相应的二元式(种别码、属性值),以数组、链表或文本文件等形式保存,交给后续模块使用。通常构造词法分析程序有两种方法。第一种是手工方式,即根据识别语言单词的状态转换图,使用某种高级程序设计语言,如C、C++、JAVA等,直接编写词法分析程序。第二种是自动方式,即利用LEX工具自动生成词法分析程序。

2.1.1 基于程序设计语言的词法分析程序

设计的主要思想就是构造出目标语言单词符号的有穷自动机(DFA)。手工方式实现词法分析的程序的步骤分为四个阶段,第一,定义目标语言的可用符号表和构词规则,即目标语言单词的状态转换图;第二,依次读入源程序符号,对源程序进行单词切分和识别,直到源程序结束;第三,对正确的单词,按照它的种别以〈记号类别,属性值〉的形式保存在符号表( 数组或链表)中;最后对不正确的单词,做出错误处理。

2.1.2 基于 LEX的词法分析程序

LEX是一个词法分析器[8]的自动生成系统,它的输入是一个文本文件,文件的扩展名习惯用.l表示,称之为LEX源文件,该文件包含了用户定义的正规表达式以及每个正规表达式相对应的处理动作。LEX的工作原理是将源程序中的正规式转换成相应的DFA,而相应的动作则插入到输出的词法分析器中适当的地方,控制流由该DFA的解释器掌握。对不同的源程序,这个解释器是相同的。LEX最常见的版本是Flex,可以免费得到。基于 LEX的词法分析程序设计思路:编写LEX源文件,按要求抽象出正规表达式,同时滤掉输入串中所有的空格、Tab、回车及注释,最终形成.l文件。最后使用Flex编译器生成词法分析程序。

2.2 字符串匹配算法

除了数据结构课程已经介绍的字符串匹配算法(KMP算法),本案例还可以使用其他的字符串匹配算法,如最长公共子序列(LCS)算法,Halstead算法和RKR-GST算法等。依据词法分析程序的输出结果(单词符号串),利用字符串匹配算法来度量两个标记串的相似度。本案例提供这些算法的实现思想和源代码,供学生参考和进一步改进。

2.2.1 最长公共子序列(LCS)算法

LCS(Longest Common Subsequence)算法[9]即求两个字符串的最长公共子序列算法。算法的主要思想是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0。然后求出对角线最长的1序列,其对应的位置就是最长公共子序列的位置。其算法由求最长公共子序列的长度Length(l,j)和最长公共子序列LCS(A,B)两步构成。

2.2.2 Halstead算法

Halstead算法[10]以源代码中出现的操作符和操作数为计数对象,以它们的出现次数作为计数目标来测算程序容量和工作量。其基本原理是:统计每个程序段中用到的操作符和操作数,最终生成一个特征向量。操作符包括所使用编程语言的关键字、运算符和标准库名称。操作数是指程序段中所有由用户自己定义的符号串。系统为每个待检测相似性的源代码生成一个特征向量之后,再计算每两个向量之间的欧几里德距离,若两个程序段的特征向量之间的距离很小,就可以认为这两段程序很相似。

2.2.3 RKR-GST算法

RKR-GST (Running Karp Rabin Greedy String Tiling)是一种贪婪式字符串匹配算法[14],循环求取两个标记串中未被匹配部分的最大公共子串,并根据相应公式求出两个字符串的相似度。对源程序代码进行相似性检测的过程通常可分为两个阶段:第一阶段,对源程序进行词法分析或语法分析,剔除与程序结构无关的表面元素,产生标准化输出。第二阶段,采用字符串匹配技术两两比较各程序的标准化输出,进行相似度度量,求出其相似度。

3 案例设计与实现

本案例要求学生选择一种熟悉的开发平台(VC 6.0,Eclipse,VS 2010等),依照第二节中给出的基本知识点(学生需提前查阅相关资料,做好预习),通过对知识点的不同组合和扩展,如基于程序设计语言的词法分析程序+ LCS算法,基于 LEX的词法分析程序+RKR-GST算法和基于程序设计语言的词法分析程序+RKR-GST算法等,设计具有程序相似性检测功能的系统,然后编程实现综合教学案例系统。

在此,将以采用基于 LEX的词法分析程序(自动方式)来完成代码预处理及转换,使用RKR-GST算法进行代码相似性检测为例,给出设计和实现程序相似性检测系统的过程。在学生设计和实现本案例前,教师先演示这个已事先设计好的案例供学生参考,让学生对案例实现过程有一个直观的认识。本次设计具体分为代码预处理及转换、将源代码转化为标记串、RKR-GST算法实现及结果分析四个阶段。

3.1代码预处理及转换阶段

在理解有穷自动机知识点的基础上,结合第二节中给出的设计思想,设计了LEX源文件――LexScanning.l,其中自定义了一些词法规则、getToken()以及printToken()等函数,实现了词法分析功能,同时滤掉了用户源程序中所有的空格、Tab、回车及注释。如图1所示。之后使用Flex编译器将LexScanning.l文件编译生成名为CiFa.exe词法分析程序。

图1 LexScanning.l文件

3.2将源代码转化为标记串

在主程序中运行时,通过创建一个线程来调用CiFa.exe文件,进行词法分析,将用户源代码转化为标记串。

3.2.1参数设置

STARTUPINFO si;

memset(&si,0,sizeof(STARTUPINFO));

si.cb=sizeof(STARTUPINFO);

si.dwFlags=STARTF_USESHOWWINDOW;

si.wShowWindow = SW_HIDE;

PROCESS_INFORMATION pi;

3.2.2 创建线程

CString cmd = _T("CiFa.exe ")+m_file_path_1;

if(CreateProcess(_T("CiFa.exe"),(LPTSTR)(LPCTSTR)cmd,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))

{ WaitForSingleObject(pi.hProcess,INFINITE);

CFile file(_T("C:\\temp.txt"),CFile::modeRead);

……

dwFileLen=file.GetLength();

pBuf=new CHAR[dwFileLen+1];

pBuf[dwFileLen]=0;

…… }

3.3 RKR-GST算法

两个程序段之间的相似性即为它们对应的标记串之间的相似性。可将每个标记串看成由若干个子串组成,那么两个标记串中相同的子串就是它们的公共子串,其相似性可用所有公共子串在整个串中所占的百分比表示。公式如下[14]:

其中: | A |、|B |为token串A、B的长度。match(i,j,length ) : 在 A 中起始位置为i,在B中起始位置为j, 长度为n 的子串。Matches为公共子串集合。

案例中设计了函数void Greedy_String_Tiling (tile_type *tiles, char *A, char *B, unsigned MML) 循环求取两个标记串中未被匹配部分的最大公共子串,并根据公式求出两个token串A、B的相似度。其中参数 *tiles存放求出的所有最长公共子串,*A和*B分别来存放字符串A和字符串B,MML给出公共子串应达到的最小长度。

4 系统的测试及结果分析

准备了三个C语言源程序作为测试用例,其中测试用例一(test1.c)和测试用例二(test2.c)有少数变量名不一样和源程序的组织结构稍有差别之外,其他的内容几乎一样。测试用例三(test3.c)与测试用例一和测试用例二在内容和结构上则完全不一样。

4.1 test1.c与test2.c的比较

运行程序,点击“浏览”按钮选择要比较的两个源程序文件test1.c和test2.c,点击“词法分析”按钮输出test1.c和test2.c经词法分析后的结果,如图2所示。

图2 词法分析结果

接下来,设置相似阈值为5之后,点击“比较”按钮,则进行两个源程序的相似性比较,比较的结果如图3所示。两个文件的相似度为91.089112%,结果符合我们的预想。

图3 相似性检测结果

4.2 test1.c与test3.c的比较图4给出了test1.c和test3.c的相似性检测结果,过程与上面相类似。相似度为13.265306%,符合我们的预期。

图4 相似性检测结果

5 结语

本文给出了笔者在编译原理教学过程中使用的一个案例。该案例以编译原理课程为中心,结合数据结构、面向对象程序设计等计算机核心专业课程,将几门课程的知识点联系在一起,突出“编译原理”课程的实用性。学生在实现综合案例之前,教师通过对已实现案例的演示,让学生有对实验过程及要求有了直观的了解,促使学生设计实现出更好的具有程序的相似性检测功能系统,巩固编译原理和数据结构等课程相关的知识点,激发学习兴趣,提高学生的学习质量和效率。今后的教学研究中,我们将对该案例进行扩展,使之能分析如.net等高级语言编写的源程序代码,增加一些新的知识点,进而可供高年级学生在课程设计中使用。

参考文献

[1] 林健.面向卓越工程师培养的研究性学习[J]. 高等工程教育研究,2011,(6):5-15.

[2] 徐世军,范伟,黄贤英.面向卓越工程师培养的专业课程教学实践. 计算机教育.2013(13) 22-25.

[3] 李锋,夏小玲.计算机软件工程专业卓越计划实践教学. 计算机教育.2013(13) 18-21.

[4] 李冬梅,施海虎."编译原理"课程的教学研究与探索. 计算机教育.2008(08):10-12.

[5] 张昱,陈意云,郑启龙. 编译原理课程的教学方法和教材建设[J]. 中国大学教学,2005,(7):61-62.

[6] 计卫星,陈英等.简析计算机专业知识在编译课程教学中的渗透与融合.计算机教育. 2010(03):23-25.

[7] 秦艳琳,吴晓平.“信息安全数学基础” 案例教学[J].计算机教育,2010(01):141-144.

[8] 陈火旺,刘春林,谭庆平等. 程序设计语言编译原理[M].北京:国防工业出版社,2000.

[9] 于海英.字符串相似度度量中LCS和GST算法比较[J].电子科技,2011(3):101-103.

[10] Halstead, Howard M. Elements of Software Science[Z].Elsevier,1977.

[11] 张莉,周祖林.代码相似性检测在程序设计教学中的应用.计算机教育.2009(13):116-118.

[12] 张月琴,孙冰.案例教学法在“大学信息技术”课程中的应用研究[J].中国电力教育,2012,(25):63-64.

串的组词范文6

关键词:串匹配;匹配率;考试系统;中文字符串

中图分类号:TP391.1

近似字符串匹配在入侵检测、文本编辑、移动短消息过滤、信息查询、信息提取等领域都有重要应用,已成为计算机算法设计的一个重要研究课题,本文的研究主要是在考试系统中的中文字符串匹配。

在考试系统中,对选择题的答案进行判断时,我们需要的是将考生输入的答案跟标准答案进行匹配即可,匹配函数也较为简单,很多开发软件都自带有相应的功能,可以直接导入答案进行匹配,看串匹配是否完全一致即可判断是否正确。但对中文录入的题型,若简单地比较考生输入的答案与给定的答案是否一致,显然是科学的,在此要求出最大两个中文字符串的最大相似度,在本文中称为最大匹配率,然后根据所求的匹配率来给出成绩。

1 问题分析及相关研究

在对中文字符串进行比较时,不对字符串的顺序进行相应的检查,因此,在对字符串进行比较时,需要对两个字符串用相应的英文字符来进行标识。方法如下:对于给定答案中的中文字符串,用字母来标识每一个中文汉字或词组,对考生输入的字符也进行标识,如果输入的字符在给定的答案中没有出现,则统一用一个英文字符W来标识。但是中文的字符串不像英文字符串,中文字符串,从汉语的表达方式来看,字符串中各个字符与相邻字符关系都是密不可分的,因此利用汉语表达的这个特点,找出了一种更合理的判定两个中文字符串的相似度的方法,并对原有的偏移距离算法做了相应的改进,方法如下:

首先,设字符串S1长度为n,字符串S2长为m,ed[i,j]表示偏移距离,定义一个矩阵Emn

其次,初始化:ed[i,0]=i;ed=[0,j]=j;

E[i,0]=0;E[0,j]=0;

然后通过伪代码进行程序编写,输入字符串A和字符串B,并进行相应的字符偏离误差值进行设置,进行字符的相似匹配率的算法。这样,运行一次偏移距离匹配算法不仅可以得到两个字符串的偏移距离ed[i,j]值,而且可以得到更重要的关于字符串之间相同字符组合单元的信息,因此,这无疑将大大提高对两个字符串相似度判定的精确率。

另外,由于在规则匹配过程中,规则字符串长度各不相同,那么偏移距离误差阀值也应当有所不同,因此在本考试系统中,是动态的设定偏移距离误差阀值。在对A、B两字符串进行比较进行求匹配率时,首先要求出两个字符串中相匹配的字符个数。而这里所说的匹配是一种近似的匹配,要求不像完全匹配那样严格。它只要求字符按照一定的顺序来进行匹配,但不要求字符连续匹配,可以间断性的匹配。假如A字符串与B字符串中的字符跳跃性地进行匹配,相匹配的字符数为25,而标准字符串中字符的个数为35,所以A字符串与B字符串的匹配率为0.71,从这个匹配的情况来看,就涉及到匹配的时间及匹配的准确度。

2 匹配结果分析比较

为了更好的分析匹配效果,下面就实验的情况及结果进行分析对比,实验用的数据是比较规则的字符串,词组相对也比较多,我们从这些数据中随机选取一部分,从语义的理解上对可以匹配的字符进行统计,然后采用传统的偏移距离算法和改进后的偏移距离算法分别对选取的数据进行相似度比较分析,通过偏移距离误差阀值的大小来进行统计,如偏移距离小,则认为两中文字符串可以匹配,衡量算法有效性的标准是查准率Q和检测时间T,查准率Q是指判定两中文字符串可匹配的准确率,定义如下:Q=正确判断出可匹配的字符串对数目除以给定需要匹配的字符串字符数目。

检测时间T是指采用不同算法的程序来判定完所有实验数据所需要的时间。所有实验均在同一台计算机上完成,实验结果情况如下:

耗时比较情况:

由本实验结果可见,笔者提出的改进后的偏移距离算法,由于在算法步骤上比传统偏移距离算法多了一步数据的遍历,故在算法耗时上稍微多一点,但在匹配率上,有了较大的提高,因此在本系统中的规则匹配模块中使用改进的偏移距离算法,取得了一定的效果。

3 小结及展望

本文介绍了中文字符匹配的相关技术,依据实验中分析得到的结果,针对中文字符串的匹配还是有一定的效果,并通过偏移距离算法来最大程度的找出最大匹配率 ,也针对中文语言表达的特点提出了改进后的偏移距离算法,并用实验数据验证了改进后的偏移距离算法的有效性,并分析了这些算法的不足之处。

笔者在研究过程当中深深感到,中文字符的匹配是比较复杂的,但要体现出其实用价值,必须要和其它相关应用的领域密切的结合起来,这就必须具备多方面的知识,如自然语言处理技术,词组、短语拆分技术等,因此,对于语义处理和知识表示方面都存在许多困难,也因为中文字符的组合词义比较丰富,语法和语义方面与英文差别较大,所以要将算法应用于中文匹配中,还要加大研究。本文在研究过程中,限于中文字符的复杂性,在自然语言的理解上并没有进行改进,只是利用自然语言现有的研究成果。另外,本文中算法性能的相关测试都是本人验证,由于思维、数据的局限性,这可能影响实验的充分性,中文字符匹配算法一直没有受到足够的关注,但随着国内语言系统、知识发现等研究的深入,中文语言的识别技术的发展和突破,在一定程度上会促进中文字符匹配技术的研究和发展,因此,通过大家的不断努力,基于考试系统中的中文匹配处理技术必将给人们的工作及生活提高效率。

参考文献:

[1]陈开渠,赵洁,彭志威.快速中文字符串模糊匹配算法[J].中文信息学报,2004,18(2).

[2]C.Chai-Hui,K.Mohanmmed.A Survey of Web Information Extrac-tion Systems,IEEE Transactions on Knowledge and Data Engineering,Vol.18,2006.

[3]张振莲,李金莱.XML数据与关系数据库的转换及实现[J].南阳师范学院学报,2009,12(8).

[4]邓梦浪,陈斌全,刘琳岚.一种XML Schema到关系模式的转换方法[J].计算机应用与软件,2010,27(6).