网站 手机兼容网络营销推广公司名称

张小明 2026/1/10 0:28:27
网站 手机兼容,网络营销推广公司名称,部队网站建设,客户管理系统免费后缀数组 资料#xff1a;https://pan.quark.cn/s/43d906ddfa1b、https://pan.quark.cn/s/90ad8fba8347、https://pan.quark.cn/s/d9d72152d3cf 一、后缀数组的定义 后缀数组#xff08;Suffix Array#xff0c;简称 SA#xff09;是一种针对字符串的高效数据结构#xff…后缀数组资料https://pan.quark.cn/s/43d906ddfa1b、https://pan.quark.cn/s/90ad8fba8347、https://pan.quark.cn/s/d9d72152d3cf一、后缀数组的定义后缀数组Suffix Array简称 SA是一种针对字符串的高效数据结构它将字符串的所有后缀按字典序排序后存储这些后缀的起始索引。给定一个长度为n的字符串S s₀s₁…sₙ₋₁其第i个后缀为S[i:] sᵢsᵢ₊₁…sₙ₋₁。后缀数组sa是一个长度为n的数组满足sa[k] i表示第k小的后缀是S[i:]且字典序满足S[sa[0]:] S[sa[1]:] … S[sa[n-1]:]。辅助数组为了高效处理后缀相关问题通常会搭配两个辅助数组排名数组rkrk[i] k表示后缀S[i:]在排序后的后缀数组中排名为k与sa互为逆数组即sa[rk[i]] i且rk[sa[k]] k。高度数组heightheight[k]表示排名为k的后缀与排名为k-1的后缀的**最长公共前缀LCP**长度即height[k] LCP(S[sa[k]:], S[sa[k-1]:])规定height[0] 0。二、后缀数组的核心特性字典序有序性后缀数组中的后缀按字典序升序排列这是解决字符串匹配、重复子串等问题的基础。排名与后缀的双向映射通过sa和rk可以快速查询后缀的排名或排名对应的后缀起始索引。最长公共前缀的传递性利用height数组可快速计算任意两个后缀的最长公共前缀长度LCP(i,j) min{height[rk[i]1 ... rk[j]]}假设rk[i] rk[j]。三、后缀数组的构建算法构建后缀数组的核心是对所有后缀进行高效排序直接排序的时间复杂度为O(n² log n)比较两个后缀的时间为O(n)对于长字符串效率极低。因此需要更优的算法常用的有1. 倍增算法主流算法核心思想通过倍增长度的方式逐步确定每个后缀的排名避免直接比较长后缀。步骤初始化先对每个字符长度为 1 的子串排序得到初始的sa和rk。倍增排序对于长度len 2,4,8,…将每个后缀的前len个字符拆分为前len/2字符和后len/2字符以(rk[i], rk[ilen/2])为关键字进行排序更新sa和rk。终止条件当len ≥ n时所有后缀的排名已确定。时间复杂度O(n log n)实现简单且效率较高是工程中常用的方法。2. DC3 算法核心思想基于基数排序的分治算法将后缀分为三类进行排序进一步优化时间复杂度。时间复杂度O(n)但实现复杂适合对时间要求极高的场景。四、后缀数组的实现示例倍增算法defbuild_sa(s):nlen(s)salist(range(n))rk[ord(c)forcins]# 初始排名为字符的ASCII码tmp[0]*n# 临时数组用于排序k1# 倍增长度whilekn:# 排序关键字(rk[i], rk[ik])ik超出范围则为-1defcmp(i):return(rk[i],rk[ik]ifiknelse-1)# 对sa数组按新关键字排序sa.sort(keycmp)# 更新tmp数组为新的排名tmp[sa[0]]0p0# 排名计数器foriinrange(1,n):# 若当前后缀与前一个后缀的关键字不同排名1ifcmp(sa[i])!cmp(sa[i-1]):p1tmp[sa[i]]p# 更新rk数组rk[:]tmp[:]k*2# 倍增长度returnsa,rkdefbuild_height(s,sa,rk):nlen(s)height[0]*n k0# 公共前缀长度foriinrange(n):ifrk[i]0:continueifk0:k-1jsa[rk[i]-1]# 前一个排名的后缀起始索引# 扩展公共前缀长度whileiknandjknands[ik]s[jk]:k1height[rk[i]]kreturnheight使用示例sabracadabranlen(s)sa,rkbuild_sa(s)heightbuild_height(s,sa,rk)print(字符串:,s)print(后缀数组 sa:,sa)print(排名数组 rk:,rk)print(高度数组 height:,height)# 输出解释# sa[0] 10 表示排名0的后缀是 s[10:] a# rk[10] 0 表示后缀 s[10:] 排名为0# height[1] 表示排名1的后缀与排名0的后缀的最长公共前缀长度五、后缀数组的时间复杂度构建倍增算法O(n log n)其中排序的时间为O(n log n)倍增的次数为log n。高度数组构建O(n)利用公共前缀的传递性避免重复比较。查询任意两后缀的 LCP若搭配**区间最小值查询RMQ**预处理height数组查询时间为O(1)预处理时间为O(n log n)。六、后缀数组的典型应用后缀数组是处理字符串问题的“万能工具”常用于以下场景字符串匹配在主串S中匹配模式串P可将P与S的后缀数组中的后缀进行二分查找时间复杂度O(|P| log |S|)。最长重复子串字符串中出现至少两次的最长子串其长度等于height数组的最大值。最长公共子串给定两个字符串S和T拼接为S # T后构建后缀数组找到分别来自S和T的后缀的最大height值。不同子串计数字符串中不同子串的总数为n(n1)/2 - sum(height[1...n-1])总子串数减去重复子串数。后缀排序与字典序相关问题如求字符串的最小表示、按后缀字典序输出子串等。七、后缀数组与其他字符串结构的对比数据结构核心优势适用场景时间复杂度构建后缀数组处理 LCP 问题高效功能全面重复子串、公共子串、匹配O(n log n)字典树Trie前缀匹配高效前缀查询、词频统计O(n)后缀自动机SAM空间效率极高支持动态添加海量字符串的子串问题O(n)后缀数组的优势在于直观易懂且功能全面缺点是空间复杂度较高需存储sa、rk、height三个数组而后缀自动机在空间和时间上更优但理解和实现难度更大。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress整站模板国家高新技术企业有多少家

