伪结生成操作及其性质

伪结生成操作

摘要

伪结是一种主要在RNA链中形成的分子内结构,已有大量研究致力于高效预测RNA中的伪结结构。我们定义了一种从给定序列生成所有伪结的操作,并研究该操作的算法与语言理论性质。我们给出一个高效算法来判定给定字符串是否为正则语言L的伪结——若 L由确定性有限自动机给出,则运行时间为线性时间。我们研究了伪结生成操作的封闭性与判定性质。在DNA编码应用中,伪结结构是不希望出现的。我们给出了多项式时间算法,用于判定正则语言 L是否包含伪结,或是否包含由 L中某个字符串生成的伪结。此外,我们证明了对于上下文无关语言,相应的问题是不可判定的。

关键词 :伪结 · Pseudoknot-generating操作 · Closure和判定性质 · Formal languages

1 引言

核糖核酸(RNA)通常根据腺嘌呤(A)、尿嘧啶(U)、鸟嘌呤(G)和胞嘧啶(C)之间的碱基配对形成二级结构[5]。这些碱基 A, G, C和 U互补结合并形成称为茎的双螺旋,以及带有未配对环的双螺旋称为茎环。RNA结构通常以茎和各种类型的环作为结构模体,从而形成发夹或伪结等众所周知的结构。RNA结构在细胞中起着重要作用,并为分子进化和RNA分子功能提供见解[19]。

因此,在生物信息学中,预测由一组具有最优热力学能量的茎组成的RNA结构是最重要和最基本的问题之一。需要注意的是,RNA序列的稳定的最优折叠与基于热力学理论的RNA二级结构的最小自由能密切相关。

假结结构包含至少两个在RNA中通过分子内碱基配对形成的茎环:其中一个茎的后半部分被嵌入位于另一个茎的两半之间。(见图1中的伪结结构示例。)伪结结构出现在许多天然RNA分子中,并与核糖体移码密切相关,使病毒能够从相对较小的基因组中产生多种蛋白质结构[9]。由于核糖体移码影响蛋白质编码,而伪结结构赋予分子三级结构,因此预测伪结结构是生物分子计算的一个重要课题[3,9]。这促使研究人员研究高效预测伪结结构的方法[2,4]。从形式语言的角度来看,一些研究人员[8,15,17,18]对伪结结构进行了形式化描述,并提出了伪结预测算法。对于给定输入,预测或比对任意伪结结构的问题是NP难的[2,11]。M¨ohl 等人 [17]提出了一种计算具有任意伪结的两个RNA结构之间编辑距离的算法,并证明该算法在实践中是可行的。卡里和关[15]在形式语言理论下形式化了特定类型的伪结结构,并研究了其性质。埃文斯[8]提出了首个用于寻找包含伪结的最大公共子结构的多项式时间算法。里纳多等人[18]推广了多种 RNA结构,并提出了一种基于树分解方法的比对算法。

尽管大多数研究人员关注的是从(长)序列预测伪结结构的问题,但我们从另一个角度来考虑伪结结构:一个序列可以通过扩展(即附加一个新的相同序列)形成伪结结构。我们研究这一过程,并定义一种新的操作 pseudoknot-generating操作,该操作能够从给定序列生成所有伪结结构(从此以后我们简称为伪结)。随后,所得到的序列会折叠成伪结。因此,输入字符串成为生成伪结的种子串。我们建立了字符串上伪结生成操作的封闭性,并提出一种算法,用于判断一个字符串是否为伪结。由于伪结结构与某些生物突变相关,因此对于检测DNA序列的突变模式至关重要。我们还研究了语言上的伪结生成操作的封闭性,并探讨了与语言相关的若干伪结问题。从生物学角度来看,我们可以将语言上的伪结生成操作视为一种生成所有可能由子序列集引起突变的伪结的程序。特别是,我们从理论上证明了可以检查两组DNA序列是否包含共同的突变种子序列。此外,我们定义了无伪结性,并研究了正则语言和上下文无关语言的无伪结性的可判定性问题。

在第2节中,我们回顾了一些符号并定义了伪结生成操作。我们在第3节中考虑伪结生成操作,并设计了若干算法,用于从字符串和有限自动机中识别生成的伪结。接着,我们在第4节中研究伪结生成操作的封闭性与判定性质,并探讨无伪结语言。

