信奥赛C++提高组csp-s之KMP算法详解

信奥赛C++提高组csp-s之KMP算法详解

一、KMP算法概述

KMP算法(Knuth-Morris-Pratt算法)是一种高效的字符串匹配算法,用于在文本串中查找模式串的出现位置。与朴素的暴力匹配相比,KMP算法的时间复杂度为O(n+m),其中n是文本串长度,m是模式串长度。

二、核心思想:利用已匹配信息避免重复比较
朴素算法的缺点
// 暴力匹配示例for(inti=0;i<=n-m;i++){boolfound=true;for(intj=0;j<m;j++){if(text[i+j]!=pattern[j]){found=false;break;}}if(found){// 找到匹配}}// 时间复杂度:O(n*m)

KMP算法的核心是:当出现不匹配时,利用已知信息,将模式串向右滑动尽可能远的距离,而不是每次只移动一位

三、关键概念:前缀函数(next数组)
1. 什么是前缀函数?
  • 对于模式串P的每个位置i(1≤ i ≤ m),定义前缀函数nxt[i]表示:
    • 子串P[1:i]的最长相同真前缀和真后缀的长度
    • 真前缀:不包括字符串本身的前缀
    • 真后缀:不包括字符串本身的后缀
2. next数组的作用
  • 记录匹配失败时,模式串应该回退到哪个位置继续匹配
  • 避免主串指针回退,保持O(n)的时间复杂度
四、next数组的构造(重点!)
1. 理解前缀和后缀

对于字符串"ababa":

  • 真前缀有:“a”, “ab”, “aba”, “abab”
  • 真后缀有:“a”, “ba”, “aba”, “baba”

最长公共前后缀:“aba”,长度为3

2. next数组的手动计算过程

以模式串"ABABCABAA"为例(备注:举例中的字符串下标从1开始):

步骤分解:

模式串:A B A B C A B A A 索引: 1 2 3 4 5 6 7 8 9 next: 0 0 1 2 0 1 2 3 1

计算过程详解:

  1. i=1: 子串"A" → 没有真前缀和真后缀 → next[1]=0
  2. i=2: 子串"AB" → 前缀{“A”},后缀{“B”} → 无公共 → next[2]=0
  3. i=3: 子串"ABA" → 前缀{“A”,“AB”},后缀{“A”,“BA”} → 最长公共"A" → next[3]=1
  4. i=4: 子串"ABAB" → 前缀{“A”,“AB”,“ABA”},后缀{“B”,“AB”,“BAB”} → 最长公共"AB" → next[4]=2
  5. i=5: 子串"ABABC" → 无公共前后缀 → next[5]=0
  6. i=6: 子串"ABABCA" → 最长公共"A" → next[6]=1
  7. i=7: 子串"ABABCAB" → 最长公共"AB" → next[7]=2
  8. i=8: 子串"ABABCABA" → 最长公共"ABA" → next[8]=3
  9. i=9: 子串"ABABCABAA" → 最长公共"A" → next[9]=1
3.next数组的构造算法思想

构造next数组的过程本质上是模式串的自我匹配

  1. 初始化:next[1] = 0,设j = 0(j表示当前已匹配的前缀长度)
  2. 递推计算:对于i从1到m-1(m为模式串长度)
    • 如果p[i+1] == p[j+1],则j++,next[i+1] = j
    • 否则,将j回退到next[j],继续比较
    • 如果j回退到0仍不匹配,则next[i] = 0

关键理解

  • j实际上表示当前位置之前的最长匹配前缀的长度

  • 当p[i+1] != p[j+1]时,我们不是从头开始,而是利用已经计算好的next[j]来回退

  • 我们可以把next数组看作一个状态转移函数

    • 当前状态为j(已匹配的长度)
    • 如果下一个字符匹配成功,转移到状态j+1
    • 如果下一个字符匹配失败,转移到状态next[j]

