《分子量分解问题》
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分子量分解问题
组号:第12小组
程引 02 算法设计论文撰写
刘静伟 04 C程序编程论文撰写
李海欣 09 matlaB程序实现
1问题提出
生命蛋白质是由若干种氨基酸经不同的方式组合而成。在实验中,为了分析某个生命蛋白质的分子组成,通常用质谱实验测定其分子量x (正整数),然后将分子量x分解为n个已知分子量a[i](i=1,2……n)氨基酸的和的形式。某实验室所研究的问题中:
n=18, x 1000
a[i](i=1,2……18)分别为57, 71, 87, 97, 99, 101, 103, 113, 114, 115, 128, 129, 131, 137, 147, 156, 163, 186
要求针对该实验室拥有或不拥有计算机的情况作出解答。
2问题分析
#
问题本身有一些不符合实际的情况如下:
1)氨基酸组成蛋白质的时候会失去一分子的水,而且氨基酸组合方式不同形成不同形状的蛋白质如链形、环形等会失去不同个数的水分子;
2)蛋白质水解的程度不同所得到的氨基酸分子的质量也不同;
3)蛋白质中有些氨基酸是相互依存的,即,一种氨基酸的存在是以其他某一种或某几种氨基酸的存在为前提的;
4)当给定的蛋白质重量增加时,所得到的解的个数可能成指数倍数上升,计算量庞大
3模型假设
针对2中对问题的分析,我们做一下假设:
1)不考虑蛋白质水解时水分子的量,即,给定的蛋白质分子量就是几个已知分子量的和。
2)不考虑蛋白质水解程度的不同;
3)被测定的蛋白质仅由给定分子量的氨基酸组成,而不含有其他物质或元素
4)氨基酸组合成蛋白质的过程是任意排列组合的,一种氨基酸的存在不是以其他某一种或某几种氨基酸的存在为前提的;
|
4模型分析与建立
给定蛋白质的分子量X 和各种氨基酸的分子量a(i),测定蛋白质的组成,即求解n 元线性方程X x a n
i i =∑=1i 的所有整数解的问题。
当n=18时即为本题所要求解的问题 X x a i i =∑=18
1i ①
i x 是非负整数(i=1,2,3……18) 再拥有和不拥有计算机的情况下可以使用不同的算法,,这里分别为“优化穷举法”和“矩阵”解法
在拥有计算机的情况下求解——“优化穷举法”
利用传统穷举法,我们可以先计算给定的蛋白质分子量X 包含i
a 的最多的个数[X\i a ],即i x ∈{0,1,2…[X\i a ]},所以当全部结果都列举出来时,利用排列组合可以算出,要穷举的次数为]\[18
1i ∏=i a X ,当
X=1000时将达到*10^17次,显然在实际计算中是不可行的。
我们可以发现,在传统穷举法中有些运算得出的结果是超过给定的蛋白质分子总量X 的,比如当1-i a 取到[X\1-i a ]时,i a 不可能取到[X\i a ](i<=18);也有些运算结果虽然不比X 大但是远小于给定的蛋白质分子总量X 的,例如当i x 都取0时。这些都是造成运算时间延长的多余运算量,而且X 越大多余的运算次数越多。所以我们没必要简单的把每一个可能的运算都列出来,如果我们把这些和数超出X 的运算次数和都除去就可以大大的减少运算次数。
因此聪明和这个思想出发,我们可以反向思考问题,不是把每一各氨基酸的分子量相加得到的数和X 相比较,而是把X 拆分,直到拆分到X 的分子量为零,或者小于其中任何一个氨基酸的分子量。于是得到不同个数的氨基酸分子组合,那些可以把拆分到X 的分子量为零的组合就是其中一个解。例如X=500可以拆分2个186,还剩128,拆分出1个128,还剩0,故i x ={0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2}是一组解,如果把X 拆分出1个186,还剩314,可以再拆分出1个163,还剩153,再拆分出1个147,还剩6,此时X 小于其中任何一个氨基酸的分子量,于是i x ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1}不是X=500的解。
求解数据见下表:
*
X的值
解的个数花费时间1000
2004
30014~ 40045
500158
600522
700
~ 1508
8004291
90011249
100028268
;
N-X拟合曲线图
N-T 拟合曲线图
在不用有计算机的情况下求解——“矩阵”解法
对方程①,可按以下矩阵法求解: 列()n 1n ⨯+的矩阵:
⎥⎥⎥⎥⎥
⎥
⎦
⎤
⎢⎢⎢
⎢⎢
⎢⎣⎡=e e
e a a A n 0
00000a 21,对其进行有限次换元、消去列初等变换可得: !
⎥⎥
⎥
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎢⎢⎢⎣⎡=---'12
1'
21222
21'1111211
d 000
nn nn n n n n n n C C C C C C C C C C C C B
其中d=(n a a a ,,
, 21) 设d=d ⨯X ,X C C in in
⨯='
'则将B 的第n 列乘以X 得
⎥⎥
⎥
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎢⎢⎢⎣⎡=---'121'
21222
21'1111211
d 000
nn nn n n n n n n C C C C C C C C C C C C C
则方程①的通解为:
⎪⎪
⎩⎪⎪⎨
⎧++++=++++=++++=------nn
n nn n n n n
n n n
n n C K C K C K C x C K C K C K C x C K C K C K C x 1122112112222121211112121111 i K 可取I 内任意非负整数,将这些整数带入到通解中便可以得到
解i x 的组合。
5模型推广
本文通过通用模型的分析与建立,对有关求解n 元一次方程的同类问题有一定的可适用性和指导意义。
6结论
>
本文采用C 语言,优化了算法,相对减少了运算量,提高了运行效率,缩短了运算时间,但是随着X 的增大,接的个数和运算时间迅速增加,因此运算程序还有待改进之处。
对于改进的方向,主要是使运算中涉及非解组合的个数减少,或寻找有效的减少变量的方法,简化求解过程,再者增加一定的有效的约束条件,限制i x 的取值范围。
7参考文献