2 预备知识

设 Σ表示一个有限的字符字母表, Σ ∗表示 Σ上所有字符串的集合。 Σ的大小 |Σ| 是指 Σ中字符的个数。 Σ上的一个语言是 Σ ∗的一个子集。符号 ∅表示空语言,符号 λ表示空字符串。给定一个字符串 x= x1 ··· xn, |x| 是 x中字符的个数, x(i) 表示 x的第 i个字符 xi,而 x(i, j)= xixi+1 ··· xj表示从位置 i到位置 j的 x的子串,其中 i ≤ j。给定 Σ ∗中的两个字符串 x和 y,如果存在 z ∈Σ ∗使得 xz= y,则称 x是 y的前缀;如果存在 z ∈Σ ∗使得 zx= y,则称 x是 y的后缀。此外,如果存在两个字符串 u和 v使得 uxv= y,则称 x是 y的子串或中缀。

一个有限自动机 A由一个元组 (Q,Σ, δ, s, F) 指定,其中 Q 是一个有限的状态集, Σ 是输入字母表, δ: Q×Σ → 2Q 是转移函数, s ∈ Q 是起始状态, F ⊆ Q 是终态集合。如果 F 只包含单个状态 f,则为简便起见,我们使用 f 而不是 {f}。设 |Q| 为 Q 中状态的数量, |δ| 为 δ 中转移的数量,则 A 的大小为 |A| = |Q| + |δ|。对于 A 中的转移 δ(p, a) = q,我们说 p 有一个出转移, q 有一个入转移。如果 δ(q, a) 只有一个元素 q′,则为简便起见,我们记作 δ(q, a) = q′,而不是 δ(q, a)={q′}。

如果存在一条从 s到终态的带标签路径,且该路径拼写出 x,则称字符串 x (在Σ上)被 A接受。我们将此路径称为接受路径。那么, A的语言 L(A)是 A中所有由接受路径拼写出的字符串构成的集合。我们说 A的一个状态在 A的某个接受路径中出现时是有用的;否则,它是无用的。除非另有说明,在下文中我们假设 A的所有状态都是有用的。

给定一个字符串 x,我们说 x具有伪结,如果存在 w的子串 x,使得 w= w1w2w3w4w R 1 w5w R 3对某些字符串 w1、 w2、 w3、 w5 ∈Σ +和w4 ∈Σ ∗成立。我们称字符串 w为伪结字符串(或简称为伪结)。我们考虑一种限制性假结,其中 w4= λ,这意味着一个茎的一半与另一个茎的一半相邻。(参见图 2中的限制性假结示例。) 给定一个字符串 x,我们定义限制性伪结生成操作

$$
PK_R(x) = {x_1x_2x_3x_1^R x_4x_3^R \mid x = x_1x_2x_3 \text{ 且 } x_1, x_2, x_3, x_4 \in \Sigma^+}.
$$

对于一个语言 L,

$$
PKR(L) = \bigcup_{x \in L} PKR(w).
$$

我们定义PKR的迭代操作为,对于 i ≥ 0,

$$
PKR^{(0)}(L) = L, \quad PKR^{(i+1)}(L) = PKR(PKR^{(i)}(L)), \quad PKR^*(L) = \bigcup_{i=0}^\infty PKR^{(i)}(L).
$$

在下文中,我们仅考虑限制性假结,并将其简称为伪结,除非需要区分限制性假结与一般伪结。

3 识别生成伪结的算法

我们首先研究判断一个字符串 w= w1w2 ··· wn是否为伪结的问题;即,是否存在 w= x1x2x3x R 1 x4x R 3使得对某些 x1, x2, x3, x4 ∈ Σ+成立。我们方法的主要思想是检查是否存在 w的一个子串 x3x R 后缀。一种朴素的方法是考虑所有可能的子串并验证该条件。我们设计了一种更优的算法,基于Aho‐Corasick算法[1],能够更高效地检查所需条件。

具有两个碱基配对(i, j)和(i′, j′)的简单伪结; (b) 具有两个碱基配对(i, j)和(i′, j′)的一种受限形式的伪结,其中(i′, j′)的前半部分紧接着 (i, j)的后半部分,其中 0 ≤ i< i′< j< j′ ≤ n。)

3 识别生成伪结的算法(续)

