Jump to content

Алгоритм Хиршберга

В информатике , алгоритм Хиршберга , названный в честь его изобретателя Дэна Хиршберга , представляет собой динамического программирования алгоритм который находит оптимальное выравнивание последовательности между двумя строками . Оптимальность измеряется расстоянием Левенштейна , определяемым как сумма затрат на вставки, замены, удаления и нулевые действия, необходимые для замены одной строки на другую. Алгоритм Хиршберга просто описывается как более компактная версия алгоритма Нидлмана-Вунша , который использует разделяй и властвуй . [ 1 ] Алгоритм Хиршберга обычно используется в вычислительной биологии для поиска максимального глобального выравнивания последовательностей ДНК и белков .

Информация об алгоритме

[ редактировать ]

Алгоритм Хиршберга является общеприменимым алгоритмом оптимального выравнивания последовательностей. BLAST и FASTA — неоптимальные эвристики . Если и представляют собой строки, где и алгоритм Нидлмана-Вунша находит оптимальное выравнивание в время, используя космос. Алгоритм Хиршберга представляет собой умную модификацию алгоритма Нидлмана-Вунша, который по-прежнему требует время, а нужно только пространстве и на практике работает намного быстрее. [ 2 ] Одним из применений алгоритма является поиск выравниваний последовательностей ДНК или белков. Это также экономичный способ вычисления самой длинной общей подпоследовательности между двумя наборами данных, например, с помощью общего инструмента сравнения .

Алгоритм Хиршберга можно получить из алгоритма Нидлмана – Вунша, если заметить, что: [ 3 ]

  1. можно вычислить оптимальную оценку выравнивания, сохраняя только текущую и предыдущую строку матрицы оценок Нидлмана – Вунша;
  2. если это оптимальное выравнивание , и является произвольным разбиением , существует раздел из такой, что .

Описание алгоритма

[ редактировать ]

обозначает i -й символ , где . обозначает подстроку размера , начиная с i -го и заканчивая j -м символом . это перевернутая версия .

и представляют собой последовательности, подлежащие выравниванию. Позволять быть персонажем из , и быть персонажем из . Мы предполагаем, что , и являются четко определенными целочисленными функциями. Эти функции представляют стоимость удаления , вставка и замена с , соответственно.

Мы определяем , который возвращает последнюю строку матрицы оценок Нидлмана-Вунша :

function NWScore(X, Y)
    Score(0, 0) = 0 // 2 * (length(Y) + 1) array
    for j = 1 to length(Y)
        Score(0, j) = Score(0, j - 1) + Ins(Yj)
    for i = 1 to length(X) // Init array
        Score(1, 0) = Score(0, 0) + Del(Xi)
        for j = 1 to length(Y)
            scoreSub = Score(0, j - 1) + Sub(Xi, Yj)
            scoreDel = Score(0, j) + Del(Xi)
            scoreIns = Score(1, j - 1) + Ins(Yj)
            Score(1, j) = max(scoreSub, scoreDel, scoreIns)
        end
        // Copy Score[1] to Score[0]
        Score(0, :) = Score(1, :)
    end
    for j = 0 to length(Y)
        LastLine(j) = Score(1, j)
    return LastLine

Обратите внимание, что в любой момент требуются только две последние строки матрицы оценок. Таким образом, реализуется в космос.

Алгоритм Хиршберга следующий:

function Hirschberg(X, Y)
    Z = ""
    W = ""
    if length(X) == 0
        for i = 1 to length(Y)
            Z = Z + '-'
            W = W + Yi
        end
    else if length(Y) == 0
        for i = 1 to length(X)
            Z = Z + Xi
            W = W + '-'
        end
    else if length(X) == 1 or length(Y) == 1
        (Z, W) = NeedlemanWunsch(X, Y)
    else
        xlen = length(X)
        xmid = length(X) / 2
        ylen = length(Y)

        ScoreL = NWScore(X1:xmid, Y)
        ScoreR = NWScore(rev(Xxmid+1:xlen), rev(Y))
        ymid = arg max ScoreL + rev(ScoreR)

        (Z,W) = Hirschberg(X1:xmid, y1:ymid) + Hirschberg(Xxmid+1:xlen, Yymid+1:ylen)
    end
    return (Z, W)

В контексте наблюдения (2) предположим, что является разделом . Индекс вычисляется так, что и .

Позволять

Оптимальное выравнивание определяется выражением

 W = AGTACGCA
 Z = --TATGC-

Действительно, в этом можно убедиться, проследив соответствующую матрицу Нидлмана – Вунша:

         T   A   T   G   C
     0  -2  -4  -6  -8 -10
 A  -2  -1   0  -2  -4  -6
 G  -4  -3  -2  -1   0  -2
 T  -6  -2  -4   0  -2  -1
 A  -8  -4   0  -2  -1  -3
 C -10  -6  -2  -1  -3   1
 G -12  -8  -4  -3   1  -1
 C -14 -10  -6  -5  -1   3
 A -16 -12  -8  -7  -3   1

Каждый начинается с вызова верхнего уровня , который делит первый аргумент пополам: . Звонок в выдает следующую матрицу:

        T   A   T   G   C
    0  -2  -4  -6  -8 -10
 A -2  -1   0  -2  -4  -6
 G -4  -3  -2  -1   0  -2
 T -6  -2  -4   0  -2  -1
 A -8  -4   0  -2  -1  -3

Так же, генерирует следующую матрицу:

       C   G   T   A   T
    0 -2  -4  -6  -8 -10
 A -2 -1  -3  -5  -4  -6
 C -4  0  -2  -4  -6  -5
 G -6 -2   2   0  -2  -4
 C -8 -4   0   1  -1  -3

Их последние строки (после изменения последнего) и их сумма равны соответственно

 ScoreL      = [ -8 -4  0 -2 -1 -3 ]
 rev(ScoreR) = [ -3 -1  1  0 -4 -8 ]
 Sum         = [-11 -5  1 -2 -5 -11]

Максимум (выделен жирным шрифтом) появляется при ymid = 2, создавая раздел .

Вся рекурсия Хиршберга (которую мы опускаем для краткости) дает следующее дерево:

               (AGTACGCA,TATGC)
               /               \
        (AGTA,TA)             (CGCA,TGC)
         /     \              /        \
     (AG, )   (TA,TA)      (CG,TG)     (CA,C)
              /   \        /   \       
           (T,T) (A,A)  (C,T) (G,G) 

Листья дерева имеют оптимальное расположение.

См. также

[ редактировать ]
  1. ^ Алгоритм Хиршберга .
  2. ^ «Алгоритм» .
  3. ^ Хиршберг, Д.С. (1975). «Алгоритм линейного пространства для вычисления максимальных общих подпоследовательностей». Коммуникации АКМ . 18 (6): 341–343. CiteSeerX   10.1.1.348.4774 . дои : 10.1145/360825.360861 . МР   0375829 . S2CID   207694727 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fae395480098225ee9b869c66a6c7a98__1721123520
URL1:https://arc.ask3.ru/arc/aa/fa/98/fae395480098225ee9b869c66a6c7a98.html
Заголовок, (Title) документа по адресу, URL1:
Hirschberg's algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)