0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

前缀和真前缀的区别分析

算法与数据结构 2017-12-22 13:51 次阅读

相信很多读者都看过网上博客对 KMP 算法的讲解,其中必提及的一个名词就是:前缀。那么请问你心中理解的前缀的定义是什么呢?

对于字符串 “china”,其前缀为:

china, chin, chi, ch, c

你的想法是不是和上面一样呢。但是我很遗憾地告诉你,KMP 之前缀不是这样的,它是这样的:

chin, chi, ch, c

难道是我们记错前缀的概念了?不!不是我们记错了,只是有人在指鹿为马而已。下面来揭晓真像吧。

如此看来,KMP 之前缀并非前缀,而是真前缀!而大多数(几乎所有)的博客都在以 “真前缀” 去定义“前缀”。

next 数组是 KMP 的一个核心概念,而真前缀又是 next 数组的核心。算法本属于一个很严谨的领域,这种在重要概念上却还指鹿为马的行为,是应该需要我们注意和避免的。

不知道大家有没有发现,你所看过的 KMP 博文无一提及真前缀的定义,除了阮一峰的字符串匹配的 KMP 算法。

前缀和真前缀的区别分析

哈哈,阮老师太粗心了,在文章开头阮老师已经讲过,他是阅读了 Jake Boxer 的文章才明白 KMP 的,那原文是什么样的呢?

前缀和真前缀的区别分析


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 前缀
    +关注

    关注

    0

    文章

    2

    浏览量

    6375

原文标题:你被欺骗了很久:前缀和真前缀

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Go语言实现敏感词检测(前缀树)

    大家都知道游戏文字、文章等一些风控场景都实现了敏感词检测,一些敏感词会被屏蔽掉或者文章无法发布。今天我就分享用Go实现敏感词前缀树来达到文本的敏感词检测,让我们一探究竟!
    发表于 10-31 10:22 1020次阅读

    OFDM系统 接收端解循环前缀的问题

    在OFDM的接收端如何解循环前缀,是直接移除吗?如果直接移除,如何能够精确的移除,如果不能精确移除会导致FFT的输出结果与发送端IFFT的输入结果完全不同。如果不是直接移除要进行什么其他操作吗?救急啊!!!祝好!
    发表于 11-19 10:03

    获取带有设备前缀终端名称VI

    这是获取带有设备前缀终端名称VI
    发表于 11-26 21:55

    16位并行前缀加法器

    问一个蛮简单的问题,在做并行前缀加法器总是出现这个问题,到底是什么鬼,,应该怎样解决?谢谢了!end后面是调用部分~
    发表于 10-28 15:52

    飞思卡尔单片机前缀表示什么意思

    初学飞思卡尔的单片机,目前看到的有3个型号:S9S12G640MLH、s9s12g64f1mlc、MC9S12XEP100MAG,这些前缀比如S、MC有什么区别吗,在群里问过说是汽车级和工业级的区分
    发表于 05-25 17:15

    什么是9字符前缀

    嗨!我要进入汇编语言领域。我决定从头开始阅读用户指南,我现在在1.7.5.1“英特尔十六进制格式”。两张图片附上。第一个是说明,第二个是例子。我不理解“每个数据记录都以9个字符的前缀开始,以2个字符
    发表于 03-10 10:26

    allegro的CM里信号名称前缀为什么会@原理图名称?

    allegro的CM里信号名称前缀为什么会@原理图名称?
    发表于 06-18 16:33

    PADS Logic中如何去修改元件的参考前缀

      在logic中做元件库,都会给元器件定义位号的首字母,后面在绘制原理图放置元器件时,就会按这个来递增编号,常见的元器件位号首字母定义参考章节2.36,下面讲解如何修改元件的参考前缀:   第一步
    发表于 04-28 17:10

    AT组件怎么解析无前缀关键字的数据?

    一开始想利用解析函数,at_resp_get_line,at_resp_parse_line_args等等去读取,单都需要关键字前缀匹配才行,且一次只能读一行。而我的数据是在下一行,且无前缀,所以我不知道要怎么读取这个data出来。 望各位大佬帮忙指点!感谢! 图如下:
    发表于 05-12 16:44

    一种基于查询前缀的快速抗冲突算法

    基于阅读器发送的查询前缀和电子标签的响应后缀,提出一种新的射频识别(RFID)标签识别算法,用以解决RFID仲裁过程中的零标签响应问题。通过实验验证,与Memoryless抗冲突算法相比
    发表于 04-01 09:40 10次下载

    集成电路型号前缀与产地对照

    集成电路型号前缀与产地对照 AN 日本松下电器公司 BA 日本东洋电具制作所 BG 北京半导体器件三厂 BGD,BGJ 北京半导体器件研究所
    发表于 02-06 15:30 2772次阅读

    基于循环前缀的同步算法及FPGA实现

    基于循环前缀的同步算法及FPGA实现   正交频分复用(OrthogonalFrequency Division Multiplexing,OFDM)技术已经成为第四代移动通信研究的热点,同时,OFDM同步又是OFDM的关键技
    发表于 03-23 09:27 1551次阅读
    基于循环<b class='flag-5'>前缀</b>的同步算法及FPGA实现

    一种混合前缀编码的测试数据压缩方法

    一种混合前缀编码的测试数据压缩方法_谈恩民
    发表于 01-07 20:49 0次下载

    修改ApiBoot Logging日志采集前缀的教程

    ApiBoot Logging支持指定单个或者多个路径的前缀进行采集,也就是我们可以指定/user/**或者/order/**下的单个或者同时指定多个路径进行...
    的头像 发表于 12-10 22:20 298次阅读

    基于畸形URL前缀的网络攻击激增6000%

    来自GreatHorn的研究人员报告说,他们已经观察到了犯罪分子通过构造 “畸形的URL前缀 ”来逃避安全软件的防护,发送钓鱼邮件进行攻击的次数增加了近6000%。除非你仔细观察URL前缀中使用的符号,要不然,它们看起来是非常合法的。
    的头像 发表于 02-26 15:40 1577次阅读