在描述整个算法之前,我们首先介绍一种算法,该算法用于找出输入模式字符串相对于输入在每个索引处的匹配前缀的最短长度。该算法对于判断 w 是否为伪结至关重要。

过程:最短匹配长度(w, T)

/ w 是一个长度为 m 的模式,T 是一个长度为 n 的文本 /

为 w 构造一个确定性有限自动机 $ A = (Q, \Sigma, \delta, 0, Q \setminus {0}) $,其中 $ Q = {0, 1, …, m} $

/ 构造 goto 函数 G /
$ G(0, a \neq w_1 \in \Sigma) \leftarrow 0 $
for $ i \leftarrow 0 $ to $ m - 1 $ do
$ G(i, w_{i+1}) \leftarrow i + 1 $

/ 构造失效函数 F 和输出函数 O /
$ F(1) \leftarrow 0 $
for $ i \leftarrow 1 $ to $ m $ do
if $ G(i, a) = i + 1 $ then
$ v \leftarrow F(i) $
while $ G(v, a) \neq \emptyset $ do
$ v \leftarrow F(v) $
$ F(i+1) \leftarrow G(v, a) $
$ O(i+1) \leftarrow \min(O(i+1), O(F(i+1))) $

/ 使用 G, F, O 读取 T /
$ q \leftarrow 0 $
for $ i \leftarrow 1 $ to $ n $ do
while $ G(q, T(i)) \neq \emptyset $ do
$ q \leftarrow F(q) $
$ q \leftarrow G(q, T(i)) $
if $ O(q) \neq \emptyset $ then
$ \text{SML}[q] \leftarrow O(q) $
return SML

给定一个输入模式字符串 $ w $ 和文本 $ T $,Proc. ShortestMatchingLength 是一种改进的 Aho-Corasick 算法,用于在 $ T $ 的每个索引处找到 $ w $ 的匹配前缀的最短长度;如果 $ u $ 是 $ w $ 的最短匹配前缀,则其逆序 $ u^R $ 会作为中缀出现在 $ T $ 中。该算法与原始 Aho-Corasick 算法的两个主要区别是:

  1. 它仅接收一个字符串 $ w $ 作为输入模式,并将 $ w $ 的所有前缀视为匹配模式;
  2. 输出函数 $ O $ 返回匹配模式的最短长度,而不是报告所有匹配模式:$ O(i+1) \leftarrow \min(O(i+1), O(F(i+1))) $。

容易验证,Proc. ShortestMatchingLength 的运行时间为 $ O(m + n) $,其中 $ m = |w| $ 和 $ n = |T| $。

现在我们设计整个算法,用于判断 $ w $ 是否为伪结,使用 Proc. ShortestMatchingLength。首先,我们考虑 $ w $ 的所有长度不超过 $ n/2 $ 的前缀——作为伪结中 $ w_1 $ 的候选,并利用 Proc. ShortestMatchingLength,输入 $ w = w_1w_2 \cdots w_{n/2} $ 和 $ T = w^R $,计算每个索引对应的最短匹配前缀长度的集合 $ wp[i] $。接着,我们类似地考虑 $ w $ 的所有长度不超过 $ n/2 $ 的后缀——作为伪结中 $ w_3^R $ 的候选,并利用 Proc. ShortestMatchingLength,输入 $ w = w_{n/2+1} \cdots w_{n-1}w_n $ 和 $ T = w $,计算每个索引对应的最短匹配后缀长度的集合 $ ws[i] $。

引理1 . 给定一个长度为 $ n $ 的字符串 $ w $,我们可以在 $ O(n) $ 时间内确定 $ w $ 是否为伪结。

注意,如果 $ w $ 是一个伪结,则可以从算法中找到所有满足 $ w(1, i) = x_1x_2x_3 $ 和 $ w(i+1, n) = x_1^R x_4 x_3^R $ 的 $ w $ 的索引 $ i $。令 $ I_{pk}(w) $ 为这些索引的集合。

推论1 . 给定两个伪结字符串 $ x $ 和 $ y $,我们可以在线性时间内确定 $ x, y \in PK_R(w) $ 是否构成一个字符串 $ w $,时间复杂度为 $ x $ 和 $ y $ 的大小。我们还可以在相同的时间复杂度内使用 $ I_{pk}(x) $ 和 $ I_{pk}(y) $ 来识别这样的 $ w $。