4. next数组的代码实现
nxt[0]=0;// 边界条件,空字符串的border长度为0nxt[1]=0;// 单个字符没有非自身的border,长度为0// 计算nxt[2]到nxt[len_p]for(inti=1,j=0;i<len_p;i++){// i从1开始,实际计算的是nxt[i+1],j表示当前已匹配的前缀长度// 当j>0且下一个字符不匹配时,利用已知的next信息回溯jwhile(j>0&&p[i+1]!=p[j+1]){j=nxt[j];// 回溯到前一个可能匹配的位置}// 如果下一个字符匹配,则增加匹配长度if(p[i+1]==p[j+1]){j++;}// 记录当前前缀的最长border长度nxt[i+1]=j;// nxt[i+1] = 前缀p[1...i+1]的最长border长度}
五、KMP匹配过程详解
示例:在文本串中查找模式串(备注:举例中的字符串S和P的下标从1开始)
文本串s: "ABABDABACDABABCABAB" 模式串p: "ABABCABAB" next数组: [0, 0, 1, 2, 0, 1, 2, 3, 4] 1 2 3 4 5 6 7 8 9 (模式串索引)
匹配过程:
  1. 首次失配(位置5)

    文本串:ABAB D ... 模式串:ABAB C ... 已匹配:ABAB (j=4) 失配字符:D vs C
    • 执行j = next[4] = 2
    • 模式串滑动:比较文本串的D与模式串的p[3]=A
    • 继续失配,j = next[2] = 0
    • 最终从模式串开头重新比较
  2. 完全匹配(位置11-19)

    文本串位置:11 12 13 14 15 16 17 18 19 文本串字符:A B A B C A B A B 模式串字符:A B A B C A B A B 匹配过程:逐步匹配,j从0增加到9
    • 匹配成功后输出位置:i - len(p) + 2 = 18 - 9 + 2 = 11
    • 继续:j = next[9] = 4,准备可能的重叠匹
KMP匹配的代码实现:
for(inti=0,j=0;i<len_s;i++){// i遍历文本串,j表示当前匹配的模式串长度// 当字符不匹配且j>0时,利用next数组回溯j,避免文本串指针i回退while(j>0&&s[i+1]!=p[j+1]){j=nxt[j];// 模式串向右滑动}// 当前字符匹配,模式串匹配长度加1if(s[i+1]==p[j+1]){j++;}// 如果完全匹配模式串if(j==len_p){// 输出匹配位置:当前文本串位置i+1减去模式串长度再加1// 因为字符串从1开始索引,所以起始位置为 i - len_p + 2printf("%d\n",i-len_p+2);// 继续寻找下一个匹配:将j设为当前匹配串的最长border长度j=nxt[j];}}

研究案例

题目描述

给出两个字符串s 1 s_1s1s 2 s_2s2,若s 1 s_1s1的区间[ l , r ] [l, r][l,r]子串与s 2 s_2s2完全相同,则称s 2 s_2s2s 1 s_1s1中出现了,其出现位置为l ll
现在请你求出s 2 s_2s2s 1 s_1s1中所有出现的位置。

定义一个字符串s ss的 border 为s ss的一个s ss本身的子串t tt,满足t tt既是s ss的前缀,又是s ss的后缀。
对于s 2 s_2s2,你还需要求出对于其每个前缀s ′ s's的最长 bordert ′ t't的长度。

输入格式

第一行为一个字符串,即为s 1 s_1s1
第二行为一个字符串,即为s 2 s_2s2

输出格式

首先输出若干行,每行一个整数,按从小到大的顺序输出s 2 s_2s2s 1 s_1s1中出现的位置。
最后一行输出∣ s 2 ∣ |s_2|s2个整数,第i ii个整数表示s 2 s_2s2的长度为i ii的前缀的最长 border 长度。

输入 #1
ABABABC ABA
输出 #1
1 3 0 0 1
说明/提示
样例 1 解释

对于s 2 s_2s2长度为3 33的前缀ABA,字符串A既是其后缀也是其前缀,且是最长的,因此最长 border 长度为1 11

数据规模与约定

本题采用多测试点捆绑测试,共有 4 个子任务

  • Subtask 0(30 points):∣ s 1 ∣ ≤ 15 |s_1| \leq 15s115∣ s 2 ∣ ≤ 5 |s_2| \leq 5s25
  • Subtask 1(40 points):∣ s 1 ∣ ≤ 10 4 |s_1| \leq 10^4s1104∣ s 2 ∣ ≤ 10 2 |s_2| \leq 10^2s2102
  • Subtask 2(30 points):无特殊约定。
  • Subtask 3(0 points):Hack。

对于全部的测试点,保证1 ≤ ∣ s 1 ∣ , ∣ s 2 ∣ ≤ 10 6 1 \leq |s_1|,|s_2| \leq 10^61s1,s2106s 1 , s 2 s_1, s_2s1,s2中均只含大写英文字母。

代码实现

#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;// 定义足够大的数组大小,满足题目数据范围chars[N],p[N];// s为文本串,p为模式串,下标从1开始intnxt[N];// next数组,nxt[i]表示模式串前i个字符组成的前缀的最长border长度intmain(){// 输入字符串,从下标1开始存储scanf("%s%s",s+1,p+1);intlen_s=strlen(s+1);// 文本串长度intlen_p=strlen(p+1);// 模式串长度// ---------- 第一部分:计算模式串的next数组(前缀函数) ----------nxt[0]=0;// 边界条件,空字符串的border长度为0nxt[1]=0;// 单个字符没有非自身的border,长度为0// 计算nxt[2]到nxt[len_p]for(inti=1,j=0;i<len_p;i++){// i从1到len_p-1,实际计算的是nxt[i+1]// 当j>0且下一个字符不匹配时,利用已知的next信息回溯jwhile(j>0&&p[i+1]!=p[j+1]){j=nxt[j];// 回溯到前一个可能匹配的位置}// 如果下一个字符匹配,则增加匹配长度if(p[i+1]==p[j+1]){j++;}// 记录当前前缀的最长border长度nxt[i+1]=j;// nxt[i+1] = 前缀p[1...i+1]的最长border长度}// ---------- 第二部分:KMP匹配过程 ----------for(inti=0,j=0;i<len_s;i++){// i遍历文本串,j表示当前匹配的模式串长度// 当字符不匹配且j>0时,利用next数组回溯j,避免文本串指针i回退while(j>0&&s[i+1]!=p[j+1]){j=nxt[j];// 模式串向右滑动}// 当前字符匹配,模式串匹配长度加1if(s[i+1]==p[j+1]){j++;}// 如果完全匹配模式串if(j==len_p){// 输出匹配位置:当前文本串位置i+1减去模式串长度再加1// 因为字符串从1开始索引,所以起始位置为 i - len_p + 2printf("%d\n",i-len_p+2);// 继续寻找下一个匹配:将j设为当前匹配串的最长border长度j=nxt[j];}}// ---------- 第三部分:输出模式串每个前缀的最长border长度 ----------for(inti=1;i<=len_p;i++){printf("%d ",nxt[i]);}return0;}

功能分析

1.算法目标
  • 实现KMP字符串匹配算法,解决两个问题:
    a) 找出模式串在文本串中所有出现的位置
    b) 计算模式串每个前缀的最长border长度
