Zn http://spaces.msn.com/znzhou/ 模式匹配与KMP算法 Zn http://spaces.msn.com/znzhou/ 2006-4-9.

Slides:



Advertisements
Similar presentations
四川财经职业学院会计一系会计综合实训 目录 情境 1.1 企业认知 情境 1.3 日常经济业务核算 情境 1.4 产品成本核算 情境 1.5 编制报表前准备工作 情境 1.6 期末会计报表的编制 情境 1.2 建账.
Advertisements

主编:邓萌 【点按任意键进入】 【第六单元】 教育口语. 幼儿教师教育口 语概论 模块一 幼儿教师教育口语 分类训练 模块二 适应不同对象的教 育口语 模块三 《幼儿教师口语》编写组.
第一組 加減法 思澄、博軒、暐翔、寒菱. 大綱 1. 加減法本質 2. 迷思概念 3. 一 ~ 七冊分析 4. 教材特色.
海南医学院附 院妇产科教室 华少平 妊娠合并心脏病  概述  妊娠、分娩对心脏病的影响  心脏病对妊娠、分娩的影响  妊娠合病心脏病的种类  妊娠合并心脏病对胎儿的影响  诊断  防治.
LOGO 三年二班主题班会 我们的节日 —— 清明节. LOGO Page  2 《英 雄 赞 歌》 鲜花 象灿烂的火把燃烧在眼前 …… 五星红旗 象熊熊的烈焰映红了苍穹 …… 面对庄严的墓碑 我们心如潮涌 面对先烈的英灵 我们热泪盈眶 …… 耳边,仿佛还震荡着激烈的枪炮声 眼前,好像还弥漫着战斗的浓浓硝烟.
植树节的由来 植树节的意义 各国的植树节 纪念中山先生 植树节的由来 历史发展到今天, “ 植树造林,绿化祖国 ” 的热潮漫卷 了中华大地。从沿海到内地,从城市到乡村,涌现了多少 造林模范,留下了多少感人的故事。婴儿出世,父母栽一 棵小白怕,盼望孩子和小树一样浴光吮露,茁壮成长;男 女成婚,新人双双植一株嫩柳,象征家庭美满,幸福久长;
客户协议书 填写样本和说明 河南省郑州市金水路 299 号浦发国际金融中 心 13 层 吉林钰鸿国创贵金属经营有 限公司.
护理学基础 第七章 医院与住院环境.
浙江省县级公立医院改革与剖析 马 进 上海交通大学公共卫生学院
第二章 环境.
產學攜手合作計畫 楊授印 國立虎尾科技大學 推廣教育中心 主任 動力機械工程系 助理教授 民國103年10月30日.
教师招聘考试 政策解读 讲师:卢建鹏
了解语文课程的基本理念,把握语文素养的构成要素。 把握语文教育的特点,特别是开放而有活力的语文课程的特点。
北台小学 构建和谐师生关系 做幸福教师 2012—2013上职工大会.
教学设计要素分析 太原师范学院 丁相平
福榮街官立小學 我家孩子上小一.
第2期技職教育再造方案(草案) 教育部 101年12月12日 1 1.
企业员工心态管理培训 企业员工心态管理培训讲师:谭小琥.
历史人物的研究 ----曾国藩 组员: 乔立蓉 杜曜芳 杨慧 组长:马学思 杜志丹 史敦慧 王晶.
教育部高职高专英语类专业教学指导委员会 刘黛琳 山东 • 二○一一年八月
淡雅诗韵 七(12)班 第二组 蔡聿桐.
第七届全国英语专业院长/系主任高级论坛 汇报材料
小數怕長計, 高糖飲品要節制 瑪麗醫院營養師 張桂嫦.
制冷和空调设备运用与维修专业 全日制2+1中等职业技术专业.
会计信息分析与运用 —浙江古越龙山酒股份有限公司财务分析 组员:2006级工商企业管理专业 金国芳 叶乐慧 魏观红 徐挺挺 虞琴琴.
第六章 人体生命活动的调节 人体对外界环境的感知.
密云季庄小 学心理讲座 合理情绪 幸福生活 武金红 密云教研中心.
芹菜 英语051班 9号 黄秋迎 概论:芹菜是常用蔬菜之一,既可热炒,又能凉拌,深受人们喜爱。近年来诸多研究表明,这是一种具有很好药用价值的植物。 别名:旱芹、样芹菜、药芹、香芹、蒲芹 。 芹菜属于花,芽及茎类。
2012年 学生党支部书记工作交流 大连理工大学 建工学部 孟秀英
第九章 会计设置及机构.
新时期专业内涵建设 思考与实践 浙江机电职业技术学院 管 平 2013/5/31.
第二讲 职业概论.
教育的理想和教育家成长 成都.
电子商务企业创新分析 ——京东商城
牡丹江旅游景点介绍.
2011计算机类教研活动 陈国久.
中学生社会适应问题及其调适.
大连工业大学员工私家车保险 优惠方案 平安产险大连分公司 2011年1月 1.
“法人代表”为员工投保操作手册 海康经代.
教育部技職司 北區:2015年10月12日下午 南區:2015年10月16日下午
开题报告.
战争结束了 年11月,听到停战的消息,巴黎街头人们欣喜若狂。法国总理克里孟梭说:“吻我的姑娘有500多个了。”
问题解决与创造思维 刘 国 权 吉林省高等学校师资培训中心.
课程改革:培养学 生的独立人格 ——中学校长《课程改革 与校长担当》论坛的讲话 郭振有
第四单元 自觉依法律己 避免违法犯罪.
唐雪峰 四川省疾病预防控制中心 四川省促进基本公共卫生服务均等化指导中心 2015年1月30日
算法设计与分析 Algorithm Design and Analysis
南投縣永昌國小 自衛消防編組訓練.
技术试验及其方法 制作者 : 贾琼瑞
中国企业社会责任探讨 2010思政四组
地铁环游电影场.
2013级研究生年级大会 南京理工大学设计艺术与传媒学院
药店会员制营销.
浙江省公务卡结算制度.
第4章 串 串的基本概念和C语言的串函数 串的存储结构 动态数组实现的顺序串 串的模式匹配算法——BF算法 主要知识点.
数据结构 Data Structure 主讲人:王国军,郑瑾 中南大学 中南大学信息院计科系
主讲人: 吕敏 { } Spring 2012 ,USTC 算法基础 主讲人: 吕敏 { } Spring 2012 ,USTC.
長智文化事業有限公司 Product Specialist 鄒怡嬋
國立中山大學30週年校慶籌備委員會 中山大學30週年校慶籌備會 第二次工作會議 03/29/2010.
数 据 结 构 Ch.4 串 计 算 机 学 院 肖明军
String Matching Michael Tsai 2012/06/04.
Data Scientists 資料科學學位學程 新生說明會
2017 添加标题.
屏東之排灣族探索 之兩天一夜旅遊~.
2013年工作总结及14年计划 人力资源部 二〇一三年十二月.
知识点二 国际环境法的实施.
第五章 串和数组 5.1 串的定义和操作 5.2 串的表示和实现 5.3 字符串应用 5.4 字符串匹配算法 5.5 数组
String Matching Michael Tsai 2013/05/28.
IEEE Computer Society 智泉國際事業有限公司 2019年5月14日.
字符串模式匹配- KMP 主讲:朱佳 博士 华南师范大学计算机学院.
Presentation transcript:

Zn http://spaces.msn.com/znzhou/ 模式匹配与KMP算法 Zn http://spaces.msn.com/znzhou/ 2006-4-9

OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 2006-4-9

OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 2006-4-9

哪个是今天要讨论的模式匹配 the The quick brown fox jumps over the lazy dog jay 2006-4-9

模式匹配 Finding all occurrences of a pattern in a text eg. 'abc' in 'acbcdabc' 2006-4-9

OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 2006-4-9

The naive string-matching algorithm ababcabcacbab abcac How does it work? 2006-4-9

a b a b c a b c a c b a b a b c a c a b a b c a b c a c b a b 第一次匹配 a b c a c a b a b c a b c a c b a b 第二次匹配 a b c a c a b a b c a b c a c b a b 第三次匹配 a b c a c 2006-4-9

a b a b c a b c a c b a b a b c a c a b a b c a b c a c b a b 第四次匹配 a b c a c a b a b c a b c a c b a b 第五次匹配 a b c a c a b a b c a b c a c b a b 第六次匹配 a b c a c 2006-4-9

while(s[i]!=0&&j<length) if(s[i]==t[j]){i++;j++;} int Normal(int pos) { int i,j; i=pos;j=0; while(s[i]!=0&&j<length) if(s[i]==t[j]){i++;j++;} else{i=i-j+1;j=0;} } if(j==length) return i-length; else return -1; 2006-4-9