接下来,我们考虑一个判定问题:对于给定的有限自动机 $ A $,判断 $ w $ 是否属于 $ PK_R(L(A)) $。我们的方法很简单:用 $ A $ 逐个字符读取 $ w $,并在读取 $ w $ 的过程中,找出所有进入 $ A $ 的终态时对应的 $ w $ 的位置索引 $ j $。即,$ w(1, j) \in L(A) $。令 $ I_p(w, A) $ 表示所有此类索引的集合。

引理2 . 给定一个字符串 $ w $ 和一个有限自动机 $ A $,
$$
w \in PK_R(L(A)) \iff I_{pk}(w) \cap I_p(w, A) \neq \emptyset.
$$

注意,一个伪结字符串可能具有多个不同的伪结。因此,即使 $ w(1, i) = x_1x_2x_3 $ 和 $ w(i+1, n) = x_1^R x_4 x_3^R $ 对于索引 $ i $ 的 $ w $,$ w(1, i) $ 可能不会被 $ A $ 接受。这正是为什么我们在 $ I_{pk}(w) $ 中考虑了所有可能的索引。我们现在基于伪结检测算法和引理2建立以下结果。

定理1 . 给定一个大小为 $ n $ 的字符串 $ w $ 和一个大小为 $ m = |A| $ 的有限自动机 $ A $,我们可以在 $ O(mn) $ 时间内确定 $ w \in PK_R(L(A)) $ 是否成立。如果 $ A $ 是一个确定性有限自动机,则运行时间变为 $ O(n) $。

证明 . 计算 $ I_{pk}(w) $ 需要 $ O(n) $ 时间,计算 $ I_p(w, A) $ 需要 $ O(mn) $ 时间。如果 $ A $ 是确定性有限自动机,则可以在 $ O(n) $ 时间内计算 $ I_p(w, A) $。

注意,RNA 的伪结与蛋白质表达的移码突变密切相关,并常见于病毒基因组中,尤其是流感病毒[7]。这促使研究人员考虑通过多个序列之间的结构比较,以发现共同的突变模式,特别是伪结[6]。在此,我们研究了两个字符串 $ x $ 和 $ y $ 具有 $ PK_R(x) \cap PK_R(y) \neq \emptyset $ 的必要条件,并证明在 $ PK_R(x) $ 和 $ PK_R(y) $ 中判断两个字符串是否具有共同的伪结是可判定的。

∩ PK R(y) ≠ ∅。首先,x 是 y 的前缀。其次,u(图中的斜线框)的较长部分以如下形式出现:(a) 作为 x 的前缀,或 (b) 以逆序形式 u R 作为 x 的中缀(但不是前缀),其中 t, v, z ∈ Σ +。)

设 $ x $ 和 $ y $ 为两个字符串,其中 $ |x| < |y| $。图5显示,$ PK_R(x) \cap PK_R(y) \neq \emptyset $ 当且仅当 $ x $ 是 $ y $ 的前缀,且 $ y(|x| + 1, |y|) $(图中为 = u)作为中缀出现在 $ x(1, |x| - 2) $ 中——我们考虑 $ x(1, |x| - 2) $ 以确保 $ t, v, z \in \Sigma^+ $(如果存在)。作为中缀有两种可能的情况如下:

(a) 由于 $ u^R $ 作为 $ x(1, |x| - 2) $ 的前缀出现,我们可以为 $ t $ 选择 $ x(1, |x| - 2) $ 的任意前缀 $ y_1 $,如图 5(a) 所示。
(b) 由于 $ u^R $ 作为 $ x(1, |x| - 2) $ 的中缀(但不是前缀)出现,我们可以选择 $ t $ 的前缀 $ x_1 $,使得 $ x_1 = tu^R $ 对于 $ y_1 $ 成立,如图 5(b) 所示。

我们可以使用 KMP 算法在 $ O(|x|) $ 时间内检查这一点,因此得到以下结果。

引理3 . 给定两个字符串 $ x $ 和 $ y $,使得 $ |x| < |y| $,我们可以在 $ O(|x|) $ 时间内确定 $ PK_R(x) \cap PK_R(y) = \emptyset $ 是否成立。

证明 . 该证明直接来自图5。

