当前位置: 首页 > news >正文

算法(④KMP)

KMP 算法的核心原理

利用模式串自身的“对称性”进行跳跃。

这个“对称性”就是我们之前提到的最长公共前后缀

当匹配失败时,KMP 算法不会从头再来,而是会利用已经匹配成功的部分信息,直接将模式串移动到下一个最可能匹配的位置。

好的,我们来详细计算 ABABABC 这个模式串的部分匹配表(LPS 表)。

什么是部分匹配表?

部分匹配表记录了模式串中,以每个字符结尾的子串的最长公共前后缀的长度。这个表就是 KMP 算法的“导航图”。


计算过程

我们从左到右,一步步计算每个位置的值。

模式串 (P)ABABABC
索引0123456
子串AABABAABABABABAABABABABABABC
LPS 值???????

导出到 Google 表格

1. 子串 A (索引 0)

  • 前缀:空

  • 后缀:空

  • 最长公共前后缀长度:0

2. 子串 AB (索引 1)

  • 前缀:A

  • 后缀:B

  • 没有公共部分。

  • 最长公共前后缀长度:0

3. 子串 ABA (索引 2)

  • 前缀:A, AB

  • 后缀:A, BA

  • 最长公共部分是 A

  • 最长公共前后缀长度:1

4. 子串 ABAB (索引 3)

  • 前缀:A, AB, ABA

  • 后缀:B, AB, BAB

  • 最长公共部分是 AB

  • 最长公共前后缀长度:2

5. 子串 ABABA (索引 4)

  • 前缀:A, AB, ABA, ABAB

  • 后缀:A, BA, ABA, BABA

  • 最长公共部分是 ABA

  • 最长公共前后缀长度:3

6. 子串 ABABAB (索引 5)

  • 前缀:A, AB, ABA, ABAB, ABABA

  • 后缀:B, AB, BAB, ABAB, BABAB

  • 最长公共部分是 ABAB

  • 最长公共前后缀长度:4

7. 子串 ABABABC (索引 6)

  • 前缀:A, AB, ABA, ABAB, ABABA, ABABAB

  • 后缀:C, BC, ABC, BABC, ABABC, BABABC

  • 没有公共部分。

  • 最长公共前后缀长度:0


最终的部分匹配表

经过计算,我们得到了完整的 LPS 表:

模式串 (P)ABABABC
LPS 值0012340

http://www.dtcms.com/a/358664.html

相关文章:

  • SpringAI应用开发工程师高阶面试剧本与知识点全解析(含RAG、多租户、流式推理、企业落地场景)
  • Python3 lambda(匿名函数)
  • HBase高效并发锁:IdLock极简内存设计
  • Qt QML注册全局对象并调用其函数和属性
  • 银河麒麟Kylin系统编译安装Qt5.12.12
  • Yolov8损失函数:回顾Yolov8-Loss
  • ​导游|基于SprinBoot+vue的在线预约导游系统
  • DrissionPage 实战:高效爬取网页数据并保存为 CSV 的全流程解析
  • (链表)Leetcode206链表反转+Leetcode6删除链表的倒数第N个结点+虚拟头节点使用
  • Linux 笔记 Day01|课程结构
  • 第三弹、AI、LLM大模型是什么?
  • 深度学习重塑医疗:四大创新应用开启健康新纪元
  • MySQL-事务(上)
  • 【Linux】如何使用 Xshell 登录 Linux 操作系统
  • Linux 下 Docker 容器部署指南(Java + Redis 示例)
  • ⭐CVPR2025 自动驾驶半监督 LiDAR 分割新范式:HiLoTs 框架深度解析
  • 设置word引用zotero中的参考文献的格式为中文引用格式或中英文格式
  • Shell编程核心入门:参数传递、运算符与流程控制全解析
  • SEO关键词布局总踩坑?用腾讯云AI工具从核心词到长尾词一键生成(附青少年英语培训实操案例)
  • [吾爱原创] 千千每日计划
  • Java全栈工程师面试实录:从基础到微服务的全面技术解析
  • 系统架构设计师选择题精讲与解题技巧
  • Spring Boot 自动配置原理深度解析:从启动流程到监听机制
  • 学习Python中Selenium模块的基本用法(10:浏览器操作)
  • 【物联网】BLE Fundamentals 核心概念总结-广告-读写特征-LED控制-传感器通知-上下游通信过程
  • CSDN博客语法(不常用但有用)
  • 年化225%,回撤9%,夏普4.32,3积分可查看参数
  • 【光照】[光照模型]是什么?以UnityURP为例
  • Excel工作技巧
  • 如何解决虚拟机异常退出后提示“获取所有权”错误