2022.8.8 闲话

一道题的 Markdown 源码的 SHA256:1c08db54e2631466d962960e94a784a578cd63a6fa0bedb23759177e7c474f62 .

LCS 的一些做法:

Longest Common Subsequence

给两个序列 {an}{bn},求一个序列 {ck},使得:

  • {c} 同时是 {a}{b} 的子序列 .
  • k 最小 .

最需输出最小的 k .

特别的,我们有一些特殊性质:

  • 性质 A:{a}{b} 为排列 .
  • 性质 B:{a}{b} 中每个数出现的次数是小常数 .

性质 A:对 {b} 施置换 {a},则问题变为求 {b} 的 LIS,可以 O(nlogn) 解决 .

性质 B:对于每个元素 x,我们在 {a} 中找到 x 的出现位置并降序写出,然后替换 {b} 中所有 x,得到序列 {c},求其 LIS 即为答案 .

General:令 dpi,j 表示 a1ibij 的 LCS 长度,于是可以朴素 O(1) 转移,时间复杂度 O(n2) .

值得一提的是,在 James W. Hunt 和 Thomas G. Szymansky 的论文 "A Fast Algorithm for Computing Longest Common Subsequence" 中,给出了一个 Ω(nlogn)O(n2logn) 的做法 .

posted @   yspm  阅读(79)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
😅​
点击右上角即可分享
微信分享提示