分子量分解问题的参考解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、分子量分解问题

1. 问题的提出

生命蛋白质是由若干种氨基酸经不同的方式组合而成。在实验中,为了分析某个生命蛋白质的分子组成,通常用质谱实验测定其分子量x(正整数),然后将分子量x分解为n个已知分子量a[i](i=1,.......,n)氨基酸的和的形式。某实验室所研究的问题中:

n=18, x≤1000

a[i](i=1,.......,18)分别为57, 71, 87, 97, 99, 101, 103, 113, 114, 115, 128, 129, 131, 137, 147, 156, 163, 186

要求针对该实验室拥有或不拥有计算机的情况作出解答。

2.问题的分析

上述问题就是要将任意给定的正整数表示为若干已知正整数的倍数

之和,亦即求解下列不定方程

∑==

n

i

x

i x

i

a

1

][

][

(1)

其中x是已知蛋白质的分子量,a[i]代表第i种氨基酸的分子量,x[i]代表该种蛋白质中所含第i种氨基酸的个数。

根据题意,我们作以下几点分析:

(A1)对一些给定的值x,不定方程(1)可能无解;但对实际问题,应有解,若出现无解,说明数值x有偏差,应重新测定。

(A2)以m表示(1)右端x的上界。此时m=1000, n=18, 考虑用穷举法求出全部解,这时,每个m[i]的取值范围为0≤x[i]≤ [m/a[i]],所以穷举的次数要达到O(m n),实际为

故穷举法在实际上是不可行的。

(A3) 考虑分解x的一个反问题,将若干个分子量a[i](i=1,2,….,n)经组合,构成更大分子量的蛋白质,从中寻找具有分子量x的各种构成。 (A4) 若实验室没有计算机,我们事前仍可利用计算机求得一些便于查阅的工具或表格供实验室工作人员使用。

3 .模型的建立

(I)深度、广度搜索

先从穷举法着手,对给定的m,将其分解为a[i]的组合形式,具体过程可以分为深度搜索和广度搜索两种方式。

但这两种方式,一方面计算量随着m的增大而指数增加,另一方面,面对几万、几十万种组合,无法方便筛选。

(II)启发式搜索

考虑(A3)中的思想,对a[i](i=1,2,…..,n)不断求和。看是否能达到x?由于在求和中只考虑和数小于m的范围,因此对每个a[i]的求和过程的计算工作量为O(m),整个求和过的计算工作量为O(mn),这比穷举法的计算量O(m n)要少得多。

为了实现上述方法,先引入下列定义:

Y={x|x≤m,x使(1)有解,x为正整数}

L(a[i])={0,a[i],2a[i],……..,[m/a[i]].a[i]}定义一种运算

其中U可为{1,2,…,m}的任何子集。

开始令Y=φ,然后对i=1,2,…,n用下列运算不断扩大集合Y:

Y:=Y])

a

L

(i

[

定义数组b[i](i=1,2,…,m),开始时一切b[x]=0,若在求和过程中得到一个x,则令b[x]=1,表示该x的不定方程(1)有解:定义另一种数组s[i](i=1,2,…,m),开始时一切s[x]=0, 以后在求和过程中每次得到一个x, 就令s[x]:= s[x]+1, 这样最终得到的s[x]相等于该x的不定方程(1)的解的个数.

然而, 我们不仅要得到解的个数, 还要求得所有的解, 因此在求和过程中还应记录更多的信息。为此对不定方程(1)的解的构造作进一步的分析与提炼。设(x[1],x[2],…x[n])为相应于x的(1)非负整数解,又设x[q]为

x[1],x[2],…,x[n]中最后一个非零项,即q∈[1,n]使x[q+1]=x[q+2]= …

=x[n]=0,q称为末项指标, 于是(1)可改写为

从而还可得到

q

x

a

q

+

+

x

=

-q

x

q

a

x

a

x

a

+

a

q

]1

-

[

[

[

](

)1

]

[

...

]1

[-

+

]2[

]

-

]1[

]2[

]1[

(2)

若记第q个分量为1的n维单位向量为e[q]. 如果(x[1],x[2],…,x[n])为相应于x的(1)的解,其末项指标为q,则(x[1],x[2],…,x[n])-e[q]为相应于x-a[q]的(1)的解,其末项指标为p≤q,考虑到多解的情况,q可能有多种选择,因此在求和过程Y:=Y⊕L(a[i])中还应记录末项可能的种数,记为v[x](v[x]≤n)及相应的末项指标q[x,1], q[x,2], …, q[x,v[x]].

有了一切v[x]及q[x,v[x]]后,我们可以利用(2)不断减少x来跟踪x 的所有解的情况。为此将上述v[.]及q[.,.]记录为解的跟踪信息表。

下面给出了x≤186时的跟踪信息表,以示求解的过程。

表1 跟踪信息表的一部分

的两个解为

x=a[2]+a[5], x=a[1]+a[3]

又以表中未列出的x=284为例,有关的跟踪信息为

x=284, s[x]=6, v[x]=4, q[x,1]=9, q[x,2]=11, q[x3,]=15, q[x,4]=16 这些信息表明:解的总数s=6,末项指标有4种选择,分别为9、11、15、16,利用末项指标的信息,我们利用(2)得到

x-a[9]=170, x-a[11]=156, x-a[15]=137, x-a[16]=128

再对上述所得的4个数继续往前利用表1关于它们的跟踪信息,使末项指标不断下降,可得如下6个解:

x=a[2]+a[5]+a[9]; x=a[1]+a[8]+a[9]; x=a[1]+a[5]+a[11];

x=a[14]+a[15]; x=a[1]+a[2]+a[16]; x=a[11]+a[16] 上述跟踪方式的求解步骤,可描述为一棵树,可以据此编制出一个完整的程序。对x≤1000, 解的个数最多可达几百个。

但对于没有计算机的实验室,我们可以给出x≤m(如x≤1000)的跟踪信息表用手算来实现跟踪也是可行的。

4 .进一步讨论

相关文档
最新文档