Nidlmen-Vanšov algoritam
Nidlmen-Vanš algoritam izvršava globalno poravnjanje dve sekvence (“A” I “B”). Obično se koristi u biofarmatici za poravnanje sekvenci proteina ili nukleotida. Algoritam su objavili 1970godine Saul B. Needleman i Christian D. Wunsch. .
Nidlmen-Vanš algoritam je primer dinamičkog programiranja, i to je prva primena dinamičkog programiranja na poredjenje bioloških sekvenci.

Moderna prezentacija 
Rezultati za poravnate karaktere su određeni matricom sličnosti.  je sličnost karaktera „a“i „b“. 
Na primer, ako bi matrica sličnosti bila

Onda bi poravnanje: 
 AGACTAGTTAC
 CGA‒‒‒GACGT
sa kaznenim jazom od -5, imalo sledeći rezultat

Da bi pronašli poravnanje sa najvećim rezultatom, dvo dimenzioni niz ili matrica „F“ je alocirana.
. 
Postoji jedna kolona za svaki karakter u sekvenci „A“, i jedan red za svaki karakter u sekvenci „B“. Ako bismo poravnavali sekvence veličine „n“ i „m“, količina memorije korišcena je . Hirsbergov algoritam ima samo podskup niza u memoriji i koristi  prostor, ali je sličan Nidlmen-Vanšovom algoritmu i jos uvek zahteva  vreme.
Kako algoritam napreduje,  će biti dodeljeno optimalnom rezultatu za poravnanje prvog  karaktera u „A“ i prvog  u „B“. Belmanova jednačina je primenjena i sledi ispod:

 Osnovno:

 Rekurzija, bazirana na principu optimalnosti

Pseudo kod za algoritam za izračunavanje F matrice izgleda ovako:
 for i=0 to length(A)
   F(i,0) ← d*i
 for j=0 to length(B)
   F(0,j) ← d*j
 for i=1 to length(A)
   for j=1 to length(B)
   {
     Match ← F(i-1,j-1) + S(Ai, Bj)
     Delete ← F(i-1, j) + d
     Insert ← F(i, j-1) + d
     F(i,j) ← max(Match, Insert, Delete)
   }
Kada je F matrica izračunata, unos  daje maksimalni rezultat između svih mogućih poravnanja. Za izračunavanje poravnanja koji zapravo daje ovakav rezultat, pocinjemo od donje desne celije i poredimo vrednost sa tri moguća izvora (Match, Insert i Delete iznad) da vidimo odakle dolazi. Ako je Match, onda  i  su poravnati, Ako je Delete onda je poravnato sa „rupom“ i ako je Insert onda je  poravnata sa „rupom“ (generalno, vise od jednog izbora može imati istu vrednost vodeci alternativnim optimalnim poravnanjima.)

 AlignmentA ← ""
 AlignmentB ← ""
 i ← length(A)
 j ← length(B)
 while (i > 0 or j > 0)
 {
   if (i > 0 and j > 0 and F(i,j) == F(i-1,j-1) + S(Ai, Bj))
   {
     AlignmentA ← Ai + AlignmentA
     AlignmentB ← Bj + AlignmentB
     i ← i - 1
     j ← j - 1
   }
   else if (i > 0 and F(i,j) == F(i-1,j) + d)
   {
     AlignmentA ← Ai + AlignmentA
     AlignmentB ← "-" + AlignmentB
     i ← i - 1
   }
   else (j > 0 and F(i,j) == F(i,j-1) + d)
   {
     AlignmentA ← "-" + AlignmentA
     AlignmentB ← Bj + AlignmentB
     j ← j - 1
   }
 }

Istorijske beleske 
Nidlmen i Vanš su opisali svoj algoritam eksplicitno za slučaj kada poravnanja imaju kaznu prema neuskladjenosti, i kada jaz nema kaznu (d=0). Originalna publikacija  iz 1970 preporucuje rekurziju. 
.
Kazneni faktor, broj oduzet za svaki jaz koji je napravljen, moze se oceniti kao barijera za dozvoljavanje jaza. Kazneni faktor može biti funkcija veličine i/ili pravac jaza.
Bolji algoritam dinamičkog programiranja sa kvadratnim vremenom izvršavanja istog problema(nema kaznenog jaza) bio je prvi put objavljen u  od Dejvida Sankofa 1972 godine.

Slični kvadratni algoritmi bili su osmisljeni nezavisno
T. K. Vintsyuk 1968 godine za obradu govora.
("time warping"), i Robert A. Wagner iMichael J. Fischer 1974godine za poklapanje stringa.

Nidlmen i Vanš su formulisali problem kao maksimizaciju sličnosti. Druga mogućnost za minimizaciju je Levenštajnovo rastojanje izmedju sekvenci koje je predstavio Vladimir Levenshtein.
Peter H. Sellers je pokazao u 1974godine da su ova dva problema ekvivalentna.

