




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分子量分解问题摘要本文是针对拥有计算机或不拥有计算机的情况下,求解已知蛋白质分子量的氨基酸组成。为此,我们分别在理论基础上建立了n元一次线性方程模型一和根据实际情况分别补充两个不同的实际约束条件的简化模型二和模型三。对于模型一即n元一次线性方程模型,在求解过程中,考虑到采用穷举法时计算步骤冗杂,且时间复杂度随X值的增大而呈指数增长,难以较快速度求得数目庞大的解。所以我们另辟蹊径,用C语言编写递推算法,建立可查蛋白质分子量X是否可被第i种氨基酸分子量ai拆分的表格,创建查表法,将计算机时间复杂度由指数形式降为多项式形式,提高了运行效率,尤其是针对不拥有计算机的情况,实验人员根据该表格查阅,可提高对蛋白质分子量的拆分速度。相应地,在拥有计算机的情况下,在查表法的基础上继续编写算法,最终实现对X的分解。以X=950为例,共求得 16885个解。尽管采用查表法可相对提高效率,但模型一的局限在于求得的解数目庞大,不切合实际,实际意义不大。为此我们根据现有的科学数据知识,补充实际情况下的约束条件,在模型一基础上,分别以已知蛋白质中氮含量范围和准确值为约束条件建立简化模型二和模型三,这样大大缩小了解的数量范围,甚至可求得精确解,符合科学实际,使问题得到合理的解决。关键字 查表法 n元一次线性方程 穷举法 递推算法 简化模型分子量分解问题一、 问题重述生命蛋白质是由若干种氨基酸经不同的方式组合而成。在实验中,为了分析某个生命蛋白质的分子组成,通常用质谱实验测定其分子量x (正整数),然后将分子量x分解为n个已知分子量ai(i=1,.,n)氨基酸的和的形式。某实验室所研究的问题中:n=18, x 1000ai(i=1,.,18)分别为57, 71, 87, 97, 99, 101, 103, 113, 114, 115, 128, 129, 131, 137, 147, 156, 163, 186要求针对该实验室拥有或不拥有计算机的情况作出解答。二、 问题分析本文重在解决将蛋白质分子如何分解为18种氨基酸的问题。考虑到若使用穷举法对蛋白质分子量进行穷举,计算机运行时间长,且随着分子量x的不断增大,时间复杂度指数增长,尤其是在要求实验室不拥有计算机的情况下,繁杂的数学求解过程使得手工运算量冗杂庞大。为此我们力求寻找其他的方法模型以减少运算工作量,降低问题的复杂度。在实验室的实际环境下,考虑实验室实际具体情况和能够获得的相关专业实验数据,可进一步获得条件,并结合实验数据在原有基础上构建简化模型求解。三、 模型假设1、 所给氨基酸和蛋白质的分子量ai和x的值都是精确的;2、 忽略氨基酸形成蛋白质的过程中脱掉水分子的质量的影响;3、 各种氨基酸之间没有相互影响,即不存在某种氨基酸的存在已另一种氨基酸的存在为前提的额情况;4、 在蛋白质中,每种氨基酸出现的概率相等。四、 符号系统ai 第i种氨基酸的分子量yi 组成蛋白质的第i种氨基酸的数量bi 第i种氨基酸中含有的氮原子个数X 已知的某个生命蛋白质的分子量Pn 已测定的蛋白质的含氮量五、 模型建立(一)模型一 n元一次线性方程模型5.11 模型的建立由蛋白质分子量X和氨基酸分子量ai测定蛋白质的组成,假设yi为第i种氨基酸的数量,实际为求解i=118ai*yi =X的正整数解yi。故在无实际约束条件的情况细心啊,建立n元一次线性模型:i=118ai*yi =Xyi=0,yi整数5.1.2 穷举法求解在拥有计算机的情况下,通常地,求解该模型采用穷举法,用C语言编写循环算法求解。但是无论采用穷举法循环思想还是动态规划的算法编写程序,求解过程中始终时间复杂度大,耗费时间长,当X为很大的数值时,该方程的解的个数随X的增大以指数的倍数增长,相应的,计算机求解难以在较快速度下得出全部整数解。在尝试过程中,由以下表格数据可以看出:X(分子量)Yi(解的个数)Z(运行的时间/秒)10000.0003363215000.0008784420040.002225030.0077300140.016835070.0359400450.07274504402765502020.48146005220.98536506941.792970015083.032375021974.374280042917.011885063379.87789001124917.43419501688525.815810002826842.884表一:用穷举法求得蛋白质分子量、解的个数和程序运行时间对应表并且根据查阅资料显示,蛋白质分子量通常在几千甚至几万以上道尔顿,那么利用穷举法对该模型进行求解显然耗时耗力,效率低下,且不切实际,实际意义不大,为此我们放弃该方法的使用。5.1.3 查表法1.首先考虑在实验室不拥有计算机的情况下。从理论角度分析,若人工穷举18种氨基酸的全部组成情况不仅运算量和耗时巨大,而且不切实际。为此,我们考虑创建一种工具表格,通过相关计算和C语言编程,在表格中提供分子量x从1到1000的值,找出当前的x值可分解成18种氨基酸中的哪些氨基酸,其中,1表示X可由ai分解,0表示X不可由ai分解。实验人员按照这种方法操作查阅,能够以相对较快甚至最快的速度找出所有解的情况。表格模型建立方法如下:为测定分子量X的蛋白质的氨基酸组成,我们可以将其抽象为对X数值进行拆分,最终将X拆分为几个整数(氨基酸分子量)和的形式。此处,将X可拆分定义为X最多只能由ai=7, 71, 87, 97, 99, 101, 103, 113, 114, 115, 128, 129, 131, 137, 147, 156, 163, 186这18个整数组成,也就是说,一个数X如果可以拆分,那么这个数就可以拆分成一个可以继续拆分的数与a中的一个元素的和,继续拆分下去,便可以将一个数拆分成a中的各个元素之和。为避免拆分过程中出现重复拆分,我们对拆分的顺序加以限制,使拆分过程中最先前的元素总不大于后一个元素。首先根据数据生成两个矩阵B和C,B矩阵是用来存储1到X值的n行1列矩阵,C矩阵是n行18列矩阵,均用来判断1X这些数是否可以分解。若对于任意的一个数n(1=n=x),n如果可以分解,则B(1,n)=1;否则B(1,n)=0;与上面思考的过程相反,在C语言编写过程中采用递推的过程:第一步,通过外层设置循环变量p从1到18的循环,使A(p)呈递增趋势;第二步,令循环变量q从1到x/A(p)循环,使在在(x*B(x)+ q*A(p)x的情况下,赋值B(x*B(x)+ q*A(p) = 1, C(x*B(x)+ q*A(p),p) = 1;第三步,通过18层的循环,将1到1000中的所有可以分解的数进行了一次遍历。结果B中的所有可以分解的数值都被标记为1;对于C(i,j)中的第j列若为1则表示,i可以分解成a(j)与一个可以拆分的数的和,并且继续拆分下去的时候,其组成元素的值不超过a(j)。(具体代码见附录)A=57,71,87,97,99,101,103,113,114,115,128,129,131,137,147,156,163,186;temp = 1000;B = zeros(1,temp);C = zeros(temp,18);for p = 1:18 for q = 1: floor( temp/A(p) ) for x = 1:temp if (x*B(x)+ q*A(p) = 1000 B(x*B(x)+q*A(p)=1; C(x*B(x)+q*A(p),p)=1; end end endend(所建表格见附件)具体查表方法如下(以x=200为例):首先由表中数据得,a6,a7,a8,a12=1,表明该蛋白质可含有第6种,第7种,第8种和第12种氨基酸。在确定含有第6种,分子量为101的氨基酸的情况下,下一步查找x=200-101=99的分解情况,由表查得x=99时有且仅有a5=1,即该蛋白质还含有分子量为99的第五种氨基酸,故得出该氨基酸的一种分解情况为200=101+99.在含有分子量为103,第7种氨基酸的情况下,x=200-103=97,由表查得x=97时有且仅有a4=1,即该蛋白质还含有分子量为97的第四种元素,该蛋白质的第二种复分解情况为200=103+97.同理可求得x=200的其他分解为113+87,129+71.所以,分子量为200的蛋白质共有4种解。(如图所示)X=200a7103a8113a12129a6101a271a387a497a5992、在实验室拥有计算机的情况下利用先前已建立的表格算法,根据人工查表法利用matlab编写查表算法,可以较快速度得到所求所有解。以X=1000为例,共求得28268个解。X(分子量)Yi(解的个数)Z(运行时间)10000.02106715000.01990220040.02535325030.023328300140.02304935070.025171400450.028511450440.0283445001580.0309845502020.0355636005220.0545936506940.06618370015080.12538575021970.24039680042910.52446185063370.881089900112492.108896950168853.9945221000282689.817489表二 用查表法求得蛋白质分子量、解的个数和程序运行时间对应表图一 查表法与穷举法的时间随X值的比较图由表一和表二,图一和图二可以清晰看出,X值很小时穷举法与查表法运行时间都在1秒之内,然而随着X值的增大,从X=600后,穷举法所用的时间开始陡增,且运行时间远远大于查表法。为此,对于取X较大的值,采用查表法运行时间更短,分解速度更快,效率更高,符合实际的需要。(二)补充约束条件的简化模型第一种通用模型由于无实际约束条件所以解的数量巨大,人工求解工作量耗时费力,实际意义不大。为此我们考虑是否可以根据实验室的实际情况补充相应的约束条件,以此剔除不满足实际情况的解,减少求解数目,简化求解工作量,加快求解速度。经过查阅相关资料,根据现有实验室的实际具体条件设备,可获知蛋白质的氮含量。5.2.1模型二 已知蛋白质的氮含量范围根据现有的科学知识知道“生命蛋白质中氮含量约在15%17%之间”,假设bi为第i种氨基酸中含有氮原子的数量,据此建立含氮量模型:i=118ai*xi=X0.1514*i=118bi*xi=XX=0.17在基于原模型查表法的基础上,根据补充的含氮量的约束条件,用C语言编程,在查表法得出的所有解中逐一剔除不满足含氮量的解,最终利用matlab得出所有解得情况如下:XYi解的个数1000150020002501300035034000450950011555010460056650957007327503418005898502317900383995024701000134215.2.2模型三 已知蛋白质中氮元素的准确含量经过查阅资料,我们了解到在生物实验室中可以通过凯氏定氮法、显色反应等科学实验比较精确地测定蛋白质的含氮量Pn.i=118ai*xi=X14*i=118bi*xX=Pn当我们获得蛋白质氮元素的精确含量后,通过该简化模型运用查表法可大大减小解的范围,并且得到精确解。六、 模型分析本文提出了一种无实际约束条件的n元一次线性模型,并在原有模型基础上根据科学数据补充实际约束条件,进一步提出简化模型对于模型一,在纯理论的条件下提出,缺少实际约束条件,求得的解数量庞大,无论对于拥有计算机还是没有计算机的情况,求解过程中时间复杂度高,并且随着X值的不断增大,求得的解得数目庞大,导致求解效率低下,不符合实验室实际具体情况,实际意义不大。对于模型二,根据实验室现有的实验测试仪器设备和相关科学知识数据,我们在补充实际约束解后,缩小了解的范围,使得求解更为精确,将理论上升为实际的需要,满足实际的要求。为此,选择模型二更贴合实际,满足实际的需要。在求解模型的方法上,利用穷举法计算过程冗杂,时间复杂度随X的值增大呈指数增长,尤其对于不拥有计算机的情况,人工求解工作量庞大,耗时巨大,工作效率低下。而查表法根据之前制定的数据表格,能够有效地查取可以拆分的X值,实现对X的分解,尤其对于没有计算机的情况,对X的分解次数对应X的所有解得情况,可最大程度上减小工作量,加快求解速度,提高效率。七、 模型推广此类模型还可以运用在投资、运输、订购物资等方面运用。在投资方面,假设拥有一定资金可以运转,可以购买不同公司的股票,通过本模型可以计算出所有可以投资的种类,然后通过对每种股票风险的计算得出最佳投资方式;在运输方面,有不同种运输方式货运输线路,在资金一定的情况下计算出以何种组合的方式或路线最合适,然后再反过来计算最小资金;在订购物资方面,有不同厂家提供不同价格不同质量的物资(但都符合订购的最基本要求),可以通过本模型的计算得出最合理有又最省资金的订购方式。八、 结论本文是针对拥有计算机或不拥有计算机的情况下,求解已知蛋白质分子量的氨基酸组成。为此,我们分别在理论基础上建立了n元一次线性方程模型一和根据实际情况分别补充两个不同的实际约束条件的简化模型二和模型三。在模型的求解过程中,由于穷举法的计算过程冗杂,且程序时间复杂度随着X值的增大而呈指数增长,求解运行时间长,效率低下。为避开这些弊端,我们另辟蹊径地采用查表法,建立可查蛋白质分子量X是否可被第i种氨基酸分子量ai拆分的表格,相比于传统的穷举法,我们将计算机时间复杂度由指数形式降为多项式形式,时间复杂度不会随着X增大而陡增,提高了效率, 这是查表法的优点所在。运用模型一求得结果,以X的值50为梯度,解的个数为:X(分子量)Yi(解的个数)1000150020042503300143507400454504450015855020260052265069470015087502197800429185063379001124995016885100028268但模型一的局限在于仅在理论的前提下建立,因此求得的可行解数目庞大,而且不切合实际,实际意义不大。为此,补充约束条件已知蛋白质的氮含量范围的模型二和以已知蛋白质中氮元素的准确含量为约束条件的模型三的建立大大缩小了解的数量范围,甚至可求得精确解,符合科学实际,使问题得到合理的解决。以下是模型二求解的情况:XYi解的个数100015002000250130003503400045095001155501046005665095700732750341800589850231790038399502470100013421九、 参考文献1 程龙,张云军,赵蕊 蛋白质氨基酸的组合问题 百度文库2 王晓东 计算机算法设计与分析 电子工业出版社附录附录一 生成表格matlab源代码tic%计算时间和toc对应clc%清屏clear%删除数据A=57,71,87,97,99,101,103,113,114,115,128,129,131,137,147,156,163,186;temp = 1000;B = zeros(1,temp);C = zeros(temp,18);for p = 1:18 for q = 1: floor( temp/A(p) ) for x = 1:temp if (x*B(x)+ q*A(p) = 1000 B(x*B(x)+q*A(p)=1; C(x*B(x)+q*A(p),p)=1; end end endendin = 777;flag = 0;if B(in) = 0 disp(无法分解);else disp(可以分解); flag = 1;endtoc附录二 穷举法源代码#includeint a18=0;int b18=0;int c=57,71,87,97,99,101,103,113,114,115,128,129,131,137,147,156,163,186;int sum=0;FILE *fp2;void search(int m,int k)int i;int t;int temp;if(m=0)for(i=0;i 0) &(k18)t=0;temp = m/ck;for(ak = 0;ak=temp;ak+)search(m-ak*ck,k+1);ak=0;void main()fp2 = fopen(result.txt,w);int n=1000;double clock_t,start,finish; double totaltime;start=clock();search(n,0);fprintf(fp2,%dn,sum);finish=clock(); totaltime=(double)(finish-start)/CLOCKS_PER_SEC;printf(%fn,totaltime);附录三 拥有计算机情况下,模型一中查表法分解蛋白质分子量X源代码:%分子量分解tic%计算程序运行时间clccleara=57,71,87,97,99,101,103,113,114,115,128,129,131,137,147,156,163,186;temp=1000;%分子量上限B=zeros(1,temp);%若B(x)=1,则代表分子量为x时有解,初始化为全0C=zeros(temp,18);%记录最后所加分子量的值,若C(x,y)=1,则代表分子量为x时,其中一种分解方式最后所加分子量为y,初始化为全0for k=1:18 %B,C矩阵运算开始for j=1:fix(temp/a(k)for i=1:tempif i*B(i)+j*a(k)=temp B(i*B(i)+j*a(k)=1; C(i*B(i)+j*a(k),k)=1;endendendend %B,C矩阵运算结束sr=1000;%假设所测分子量为999if B(sr) %B(sr)=0,代表无法分解 disp(无解) zgs=0else %可以分解 sr1=sr; %初始化sr1 temp2=zeros(1,19); temp2(1,19)=18; zgs=1;%分解方案个数初始化为1 for j=1:17 %分解步骤最多为1000/57=17.54,故大循环次数取17%计算分解方案开始 zszgs=0; for k=1:zgs sr1=sr-temp2(k,1:18)*a; if sr1 gs=sum(C(sr1,1:temp2(k,19); temp1=ones(gs,19);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年商业地产项目物业销售合同范本
- 2025年国际贸易设备租赁合同中英文对照版
- 2025农村土地租赁合同
- 2025设备租赁合同版本
- 2025二手设备采购合同
- 2025二手汽车买卖合同合同范本
- 养龟寄养合同范例
- IP授权改编合同范例
- 公路保洁合同范例
- 2025装饰装修涂料施工承包合同
- 脑洞大开背后的创新思维学习通超星期末考试答案章节答案2024年
- 科傻平差软件说明指导书
- 临时聘用司机合同范本
- ipo上市商业计划书
- 抖音短陪跑合同范本
- HJ 636-2012 水质 总氮的测定 碱性过硫酸钾消解紫外分光光度法
- 山东省青岛市市北区2023-2024学年七年级下学期英语期末考试试题
- 现代风险导向审计在天衡会计师事务所的应用研究
- 拔牙技巧必成高手
- 新生儿科科室发展规划方案
- 投标项目实施方案服务响应方案
评论
0/150
提交评论