2.核心数据结构
  • nxt[]数组:存储模式串的“前缀函数”值,nxt[i]表示子串p[1...i]的最长border长度
    • 定义:border是字符串的非本身的前缀,且同时是该字符串的后缀
    • 例如:"ABA"的最长border是"A",长度为1
3.算法流程
第一步:预处理模式串(计算next数组)
  • 目的:得到模式串的“自匹配”信息,用于匹配失败时快速跳过不必要的比较
  • 关键操作
    • 初始化nxt[0]=0, nxt[1]=0
    • 使用双指针ij
      • i:当前正在计算的前缀的结束位置(实际代码中i从1开始,计算nxt[i+1]
      • j:当前已匹配的前缀长度,也指向下一个待比较字符
    • 循环中不断尝试扩展匹配长度,失败时通过j = nxt[j]回溯到更短的匹配前缀
  • 时间复杂度:O(len_p)
第二步:文本串匹配
  • 目的:在文本串中找到所有模式串出现的位置
  • 关键操作
    • 双指针i(文本串指针)和j(模式串匹配长度)
    • 不匹配时,j通过nxt数组回溯,i永不回退
    • 匹配成功时输出位置,并继续通过nxt[j]寻找下一个可能的匹配
  • 时间复杂度:O(len_s)
4.算法特点
  • 时间复杂度:O(len_s + len_p),线性复杂度
  • 空间复杂度:O(len_p),用于存储next数组
  • 核心优势:通过next数组避免文本串指针回退,显著提高效率
5.代码细节说明
  • 字符串存储:从下标1开始存储,方便与next数组下标对齐
  • 边界处理
    • 模式串长度为1时,next数组计算循环不执行,直接使用初始值
    • 匹配成功后执行j = nxt[j],确保不遗漏重叠匹配(如文本串"AAAA"中找模式串"AA"
  • 位置计算:匹配位置计算公式为i - len_p + 2
    • i:当前循环变量(从0开始)
    • len_p:模式串长度
    • +2:补偿下标从1开始和匹配结束位置到起始位置的转换
6.示例验证

对于输入:

ABABABC ABA

程序执行:

  • 计算next数组:nxt[1]=0, nxt[2]=0, nxt[3]=1

  • 匹配过程:

    • 位置1匹配成功(ABA
    • 位置3匹配成功(ABA
  • 输出:

    1 3 0 0 1

更多系列知识,请查看专栏:《信奥赛C++提高组csp-s知识详解及案例实践》:
https://blog.csdn.net/weixin_66461496/category_13113932.html

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、csp高频考点知识详解及案例实践:
    • CSP信奥赛C++之动态规划
    • CSP信奥赛C++之标准模板库STL
    • 信奥赛C++提高组csp-s知识详解及案例实践
  • 四、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

4、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1152171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算新选择:HY-MT1.5-1.8B轻量化部署全解析

边缘计算新选择&#xff1a;HY-MT1.5-1.8B轻量化部署全解析 随着多语言交流需求的不断增长&#xff0c;高质量、低延迟的翻译模型成为智能硬件和边缘计算场景中的关键技术。腾讯开源的混元翻译大模型&#xff08;HY-MT1.5&#xff09;系列&#xff0c;凭借其在翻译质量、多语言…

通俗解释LCD12864工作原理:小白也能懂

从零开始搞懂LCD12864&#xff1a;一块老屏背后的硬核逻辑你有没有在电表、温控器或者实验室设备上见过那种蓝底白字的屏幕&#xff1f;上面能显示“温度&#xff1a;37.5℃”、“菜单设置”甚至简单的图标——它很可能就是LCD12864。别看这玩意儿长得像古董&#xff0c;至今还…

AI骨骼关键点检测优化指南:MediaPipe Pose参数调整

AI骨骼关键点检测优化指南&#xff1a;MediaPipe Pose参数调整 1. 引言&#xff1a;AI人体骨骼关键点检测的工程挑战 随着计算机视觉技术的发展&#xff0c;人体姿态估计&#xff08;Human Pose Estimation&#xff09;已成为智能健身、动作捕捉、虚拟现实和人机交互等领域的…

MediaPipe Pose部署教程:零基础实现人体姿态估计

MediaPipe Pose部署教程&#xff1a;零基础实现人体姿态估计 1. 引言 1.1 学习目标 本文是一篇从零开始的实战教程&#xff0c;旨在帮助没有任何MediaPipe使用经验的开发者快速部署并运行一个高精度的人体姿态估计系统。通过本教程&#xff0c;你将掌握&#xff1a; 如何本…

DownKyi:B站视频下载神器,新手也能轻松掌握的8K视频收藏指南

DownKyi&#xff1a;B站视频下载神器&#xff0c;新手也能轻松掌握的8K视频收藏指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取…

从零实现CP2102 USB转UART硬件方案

手把手教你打造一个稳定可靠的CP2102 USB转UART模块 你有没有遇到过这样的场景&#xff1a;调试STM32时发现电脑没有串口&#xff0c;买来的CH340模块时不时掉驱动&#xff0c;或者在工业现场因为通信不稳定导致数据错乱&#xff1f;这些问题其实都指向同一个核心需求—— 一…

MediaPipe Pose实战:康复训练动作监测系统搭建

MediaPipe Pose实战&#xff1a;康复训练动作监测系统搭建 1. 引言 1.1 康复训练中的技术痛点 在现代康复医学中&#xff0c;患者的动作规范性直接影响治疗效果。传统的康复训练依赖治疗师肉眼观察和手动记录&#xff0c;存在主观性强、反馈滞后、难以量化等问题。尤其在远程…

AI骨骼检测WebUI使用教程:上传图片即得火柴人骨架图

AI骨骼检测WebUI使用教程&#xff1a;上传图片即得火柴人骨架图 1. 章节概述 随着AI在计算机视觉领域的深入发展&#xff0c;人体姿态估计&#xff08;Human Pose Estimation&#xff09;已成为智能健身、动作捕捉、虚拟试衣等场景的核心技术之一。本文将详细介绍一款基于 Go…

DownKyi完整攻略:掌握B站视频离线下载全流程

DownKyi完整攻略&#xff1a;掌握B站视频离线下载全流程 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。 …

DownKyi终极指南:B站视频下载的10个专业技巧

DownKyi终极指南&#xff1a;B站视频下载的10个专业技巧 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。 …

惊艳!HY-MT1.5-1.8B打造的会议同传系统效果展示

惊艳&#xff01;HY-MT1.5-1.8B打造的会议同传系统效果展示 随着全球化交流日益频繁&#xff0c;实时、精准、低延迟的多语言会议同传系统成为跨国协作的关键基础设施。然而&#xff0c;传统方案依赖高成本云端API或大型模型集群&#xff0c;难以满足端侧部署与隐私保护需求。…

MediaPipe模型集成指南:现有系统无缝接入教程

MediaPipe模型集成指南&#xff1a;现有系统无缝接入教程 1. 引言 1.1 业务场景描述 在数字化时代&#xff0c;图像和视频内容的传播日益频繁&#xff0c;随之而来的是个人隐私泄露风险的急剧上升。尤其是在社交媒体、安防监控、医疗影像等场景中&#xff0c;人脸作为最敏感…

5分钟部署腾讯HY-MT1.5翻译模型,38种语言一键搞定

5分钟部署腾讯HY-MT1.5翻译模型&#xff0c;38种语言一键搞定 1. 引言&#xff1a;企业级机器翻译的轻量化革命 在大模型普遍追求千亿参数规模的今天&#xff0c;腾讯混元团队反其道而行之&#xff0c;推出了专为机器翻译&#xff08;MT&#xff09;优化的 HY-MT1.5-1.8B 模型…

MediaPipe Pose实战对比:与OpenPose在CPU上的性能差异评测

MediaPipe Pose实战对比&#xff1a;与OpenPose在CPU上的性能差异评测 1. 引言&#xff1a;为何需要轻量级姿态估计方案&#xff1f; 随着AI视觉技术的普及&#xff0c;人体骨骼关键点检测&#xff08;Human Pose Estimation&#xff09;已成为智能健身、动作捕捉、虚拟试衣、…

MediaPipe Pose光照适应性测试:暗光环境下部署优化实战

MediaPipe Pose光照适应性测试&#xff1a;暗光环境下部署优化实战 1. 引言&#xff1a;暗光场景下的姿态检测挑战 随着AI视觉技术的普及&#xff0c;人体骨骼关键点检测在健身指导、动作识别、虚拟试衣等场景中展现出巨大潜力。Google MediaPipe Pose 模型凭借其轻量级架构和…

笔记本内置声卡与Realtek驱动兼容问题解析

笔记本音频为何“说没就没”&#xff1f;Realtek声卡驱动兼容性深度拆解你有没有遇到过这种情况&#xff1a;Windows更新完&#xff0c;笔记本突然没声音了&#xff1f;插上耳机&#xff0c;扬声器还在响&#xff1b;开个会议&#xff0c;麦克风底噪大得像刮黑板&#xff1b;打…

性能翻倍:HY-MT1.5-1.8B量化部署优化实战

性能翻倍&#xff1a;HY-MT1.5-1.8B量化部署优化实战 随着多语言交互需求在智能设备、跨境服务和边缘计算场景中的快速增长&#xff0c;低延迟、高精度的本地化翻译能力成为关键基础设施。腾讯混元团队开源的 HY-MT1.5-1.8B 模型&#xff0c;作为同系列中轻量级主力成员&#…

从零开始学姿态估计:MediaPipe Pose部署完整实操手册

从零开始学姿态估计&#xff1a;MediaPipe Pose部署完整实操手册 1. 引言&#xff1a;为什么选择MediaPipe进行姿态估计&#xff1f; 随着AI在视觉领域的深入发展&#xff0c;人体姿态估计&#xff08;Human Pose Estimation&#xff09;已成为智能健身、动作捕捉、虚拟试衣、…

DownKyi:重新定义哔哩哔哩视频下载体验

DownKyi&#xff1a;重新定义哔哩哔哩视频下载体验 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。 项目…

MediaPipe Pose实战部署:HTTPS加密访问配置步骤

MediaPipe Pose实战部署&#xff1a;HTTPS加密访问配置步骤 1. 背景与应用场景 随着AI在智能健身、动作识别、虚拟试衣等领域的广泛应用&#xff0c;人体骨骼关键点检测成为一项核心技术。传统的姿态估计算法往往依赖GPU加速或云服务API&#xff0c;在部署成本和隐私安全上存…