一名荷兰大哥对 De novo 的研究。(尤其是Sherenga的
Sherenga 参考文献[20][21][22]
文章目录
3.1 准备光谱图
3.1.1 点
图的节点是表示部分肽的潜在质量的整数值。
这些是通过将每个峰值s∈S转换为k个节点而获得的:V(s)= {s +δ1,…,s +δk}。
峰值是指该峰值所代表的质量值(即该值的值)
x轴),而不是峰的强度(或y值)。 如果我们谈论强度,那么
这明确地称为峰值强度。 考虑到简化
只有N端离子我们才能用公式来计算质量
写下特定部分肽的离子类型(第2.5节)如下:
m(δ-ion) = m(Pi) − δ (3.1)
由于光谱S中的峰代表这些碎裂离子的质量,
我们可以把公式写成: m(Pi) = sj + δ
其中sj是来自光谱的峰,其对应于部分肽Pi的δ-离子。
因此,测得的离子质量值减少到氨基酸的总和
这个质量是由什么组成的(参见符号2.5),也称为残余质量。
为了使这种比较有效,δ当然必须具有离子类型的值峰值sj,我们想要得到非电离相应部分的质量值肽。由于我们不知道哪种离子类型代表某个峰值,因此是不可能的每次使用正确的δ来计算节点。因此,为此在某个峰值s,每个δ都有一个节点。这导致光谱S在大量节点中,实际上只有形成有正确δ的节点表示与峰相关的部分肽。但也可能是其他节点碰巧具有可能的部分肽的实际质量值。这些都是所谓的
假结。请注意,我们尚未考虑测量中的不准确性可能会导致错误结的质谱仪。各方面有关不准确的测量结果将在后面的3.5节中讨论。
具有m个峰值的频谱的完整节点集由下式给出:
{sinitial}∪V(s1)∪…∪V(sm)∪{sf inal}(3.4)
这里sinitial = 0和sfinal = m(P),其中m(P)是母离子的质量。对于二价带电碎片离子,我们必须考虑到这一事实光谱中的数据不代表质量,但确实代表质量/负荷。实际的因此,具有二价带电碎裂离子的质量是峰值的两倍秒。为了找出非离子化的N-末端部分肽的质量(因此,要确定节点),必须稍微改变公式:
m(Pi)= 2si +δ(3.5)
如果光谱包含单电荷和二价电荷离子,则建立节点通过应用公式3.3和3.5。一价带电离子的公式变为应用表示单价带电离子类型的集合Δ的子集。该对于二价带电离子的公式应用具有二价带电的δ值离子类型。
3.1.2 边
如果差值为v-u,则两个节点u和v通过从u到v的有向弧连接是氨基酸的质量。然后用该氨基酸标记电弧。所以我们有有针对性的计数。由于氨基酸的质量严格为正,因此电弧永远不会返回值较小的节点。这使得计数非周期性。
由于我们假设我们只能处理N端离子的简化从u到v有这样一个弧,即v的序列1可以通过获得用一个氨基酸延长你的序列,即用氨基酸弧被标记。我们将看到通过这种方式可以形成一条路径计数。
一旦绘制了弧,就可以确定光谱图的硝化形状。所有无法到达的节点,无法从哪个节点到达Sfinal的节点从计数中删除。如果他们仍然是计数的一部分,那么就会路径永远不会陷入这样的结或永远不会摆脱它。这些点是找到从Sinitial到Sfinal的路径毫无意义,因此被删除
3.1.3 频谱图中的路径
如果光谱S完整,即,每个可能的部分肽Pi光谱以至少一种离子类型的形式存在,然后在GΔ(S)中存在一条路径从长度n从Sinitial到Sfinal,用肽P标记(由n个氨基酸组成)
本声明基于观察,文献[20] [21] [22]没有提供证据,但直觉上这句话是正确的。 因为完整性,所以有可能N-末端部分肽是谱图中存在的节点。 对于亲本肽由n个氨基酸组成,因此这些n – 1个节点对应于N末端部分petids P1到Pn – 1.因此可以使用弧的属性来完成如果一个人遵循图中的正确路径,则重建原始父肽。 整体而言过程如图3.1所示。 找到的路径位于下图中蓝色和大胆。 肽测序问题现在已经减少到发现目标非循环图中的正确路径。
我们在图中看到,计数中还有其他路径。 所有这些路径都成了受评分算法的影响。 指示的路径是得分最高的路径。第3.7节解释了这一点。
3.1.4示例
在我们放弃所有简化之前,我们首先给出一个简单的例子
制定频谱图。我们总结了所做的假设:
来自光谱的峰代表N-末端,有价值的离子;
常见的离子是b离子和b-H2O离子,相当于集合 set ∆= {-1, 17};
频谱 频谱完整;
质谱仪的测量结果没有错误。
设S是有问题的(有效)实验光谱。表3.1显示了这方面的数据
谱。由于在频谱图中我们没有考虑到强度
峰值,这些从表中省略。我们可以读到父质量等于520.25
Da和该父质量的负荷为+1。我们首先计算m(P)的值:
测量值520.25 Da = m(P)+ m(H)+ m(OH)+ m(电荷)= m(P)+ 1 Da + 17 Da + 1 Da。
由此得出m(P)= 501,25Da
(包含所有节点和弧的频谱图
计算节点
我们根据V(s)= {s +δ1,s +δ2}计算节点集,δ1= -1,δ2= 17
我们在点集合中看到节点s42的值等于节点s51的值。仅为此值创建一个节点。 该值意味着所讨论的部分肽发生在光谱中出现的两个(在该示例中为全部)离子类型中
既然结已经确定,我们可以画出弓箭。图3.2显示了频谱图再次使用所有计算的节点和可能的弧。这样读者就可以轻松搞定要与按钮组进行比较,对应于第一个= =鈭鈭的按钮显示在图形的顶部,其他节点显示在底部。刚刚提到的点值272.11显示在中间。图3.3显示了没有节点的计数和边,不能完全包括在计数中。我们在最后的计数中看到了这一点从sinitial到sfinal有两条可能的路径。 AGSGTK和QSGTK序列他通过伯爵的路径。确定哪个序列识别频谱寻找最长的路径。最长的路径是对应于肽P的路径最好地解释了频谱[20]。在该实施例中,AGSGTK是谱S的肽
已经产生了。我们现在不会进一步讨论这个问题。在3.7节中,我们将看到那里
每个节点都给出一个分数。在这些分数的基础上,得分找到路径计算。得分最高的路径是所谓的最长路径。
有针对性的非循环计数中最长的路径是理论计算机科学中的已知问题,
并且可以通过快速,线性时间动态算法来解决[23]。我们将看到(第3.8节)遗憾的是,该算法无法在实践中应用。甚至找到的最长路径并不总能显示正确的标识(第4章)。就这个但是,目前我们不必担心这一点,我们认为它会存在一种算法来查找谱图中最长的路径。我们为这个例子做了相当多的简化,并且有一个用少量正确数据鉴定MS / MS谱。下一节经历了所有的简化,并引用了Sherenga用于此的解决方案。从第3.2节详细讨论了这些技术。通常有几条最长的路径发现,制作必要的评分算法(第3.7节)。最后(第3.8节)来了跟踪通过频谱图的路径的算法。
3.1.5 缺点
3.1.6 概述
上述解决方案的缺点将在起草计数之前,期间和之后进行。 为了不混淆读者,首先是一个图表。绘制光谱图的概述在实践中如何完成(没有简化)。 未知的概念将在下一节中进行广泛讨论是。读者总是可以参考这个图来定位所描述的技术。第一步到第四步确定图的节点。 第五步和第六步边。此时不符合3.1.2节描述的所有节点和弧都不是最终频谱图的一部分。 最后,通过计数的路径确定并计算他们的分数。
1.偏移频率功能:确定设定值Δ
2.强度阈值
3.重新计算母体质量的C-末端离子
4.合并算法
5.弧
6.间隙和桥边
7.搜索路径和评分算法
3.2 频率偏移函数
我们在开始时做出的一个假设是知道集合Δ,即离子在待鉴定的实验光谱中出现的类型。 自此设定正如每个质谱仪都不同,从头算法通常都是特定的质谱仪。 然而,Sherenga具有可以确定哪种离子类型的功能由特定的质谱仪产生。 这允许算法不用问题适用于所有类型质谱仪的数据。 唯一的要求是一套训练集。 训练集是一组识别的实验光谱,在这种情况下来自质谱仪,其中确定了集合Δ。
3.2.1 基础
从训练集开始,可以了解该集。 一旦知道这个集合人们可以继续使用它来建立频谱图和未知序列,用这种质谱仪分析后得到。 我们追求简单仍然值得在N端碎片离子上获得不错的电荷。给定P和St,来自训练集的St one频谱和识别该频谱的P,
我们定义偏移量Offset
xij = m(Pi) − sj (3.6)
和准确度 ε,通常等于0.5。 Pi设置N端部分已知序列P的肽 可以计算这些部分肽的质量使用附录C中的表格。光谱的质量值变为St. 由sj建议。
3.2.2 OFF偏移频率函数
偏移表示可能的离子类型,因此训练集中出现的δ值。
如果我们比较公式3.3和3.6,这很容易看出。 H的值只不过是光谱中存在的δ= x类型的离子数。
对应于在光谱中出现的离子类型的δ值的x值的H值将远大于在任意x值上的H值。 对于x的随机值,由于频谱中存在噪声,函数H仍将具有大于零的值。 然而,与x的“实际”δ值的计数相比,这些值可忽略不计。 如果我们将函数H绘制为x的函数,则在x值上对应于当前离子类型的δ值
清晰的峰值是可见的。 图3.4和3.5就是这方面的例子.
表3.2:示例:使用偏移频率函数从训练集获得的数据[20]
偏移频率函数仅仅是训练集的所有频谱St上的函数H的总和。 通过使用多个光谱,常见离子类型的峰值将加在一起,使它们更加明显。 对于不太常见的离子类型,较小的峰将与噪声峰值成比例地变大(它们更随机,因此不一定在不同的光谱中产生相同的偏移),这也使得更容易区分这些离子类型。 应用偏移频率函数的结果如表3.2所示。 除x值(整数偏移)外,该表还显示实际测量的偏移量。 除了针对给定x(计数)找到的离子数量外,该表还包含有关离子类型的信息以及它是否涉及N端或C端离子。 如何获得C-末端离子的值在3.4.2节中讨论。
只有与某些计算的偏移相对应的计数值才是由偏移频率函数产生的数据。已添加其他信息,并且是与所讨论的整数o集匹配的已知数据。该表还包含两个二价带电离子y2和y2-H2O的数据。我们稍后会回到这里。
图3.4(a)显示了该实施例的N-末端部分肽(带电荷1)的离子类型的图。图中显示了许多峰。在这里,我们清楚地看到不同离子类型和噪声峰值之间的强度差异。为完整起见,C末端部分肽的图也显示在图3.4(b)中。引人注目的是y离子的显着存在,以及仅发现了两种其他离子类型的事实,与N端部分肽的各种离子类型相反,这立即解释了为什么算法,如Sherenga,作为简化,接受对N端离子或仅对b和y离子的限制。
对于具有二价电荷的离子,函数H(x,St)被转换为:H +2(x,St),其中xij = m(Pi)-2sj。 图3.5(a)和(b)分别显示了具有二价电荷的N-末端和C-末端离子的偏移频率函数。 我们清楚地看到了
质谱仪中使用的电离法主要产生一价带电离子,表3.2中的离子y2和y2-H2O表示二价带电离子的测量结果。 对于更高的负载,我们的工作类似。
表格和图表都清楚地显示了使用的离子类型质谱仪。 由于偏移频率功能,我们有这个离子类型可以很容易地根据算法找出训练集Sherenga机器已经独立。 现在可以进一步使用找到的组Δ确定计数。
伪代码:
对于训练集中的所有光谱S.
对于所有部分N - 末端离子
对于所有x,用整数值变化
计算H(x,S);
H(x)= H(x)+ H(x,S);
对于所有部分C - 末端离子
对于所有x,用整数值变化
计算H(x,S);
H(x)= H(x)+ H(x,S);
3.3 阈值设置
光谱中的峰具有不同的强度。 然而,在这样的光谱中也存在一定量的噪声。 可以设置阈值以区分这两者。 但是,选择阈值并不明显。 如果阈值太低,则会导致频谱图的极端增长。 另一方面,如果它们太高,我们将无法再完全建立频谱图。 如果考虑的峰值太少,可能会丢失许多相关信息,并且可以在频谱图中绘制不足的拱门。 这意味着计数中可能出现“漏洞”,因此无法找到路径。
强度阈值的确定不仅发生在该算法中。 大多数算法已经放弃了一个全局阈值的想法并使用局部阈值。 然而,Sherenga使用设定频率函数并基于实验确定的事实确定强度阈值:光谱中峰的强度与离子类型有关。 例如,我们知道b和y离子是最常见的。 当然,代表b或y离子的峰强度将大于其他离子类型的峰强度。 Sherenga开发了一种根据所讨论的离子类型以非常特定的方式确定阈值的方法。
为了找出哪种离子类型出现在哪种强度中,我们继续使用训练集和偏移频率函数。给定光谱St,峰值根据其强度分组在大小为K =(parentMass)/ 100的区间中。具有最高强度的K峰值接收秩1,接下来的K峰值等级为2,等等。通过将其应用于来自训练集的光谱,已经注意到偏移频率函数(取决于等级)是非常有趣的过程。展品。离子类型主要出现在几个连续的等级中,但是一旦偏移频率函数达到较低的等级,图形就会非常快地下降,这意味着离子类型在这些较小的强度中不会发生太多。因此,峰的等级或强度与相应的离子类型之间存在明确的关系。 Sherenga将使用此链接来使用更好的阈值。由于偏移频率函数适用于来自训练集的所有光谱,因此所有这些光谱被分成区域,使得关于离子类型和等级之间的关系的数据也可以从所有光谱中使用。
3.3.1偏移频率功能根据等级
图3.6显示了N端,单价带电离子的每个等级i的相应偏移频率函数(我们仍然使用相同的例子)。 图的上半部分显示了等级≥i的离子的偏移频率函数,等级为<i的离子的下部。 在该图中,我们可以看到,在等级低于5的强度下,此偏移频率函数(上部)几乎没有峰值。 这意味着在光谱中接收到低于5的等级的峰对偏移频率函数的离子类型的计数几乎没有贡献。 这些峰值很可能不代表数据而是噪音。 因此,我们可以将频谱图的节点限制为从1到5级的峰值。
3.3.2离子类型和强度之间的关系
从图中我们还可以推断出哪些等级的离子类型。 图的下半部分可以考虑如下。 以图(b)为例,其中下部表示高于2的等级的偏移频率函数,或偏移频率函数限制为1级。类似于下图(c),其中偏移频率函数限于等级 一,二。
为了确定在哪个等级中出现哪种离子类型,我们将查看某个等级对图表下部峰值的贡献。 我们将以离子类型b和b-H2O为例(这些峰值在图中表示)。 这类似于所有其他N端离子类型。 我们对C端离子的工作方式相同,但当然还有C端离子的设定频率函数
对于b离子,我们看到下图中的峰值在图(b)到(d)上急剧增加。 对于图(b),我们可以在下图中形成峰值的“增长”,如下所示:在等级为1的峰值下计算的b离子数量。大的增加意味着在第一,第二和第三等级中 光谱中存在许多b离子。 从图(e)可以看出,如果我们将增加与之前的图表进行比较,那么峰值几乎不会增加。 因此,来自四级光谱的峰不再含有许多b离子。 为了建立频谱图,我们将仅计算一级,二级和三级的峰值s的节点,其中δ= -1,这对应于b-离子的δ。
如果我们对离子型b – H2O做同样的事情,我们会得到不同的结果。 在图(b)的下半部分,我们看到这种离子类型只有非常小的偏移频率函数值。 我们故意不把这称为峰值,因为没有峰可以与周围的噪声区分开来。 在图(c)中只能看到一个小峰。 然而,从图(d)可以看出,该离子类型的峰值明显增加。 因此,我们可以说,等级中的峰特别代表b – H2O型的三个,四个和五个离子。 该方法很大程度上取决于来自训练集的光谱质量,并且在判断等级和离子类型之间的关系时或多或少是主观的。 然而,这种工作方式比该领域的例外更为规则,因为由于当前质谱仪的限制,不可能回退到精确数据。
—4偏移值(或δ值)显示在水平轴上。 对于b离子,这是相同的
到-1。
[此处应该有8个图]
3.3.3频谱图的优缺点
在确定强度阈值后,我们可以通过首先仅将属于1到5级的峰转换为节点来建立频谱图。然后根据离子类型应用阈值。我们现在考虑从我们想要转换成节点的光谱中得到的峰值。假设这个峰值属于第二等级。然后我们现在知道我们必须添加对应于b离子的δ值,而不是对应于b – H2O离子的δ值。我们类似地为所有其他离子类型工作。这样,可以避免频谱图中的许多不必要的节点。一级峰值对应b – H2O离子的可能性非常小。因此,没有必要使用最可能不代表真实部分肽的质量的节点使图过载。这些节点将不包括在计数中,或者可能导致错误的节点和/或弧。当然不建议在图表中包含不正确的数据,并且尽可能避免这种情况。另一方面,该方法的缺点在于,如果特定的片段化离子(例如b2离子)在光谱中不足,则相应的部分肽也不会出现在图中。在该示例中,我们将b离子限制为等级1,2和3.例如,代表性不足的b2离子将仅出现在5级并且将以这种方式丢失。
3.4 C端离子
到目前为止,我们一直认为我们只使用N端离子。 然而,真实光谱包含N端和C端离子。 前面已经提到过,C-末端离子向N-末端离子的转化并不那么明显(3.1节)。 本节将解释频谱图必须经历的调整。 我们忘记了偏移频率函数和强度阈值为我们提供的信息,并假设光谱仅包含b和y离子。 所以我们不对等级进行区分,我们只会区分δ值。 对应于N-末端离子和C-末端离子。 3.4.2和3.4.3节将解释偏移频率函数和强度阈值的信息如何与C端离子结合。
3.4.1 C端离子的节点
首先,我们不知道哪个峰对应于N-末端,哪个峰对应于C-末端离子。这是一个问题,因为我们可以通过假设只有N端离子轻松找到通过图的路径。因此,首先将每个峰视为N-末端离子,然后将其视为互补的C-末端离子。Zij是光谱的峰值,m(P)是母质量。我们首先将峰值s视为b-离子,并且已经知道这将导致形成具有质量值s +δb= s -1的节点,即由s表示的离子的残余质量。如果我们然后将峰值视为y离子,我们希望将该离子转换为表示互补b离子的残余质量的节点作为值。为此,形成具有质量值m§ – (s +δy)= m§ – (s-19)的节点。因此,光谱中存在的每个离子都由正确和错误的部分组成
在光谱中添加了肽。这个错误的结被称为假双胞胎顶点。为了说明这一点,我们提供了一个理论示例。
设HA1A2A3A4A5OH代表亲本肽,其中Ai为氨基酸残基
肽。 m(P)代表氨基酸质量的总和,因此等于A1A2A3A4A5的质量。有两种选择;所讨论的峰代表b离子或y离子。我们知道H分子的重量为1 Da,O分子的重量为16 Da。
我们看到还为每个节点创建了一个假的双顶点。不幸的是,我们不知道哪两个节点是正确的,哪个是伪双顶点。读者将被注意到
假双胞胎顶点不代表氨基酸总和的质量,但该节点18 Da太重。因此,人们会认为这些节点无论如何都不在路径中
将被包括在内。不幸的是,可以发现许多氨基酸的质量相差18Da,即使耐受性小于0.5Da。举个例子
脯氨酸(P)和天冬氨酸(D),质量相差18.3 Da。使用允许的容差在计算节点和弧时,以及测量结果中的不准确性时,这些节点不再是无意义的数字,而是包含与原始序列中不同的氨基酸的氨基酸序列。没有太多的努力,你可以在假双胞胎顶点之间绘制拱门,也可以在正确的节点和伪双顶点之间绘制拱门。通过计数的路径,其具有相同峰值的正确和错误节点
当然不能成为亲本肽的良好标识符。在起草计数期间,因此创建包含这些禁止对的列表。我们需要我们
重新制定最长路径问题:
目标非循环计数中具有一组禁用对的最长路径。
然而,这是一个NP难问题[24],这意味着它不能在多项式时间内解决
可以。人们如何对可行算法进行了广泛的讨论
第3.8节和第4章。
3.4.2 De offset frequentie functie voor C-terminale ionen
3.4.3 Intensiteitsthresholds en C-terminale ionen
3.5 边
3.6 Parent Mass
3.7 打分函数
如果在谱图中发现了几条“最长路径”,那么必须有办法确定这些路径中的哪一条或这些候选肽中的哪一条最能“解释”实验谱。 正在为此开发概率模型。 首先确定如何给每个节点分数。 然后,我们看看如何根据这些分数评估找到的路径。
3.7.1定义和符号
在我们深入研究概率模型之前,我们首先给出一些我们将使用的符号和定义。
设P为肽,S为光谱。 然后我们将p(P,S)定义为肽的概率
P产生了光谱S. 我们现在可以按如下方式制定评分路径问题:
找到对于给定光谱S p(P,S)最大的肽P.
换句话说,如果在频谱图中找到了许多路径,请在此处找到它
p(P,S)最大的路径(即肽)。
我们现在熟悉属于某个质谱仪的离子类型组Δ= {δ1,…,δk}。 这些离子类型中的一些将比其他类型更频繁地发生,反之亦然。 这就是为什么我们注意到离子类型δi为p(δi)的概率。 以与其他δs的概率无关的概率p(δi)产生部分肽的δi离子。
最后,还必须表示质谱仪产生的噪声。 质谱仪可以在光谱中的任何位置产生具有概率qR的噪声峰值。
我们现在可以说,在与δi离子对应的位置出现峰值,
生成的概率qi等于:qi = p(δi) + (1 − p(δi)) ∗ qR (3.8)
用语言来说:峰值出现在光谱中与离子类型相对应的位置的概率等于质谱仪中出现这种离子类型的概率(p(δi))+这种离子类型不发生的概率(1-p(δi))乘以噪声概率。
p(δi)的值可以从观察到的训练集的经验分布估计(见表3.2)。
理论上,部分肽可以在光谱中具有最多k个相应的峰;
每种离子类型一个峰。 所有这些k峰为部分肽的概率(即
来自集合 的所有离子类型也有效地存在于频谱中,等于:
3.8 路径
最后,我们将讨论如何在图中查找路径。 频谱图是有针对性的非循环图。 一旦图建立,我们就可以表达肽序列问题如下:
找到有向无环图中的最长路径
GAG中的最长路径算法是理论计算机科学中众所周知的问题。 这已知是一种快速,线性时间动态算法,这是该方法与频谱图的一个非常大的优势[23]。 不幸的是,该算法在实践中不起作用,例如, 假双胞胎顶点。
3.8.1假双胞胎顶点
在关于C端离子的3.4.1节中,我们已经提到了伪双顶点的问题。 因为光谱S中的每个峰被解释为N端离子而且还被解释为C端离子,每个“真实”节点(对应于质量m)具有所谓的伪双顶点,其质量为m(P) – m偏移处。 这导致如下问题:如果真实节点达到高分,则假节点也将获得高分。 因此,最长路径算法通常包括最长路径中的实节点和假节点。 这些途径不能代表合理的肽序列,因此可以最好地避免。 所以我们必须稍微调整算法。
令G为图形,并且让T为来自G的一组禁止节点,即伪双顶点。如果G中的路径最多包含每个禁止对的一个节点,则称其为反对称。
这正是我们想要实现的目标。 肽序列问题现在听起来如下:
用一组禁用对T找到G中最长的反对称路径
我们刚刚给出了假双胞胎顶点问题的解决方案,不幸的是我们现在遇到了NP难问题[24] [25]。迄今为止,还没有找到解决反对称最长路径问题的有效算法。然而,这不是一个负面结果。由于被禁止的夫妇的特殊结构,在这种特定情况下可以有效地解决方案。该结构如下。
如果间隔(x1,y1)和(x2,y2)是非交织的,则两个禁止对(x1,y1)和(x2,y2),xi <yi被称为非交织[20]。这意味着(x1,y1)的间隔
完全覆盖区间(x2,y2),反之亦然。如果我们根据大小对节点进行排名,则应该如下所示:[x1,x2,y2,y1]或[x2,x1,y1,y2]。因为被禁止
对是质量互补的(相对于父质量):x1 + y1 = x2 + y2。由于这个特性,每两对互补节点(或禁止对)是非交叉的。
我们首先证明这对符合某些特征的两对: 证明过程略;
因此,频谱图的每两对互补节点是非交叉的。
如果每两个禁止对是非交织的,则将具有一组禁止对T的图G指定为合适的[20]。
现在,反对称最长路径问题在合适的图中被简化为反对称最长路径问题。在关于Sherenga [20]的文献中,声称情况就是如此存在有效的算法。但是,作者没有描述它。其他人在上面描述的算法将在下一章中讨论。