【摘 要】本文建立整数线性规划模型,以最多氨基酸分子个数为决策目标,每个种类氨基酸的分子个数为决策变量,利用分块线性组合和母函数法求出各个种类氨基酸的分子个数。
【关键词】蛋白质分子量分解;分块线性组合;母函数
0 引言
分子分解问题本质上是线性组合问题,主要解决的是蛋白质为某一分子量时不同氨基酸组成方式个数及具体组成方式的问题。给定某一蛋白质分子量,求氨基酸组合方式的个数算法。
1 母函数排列规划模型
母函数即生成函数,是组合数学中尤其是计数方面的一个重要理论和工具。有普通型生成函数和指数型生成函数两种。形式上说,普通型生成函数用于解决多重集的组合问题,而指数型母函数用于解决多重集的排列问题。母函数还可以解决递归数列的通项问题(例如使用母函数解决斐波那契数列的通项公式)。数学方法表示为:G(x)=a0+a1x+a2x2+…
對于序列a0,a1,a2…构造一函数,则称函数G(x)是序列a0,a1,a2…的母函数。
在数学中,某个序列的母函数是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。
我们引用母函数方法的思想,即,把组合问题的加法法则和幂级数的t的乘幂的相加对应起来,把离散数列和幂级数一一对应起来,把离散数列间的相互结合关系对应成为幂级数间的运算关系,最后由幂级数形式来确定离散数列的构造。(最终结果见附件五)
将这种思想与分子分解问题相结合,算法如下:
我们把组合问题的加法法则和幂级数的t的乘幂的相加对应起来,第一个括号内{57,114,171,228,342,399,456,513,570,
627,684,741,789,855,912,969}依次为57的倍数,且上限为1000,第二个括号内的x的幂级数为71的倍数,上限为1000。按此规律以此类推,最后一个括号内的x的幂级数为186的倍数。表示如下:
(1+x57+x114+x171+x228+x285+x342+x399+x456+x513+x570+x627+...+x855+x912+x969)
×(1+ x71+x142+x213+x284+x355+x426+x497+x568+x639+x710+x781+x852+x923+x994)
×…×(1+x186+x372+x558+x744+x930)
用Mathematica计算得到部分结果为:
x236+x238+x239+x240+4x241+5x242+8x243
以x次幂为241为例,241=57+71+113=57+101+113=71+71+99=113+128,x前的系数为4,即代表了4种不同的氨基酸组成数。然而,从部分结果中可以看出x次幂为237时,不存在这一项,则说明蛋白质分子量为237时,不存在任何一种氨基酸组合方式使其满足条件。
2 线性规划模型
考虑到实际与算法的需要,即实际蛋白质的组成趋于复杂,而且要得到氨基酸的组合方式为线性规划,需要确定一个明确的目标函数值。以最多氨基酸分子个数为决策目标,每个种类氨基酸的分子个数为决策变量,根据要求设定约束条件,以组成蛋白质的氨基酸分子数最多的情况为代表情况进行求解。确定算法分析得出组成蛋白质的氨基酸分子个数最多的情况,建立整数线性规划模型如下:
变量设置:
x:蛋白质总分子量
a[i]:第i个氨基酸的分子量
n[i]:第i个氨基酸的个数
3 模型分析
通过两种模型的建立,分别使用编程方式进行线性规划和母函数规划排列,分析得到部分氨基酸的不同的组合方式数结果如下表1:
表1
考虑分子量为114~1000所有分子量的蛋白质,若使用循环算法求解需要输入所有分子量数值,因此本论文中只给出在所有分子量情况下由母函数规划排列求出的氨基酸的不同的组合方式个数的结果。(略)
4 结束语
这类问题主要来源于实验室中研究蛋白质组成的分子分解问题。分子分解问题本质上是线性组合问题,主要解决的是蛋白质为某一分子量时氨基酸的种类及其个数的组成问题。氨基酸的不同的组合方式数需要使用MATLAB编程和Mathematica进行求解。采用母函数排列规划模型,通过求解多项式得到114~1000分子量的所有蛋白质的氨基酸的不同的组合方式数目。
【参考文献】
[1]肖启明,利用母函数解组合问题[J].宜昌学院学报:自然科学,2004,26(6):16-18.
[2]何春.利用母函数求解排列组合问题[J].宜宾学院学报,2007,6(6):12-14.
[3]王勇.基于分块回归的SVM逼近方法[J].长春工业大学学报:自然科学版,2008,29(6):601-605.
查看全文