尼德曼-翁施算法

新手指南

本算法可以用於比較任意兩個序列。本指南將會使用兩個短小的DNA序列作為例子來演示該算法
GCATGCU
GATTACA

初始化得分矩陣

首先建立如圖一的得分矩陣。從第一列第一行的位置起始。計算過程從d 0 , 0開始，可以是按行計算，每行從左到右，也可以是按列計算，每列從上到下。當然，任何計算過程，只要滿足在計算d i , j時d i-1 , j、d i-1 , j-1和d i, j-1都已經被計算這個條件即可。在計算d i , j後，需要保存d i , j是從d i-1 , j、d i-1 , j-1或di, j-1中的哪一個推進的，或保存計算的路徑，以便於後續處理。上述計算過程到d m , n結束。

間隔補償

當比對序列往往存在差距（即插入缺失），有時路數。生物學上，有很大的差距更容易，而不是多個單一缺失的發生為一體的大型刪除。因此，我們應該進球兩個小的插入缺失是有過之而無不及一個大的。簡單和常見的方式做，這是通過一個大的差距，比分開始一個新的插入缺失和一個較小的間隙延伸得分為每個擴展了插入缺失信。例如，新插入缺失可能會花費-5和擴展，插入缺失可能會花費-1。以這種方式取向，例如：
GAAAAAAT
G--A-A-T
該序列有多種匹配方式，類似的匹配方式有：
GAAAAAAT
GAA----T
或者任意有四個間隔的匹配方式

歷史與算法發展

通過Needleman和Wunsch的描述的算法的最初目的是找到在兩種蛋白質的胺基酸序列的相似性。
Needleman和Wunsch的描述他們的算法為明確的情況下，當對準被匹配和不匹配僅僅懲罰，並差距沒有懲罰（D =0）。從1970年最初發布提示遞歸。.
對應的動態規划算法需要立方時間。該報還指出，遞歸可容納任意差距處罰公式：
懲罰因子，減去對於由每個間隙，可被評估為阻擋在允許的間隙。懲罰因子可以是間隙的大小和/或方向的函數。 [頁444]
一個更好的動態規划算法二次運行時間為同樣的問題（無間隙罰款）最早是由大衛Sankoff1972年類似的二次時間算法推出了由TK Vintsyuk於1968年獨立發現了一種語音處理（「時間扭曲」），由羅伯特·華格納和麥可·J·菲舍爾在1974年的字符串匹配。
Needleman和Wunsch的配製最大化相似性的問題。另一種可能性是最小化序列之間的編輯距離，弗拉基米爾的Levenshtein引入。彼得·塞勒斯在1974年發現的兩個問題是等價的。
Needleman-Wunsch算法仍是廣泛使用的最佳全局比對，特別是當全局比對的質量即結果是最重要的。然而，該算法是相對於時間和空間的昂貴，正比於兩個序列，因而不適合長度特別長的序列比對。
最近的發展一直專注於提高算法的時間和空間成本，同時保持質量。例如，在2013年，快速優化整體序列比對算法（FOGSAA）, 建議比其他最佳全局比對的方法，其中包括中的Needleman-Wunsch算法更快核苷酸/蛋白質序列的比對。紙張聲稱相比中的Needleman-Wunsch算法時，FOGSAA達到70-90％為高度相似核苷酸序列的時間增益（具有>80％的相似性），並且對於具有30-80％的相似性的序列54-70％。
全局性配對和局部性配對的比較
全局性配對和局部性配對的基本區別是在局部性配對中，你將嘗試用你訴求的序列的片段或局部來進行配對。而在全局性配對中，你將嘗試使用整個序列（從起始端到結束端）來進行配對，也即是說，在全局性配對中，當你的比對序列長度不一致時，在配對過程中可能會產生間隔或者不匹配的情況。注意，在局部性配對中也有可能產生間隔。
局部性配對
全局性配對

以下是些基於兩種算法不同點的比較。
在Needleman-Wunsch（全局性）算法中，分數跟蹤系統是基於得分矩陣的右下角開始的。然而在Smith-Waterman（局部性）算法中，得分矩陣的起始點是基於分數最高的坐標位置。
全局性配對主要應用於比較同源性的基因的相似性而局部性配對主要應用於在非同源性的基因序列中尋找具有相似性的同源的基因域。
全局性配對是當你將全部的序列納入考慮範圍之內後進行的序列配對，而局部性配對則是將序列的一小部分進行優先比對。以下是為了幫助理解該概念而舉得一個例子：