我们知道,如果两个字符串在 $ PK_R(x) $ 和 $ PK_R(y) $ 中具有共同的伪结。接下来,我们研究当 $ |x| < |y| $ 时,$ PK_R(x) $ 与 $ PK_R(y) $ 之间的包含关系。

引理4 . 给定两个字符串 $ x $ 和 $ y $,如果 $ |x| < |y| $,则 $ PK_R(x) \subset PK_R(y) $ 不可能成立。

给定一个字符串 $ z $,根据操作的定义,很容易验证 $ PK_R(z) $ 是正则的,且 $ PK_R(z) $ 是无限的。我们考虑对所得语言多次应用 $ PK_R $ 操作的情况,并证明迭代的 $ PK_R $ 不保持正则性。

定理2 . 存在一个字符串 $ z $,使得 $ PK_R^2(z) $ 和 $ PK_R^*(z) $ 不是正则的。

证明 . 通过选择 $ \Sigma = {a, ¢, \$} $ 和 $ z = ¢a\$ $,可以验证 $ PK_R^2(z) $ 和 $ PK_R^*(z) $ 不是正则的。

4 伪结生成操作对语言的作用

我们研究了伪结在字符串集合上的性质。对一个字符串进行伪结操作意味着我们生成一个由伪结的共同结构模体相关联的伪结家族。注意,通过字符串上的伪结操作,给定的字符串被扩展并成为一个伪结字符串。我们将这一观点扩展到语言上,其中字符串集合表示长RNA序列的所有子序列的集合。这意味着语言上的伪结操作会生成所有可能作为突变部分出现的伪结。

4.1 伪结生成操作的封闭性与判定性质

我们首先考虑伪结操作的封闭性,并确定作用于语言上的两组伪结是否包含公共字符串。

定理3 . 正则语言和上下文无关语言在 $ PK_R $ 下不封闭。

接下来,给定正则语言 $ L $ 和 $ R $ 我们考虑如下问题:是否存在一个由 $ L $ 中的字符串和 $ R $ 中的字符串共同生成的伪结。注意,根据定理3可知,$ PK_R(L) $ 通常甚至不一定是上下文无关语言。这意味着我们不能简单地先分别构造出语言 $ PK_R(L) $ 和 $ PK_R(R) $ 的表示形式,再检查它们是否有非空交集。相反,我们的算法直接基于原始语言 $ L $ 和 $ R $ 的有限自动机。

设 $ A = (Q_A, \Sigma, \delta_A, s_A, F_A) $ 和 $ B = (Q_B, \Sigma, \delta_B, s_B, F_B) $ 分别为 $ L $ 和 $ R $ 的两个有限自动机。然后,我们首先通过标准的笛卡尔积构造一个有限自动机 $ C = (Q_A \times Q_B, \Sigma, \delta_C, s_A \times s_B, F_A \times F_B) $,用于 $ L(A) \cap L(B) $,其中
$$
\delta_C((p, q), a) = {(p’, q’) \mid p’ \in \delta_A(p, a) \text{ 且 } q’ \in \delta_B(q, a)}.
$$

我们的算法类似于图5中所示的思想:我们检查是否存在一对字符串——例如 $ x \in L(A) $、$ y \in L(B) $ 和 $ |x| < |y| $(另一种情况是对称的)——使得 $ PK_R(x) \cap PK_R(y) \neq \emptyset $。由于 $ x $ 是 $ y $ 的前缀,因此在 $ B $ 中存在一条从 $ s_B $ 到非终态 $ q $ 的路径,该路径拼写出 $ x $。我们在 $ C $ 中搜索此类路径。对于 $ C $ 的每个状态 $ (f, q) $,其中 $ f \in F_A, q \in Q_B $,我们定义两个有限自动机如下:

  • $ \overleftarrow{C}_{f,q} = (Q_A \times Q_B, \Sigma, \delta_C, s_A \times s_B, {(f, q)}) $;换句话说,$ (f, q) $ 是 $ C $ 的唯一终态。
  • $ B_{\rightarrow q} = (Q_B, \Sigma, \delta_B, q, F_B) $;换句话说,$ q $ 是 $ B $ 的新起始状态。

) ∩ PK R(L(B)) ≠ ∅。注意,u R 是字符串 x(2, |x| − 2) 的中缀。)

