编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
发新话题
打印

KMP算法求教

谢谢斑竹,谢谢各位大侠!

TOP

[QUOTE]
子串 a b a b a a b a b
next[j] 0 1 1 2 3 4 2 3 4

为例 来讲下
next[j] 里面 开头的红色01 是固定格式.

我就以兰色的4 来说明下为什么是4.
与4有关的, 是4所对应的兰色a之前的所有的字符,即紫色的 a b a b a
这个字符串中所有符合匹配条件的字符串如下
a b a b a a b a b a
a a
a b a a b a 最长的匹配字符串(a b a b a本身除外)在这里 ,长度为3, 再加上1,就是4了

[/QUOTE]

这里还是没有弄懂,“这个字符串中所有符合匹配条件的字符串如下”就是这里,到底是什么匹配啊,大家教教我,尽可能详细点,我学数据结构不久,先谢谢大家了

TOP

题:
a b a b a a b a b
0 1 1 2 3 4 2 3 4

分解如下:
a
0

a b 这里是固定格式
0 1

a b a 现在是第3个数a比较了,第1个数就是a,所以与第1个比较
0 1 1

a b a b 现在是第4个数b比较了,第3个数a已经与第1个数a匹配,所以现在第4个数无须回到第1个数比较,所以与第2个数0 0 1 1 2 比较.现在匹配如下:(后面也同理)
a b

a b

a b a b a 现在是第5个数a比较了,由于已经有了如上匹配,所以第5个数a只要与第3个数比较
0 1 1 2 3

a b a b a a 现在是第6个数a比较了,由于已经有了如上匹配,所以第6个数a只要与第4个数比较
0 1 1 2 3 4

a b a b a a b 现在是第7个数b比较了,由于b与第5个数a不相等,所以又要重新匹配,但是第6个数b与第1个数a相等,所以
0 1 1 2 3 4 2 第7个数b与第2个数比较

......接下来你应该知道了

TOP

真的是太谢谢你了,可惜我还是没怎么弄懂,我只知道是自身和自身比较,能不能在详细些说明一下,我太笨了,呵呵,举例来说明好些,用多了数字和字母看了就头晕,

[QUOTE]
现在是第3个数a比较了,第1个数就是a,所以与第1个比较
[/QUOTE]

第3个数比教到底是怎么回事,能不能举个例子,先谢谢了

TOP

现在董了点,你先看看这样对不对
假如是
abaabbabaab
那么对应的next是
0 1 1 2 2 3 1 2 3 4 5

TOP

以下是引用余来在2006-11-5 17:55:45的发言:

现在董了点,你先看看这样对不对
假如是
abaabbabaab
那么对应的next是
0 1 1 2 2 3 1 2 3 4 5


是对的

TOP

受教了
刚看这里
懂了

TOP

太感谢了。收益匪浅啊

TOP

以下是引用菜鸟上路在2006-11-5 16:47:11的发言:

a b a b a a 现在是第6个数a比较了,由于已经有了如上匹配,所以第6个数a只要与第4个数比较
0 1 1 2 3 4

a b a b a a b 现在是第7个数b比较了,由于b与第5个数a不相等,所以又要重新匹配,但是第6个数b与第1个数a相等,所以
0 1 1 2 3 4 2 第7个数b与第2个数比较

......接下来你应该知道了

第7个数b比较,由于b与第5个数a不相等,所以又要重新匹配,但是早在第6个数a比较时,a就与第四个数b不相等了,这时候怎么不重新匹配呢?

发愤图强学编程!

TOP

呃。。貌似有点看懂了,只要去想,总会有点收获的,噶噶。
never give up.....And hope in future...

TOP

发新话题