- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
广义表的基本运算 (1)求表头GetHead(L):非空广义表的第一个元素,可以是一个单元素,也可以是一个子表 (2)求表尾GetTail(L):非空广义表除去表头元素以外其它元素所构成的表。表尾一定是一个表 练习 A=( ) GetHead和GetTail均无定义 A=(a,b) GetHead(A)=a GetTail(A)=(b) A=(a) GetHead(A)=a GetTail(A)=( ) A=((a)) GetHead(A)=(a) GetTail(A)=( ) GetHead(GetTail(GetHead(GetTail(GetTail(A))))) A=(a,b,(c,d),(e,(f,g))) d 有次序性 有长度 有深度 可递归 可共享 一个直接前驱和一个直接后继 =表中元素个数 =表中括号的重数 自己可以作为自己的子表 可以为其他广义表所共享 广义表的特点 E=(a,E)=(a,(a,E))= (a,(a,(a,…….))),E为递归表 1)A =( ) 2)B = ( e ) 3)C =( a ,( b , c , d ) ) 4)D=( A , B ,C ) 5)E=(a, E) n=0,因为A是空表 n=1,表中元素e是原子 n=2,a 为原子,(b,c,d)为子表 n=3,3个元素都是子表 n=2,a 为原子,E为子表 D=(A,B,C)=(( ),(e),(a,(b,c,d))),共享表 练习:求下列广义表的长度 4.6 案例分析与实现 案例4.1 :病毒感染检测 【案例分析】 因为患者的DNA和病毒DNA均是由一些字母组成的字符串序列,要检测某种病毒DNA序列是否在患者的DNA序列中出现过,实际上就是字符串的模式匹配问题。 可以利用BF算法,也可以利用更高效的KMP算法。 但与一般的模式匹配问题不同的是,此案例中病毒的DNA序列是环状的。 这样需要对传统的BF算法或KMP算法进行改进。 【案例实现】 对于每一个待检测的任务,假设病毒DNA序列的长度是m,因为病毒DNA序列是环状的,为了线性取到每个可行的长度为m的模式串,可将存储病毒DNA序列的字符串长度扩大为2m,将病毒DNA序列连续存储两次。 然后循环m次,依次取得每个长度为m的环状字符串,将此字符串作为模式串,将人的DNA序列作为主串,调用BF算法进行模式匹配。 只要匹配成功,即可中止循环,表明该人感染了对应的病毒;否则,循环m次结束循环时,可通过BF算法的返回值判断该人是否感染了对应的病毒。 【算法步骤】 ① 从文件中读取待检测的任务数num。 ② 根据num个数依次检测每对病毒DNA和人的DNA是否匹配,循环num次,执行以下操作: 从文件中分别读取一对病毒DNA序列和人的DNA序列; 设置标志性变量flag,用来标识是否匹配成功,初始为0,表示未匹配; 病毒DNA序列的长度是m,将存储病毒DNA序列的字符串长度扩大为2m,将病毒DNA序列连续存储两次; 循环m次,重复执行以下操作: 依次取得每个长度为m的病毒DNA环状字符串; 将此字符串作为模式串,将人的DNA序列作为主串,调用BF算法进行模式匹配,将匹配结果返回赋值给flag; 若flag非0,表示匹配成功,中止循环,表明该人感染了对应的病毒。 退出循环时,判断flag的值,若flag非0,输出“YES”,否则,输出“NO”。 1. 了解串的存储方法,理解串的两种模式匹配算法,重点掌握BF算法。 2. 明确数组和广义表这两种数据结构的特点,掌握数组地址计算方法,了解几种特殊矩阵的压缩存储方法。 3.掌握广义表的定义、性质及其GetHead和GetTail的操作。 小结 * * * * * 北京林业大学信息学院 S : a b a b c a b c a c b a b T : a b c i j S : a b a b c a b c a c b a b T : a b c S : a b a b c a b c a c b a b T : a b c i指针回溯 BF算法设计思想 将主串的第pos个字符和模式的第一个字符比较, 若相等,继续逐个比较后续字符; 若不等,从主串的下一字符起,重新与模式的第一个字符比较。 直到主串的一个连续子串字符序列与模式相等 。返回值为S中与T匹配的子序列第一个字符的序号,即匹配成功。 否则,匹配失败,返回值 0 BF算法设计思想 Index(S,T,pos) int Ind
您可能关注的文档
最近下载
- 化工园区危险品运输车辆停车场建设标准.docx
- 雨水井劳务分包合同2024年通用.docx
- 老年人智能机培训课件.pptx VIP
- 体育教育专业职业生涯规划书发展报告大一全国大学生职业规划大赛模板范文1500字.pdf VIP
- 索尼特丽珑彩监_bvm20f1u_bvm20f1e_bvm20e1u_bvm20e1e_bvm14f1u_bvm14f1e_bvm14e1u_bvm14e1e_bvm14f5u_bvm14f5e_bv.pdf
- 一年级道德与法治《我是小学生啦》单元整体教学设计(1).doc VIP
- 南宋爱国诗词的内容和情感专题.ppt VIP
- 2024年新人教版七年级上册生物课件 第三章 微生物 第三节 真菌 .pptx
- iAStar-S3系列电梯专用变频器使用说明书_V2.03.pdf
- 2024年高一年级上册语文期末复习:文言文阅读 刷题练习题(含答案解析).pdf VIP
文档评论(0)