zoukankan      html  css  js  c++  java
  • 关于n对碱基的DNA种类数问题

    关于n对碱基的DNA种类数问题

    UPDATE

    2020-2-29

    经过一些同学的疑问后,我对此条目也发生了一些怀疑。

    这种算法是基于,“ 两条链只是互相反向,但是不能区分 ” 这个观点来算的。

    但是实际情况往往有很多可以区分的方法,比如有义链,着丝点等等,所以近似 (4^n) ,与高中生物无太大差别。但是也不乏各种特殊情况, (DNA) 的奥秘还没有一个定论。

    所以此文仅当作理论化的特殊情况看就好了x。

    此外,正文中开篇提出的题没有给出正确答案。

    在此给出 “理论” 上的解:

    首先考虑一条链的所有情况,一共有

    [4 imes 2 imes 4 imes 2+4 imes 2 imes 2 imes 2=96 ]

    明显这条链只有四个。

    我们有 (ATCG) 每个碱基 (2) 个可以选。

    第一个位置有四种性质,但是第二个时,如果选和第一个位置一类的碱基(比如都选了 (A)(T) ,之后就只有 2种情况;反之有四种。这就是+号的意义

    我们知道除了一种类似 ‘回文’ 一样的串只计了一次,我们要先找这种链的个数,等同于找长度为 (2) 个碱基的链的个数,是 (4 imes 4=16)

    最后在除二之前将这部分再多加一份就行了:

    [ans=frac{96+16}{2}=56 ]

    (最后修正了些笔误

    正文

    某天在册子上做到了这么个问题:

    • 如果有 (2)(A-T) 碱基对和 (2)(C-G) 碱基对,那么可能有多少种可能的 (DNA) 片段?

    我最初想是 (C^{2}_{4} imes 2^4div 2) ,和选项不符,也没多想就过了。


    上面那个式子的解释:

    • 考虑 (4) 个碱基对的有重复排列,是 (frac{4!}{2! imes 2!}) ,再考虑每个碱基有正反两种放法(如 (A-T)(T-A) ),所以每个乘 (2) 。最后注意到 (DNA) 的反向对称使得其翻转过来是一样的,会有中心对称的情况,所以再除以 (2)

    然后之后又做了关于 “ (n) 对碱基的 (DNA) 可能有多少种可能 ” 这样的题,答案竟然给了个 (4^n) !


    (DNA) 的种类其实是和上面的解释一样的:

    • (n) 个碱基对的排列有 (2^n) ,然后每个碱基对两种情况再乘 (2^n) ,最后(理应)除 (2)

    然而还有另外一种理解,可能对下面的思考更有用:

    • 考虑一条链,(4) 种碱基的排列有 (4^n)​ 种 ,另一条靠碱基互补配对确定,最后再除 (2)

    刚好有几位同学也有此疑问,于是我们开始思考其原因。

    首先,有一个理论,由于 (DNA) 是有方向的,两端并不一样,一端的磷酸连的是脱氧核糖上的 (5) 号碳,所以将其命名为 (5`) 端,另一端的羟基连的是 (3) 号碳,所以称为 (3`) 端。这个理论可能会造成两种可能间的微小的不同。

    之后,我们思考了下其多算的原因:

    • 第一种,由于碱基互补:

      [egin{vmatrix} A & T\ C & G end{vmatrix} ;equiv; egin{vmatrix} G & C\ T & A end{vmatrix} ]

    • 第二种,简单的对称:

      [egin{vmatrix} A & T\ C & G end{vmatrix} ;equiv; egin{vmatrix} C & G\ A & T end{vmatrix} ]

    然后,枚举了 (n=2) 的所有情况

    [egin{vmatrix} 3 & 5\ A & T\ A & T\ 5 & 3 end{vmatrix} equiv egin{vmatrix} 3 & 5\ T & A\ T & A\ 5 & 3 end{vmatrix}\ (1) \ egin{vmatrix} 3 & 5\ G & C\ G & C\ 5 & 3 end{vmatrix} equiv egin{vmatrix} 3 & 5\ C & G\ C & G\ 5 & 3 end{vmatrix}\ (2) \ egin{vmatrix} 3 & 5\ A & G\ C & T\ 5 & 3 end{vmatrix} equiv egin{vmatrix} 3 & 5\ G & C\ T & A\ 5 & 3 end{vmatrix}\ (3) \ egin{vmatrix} 3 & 5\ C & G\ A & T\ 5 & 3 end{vmatrix} equiv egin{vmatrix} 3 & 5\ T & A\ G & C\ 5 & 3 end{vmatrix}\ (4) \ egin{vmatrix} 3 & 5\ G & C\ A & T\ 5 & 3 end{vmatrix} equiv egin{vmatrix} 3 & 5\ T & A\ C & G\ 5 & 3 end{vmatrix}\ (5) \ egin{vmatrix} 3 & 5\ A & T\ G & C\ 5 & 3 end{vmatrix} equiv egin{vmatrix} 3 & 5\ C & G\ T & A\ 5 & 3 end{vmatrix}\ (6) \ egin{vmatrix} 3 & 5\ G & C\ C & G\ 5 & 3 end{vmatrix}\ (7) \ egin{vmatrix} 3 & 5\ C & G\ G & C\ 5 & 3 end{vmatrix}\ (8) \ egin{vmatrix} 3 & 5\ T & A\ A & T\ 5 & 3 end{vmatrix}\ (9) \ egin{vmatrix} 3 & 5\ A & T\ T & A\ 5 & 3 end{vmatrix}\ (10) ]

    可以发现,除了最后四种,都重复了两次,这是由于碱基配对的重复。而最后四种乍一看有重复,但是 (3`)(5`) 是反的。

    那么我们的重点就是如何找到只算一次的项。

    可以发现,只要是按碱基配对变换后再倒过来和原来一样的链,都只会计一次。

    例如:

    [egin{vmatrix} 3 & 5\ color{red}{A} & color{teal}{T}\ color{red}{T} & color{teal}{A}\ color{red}{G} & color{teal}{C}\ color{teal}{C} & color{red}{G}\ color{teal}{A} & color{red}{T}\ color{teal}{T} & color{red}{A}\ 5 & 3 end{vmatrix}\ ]

    而如何一样呢,只需要对半分开,然后计算一半长链的排列,另一半按配对填上就行了。即为 (4^{nover2}) 。而只有偶数长度会有这种情况,奇数是不行的。

    最后我们只要在除之前将这部分再加一份,求可以不多除了!

    [Ans(n)=egin{cases} frac{4^n}{2} & ext{$n=2k+1$}\ frac{1}{2} imes(4^n+4^{frac{n}{2}}) & n=2k end{cases} ]

    这就是结论的式子啦!

    经过打表检验正确。

    至于 (4^n) 的来源,我们可以这么想,一般 (DNA) 分子是凭依在蛋白质载体上,所以按具体情况有办法区分两条排列一样的链,所以所谓对称就不存在了,但是若是单独讨论 (DNA) 答案即为而上述结论。

    声明与感谢

    感谢两位朋友 (yyy)(zyl) 的指点。(@opethrax @BeyondLimits


    (frak by; thorn\_)

  • 相关阅读:
    ListView之setEmptyView的问题
    AdapterView的相关知识。
    分享一个程序猿的真实的爱情故事
    C#中的explicit和implicit了解一下吧
    通俗易懂,什么是.NET Core以及.NET Core能做什么
    目前下载VS2017你可能会遇到这个坑
    .NET Core中使用Dapper操作Oracle存储过程最佳实践
    分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark
    从ASP.NET Core2.2到3.0你可能会遇到这些问题
    What?VS2019创建新项目居然没有.NET Core3.0的模板?Bug?
  • 原文地址:https://www.cnblogs.com/thornblog/p/12381381.html
Copyright © 2011-2022 走看看