相信很多读者都看过网上博客对 KMP 算法的讲解,其中必提及的一个名词就是:前缀。那么请问你心中理解的前缀的定义是什么呢?
对于字符串 “china”,其前缀为:
china, chin, chi, ch, c
你的想法是不是和上面一样呢。但是我很遗憾地告诉你,KMP 之前缀不是这样的,它是这样的:
chin, chi, ch, c
难道是我们记错前缀的概念了?不!不是我们记错了,只是有人在指鹿为马而已。下面来揭晓真像吧。
如此看来,KMP 之前缀并非前缀,而是真前缀!而大多数(几乎所有)的博客都在以 “真前缀” 去定义“前缀”。
next 数组是 KMP 的一个核心概念,而真前缀又是 next 数组的核心。算法本属于一个很严谨的领域,这种在重要概念上却还指鹿为马的行为,是应该需要我们注意和避免的。
不知道大家有没有发现,你所看过的 KMP 博文无一提及真前缀的定义,除了阮一峰的字符串匹配的 KMP 算法。
哈哈,阮老师太粗心了,在文章开头阮老师已经讲过,他是阅读了 Jake Boxer 的文章才明白 KMP 的,那原文是什么样的呢?
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
原文标题:你被欺骗了很久:前缀和真前缀
文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。
相关推荐
这是获取带有设备前缀终端名称VI
发表于 11-26 21:55
问一个蛮简单的问题,在做并行前缀加法器总是出现这个问题,到底是什么鬼,,应该怎样解决?谢谢了!end后面是调用部分~
发表于 10-28 15:52
初学飞思卡尔的单片机,目前看到的有3个型号:S9S12G640MLH、s9s12g64f1mlc、MC9S12XEP100MAG,这些前缀比如S、MC有什么区别吗,在群里问过说是汽车级和工业级的区分
发表于 05-25 17:15
嗨!我要进入汇编语言领域。我决定从头开始阅读用户指南,我现在在1.7.5.1“英特尔十六进制格式”。两张图片附上。第一个是说明,第二个是例子。我不理解“每个数据记录都以9个字符的前缀开始,以2个字符
发表于 03-10 10:26
allegro的CM里信号名称前缀为什么会@原理图名称?
发表于 06-18 16:33
在logic中做元件库,都会给元器件定义位号的首字母,后面在绘制原理图放置元器件时,就会按这个来递增编号,常见的元器件位号首字母定义参考章节2.36,下面讲解如何修改元件的参考前缀:
第一步
发表于 04-28 17:10
国外生产厂商型号前缀互联网网址.pdf
发表于 04-04 23:35
•0次下载
基于阅读器发送的查询前缀和电子标签的响应后缀,提出一种新的射频识别(RFID)标签识别算法,用以解决RFID仲裁过程中的零标签响应问题。通过实验验证,与Memoryless抗冲突算法相比
发表于 04-01 09:40
•10次下载
集成电路型号前缀与产地对照
AN 日本松下电器公司
BA 日本东洋电具制作所
BG 北京半导体器件三厂
BGD,BGJ 北京半导体器件研究所
发表于 02-06 15:30
•3077次阅读
基于循环前缀的同步算法及FPGA实现
正交频分复用(OrthogonalFrequency Division Multiplexing,OFDM)技术已经成为第四代移动通信研究的热点,同时,OFDM同步又是OFDM的关键技
发表于 03-23 09:27
•1685次阅读
一种混合前缀编码的测试数据压缩方法_谈恩民
发表于 01-07 20:49
•0次下载
ApiBoot Logging支持指定单个或者多个路径的前缀进行采集,也就是我们可以指定/user/**或者/order/**下的单个或者同时指定多个路径进行...
发表于 12-10 22:20
•441次阅读
来自GreatHorn的研究人员报告说,他们已经观察到了犯罪分子通过构造 “畸形的URL前缀 ”来逃避安全软件的防护,发送钓鱼邮件进行攻击的次数增加了近6000%。除非你仔细观察URL前缀中使用的符号,要不然,它们看起来是非常合法的。
发表于 02-26 15:40
•1721次阅读
国外生产厂商型号前缀互联网网址
发表于 12-30 09:21
•2次下载
公共IP地址前缀是从各个区域的IP地址池中进行分配的。通过指定名称和恰当的前缀大小,我们能在特定的区域和订阅中创建公共IP地址前缀。这里前缀的大小直接决定了可用的地址数量。 公共IP地
发表于 08-21 14:57
•312次阅读
评论