复杂度分析 一般情况 效率可以近似认为O(m+n) 极端特殊情况 O(mn) 2006-4-9

OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 2006-4-9

What’s KMP? 2006-4-9

Knuth-Morris-Pratt Professor Emeritus of The Art of Computer Programming at Stanford University, welcomes you to his home page. Donald E. Knuth,1938年出生于Wisconsin。1960年,当他毕业于Case Institute of Technology数学系时,因为成绩过于出色,被校方打破历史惯例,同时授予学士和硕士学位。他随即进入大名鼎鼎的加州理工学院数学系,仅用三年时间便取得博士学位,此时年仅25岁。 毕业后留校任助理教授,28岁时升为副教授。30岁时,加盟斯坦福大学计算机系,任正教授。从31岁那年起,他开始出版他的历史性经典巨著:The Art of Computer Programming。他计划共写7卷,然而仅仅出版三卷之后,已经震惊世界,使他获得计算机科学界的最高荣誉Turing Award!此时,他年仅38岁!后来,此书与牛顿的“自然哲学的数学原理”等一起,被评为“世界历史上最伟大的十种科学著作”之一。 Donald E. Knuth,1938年出生于Wisconsin。1960年,当他毕业于Case Institute of Te chnology数学系时,因为成绩过于出色,被校方打破历史 惯例,同时授予学士和硕士学位。他随即进入大名鼎鼎的加州理工学院 数学系,仅用三年时间便取得博士学位,此时年仅25岁。 毕业后留校任助理教授,28岁时升为副教授。30岁时,加盟斯坦福大学计 算机系,任正教授。从31岁那年起,他开始出版他的历史性经典巨著: The Art of Computer Programming。他计划共写7卷,然而仅仅出版三卷 之后,已经震惊世界,使他获得计算机科学界的最高荣誉Turing Award! 此时,他年仅38岁!后来,此书与牛顿的“自然哲学的数学原理”等一起, 被评为“世界历史上最伟大的十种科学著作”之一。相信学过数据结构和编 译原理的同学们都知道KMP算法和LR(K)算法有多么不可思议,然而此书 中这样的算法比比皆是! 在计算机科学上,他主要是一位理论家。然而,他在理论以外也同样做出 惊人的成就。鼎鼎大名的排版软件Tex,就是他的作品。此外,还有Metafont 等,也在世界上得到广泛使用。 Knuth获得图灵奖时为36岁,前面多说了两岁。估计他可能是历史上最年轻的图灵奖 获得者,甚至有可能永远把这个记录保持下去。 相比之下,其他获得图灵奖的人当时一般都是五十几岁或者六十几岁(例如去年的 姚先生,和刚去世的Simon),可见Knuth有多伟大!他真不愧为大师中的大师! 他很早就提前退休,为的是集中精力把巨著The Art of Computer Programming写完。 他一生共带过二十四个(此数字也许不准)博士生,发誓不会再带更多的学生。但是, 他有一个奇妙的承诺: 在他定期进行的讲座中,会不断提出一些新的难题。如果有人能在给定的期限内解出 任何一道难题,他将为那个人的博士论文签名!不知道 世界之大,有没有哪位后起之秀能获得这样的殊誉? 他的其它著作和论文难以数计,其中包括Concrete Mathematics等名著。 从1977年起,他获得Fletcher Jones Professor of Computer Science的 头衔,并且同时兼任Professor of Electrical Engineering。1990年,斯坦 福大学更授予他一个非同寻常的头衔Professor of The Art of Computer Science,作为对他的特殊贡献的承认! 他的其它荣誉数不胜数,其中主要的有:美国国家科学院院士,美国艺术 与科学院院士,美国工程院院士,法国科学院外籍院士,挪威科学院外籍 院士.......;美国数学会Steele奖,瑞典皇家科学院Adelskold奖,以色列 工学院Harvey奖,IEEE冯诺依曼奖,东京高科技奖...... 共达数十个之多。 同时,他还是牛津大学等二十几所大学的荣誉博士。早在1970年,他就在 国际数学大会上做过特邀报告。建议感兴趣的同学参观他的竹叶: http://www-cs-faculty.stanford.edu/~knuth/ 2006-4-9

