收藏 分享(赏)

最小表示法.PPT

上传人:qcjlxh 文档编号:4575714 上传时间:2019-01-03 格式:PPT 页数:40 大小:227KB
下载 相关 举报
最小表示法.PPT_第1页
第1页 / 共40页
最小表示法.PPT_第2页
第2页 / 共40页
最小表示法.PPT_第3页
第3页 / 共40页
最小表示法.PPT_第4页
第4页 / 共40页
最小表示法.PPT_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、浅析“最小表示法”思想 在字符串循环同构问题中的应用,安徽省芜湖市第一中学,周 源,前言,“最小表示法”比起动态规划、贪心等思想,在当今竞赛中似乎并不是很常见。但是在解决判断“同构”一类问题中却起着重要的作用。 本文即将讨论字符串中的同构问题,如何巧妙地运用最小表示法来解题呢,让我们继续一起思考吧。,问题引入,有两条环状的项链,每条项链上各有N个多种颜色的珍珠,相同颜色的珍珠,被视为相同。,问题:判断两条项链是否相同。,简单分析:由于项链是环状的,因此循环以后的项链被视为相同的,如图的两条项链就是一样的。,明确几个记号和概念,|s|=length(s),即s的长度。,si为s的第i个字符。,s

2、ij=copy(s,i,j-i+1)。这里1 i j |s|。,明确几个记号和概念,定义s的一次循环s(1)=s2|s|+s1;s的k次循环(k1)s(k)为s(k-1)的一次循环;s的0次循环s(0)=s。,1,S(1)串:,明确几个记号和概念,如果字符串s1可以经过有限次循环得到s2,则称s1和s2是循环同构的。例如:,s1和 s2 是循 环同 构的 !,s1=a b c d,明确几个记号和概念,设有两个映射f1,f2:AA,定义f1和f2的连接f1f2(x)=f1(f2(x)。,问题的数学语言表达形式,给定两个长度相等的字符串,|s1|=|s2|, 判断它们是否是循环同构的。,枚举算法,

3、易知,s1的不同的循环串最多只有|s1|个, 即s1,s1(1),s1(2),s1(|s1|-1), 所以只需要把他们一一枚举, 然后分别与s2比较即可。,枚举算法,优点:思维简单,易于实现。 时间复杂度是O(N2)级(N=|s1|=|s2|)。,如果N大一些,几十万,几百万,Time Limit Exceeded!,构造新的算法,首先构造新的模型: S=s1+s1为主串,s2为模式串。 如果s1和s2是循环同构的, 那么s2就一定可以在S中找到匹配!,匹配算法:理论的下界,在S中寻找s2的匹配是有很多O(N)级的算法的。 本题最优算法的时空复杂度均为O(N)级。 这已经是理论的下界了。,小结

4、:枚举和匹配算法,很容易得到的枚举算法显然不能满足大数据的要求, 于是我们从算法的执行过程入手, 探查到了枚举算法的实质:模式匹配。,最后,通过巧妙的构造、转换模型, 直接套用模式匹配算法,得到了O(N)级的算法。,探索新的算法,但是问题是否已经完美解决了呢?,KMP算法的缺点: 难理解,难记忆; 可扩展性不强。,引例,有两列数a1,a2an和b1,b2bn ,不记顺序,判断它们是否相同。,相同的两列数,分析,由于题目要求“不记顺序”,因此每一列数的不同形式高达n!种之多! 如果要一一枚举,显然是不科学的。,如果两列数是相同的,那么将它们排序之后得到的数列一定也是相同的。,排序后,相同,小结:

5、引例,这道题虽然简单,却给了我们一个重要的启示:当某两个对象有多种表达形式,且需要判断它们在某种变化规则下是否能够达到一个相同的形式时,可以将它们都按一定规则变化成其所有表达形式中的最小者,然后只需要比较两个“最小者”是否相等即可!,定义:“最小表示法”,设有事物集合T=t1,t2,tn,映射集合F=f1,f2,fm。 任意fF均为T到T的映射,fi:TT。,如果两个事物s,t T, 有一系列F的映射的连接fi1fi2fik(s)=t, 则说s和t是F本质相同的。,定义:“最小表示法”,其中F满足两个条件:,任意tT,一定能在F中一系列映射的连接的作用下,仍被映射至t。即任意一个事物tT,它和

6、自己是F本质相同的。, 任意s,tT,若在F的一系列映射作用下,s和t是F本质相同的。那么一定有另一系列属于F的映射作用下,t和s是F本质相同的。,即“本质相同”这个概念具有自反性。,即“本质相同”这个概念具有对称性。,定义:“最小表示法”,另外,根据“本质相同”概念的定义很容易知道,“本质相同”这个概念具有传递性。,即若t1和t2是F本质相同,t2和t3是F本质相同,那么一定有t1和t3是本质相同的。,定义:“最小表示法”,给定T和F,如何判断T中两个事物s和t是否互为F本质相同呢?,“最小表示法”就是可以应用于此类题目的一种思想:,确立一种T中事物 的大小关系,根据F中的变化规则,将s和t

7、化成规定大小关系 中的最小者m1和m2,如果 m1=m2,s,m1m2,可以证明, s和t不是本质相同,“最小表示法”在本题的应用,在本题中, 事物集合表示的是不同的字符串, 映射集合则表示字符串的循环法则, “事物中的大小关系”就是字符串间的大小关系。,分别求出s1和s2的最小表示比较它们是否相同,最直接最简单的方法:,“最小表示法”在本题的应用,如M(bbbaab)=4,设函数M(s)返回值意义为: 从s的第M(s)个字符引起的s的一个循环表示是s的最小表示。 若有多个值,则返回最小的一个。,现在换一种思路:,s=b b b a a b,“最小表示法”在本题的应用,现在换一种思路:,u:,

8、w:,设u=s1+s1,w=s2+s2并设指针i,j指向u,w第一个字符,“最小表示法”在本题的应用,现在换一种思路:,如果s1和s2是循环同构的,那么当i,j分别指向M(s1),M(s2)时,一定可以得到uii+|s1|-1=wjj+|s2|-1,迅速输出正确解。,“最小表示法”在本题的应用,现在换一种思路:,同样s1和s2循环同构时,当i,j分别满足 iM(s1),jM(s2)时, 两指针仍有机会达到i=M(s1),j=M(s2)这个状态。,问题转化成,两指针分别向后滑动比较,如果比较失败,如何正确的滑动指针,新指针i,j仍然满足 iM(s1),jM(s2),“最小表示法”在本题的应用,设

9、指针i,j分别向后滑动k个位置后比较失败(k0),即有 ui+kwj+k,大于,当ixi+k时,我们来研究s1(x-1)。,x,设ui+kwj+k,同理可以讨论ui+kwj+k的情况。,“最小表示法”在本题的应用,因为ux在ui后(x-i)个位置, 对应的可以找到在wj后(x-i)个位置的wj+(x-i),,大于,相等,同样对应的有ux+1和wj+(x+1-i),ux+2和wj+(x+2)-i, 直到ui+k-1和wj+k-1。,它们都是相等的, 即有uxi+k-1=wj+(x-i)j+k-1。,“最小表示法”在本题的应用,很容易就得到uxi+kwj+(x-i)j+k。,s1(x-1)的前几个

10、字符,一定是s1的其他循环表示的前几个字符,所以s1(x-1)不可能是s1的最小表示!,因此M(s1)i+k, 指针i滑到ui+k+1处仍可以保证小于等于M(s1)!,“最小表示法”在本题的应用,同理,当ui+kwj+k的时候,可以将指针j滑到wj+k+1处!也就是说,两指针向后滑动比较失败以后, 指向较大字符的指针向后滑动k+1个位置。,下面让我们将这种方法应用于一个实例。,“最小表示法”在本题的应用,设s1=babba,s2=bbaba。,i,j,比较失败时k=1,不相等,因为ui+kwj+k 所以移动指针j,“最小表示法”在本题的应用,设s1=babba,s2=bbaba。,i,不相等,

11、因为ui+kwj+k 所以移动指针i,j,比较失败时k=0,“最小表示法”在本题的应用,设s1=babba,s2=bbaba。,不相等,因为ui+kwj+k 所以移动指针i,j,i,比较失败时k=2,“最小表示法”在本题的应用,设s1=babba,s2=bbaba。,j,i,所以s1和s2是循环同构的!,“最小表示法”在本题的应用,在这个例子中,算法正确出解。,算法的具体描述和证明请同学们自行完成,这里不再赘述。,小结:“最小表示法”思想,经过努力,我们终于找到了一个与匹配算法本质不同的线性算法。,时间复杂度,O(N)级,同样优秀的线性算法,辅助空间,记录next数组 O(N)级,只需要记录两

12、个指针 常数级别,算法实现,难懂,难记忆,简洁,便于记忆,可扩展性,受next数组严重制约,很强,总结,“最小表示法”是判断两种事物本质是否相同的一种常见思想,它的通用性也是被人们认可的无论是搜索中判重技术,还是判断图的同构之类复杂的问题,它都有着无可替代的作用。仔细分析可以得出,其思想精华在于引入了“序”这个概念,从而将纷繁的待处理对象化为单一的形式,便于比较。,“最小表示法” 思想,应用,同构类问题,总结,然而值得注意的是,在如今的信息学竞赛中,试题纷繁复杂,使用的算法也不再拘泥于几个经典的算法,改造经典算法或是将多种算法组合是常用的方法之一。正如本文讨论的问题,单纯的寻求字符串的最小表示显得得不偿失,但利用“最小表示法”的思想,和字符串的最小表示这个客观存在的事物,我们却找到了一个简单、优秀的算法。,“最小表示法” 思想,应用,同构类问题,找到更简单,更优秀的算法!,与其他思想综合运用,总结,解决实际问题时,只有深入分析,敢于创新,才能将问题,化纷繁为简洁, 化无序为有序。,谢谢大家,Thank you!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 统计图表

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报