Нидлмен-Ваншов алгоритам
Нидлмен-Ванш алгоритам извршава глобално поравњање две секвенце (“А” I “Б”). Обично се користи у биофарматици за поравнање секвенци протеина или нуклеотида. Алгоритам су објавили 1970године Саул Б. Неедлеман и Цхристиан D. Wунсцх. .[1] Нидлмен-Ванш алгоритам је пример динамичког програмирања, и то је прва примена динамичког програмирања на поредјење биолошких секвенци.
Модерна презентација
уредиРезултати за поравнате карактере су одређени матрицом сличности. је сличност карактера „а“и „б“. На пример, ако би матрица сличности била
А | Г | C | Т | |
---|---|---|---|---|
А | 10 | -1 | -3 | -4 |
Г | -1 | 7 | -5 | -3 |
C | -3 | -5 | 9 | 0 |
Т | -4 | -3 | 0 | 8 |
Онда би поравнање:
AGACTAGTTAC CGA‒‒‒GACGT
са казненим јазом од -5, имало следећи резултат
Да би пронашли поравнање са највећим резултатом, дво димензиони низ или матрица „Ф“ је алоцирана. . Постоји једна колона за сваки карактер у секвенци „А“, и један ред за сваки карактер у секвенци „Б“. Ако бисмо поравнавали секвенце величине „н“ и „м“, количина меморије коришцена је . Хирсбергов алгоритам има само подскуп низа у меморији и користи простор, али је сличан Нидлмен-Ваншовом алгоритму и јос увек захтева време. Како алгоритам напредује, ће бити додељено оптималном резултату за поравнање првог карактера у „А“ и првог у „Б“. Белманова једначина је примењена и следи испод:
- Основно:
- Рекурзија, базирана на принципу оптималности
Псеудо код за алгоритам за израчунавање Ф матрице изгледа овако:
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) }
Када је Ф матрица израчуната, унос даје максимални резултат између свих могућих поравнања. За израчунавање поравнања који заправо даје овакав резултат, поцињемо од доње десне целије и поредимо вредност са три могућа извора (Матцх, Инсерт и Делете изнад) да видимо одакле долази. Ако је Матцх, онда и су поравнати, Ако је Делете онда је поравнато са „рупом“ и ако је Инсерт онда је поравната са „рупом“ (генерално, висе од једног избора може имати исту вредност водеци алтернативним оптималним поравнањима.)
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 } }
Историјске белеске
уредиНидлмен и Ванш су описали свој алгоритам експлицитно за случај када поравнања имају казну према неускладјености, и када јаз нема казну (д=0). Оригинална публикација[1] из 1970 препоруцује рекурзију. .
Казнени фактор, број одузет за сваки јаз који је направљен, мозе се оценити као баријера за дозвољавање јаза. Казнени фактор може бити функција величине и/или правац јаза.
Бољи алгоритам динамичког програмирања са квадратним временом извршавања истог проблема(нема казненог јаза) био је први пут објављен у[2] од Дејвида Санкофа 1972 године.
Слични квадратни алгоритми били су осмисљени независно Т. К. Винтсyук[3] 1968 године за обраду говора. ("тиме wарпинг"), и Роберт А. Wагнер иМицхаел Ј. Фисцхер[4] 1974године за поклапање стринга.
Нидлмен и Ванш су формулисали проблем као максимизацију сличности. Друга могућност за минимизацију је Левенштајново растојање измедју секвенци које је представио Владимир Левенсхтеин. Петер Х. Селлерс је показао у[5] 1974године да су ова два проблема еквивалентна.
Референце
уреди- ^ а б Неедлеман, Саул Б. & Wунсцх, Цхристиан D. (1970). „А генерал метход апплицабле то тхе сеарцх фор симиларитиес ин тхе амино ацид сеqуенце оф тwо протеинс”. Јоурнал оф Молецулар Биологy. 48 (3): 443—53. ПМИД 5420325. дои:10.1016/0022-2836(70)90057-4. Пронађени су сувишни параметри:
|ластаутхорамп=
и|ласт-аутхор-амп=
(помоћ) - ^ Санкофф D (1972). „Матцхинг сеqуенцес ундер делетион/инсертион цонстраинтс”. Процеедингс оф тхе Натионал Ацадемy оф Сциенцес оф тхе УСА. 69 (1): 4—6. ПМЦ 427531 . ПМИД 4500555. дои:10.1073/пнас.69.1.4.
- ^ Винтсyук ТК (1968). „Спеецх дисцриминатион бy дyнамиц программинг”. Кибернетика. 4: 81—88.
- ^ Wагнер РА, Фисцхер МЈ (1974). „Тхе стринг-то-стринг цоррецтион проблем”. Јоурнал оф тхе АЦМ. 21 (1): 168—173. дои:10.1145/321796.321811.
- ^ Селлерс ПХ (1974). „Он тхе тхеорy анд цомпутатион оф еволутионарy дистанцес”. СИАМ Јоурнал он Апплиед Матхематицс. 26 (4): 787—793. дои:10.1137/0126070.