SAM

Posted ryedii-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAM相关的知识,希望对你有一定的参考价值。

关于 SAM:

  • lnk 树上,任意非叶子节点,其孩子节点的 endpos 集合是本身 endpos 集合的划分。
  • SAM 的 lnk 树是“前缀树”,任意节点是其孩子节点的后缀。
int kid[T][A], len[T], lnk[T];
int lst = 1, ct = 1;
void insert(int c) {
    int p = lst, np = ++ct;
    len[np] = len[p] + 1, siz[np] = 1, lst = np;
    for (; p && !kid[p][c]; p = lnk[p]) kid[p][c] = np;
    if (!p) lnk[np] = 1;
    else {
        if (len[p] + 1 == len[kid[p][c]]) lnk[np] = kid[p][c];
        else {
            int q = kid[p][c], nq = ++ct;
            len[nq] = len[p] + 1, lnk[nq] = lnk[q], lnk[q] = lnk[np] = nq;
            memcpy(kid[nq], kid[q], sizeof(kid[q]));
            for (; p && kid[p][c] == q; p = lnk[p]) kid[p][c] = nq;
        }
    }
}

以上是关于SAM的主要内容,如果未能解决你的问题,请参考以下文章

sh 生物信息学代码高尔夫:SAM与共识FASTA

Visual Studio 代码调试器未连接到 SAM Local

如何在不使用 SAM 的情况下使用 AWS 代码部署来部署简单的 AWS lambda 函数?

lio_sam代码阅读之imageProjection.cpp

如何在 SAM 项目中使用 codepipeline?

[BZOJ3676][APIO2014]回文串(Manacher+SAM)