引理5 . 存在 $ C $ 的一个状态 $ (f, q) $,使得
$$
L(\overleftarrow{C} {f,q}) \cap \Sigma^ \cdot (L(B_{\rightarrow q})^R \cdot \Sigma^2) \cdot \Sigma^ \neq \emptyset
$$
或一个状态 $ (p, f’) $ 属于 $ C $,使得
$$
L(\overleftarrow{C}
{p,f’}) \cap \Sigma^ \cdot (L(A_{\rightarrow p})^R \cdot \Sigma^2) \cdot \Sigma^ \neq \emptyset
$$
当且仅当 $ PK_R(L(A)) \cap PK_R(L(B)) \neq \emptyset $。

一旦我们得到了交集有限自动机 $ C $,最多有 $ |Q_A||Q_B| $ 个形如 $ (f, q) $ 或 $ (p, f’) $ 的状态。然后,对于每个状态,例如 $ (f, q) $,我们需要检查 $ L(\overleftarrow{C} {f,q}) \cap \Sigma^ \cdot (L(B_{\rightarrow q})^R \cdot \Sigma^2) \cdot \Sigma^ $ 是否为空。由于 $ \overleftarrow{C} {f,q} $ 的大小最多为 $ |A||B| $,且 $ B_{\rightarrow q} $ 的大小最多为 $ |B| $,因此需要 $ O(|A||B|^2) $ 时间。因此,在最坏情况下,总运行时间为
$$
O(n^2) \text{(状态数)} \times O(n^6) \text{(交集测试)} = O(n^8),
$$
其中 $ n $ 是 $ A $ 和 $ B $ 之间状态的最大数量。

定理4 . 给定两个有限自动机 $ A $ 和 $ B $,我们可以确定是否
$$
PK_R(L(A)) \cap PK_R(L(B)) = \emptyset
$$
在多项式时间内。

我们经常需要验证输入集——一个字符串集合中是否存在伪结。在生物学中,RNA序列可能首先折叠成非假结结构,然后形成包含伪结的更复杂结构。根据这一现象,贾巴里和康登[10]在预测伪结时考虑了非假结,以捕获所有可能的伪结前体结构。

当输入集的元素数量有限时,我们可以逐个检查这些元素。然而,如果该集合是无限的,则我们需要一个更高效的算法。我们考虑当该集合为正则语言时的情况。在提出算法之前,我们定义逆限制性伪结生成操作 $ PK_R^{-1} $ 为
$$
PK_R^{-1}(w) = {x_1x_2x_3 \mid w \in x_1x_2x_3x_1^R x_4x_3^R, x_1, x_2, x_3, x_4 \in \Sigma^+}.
$$

引理6 . 设 $ A $ 为一个非确定性有限自动机。则存在一个非确定性有限自动机 $ A’ $,使得
$$
L(A’) = PK_R^{-1}(L(A)).
$$

推论2 . 给定一个非确定性有限自动机 $ A $,我们可以确定 $ A $ 是否接受一个伪结。

注意,判断一个给定的正则语言是否包含伪结是可判定的。此处,我们通过证明判断一个上下文无关语言是否包含伪结是不可判定的,来与推论2的结果形成对比。我们从 Post 对应问题 (PCP)[20] 进行归约。回顾一下,PCP 的一个实例由两个字符串列表 $ ((u_1, …, u_n), (v_1, …, v_n)) $,$ u_i, v_i \in \Sigma^*, 1 \leq i \leq n $ 组成,该实例的解是一个整数序列 $ i_1, …, i_k \in {1, …, n} $,使得 $ u_{i_1} \cdots u_{i_k} = v_{i_1} \cdots v_{i_k} $ 成立。众所周知,PCP 是不可判定的[20]。

命题1 . 对于给定的上下文无关语言 $ L $,判定 $ L $ 是否包含伪结是不可判定的。

4.2 无伪结语言

类比于前缀码或后缀码等受限码类的定义[12],我们定义一个语言 $ L $ 是 $ PK_R $-自由的(非正式地称为伪结自由),如果 $ L $ 中没有任何字符串是由 $ L $ 中的另一个字符串生成的伪结。

定义1 . 我们说一个语言 $ L $ 是 $ PK_R $-free 的,如果 $ L \cap PK_R(L) = \emptyset $。