假設你有一個較長的序列作為參考，假設該序列長為2000鹼基。你所要配對的序列長度較短，約為100鹼基左右。假設在你的參考序列中有與配對序列極為接近的鹼基序列片段出現，當你進行局部性配對時，你將得到一個非常好的匹配結果和相當高的匹配分數。然而，當你進行全局性配對時，匹配程度將會很低。因為該配對方法要求將兩個序列的所有鹼基都進行配對，所以當兩序列長度相差很大時，將會造成配對結果含有很長的間隔。儘管在某處你的配對序列和參考序列的匹配程度相當高，在全局性配對時，將不會把這兩個片段直接進行配對，而是儘量嘗試讓參考序列內的所有鹼基都參與匹配，造成結果與局部性配對方法有極大差別。

因此，在選擇配對算法的時候，必須參考兩序列的具體長度和配對的實際意義和需要，選擇適當的方法，才能得到有生物學意義的結果。

程序代碼

本算法可以在多個平台上實現運算，常見的程式語言均有公開的代碼可以參考使用。
以下提供在C語言中算法的實現
usage: ./bin/needleman_wunsch [OPTIONS] [seq1 seq2]
     Needleman-Wunsch optimal global alignment (maximises score).  
     Takes a pair of sequences on the command line, or can read from a
     file and from sequence piped in.  Can read gzip files, FASTA and FASTQ.
     OPTIONS:
       --file <file>        同时读取比对的两序列文件
       --files <f1> <f2>    
       --stdin              读取标准文件头
       --case_sensitive     使用大小写字母区分
       --match <score>      [默认: 1]
       --mismatch <score>   [默认: -2]
       --gapopen <score>    [默认: -4]
       --gapextend <score>  [默认: -1]
       --scoring <PAM30|PAM70|BLOSUM80|BLOSUM62>
       --substitution_matrix <file>  
       --substitution_pairs <file>   
       freestartgap       间隔不扣分
       freeendgap         序列结束不扣分
       printscores        打印优化后的比对分数
       zam               
       printmatrices      打印动态矩阵
       printfasta         打印fasta格式的文件头
       pretty             打印描述行
       colour             打印颜色
     可选优化项：
       nogapsin1          被比对序列不允许有间隔
       nogapsin2          比对序列不允许有间隔
       nogaps             所有序列均不允许有间隔
       nomismatches       不允许有误差配对

三維立體畫

三維立體畫是利用人眼立體視覺現象製作的繪畫作品。普通繪畫和攝影作品，包括電腦製作的三維動畫，只是運用了人眼對光影、明暗、虛實的感覺得到立體的感覺，而沒有利用雙眼的立體視覺，一隻眼看和兩隻眼看都是一樣的。充分利用雙眼立體視覺的立體畫，將使你看到一個精彩的世界。人有兩隻眼，兩隻眼有一定距離，這就造成物體的影象在兩眼中有一些差異，見右圖，由圖可見，由於物體與眼的距離不同，兩眼的視角會有所不同，由於視角的不同所看到是影象也會有一些差異，大腦會根據這種差異感覺到立體的景象。三維立體畫就是利用這個原理，在水平方向生成一系列重複的圖案，當這些圖案在兩隻眼中重合時，就看到了立體的影象。參見下圖，這是一幅不能再簡單的立體畫了。圖中最上一行圓最遠，最下一行圓最近，請注意：最上一行圓之間距離最大，最下一行圓之間距離最小。重複圖案的距離決定了立體影象的遠近，生成三維立體畫的程序就是根據這個原理，依據三維影象的遠近，生成不同距離的重複圖案。
立體畫有兩種形式：第一種是由相同的圖案在水平方向以不同間隔排列而成，看起來是遠近不同的物體。　另一種立體畫較複雜，在這種立體畫上你不能直接看到物體的形象，畫面上只有雜亂的圖案，製作這樣的立體畫只有使用程序了。兩種作品看法是一樣的，原理都是使左眼看到左眼的影象，讓右眼看到右眼的影象。

電腦立體視覺效果

立體匹配是從一對立體圖像的三維重建進程的一個重要步驟。當圖像已被糾正，打個比方可以對準核苷酸/蛋白序列和匹配像素屬於掃描線，因為這兩個任務，著眼於人物的兩個字符串之間建立最佳的對應關係繪製。實際上，一對立體聲的「正確」的圖像可以被看作是「左」圖像的突變版本：噪聲和單個攝像機的靈敏度改變的像素值（即字符取代）;和不同的視角揭示以前閉塞的數據，並引入新的閉塞（即插入和字符刪除）。作為結果，中的Needleman-Wunsch算法的小的修改，使其適合於立體匹配。 儘管該算法在準確性方面性能都不算是最先進的，該但算法的相對簡單性允許其在嵌入式系統上執行，使其有廣泛的應用.
.