The KMP string-matching algorithm abbcaccabbaabcababcdbac abcd How does it work? 2006-4-9

a b a b c a b c a c b a b a b c a c a b a b c a b c a c b a b 第一次匹配 a b c a c a b a b c a b c a c b a b 第二次匹配 a b c a c a b a b c a b c a c b a b 第三次匹配 a b c a c 2006-4-9

Next[j] a b a b c a b c a c b a b a b c a c a b c a c a b c a c j 0 1 2 3 4 模式串 a b c a c Next[j] -1 0 0 0 1 2006-4-9

int KMP(char*t,int pos) { int i,j; i=pos; j=0; while(s[i]!=0&&j<length) if(j==-1||t[j]==s[i]){i++;j++;} else{j=next[j];} } if(j==length) return i-j; else return -1; 2006-4-9

复杂度分析 O(m+n) 2006-4-9

How to gain next[j]? 2006-4-9

以眼杀人--观察法 a a a b c a c b a b a a b c a c -1 1 1 2 1 2006-4-9

Exercise a b c a b a a b c b c -1 0 0 0 1 2 1 1 2 0 0 a b a b a b a b -1 0 0 1 2 3 4 5 a a b a a c a a d a -1 0 1 0 1 2 0 1 2 0 2006-4-9

S a b a a b c a c T Next[i] -1 1 1 2 1 程序实现 If(j==-1||s[j]==t[i]) Else 1 1 2 1 If(j==-1||s[j]==t[i]) i++;j++;next[i]=j; Else j=next[j] 2006-4-9

void CalcNext(char*t) { int i,j; i=0; next[0]=-1; j=-1; while(i<length-1) if(j==-1||t[i]==t[j]){i++;j++;next[i]=j;} else{j=next[j];} } 2006-4-9

OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 2006-4-9

朴素算法与KMP算法的比较 复杂度 使用资源 效率 2006-4-9

KMP算法的改进 一个例子 模式串:aaaab 主串: aaabaaaab j 0 1 2 3 4 模式 a a a a b Next[j] 0 1 2 3 4 模式 a a a a b Next[j] -1 0 1 2 3 Nextval[j] -1-1 -1 -1 3 2006-4-9

OUTLINE 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 2006-4-9

更多模式匹配算法 Boyer-Moore算法 这个算法KMP算法的不同点是在作s[k+1..k+m]与t[1..m]的匹配测试时是从右到左,而不是从左到右。 Rabin-Karp算法 这个算法用到数论中诸如两个整数关于第三个整数取模的等价性等初等概念。 2006-4-9

SUMMARY 什么是模式匹配 朴素匹配算法 KMP算法 效率对比 更多模式匹配算法 2006-4-9

THANK YOU! Zn http://spaces.msn.com/znzhou/ 2006-4-9