![58a5847624eafa00757ce1667f5f7073.png](https://img-blog.csdnimg.cn/img_convert/58a5847624eafa00757ce1667f5f7073.png)
前言
Blast算法的全称是(Basic Local Alignment Search Tool),中文叫做基本局部相似性比对搜索工具,在1990年由Altschul等人提出的双序列局部比对算法,是一套在蛋白质数据库或DNA数据库中进行相似性比较的分析工具。Blast程序能迅速与公开数据库进行相似性序列比较。BLAST结果中的得分是对相似性的统计说明。还有,Blast算法是一种启发式的算法。
为什么需要Blast?
这是因为传统的基于动态规划的局部性比对性算法例如常见的Smith–Waterman采用的是精确的序列比对,也就是算法得到的是比对序列的局部最优解,虽然有着较好的比较结果,但是对于长度为n和m的两个待比较序列,局部性比对算法的时间复杂度有O(mn),这个时间复杂度对于序列匹配来说代价太大,特别是当序列长度较长的时候。Blast是一种在局部性比对基本上一种近似比对的算法。它在保持较高精度的情况下可以大大减少程序运行的时间,是大规模序列对比问题一个速度和精确性都可以接受的一个解决方法。因此Blast算法很适合用于实际场景中。
算法原理
下面这张图可以很好地刻画整个Blast的算法流程: