关于n对碱基的DNA种类数问题
UPDATE
2020-2-29
经过一些同学的疑问后,我对此条目也发生了一些怀疑。
这种算法是基于,“ 两条链只是互相反向,但是不能区分 ” 这个观点来算的。
但是实际情况往往有很多可以区分的方法,比如有义链,着丝点等等,所以近似 ,与高中生物无太大差别。但是也不乏各种特殊情况, 的奥秘还没有一个定论。
所以此文仅当作理论化的特殊情况看就好了x。
此外,正文中开篇提出的题没有给出正确答案。
在此给出 “理论” 上的解:
首先考虑一条链的所有情况,一共有
明显这条链只有四个。
我们有 每个碱基 个可以选。
第一个位置有四种性质,但是第二个时,如果选和第一个位置一类的碱基(比如都选了 或 ,之后就只有 2种情况;反之有四种。这就是+号的意义
我们知道除了一种类似 ‘回文’ 一样的串只计了一次,我们要先找这种链的个数,等同于找长度为 个碱基的链的个数,是 。
最后在除二之前将这部分再多加一份就行了:
(最后修正了些笔误
正文
某天在册子上做到了这么个问题:
- 如果有 个 碱基对和 个 碱基对,那么可能有多少种可能的 片段?
我最初想是 ,和选项不符,也没多想就过了。
上面那个式子的解释:
- 考虑 个碱基对的有重复排列,是 ,再考虑每个碱基有正反两种放法(如 和 ),所以每个乘 。最后注意到 的反向对称使得其翻转过来是一样的,会有中心对称的情况,所以再除以 。
然后之后又做了关于 “ 对碱基的 可能有多少种可能 ” 这样的题,答案竟然给了个 !
的种类其实是和上面的解释一样的:
- 个碱基对的排列有 ,然后每个碱基对两种情况再乘 ,最后(理应)除 。
然而还有另外一种理解,可能对下面的思考更有用:
- 考虑一条链, 种碱基的排列有 种 ,另一条靠碱基互补配对确定,最后再除 。
刚好有几位同学也有此疑问,于是我们开始思考其原因。
首先,有一个理论,由于 是有方向的,两端并不一样,一端的磷酸连的是脱氧核糖上的 号碳,所以将其命名为 端,另一端的羟基连的是 号碳,所以称为 端。这个理论可能会造成两种可能间的微小的不同。
之后,我们思考了下其多算的原因:
-
第一种,由于碱基互补:
-
第二种,简单的对称:
然后,枚举了 的所有情况
可以发现,除了最后四种,都重复了两次,这是由于碱基配对的重复。而最后四种乍一看有重复,但是 和 是反的。
那么我们的重点就是如何找到只算一次的项。
可以发现,只要是按碱基配对变换后再倒过来和原来一样的链,都只会计一次。
例如:
而如何一样呢,只需要对半分开,然后计算一半长链的排列,另一半按配对填上就行了。即为 。而只有偶数长度会有这种情况,奇数是不行的。
最后我们只要在除之前将这部分再加一份,求可以不多除了!
这就是结论的式子啦!
经过打表检验正确。
至于 的来源,我们可以这么想,一般 分子是凭依在蛋白质载体上,所以按具体情况有办法区分两条排列一样的链,所以所谓对称就不存在了,但是若是单独讨论 答案即为而上述结论。
声明与感谢
感谢两位朋友 和 的指点。(@opethrax @BeyondLimits
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