在 DNA 编码应用中,伪结通常不受欢迎,因为它们可能导致 DNA 序列[13,14]中产生不需要的键合。这意味着,如果我们能够高效地检测 $ PK_R $ 自由性这一性质,那么增加一个用于预测伪结结构的预处理阶段可能是值得的。需要注意的是,一些预测伪结的方法也会考虑“非假结”,因为 RNA 序列可以折叠成非假结进而形成伪结。

我们考虑 $ L $ 为正则的情况,并证明可以判定 $ L $ 是否为 $ PK_R $-free。我们使用类似的构造方法为 $ PK_R^{-1} $ 构建一个有限自动机。

引理7 . 设 $ A $ 为一个有限自动机。则存在一个非确定性有限自动机 $ A’ $,它接受一个字符串集合 $ u = u_1u_2u_3 $,使得 $ u_1^R u_4 u_3^R u_1u_2u_3 \in L(A) $。

定理5 . 给定一个有限自动机 $ A $,我们可以在多项式时间内确定 $ L(A) $ 是否是 $ PK_R $-自由的。

这里我们观察到,根据命题1,判断一个上下文无关语言的 $ PK_R $-自由性是不可判定的。

定理6 . 对于给定的上下文无关语言 $ L $,判断 $ L $ 是否为 $ PK_R $-自由的是不可判定的。

5 结论

我们研究了一种称为伪结的RNA结构,以及序列自我扩展并形成伪结的特定现象。我们定义了伪结生成操作的一种受限版本:对于字符串 $ x $, $ PK_R(x) $,粗略地说,它包含所有可能的 $ x $ 延续部分,这些部分可以折叠回 $ x $ 以形成伪结。

我们研究了字符串上伪结生成操作的(封闭)性质,并设计了一个线性时间算法来判定给定字符串是否为伪结。我们证明了对于两个字符串 $ x $ 和 $ y $,判定 $ PK_R(x) \cap PK_R(y) = \emptyset $ 是否成立是可判定的。此外,我们考察了语言上的伪结生成操作,并证明正则语言和上下文无关语言在伪结生成操作下不具有封闭性。另一方面,我们证明了对于给定的两个有限自动机 $ A $ 和 $ B $,在 $ A $ 和 $ B $ 的大小的多项式时间内,可以判定 $ PK_R(L(A)) \cap PK_R(L(B)) = \emptyset $ 是否成立。此外,我们还证明了在多项式时间内可判定一个给定的正则语言是否为 $ PK_R $-自由的。然而,判定一个给定的上下文无关语言是否为 $ PK_R $-自由的是不可判定的。

带开环升压转换器和逆变器的太阳能光伏系统 太阳能光伏系统驱动开环升压转换器和SPWM逆变器提供波形稳定、设计简单的交流电的模型 Simulink模型展示了一个完整的基于太阳能光伏的直流到交流电力转换系统,该系统由简单、透明、易于理解的模块构建而成。该系统从配置为提供真实直流输出电压的光伏阵列开始,然后由开环DC-DC升压转换器进行处理。升压转换器将光伏电压提高到适合为单相全桥逆变器供电的稳定直流链路电平。 逆变器使用正弦PWM(SPWM)开关来产生干净的交流输出波形,使该模型成为研究直流-交流转换基本操作的理想选择。该设计避免了闭环和MPPT的复杂性,使用户能够专注于光伏接口、升压转换和逆变器开关的核心概念。 此模型包含的主要功能: •太阳能光伏阵列在标准条件下产生~200V电压 •具有固定占空比操作的开环升压转换器 •直流链路电容器,用于平滑和稳定转换器输出 •单相全桥SPWM逆变器 •交流负载,用于观察实际输出行为 •显示光伏电压、升压输出、直流链路电压、逆变器交流波形和负载电流的组织良好的范围 •完全可编辑的构,适合分析、实验和扩展 该模型旨在为太阳能直流-交流转换提供一个干净高效的仿真框架。布局简单明了,允许用户快速了解信号流,检查各个阶段,并根据需要修改参数。 系统架构有意保持模块化,因此可以轻松扩展,例如通过添加MPPT、动态负载行为、闭环升压控制或并网逆变器概念。该模型为进一步开发或整合到更大的可再生能源模拟中奠定了坚实的基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值