我想知道如何量化Needleman-Wunsch算法的结果(通常用于比对核苷酸/蛋白质序列)。
考虑一些固定的评分方案和两个长度不同S1
和S2
的序列。假设我们通过强力计算S1
和S2
的每个可能对齐,并且得分最高的对齐具有得分x
。当然,这比Needleman-Wunsch方法复杂得多。
使用Needleman-Wunsch算法查找序列比对时,请说它的分数为y
。
将r
视为针对两个随机序列R1
和R2
通过Needleman-Wunsch生成的分数。
x
与y
相比如何?对于两个已知同源序列,y
总是大于r
吗?
一般来说,我确实理解我们使用Needleman-Wunsch算法来显着加快序列比对(与蛮力方法相比),但不了解随附的准确性成本(如果有的话)它。我曾经阅读过原始论文(Needleman& Wunsch,1970),但仍留下这个问题。
答案 0 :(得分:5)
Needlman-Wunsch总能提供最佳答案 - 它比蛮力要快得多,并且在此过程中不会牺牲准确性。它使用的关键见解是,实际上并不需要生成所有可能的对齐,因为它们中的大多数包含不良的子对齐并且不可能是最佳的。 Needleman-Wunsch算法的工作原理是缓慢地为原始链的片段建立最佳比对,然后使用保证任何最佳比对必须包含对于略小的情况的最佳比对,将这些较小的比对缓慢地生长为更大的比对。
答案 1 :(得分:2)
我认为你的问题归结为动态规划是否找到了最优解,即保证y >= x
。对于这方面的讨论,我会提到那些可能比我聪明的人:
https://cs.stackexchange.com/questions/23599/how-is-dynamic-programming-different-from-brute-force
基本上,它表示动态编程可能会产生最佳结果,即与蛮力相同,但仅适用于满足 Bellman最优性原则的特定问题。
根据针对Needleman-Wunsch的维基百科页面,该问题确实满足 Bellman最优性原则:
https://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm
具体做法是:
Needleman-Wunsch算法仍被广泛用于最优全局 对齐,特别是当全局对齐的质量是 至关重要。但是,该算法很昂贵 尊重时间和空间,与长度的乘积成正比 两个序列,因此不适合长序列。
在同一维基百科页面的其他地方也提到了最佳性。