[题型设计]字符串相似度匹配
近段时间接触了基因比对算法, 业界最常使用的是BWA算法, 我现在还不了解具体如何实现的, 这里只是准备把算法用计算机的语言描述一下.
请听题:
假设有一长字符串, 有以下特征:
- 字符串长度大约为30亿
- 所有字符由以下五种组成:
ATGCN
, 前面为4钟碱基, 最后一个为未知碱基 - 该字符串为确定字符串, 即所有位置都已经正确
另外有一短字符串, 短字符串有如下特性:
- 长度为100或者150左右的固定长度字符
- 字符串也有
ATGC
组成 - 由实验误差原因, 已知该字符串每个位置都可能出现
p
的概率误差, 称之为测序误差
- 由于生物学的缘由, 会出现字符出错, 也有出现字符丢失, 或者字符增加, 这种误差被称之为
突变误差
此外, 还有一点:
短字符串比较多, 可能长字符串同一个位置会有段短字符串匹配, 也可能没一个匹配到的
短序列的起始和结束位置是不固定,
目前的高级的测序仪器, 平均所有短序列的覆盖深度为50X, 即总共的字符为30亿*50, 如果短字符长度为100的话, 就有30亿*50/100 = 15亿条.
问题:
- 设计一个概念模型来计算字符的相似度, 并说明如何确定匹配阈值, 即达到什么概论, 可以认为没有匹配上.
- 设计一个算法能够尽快的计算出所有短序列在长序列之中位置