Reference 

Алгоритми поравнавања секвенци
Динамичко програмирање
Nidlmen-Vanš algoritam izvršava globalno poravnjanje dve sekvence ( “ A ” I “ B ” ) . Obično se koristi u biofarmatici za poravnanje sekvenci proteina ili nukleotida . Algoritam su objaviliodine Saul B . Needleman i Christian D. Wunsch . \ . Nidlmen-Vanš algoritam je primer dinamičkog programiranja , i to je prva primena dinamičkog programiranja na poredjenje bioloških sekvenci . Moderna prezentacija Rezultati za poravnate karaktere su određeni matricom sličnosti. je sličnost karaktera „ a“ i „ b “ . Na primer , ako bi matrica sličnosti bila Onda bi poravnanje : AGACTAGTTAC CGA‒‒‒GACGT sa kaznenim jazom od imalo sledeći rezultat Da bi pronašli poravnanje sa najvećim rezultatom , dvo dimenzioni niz ili matrica „ F “ je alocirana . . Postoji jedna kolona za svaki karakter u sekvenci „ A “ , i jedan red za svaki karakter u sekvenci „ B “ . Ako bismo poravnavali sekvence veličine „ n “ i „ m “ , količina memorije korišcena je \ . Hirsbergov algoritam ima samo podskup niza u memoriji i koristi prostor , ali je sličan Nidlmen-Vanšovom algoritmu i jos uvek zahteva vreme . Kako algoritam napreduje , će biti dodeljeno optimalnom rezultatu za poravnanje prvog karaktera u „ A “ i prvog u „ B “ . Belmanova jednačina je primenjena i sledi ispod : Osnovno : Rekurzija , bazirana na principu optimalnosti Pseudo kod za algoritam za izračunavanje F matrice izgleda ovako : for i=0 to length( A ) F( i,0 ) ← d*i for j=0 to length( B ) F( 0,j ) ← d*j for i=1 to length( A ) for j=1 to length( B ) { Match ← F( i-1,j-1 ) + S( Ai , Bj ) Delete ← F( i-1 , j ) + d Insert ← F( i , j-1 ) + d F( i,j ) ← max( Match , Insert , Delete ) } Kada je F matrica izračunata , unos daje maksimalni rezultat između svih mogućih poravnanja . Za izračunavanje poravnanja koji zapravo daje ovakav rezultat , pocinjemo od donje desne celije i poredimo vrednost sa tri moguća izvora ( Match , Insert i Delete iznad ) da vidimo odakle dolazi . Ako je Match , onda i su poravnati , Ako je Delete onda je poravnato sa „ rupom “ i ako je Insert onda je poravnata sa „ rupom “ ( generalno , vise od jednog izbora može imati istu vrednost vodeci alternativnim optimalnim poravnanjima . ) AlignmentA ← " " AlignmentB ← " " i ← length( A ) j ← length( B ) while ( i >or j > { if ( i >and j >and F( i,j ) == F( i-1,j-1 ) + S( Ai , Bj ) ) { AlignmentA ← Ai + AlignmentA AlignmentB ← Bj + AlignmentB i ← i - 1 j ← j - 1 } else if ( i >and F( i,j ) == F( i-1,j ) + d ) { AlignmentA ← Ai + AlignmentA AlignmentB ← " - " + AlignmentB i ← i - 1 } else ( j >and F( i,j ) == F( i,j-1 ) + d ) { AlignmentA ← " - " + AlignmentA AlignmentB ← Bj + AlignmentB j ← j - 1 } } Istorijske beleske Nidlmen i Vanš su opisali svoj algoritam eksplicitno za slučaj kada poravnanja imaju kaznu prema neuskladjenosti , i kada jaz nema kaznu ( d=0 ) . Originalna publikacija izpreporucuje rekurziju . . Kazneni faktor , broj oduzet za svaki jaz koji je napravljen , moze se oceniti kao barijera za dozvoljavanje jaza . Kazneni faktor može biti funkcija veličine i / ili pravac jaza . Bolji algoritam dinamičkog programiranja sa kvadratnim vremenom izvršavanja istog problema( nema kaznenog jaza ) bio je prvi put objavljen u od Dejvida Sankofagodine . Slični kvadratni algoritmi bili su osmisljeni nezavisno T. K. Vintsyukgodine za obradu govora. ( " time warping " ) , i Robert A. Wagner iMichael J . Fischerodine za poklapanje stringa . Nidlmen i Vanš su formulisali problem kao maksimizaciju sličnosti . Druga mogućnost za minimizaciju je Levenštajnovo rastojanje izmedju sekvenci koje je predstavio Vladimir Levenshtein . Peter H . Sellers je pokazao uodine da su ova dva problema ekvivalentna . Reference Алгоритми поравнавања секвенци Динамичко програмирање