Deep Agents 库介绍 写在前面: 最近做智能体调研langgraph ,lanchain,发现的这个新发布的智能体框架。langgraph的灵活性说实话不是很高,langchain 1.0现在对智能体开发的支持也加大力度了。agent必然是未来方向,新库的简介如下&…

张小明 2026/1/9 16:43:16 网站建设

做网站用什么笔记本配置有哪些做留学资讯的网站

PDF补丁丁跨平台终极指南:Windows与Linux完整解决方案 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gi…

张小明 2026/1/8 13:15:38 网站建设

网站建设开票属于什么服务静安区网站建设

计算机毕业设计springboot灾区物资管理系统sm768kx9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。当自然灾害突袭,道路中断、通讯失联、物资短缺,每一秒…

张小明 2026/1/8 13:15:36 网站建设

中型网站开发语言光谷网站建设

LobeChat能否转换代码格式?编程语言互译实验 在现代软件开发中,团队常常面临技术栈割裂的困境:前端用TypeScript,后端跑Python,边缘设备上却要写C。当一个算法原型需要跨平台部署时,手动重写不仅耗时&#…

张小明 2026/1/8 16:10:42 网站建设

平面设计展示网站中国建筑有限公司官网

第一章:为什么你的菜单响应慢?Open-AutoGLM性能调优关键路径曝光在高并发场景下,Open-AutoGLM的菜单响应延迟常源于模型推理瓶颈与缓存策略缺失。许多开发者忽视了上下文长度管理与向量检索效率,导致用户点击菜单时出现明显卡顿。…

张小明 2026/1/8 16:10:40 网站建设

建网站要多少钱一个常州网站建设服务

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个企业网络安全事件响应模拟系统,模拟Trojan:Win32/Vigorf.A病毒攻击场景。要求:1. 构建虚拟企业网络环境;2. 模拟病毒传播路径&#xff1…

张小明 2026/1/8 16:10:38 网站建设