Text
                    
Ж. Сетубал, Ж. Мейданис
^/«sgw/F

СЕРИЯ «БИОИНФОРМАТИКА И МОЛЕКУЛЯРНАЯ БИОЛОГИЯ»
Вышли в свет:
Дурбин Р., Эдди Ш.. Крог А., Митчисон Г.
Анализ биологических последовательностей
Игнасимуту С.
Основы биоинформагики
Эвери Дж.
Теория информации и эволюция
Готовится к публикации:
Бородовский М., Екишева С.
Анализ биологических последовательностей.
Задачи и решения
СЕРИЯ «БИОИНФОРМАТИКА И МОЛЕКУЛЯРНАЯ БИОЛОГИЯ»
Главные редакторы:
Садовничий В. А. (МГУ им. М. В. Ломоносова) Скулачев В. П. (факультет биоинженерии и биоинформатики МГУ им. М. В. Ломоносова)
Редакционная коллегия:
Богданов А. А. (Институт физико-химической биологии им. А. Н. Белозерского МГУ)
Гельфанд М.С. (Институт проблем передачи информации им. А. А. Харкевича РАН)
Есипова Н. Г. (Институт молекулярной биологии им. В. А. Энгельгардта РАН)
Кирпичников М.11, (биологический факультет МГУ им. М. В. Ломоносова) Колчанов Н. А. (Институт цитологии и генетики СО РАН) Миронов А. А. (факультет биоинженерии и биоинформатики МГУ им. М. В. Ломоносова)
Ризниченко Г. Ю. (биологический факультет МГУ им. М. В. Ломоносова) Ройтбсрг М. А. (Институт математических проблем биологии РАН) Рубин А. Б. (биологический факультет МГУ им. М. В. Ломоносова) Финкельштейн А. В. (Институт белка ПНЦ РАН)
Шайтан К. В. (биологический факультет МГУ им. М. В. Ломоносова)
Жуан Сетубал и Жуан Меиданис
ВВЕДЕНИЕ В ВЫЧИСЛИТЕЛЬНУЮ МОЛЕКУЛЯРНУЮ БИОЛОГИЮ
Перевод с англ. А. А. Чумичкина Под ред д. б. н., проф. А. А. Миронова
Москва ♦ Ижевск
2007
INTRODUCTION TO COMPUTATIONAL MOLECULAR BIOLOGY
JOAO SETUBAL and ЮАО MEIDANIS
University of Campinas, Brazil
PWS PUBLISHING COMPANY
I(T)P
An International Thomson Publishing Company
BOSTON • ALBANY • BONN • CINCINNATI • DETROIT • LONDON MELBOURNE • MEXICO CITY • NEW YORK • PACIFIC GROVE • PARIS SAN FRANCISCO • SINGAPORE • TOKYO • TORONTO
УДК 577:004.383
ББК 28.070с51
С334
И нтернет-магазин
http://shop.rcd.ru
•	физика
•	математика
•биология
•	нефтегазовые гехноло!ин
Сезубал Ж., Мейлаиис Ж.
Введение в вычислительную молекулярную биологию. — Москва Ижевск: НИЦ «Регулярная и хаотическая динамика», Институт компьютерных исследований, 2007. — 420 с.
Настоящая книга представляет собой введение в вычислительную молекулярную биологию, описывает наиболее типичные ее задачи и предлагает эффективные алгоритмы их решения. Книга начинается с обзора фундаментальных понятий молекулярной биологии (в том числе структура и функции белков и нуклеиновых кислот, механизмы молекулярной генетики), далее вводятся важнейшие математические объекты, такие как графы и строки, и приводятся общие сведения об алгоритмах. Все это подготавливает почву для понимания дальнейших разделов книги-сравнение последовательностей (и поиск в базе данных), сборка фратментов ДНК, составление физических карт ДНК, филогенетические деревья, перестройка генов, предсказание структуры макромолекулы и вычисления с помощью ДНК. Каждый из этих разделов содержит обсуждение биологических предпосылок, определения ключевых терминов, полное описание применяемых математических или компьютерных моделей, а также примеры реализации алгоритмов.
Книга предназначена для программистов, математиков и биологов, стремящихся расширить свои познания в этой новой захватывающей области науки, где еще так много нерешенных задач.
ISBN 978-5-93972-623-8	ББК 28.070с51
© 1997 by Brooks/Cole Publishing Company,
a division of International Thomson Publishing Inc.
© Перевод на русский язык:
НИЦ «Регулярная и хаотическая динамика», 2007.
http://shop.rcd.ru
http://ics.org.ru
Оглавление
ПРЕДИСЛОВИЕ . .	12
Глава 1 ОСНОВНЫЕ ПОНЯТИЯ МОЛЕКУЛЯРНОЙ БИОЛО-
ГИИ	............................ 20
1.1.	ЖИЗНЬ................................. 20
1.2.	БЕЛКИ................................. 21
1.3.	НУКЛЕИНОВЫЕ КИСЛОТЫ	26
1.3.1.	ДНК............................. 26
1.3.2.	РНК............................. 30
14	МЕХАНИЗМЫ МОЛЕКУЛЯРНОЙ ГЕНЕТИКИ ...	30
1.4.1.	ГЕНЫ И ГЕНЕТИЧЕСКИЙ КОД	...	  30
1.4.2.	ТРАНСКРИПЦИЯ, ТРАНСЛЯЦИЯ И СИНТЕЗ БЕЛКА 32
1.4.3.	ИЗБЫТОЧНАЯ ДНК И РАМКИ СЧИТЫВАНИЯ ... 36
1.4.4.	ХРОМОСОМЫ ...................... 37
1.4.5.	ПОДОБЕН ЛИ ГЕНОМ КОМПЬЮТЕРНОЙ ПРОГРАММЕ? ............................... 39
1 5. МЕТОДЫ ИЗУЧЕНИЯ ГЕНОМА................ 40
1.5.1. КАРТЫ И ПОСЛЕДОВАТЕЛЬНОСТИ	40
1.5.2. СПЕЦИАЛЬНЫЕ МЕТОДЫ ............. 43
1.6. ПРОЕКТ «ГЕНОМ ЧЕЛОВЕКА»............... 49
1.7. БАНКИ ПОСЛЕДОВАТЕЛЬНОСТЕЙ НУКЛЕОТИДОВ	51
УПРАЖНЕНИЯ .	  59
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ	59
Глава 2. СТРОКИ, ГРАФЫ И АЛГОРИТМЫ............61
2.1. СТРОКИ..............................   61
2.2. ГРАФЫ..................................63
2 3 АЛГОРИТМЫ ..............................68
УПРАЖНЕНИЯ................................  76
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ............... 78
8
Оглавление
Глава 3. СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ И ПОИСК В
БАЗАХ ДАННЫХ............................... 80
3.1.	БИОЛОГИЧЕСКИЕ ОСНОВЫ СРАВНЕНИЯ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ................................ 80
3.2.	СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ... 83
3.2.1.	ГЛОБАЛЬНОЕ СРАВНЕНИЕ - ОСНОВНОЙ АЛГОРИТМ ................................... 83
3.2.2.	ЛОКАЛЬНОЕ СРАВНЕНИЕ..............91
3.2.3.	ПОЛУГЛОБАЛЬНОЕ СРАВНЕНИЕ.........92
3.3.	РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ......	95
3.3.1.	ЭКОНОМИЯ ПРОСТРАНСТВА........... 96
3.3.2.	ОБЩИЕ ФУНКЦИИ ШТРАФОВ ЗА ПРОПУСКИ ... 100
3.3.3.	ЛИНЕЙНЫЕ ФУНКЦИИ ШТРАФОВ ЗА ПРОПУСКИ 104
3.3.4.	СРАВНЕНИЕ ПОДОБНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ...................................107
3.4.	МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ ..................................... III
3.4.1.	МЕРА ПАРНЫХ СУММ................112
3.4.2.	ВЫРАВНИВАНИЕ ЗВЕЗДЫ............ 122
3.4.3.	ВЫРАВНИВАНИЕ ПО ДЕРЕВУ .... ... 125
3.5.	ПОИСК В БАЗАХ ДАННЫХ	.127
3.5.1.	МАТРИЦЫ ПТМ ..................  128
3.5.2.	BLAST...........................133
3.5.3.	FAST............................138
3.6.	РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК И ТОЧНОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ..............141
3.6.1.	* ПОДОБИЕ И РАССТОЯНИЕ......... 142
3.6.2.	ВЫБОР ПАРАМЕТРОВ ПРИ СРАВНЕНИИ ПОСЛЕДОВАТЕЛЬНОСТЕЙ .........................151
3.6.3.	СОПОСТАВЛЕНИЕ СТРОК И ТОЧНОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ.................155
РЕЗЮМЕ.....................................157
УПРАЖНЕНИЯ ................................158
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ ..............161
ГЛАВА 4. СБОРКА ФРАГМЕНТОВ ДНК...............165
4.1.	БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ	.165
4.1.1.	ИДЕАЛЬНЫЙ СЛУЧАЙ................167
4.1.2.	ТРУДНОСТИ.......................168
Оглавление
9
4.1.3.	АЛЬТЕРНАТИВНЫЕ МЕТОДЫ СЕКВЕНИРОВАНИЯ ДНК	.	...............176
4.2.	МОДЕЛИ	.	............ 178
4.2.1.	КРАТЧАЙШАЯ ОБЩАЯ НАДСТРОКА........178
4.2.2.	ВОССТАНОВЛЕНИЕ	 180
4.2.3.	МУЛЬТИКОНТИГИ ....................182
4.3.	* АЛГОРИТМЫ.............................184
4.3.1.	ПРЕДСТАВЛЕНИЕ ПЕРЕКРЫТИЙ..........185
4.3.2.	ПУТИ, ПОРОЖДАЮЩИЕ НАДСТРОКИ ......186
4.3	3 КРАТЧАЙШИЕ НАДСТРОКИ В КАЧЕСТВЕ ПУТЕЙ . 189
4.3	4 ЖАДНЫЙ АЛГОРИТМ .	  .192
4.3.5.	АЦИКЛИЧЕСКИЕ ПОДГРАФЫ.............195
4.4.	ЭВРИСТИКИ ..............................202
4.4 1 ОБНАРУЖЕНИЕ ПЕРЕКРЫТИЙ.............205
4.4.2. УПОРЯДОЧЕНИЕ ФРАГМЕНТОВ...........206
4.4.3. ВЫРАВНИВАНИЕ И КОНСЕНСУС..........209
РЕЗЮМЕ.......................................211
УПРАЖНЕНИЯ .	 212
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ.................214
Глава 5. СОСТАВЛЕНИЕ ФИЗИЧЕСКИХ КАРТ ДНК	217
5.1.	БИОЛОГИЧЕСКИЕ ОСНОВЫ КАРТИРОВАНИЯ.......217
5.1.1.	СОСТАВЛЕНИЕ РЕСТРИКЦИОННЫХ КАРТ.219
5.1.2.	СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ ...	221
5.2.	МОДЕЛИ..................................223
5.2.1. МОДЕЛИ УЧАСТКА РЕСТРИКЦИИ.........223
5.2 2 МОДЕЛЬ В ВИДЕ ИНТЕРВАЛЬНОГО ГРАФА .225
5.2.3 СВОЙСТВО ПОСЛЕДОВАТЕЛЬНЫХ ЕДИНИЦ . ..227
5.2 4 СВОЙСТВА «ИДЕАЛЬНОГО» АЛГОРИТМА КАРТИРОВАНИЯ .........................229
5.3.	АЛГОРИТМ ДЛЯ ЗАДАЧИ СПЕ ................231
5.4.	ПРИБЛИЖЁННОЕ СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ 240
5.4.1.	ГРАФОВАЯ МОДЕЛЬ...................241
5 4.2.	ГАРАНТИЯ..........................244
5 4 3	ПРАКТИКА ВЫЧИСЛЕНИЙ................247
5.5.	ЭВРИСТИКИ ДЛЯ СОСТАВЛЕНИЯ КАРТ ГИБРИДИЗАЦИИ25О 5.5.1	ОТСЕВ ХИМЕРНЫХ КЛОНОВ.............251
5.5.2.	ПОЛУЧЕНИЕ ХОРОШЕГО ПОРЯДКА ЗОНДОВ 252
РЕЗЮМЕ.....................................  254
УПРАЖНЕНИЯ ..................................254
10
Оглавление
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ . .	.........257
ГЛАВА 6. ФИЛОГЕНЕТИЧЕСКИЕ ДЕРЕВЬЯ............260
6.1.	СОСТОЯНИЯ ПРИЗНАКОВ И ЗАДАЧА О СОВЕРШЕННОЙ ФИЛОГЕНИИ............................ 263
6.2.	СОСТОЯНИЯ БИНАРНЫХ ПРИЗНАКОВ..........269
6.3.	ДВА ПРИЗНАКА..........................275
6.4.	ЭКОНОМИЧНОСТЬ И СОВМЕСТИМОСТЬ ФИЛОГЕНЕТИЧЕСКИХ ДЕРЕВЬЕВ.........................280
6.5.	АЛГОРИТМЫ ДЛЯ МАТРИЦ РАССТОЯНИЙ...... 284
6.5.1.	ВОССТАНОВЛЕНИЕ АДДИТИВНЫХ ДЕРЕВЬЕВ . . 284
6.5.2.	* ВОССТАНОВЛЕНИЕ УЛЬТРАМЕТРИЧЕСКИX ДЕРЕВЬЕВ ................................290
6.6.	СОГЛАСИЕ ФИЛОГЕНЕТИЧЕСКИХ ДЕРЕВЬЕВ..... 299
РЕЗЮМЕ.................................... 305
УПРАЖНЕНИЯ .............................   306
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ...............309
ГЛАВА 7. ПЕРЕСТРОЙКИ ГЕНОМА.............. ...	312
7.1.	БИОЛОГИЧЕСКИЕ ОСНОВЫ................. 312
7.2.	ОРИЕНТИРОВАННЫЕ БЛОКИ................ 315
7.2.1.	ОПРЕДЕЛЕНИЯ.....................317
7.2.2.	ТОЧКИ РАЗРЫВА...................320
7.2.3.	ДИАГРАММА ЖЕЛАЕМОГО И ДЕЙСТВИТЕЛБНОГО321
7.2.4.	ГРАФ ПЕРЕМЕЖЕНИЙ................329
7.2.5.	ПЛОХИЕ КОМПОНЕНТЫ.............. 333
7.2.6.	АЛГОРИТМ....................... 336
7.3.	НЕОРИЕНТИРОВАННЫЕ БЛОКИ.............. 340
7.3.1.	ПОЛОСЫ......................... 342
7.3.2.	АЛГОРИТМ....................... 345
РЕЗЮМЕ.....................................347
УПРАЖНЕНИЯ................................ 348
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ...............350
ГЛАВА 8. ПРЕДСКАЗАНИЕ СТРУКТУРЫ МАКРОМОЛЕКУЛ 352
8.1.	ПРЕДСКАЗАНИЕ ВТОРИЧНОЙ СТРУКТУРЫ РНК...353
8.2.	СВЕРТЫВАНИЕ БЕЛКОВЫХ МОЛЕКУЛ..........362
8.3.	ПРОТЯГИВАНИЕ БЕЛКОВ .	 365
РЕЗЮМЕ.....................................372
Оглавление	11
ГЛАВА 9. ЭПИЛОГ: ВЫЧИСЛЕНИЯ С ПОМОЩЬЮ ДНК . ... 375
9.1.	ЗАДАЧА О ГАМИЛЬТОНОВОМ ПУТИ .........375
9.2.	ЗАДАЧА ВЫПОЛНИМОСТИ................379
9.3.	ПРОБЛЕМЫ И ПЕРСПЕКТИВЫ........... ...	383
УПРАЖНЕНИЯ .............................385
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ И ДРУГИЕ ИСТОЧНИКИ ................................385
ОТВЕТЫ К ИЗБРАННЫМ УПРАЖНЕНИЯМ........... 388
ЛИТЕРАТУРА................................395
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ......................410
ПРЕДИСЛОВИЕ
Биология запросто посэавиг увлекательные задачи, над которыми нам придется поработать лет этак 500.
— Дональд Э Кнут
С того времени, когда в 1953 году была открыта структура двойной цепи ДНК, в развитии молекулярной биологии произошел гигантский скачок. По мере того как мы учились манипулировать последовательностями макромолекул, количество получаемых данных увеличивалось с огромной скоростью. Необходимость обработки информации, изливающейся из открытых по всему миру лабораторий, с тем чтобы она могла быть использована в дальнейшем научном прогрессе, породила качественно новые, междисциплинарные по своей природе задачи. Ученые-биологи являются производителями и в то же время конечными пользователями этих данных. Однако, вследствие гигантского объема и сложности информации, на пути от ее получения к использованию требуется помощь специалистов по многим другим дисциплинам - в частности, из области математических и вычислительных наук. Эта потребность привела к созданию новой научной отрасли, известной под общим названием вычислительной молекулярной биологии.
Название «вычислительная молекулярная биология» в самом широком смысле означает науку, занимающуюся разработкой и применением методов теории вычислительных систем и математики, которые могут помочь в решении задач молекулярной биологии. Несколько примеров пояснят вышесказанное.
Банки последовательностей и базы данных необходимы для хранения всей производимой информации. К настоящему времени уже создано несколько международных банков последовательностей, но ученые признали необходимость построения новых моделей баз данных, учитывающих специфические требования молекулярной биологии. Например, такие базы данных должны предоставлять ученым возможность вносить изменения в сведения о молекулярных последовательностях по мере их изучения; известные на сегодняшний день модели непригодны для этой цели. Исследование макромолекулярных последовательностей в свою очередь требу
ПРЕДИСЛОВИЕ
13
ет новых, усовершенствованных методов распознавания структуры, которые разрабатываются специалистами в области искусственного интеллекта С функцией поиска информации в базах данных связано появление новых и сложных статистических задач, для решения которых необходим постоянный поиск новых, специальных программных средств.
Однако существует особый класс задач, решение которых невозможно без построения эффективных алгоритмов. Попросту говоря, алгоритм это разбитая на последовательные шаги процедура решения определенной, хорошо структурированной задачи за ограниченный отрезок времени. Для того чтобы быть эффективным, алгоритм нс должен «чересчур долго» решать поставленную задачу, даже очень большую. Классический пример алгоритмически разрешимой задачи молекулярной биологии — задача сравнения последовательностей. Допустим, мы имеем две последовательности биополимеров и хотим знать, насколько эти последовательности подобны. Такую задачу приходится ежедневно решать тысячи раз, так что было бы весьма желательно иметь под рукой какой-нибудь особенно эффективный алгоритм.
Цель этой книги состоит в том, чтобы представить читателю типичные примеры вычислительных задач молекулярной биологии, а также некоторые эффективные алгоритмы, которые были предложены для их решения. Многие из этих задач были хорошо изучены, а некоторые из алгоритмов их решения известны уже много лет. Остальные задачи более сложны, и пока что не удалось найти никакого удовлетворительного алгоритмического подхода к их решению. В таких случаях мы сфокусировали наше внимание на объяснении некоторых математических моделей, которые могут быть использованы в качестве основы для построения необходимых алгоритмов в будущем
Читатель должен сознавать, что всякий алгоритм решения задач молекулярной биологии — любопытный инструмент. Он должен нравиться сразу двум мастерам: молекулярному биологу, который хочет, чтобы алгоритм был надежным, то есть решал задачу несмотря на все ошибки и неопре деленности, появляющиеся на практике, и программисту, который прежде всего заинтересован в гарантии того, что алгоритм решает хорошо структурированную задачу эффективно, и который обычно готов пожертвовать надежностью в пользу эффективности. Мы попытались найти некое равновесие между этими нередко противоречивыми требованиями, но в большинстве случаев мы принимали сторону программистов. В конце концов, это специальность авторов книги. Тем не менее, мы надеемся, что наше произведение будет в равной стеггени полезно как молекуггярным биологам, так и программистам.
14
ПРЕДИСЛОВИЕ
Настоящая книга является вводным курсом. Это означает, что один из наших руководящих принципов — познакомить читателя только с теми алгоритмами, которые мы сочли простыми, хотя это и не всегда было возможно. Для решения некоторых из представленных в книге задач существуют более эффективные и, как правило, более сложные алгоритмы; ссылки на некоторые из таких алгоритмов приведены в разделе библиографических примечаний в конце каждой главы.
Несмотря на нашу основную цель, некоторые из представленных нами алгоритмов или моделей нельзя счесть простыми. Как правило, это обусловлено сложностью соответствующей темы. Наиболее трудные места мы старались отмстить знаком звезды «*» в соответствующих заголовках или же дать необходимые пояснения в тексте. Кроме того, вводный характер книги означает, что некоторые темы предназначены в качестве отправной точки для непосвященных читателей. Весьма вероятно, а в некоторых случаях и факт, что этим темам можно было бы посвятить целые книги.
Основная аудитория предполагаемых адресатов учебника — студен гы специальностей из области математических и вычислительных наук. Мы нс предполагаем никакого дополнительного образования в сфере молекулярной биологии выше уровня средней школы и специально приводим главу, в которой кратко разъясняем основные понятия, встречающиеся в тексте. Читателей, не знакомых с молекулярной биологией, мы побуждаем выйти за рамки представленного в книге обзора и расширить свои познания, опираясь на куда более серьезные литературные источники, упомянутые в конце первой главы.
Хочется верить, что наша книга будет в некоторой мере полезна и для студентов-биологов. Мы предполагаем, что наш читатель знаком с дискретной математикой и теорией алгоритмов по крайней мерс на уровне колледжа. С целью помочь читателю, совершенно незнакомому с этими предметами, мы написали главу, содержашую краткий обзор всех основных понятий, употребляемых в настоящей книге.
Вычислительная молекулярная биология развивается очень быстро. Постоянно разрабатываются все более совершенные алгоритмы, а новейшие разделы этой дисциплины, очевидно, успеют возникнуть даже прежде, чем мы допишем это предисловие. В пределах упомянутых выше ограничений мы старались охватить, как мы считали, достаточно полную выборку тем и мы верим, что большая часть представленного здесь материала не потеряет свою значимость с течением времени.
Читателя, стремящегося к научным далям, мы снабдили указателями на некоторые источники информации; особенно много ссылок дано в библиографических примечаниях к последней главе (включая адреса интересных
ПРЕДИСЛОВИЕ
15
веб-страниц). Однако эти примечания не следует считать исчерпывающими. Кроме того, при всем нашем желании мы не можем гарантировать точность адресов страниц всемирной паутины. Мы их неоднократно проверяли, но, в силу динамической природы сети, к моменту выпуска книги они могли измениться.
ОБЗОР СОДЕРЖАНИЯ КНИГИ
Глава 1 знакомит читателя с фундаментальными понятиями молекулярной биологии В ней мы описываем основные структуры и функции белков и нуклеиновых кислот, механизмы молекулярной генетики, наиболее важные лабораторные методы изучения генома организмов, а также приводим краткий обзор существующих баз данных и банков последовательностей.
В главе 2 мы рассказываем о строках и графах — важнейших математических объектах, используемых в настоящей книге, а также сообщаем общие сведения об алгоритмах, проводим их анализ и поясняем основные определения из теории ПП-полноты.
Следующие главы посвящены специальным задачам молекулярной биологии. В главе 3 изложена методика сравнения последовательностей, изучена типичная задача сравнения пары последовательностей и представлен классический алгоритм метода динамического программирования. Далее рассмотрены расширения этого алгоритма, разработанные для решения специальных задач данного класса. Задаче множественного сравнения последовательностей посвящен отдельный раздел. В последующих разделах этой главы рассмотрены программы, используемые для поиска в базах данных, а также некоторые другие вопросы.
Глава 4 представляет задачу сборки фрагментов. Подобная задача возникает, когда последовательность ДНК разрезается на маленькие фрагменты, которые затем должны быть сшиты, с тем чтобы воссоздать последовательность исходной молекулы Данная методика широко применяется при крупномасштабном секвенировании (расшифровке последовательностей хромосом и даже целых геномов) — например, в проекте «Геном человека». Мы приводим примеры различных затруднений, возникающих при решении этой задачи. Далее мы представляем некоторые модели упрощенных вариантов задачи. В последующих разделах главы рассмотрены алгоритмы и эвристики, основанные на этих моделях.
В главе 5 представлена задача составления физических карт. Ее можно представить как задачу сборки фрагментов в большем, по сравнению с описанным в главе 4, масштабе. Здесь фрагменты макромолекул намного длиннее, и по этой причине методы сборки должны сильно отличаться
16
ПРЕДИСЛОВИЕ
от применяемых в предыдущем случае Цель составления физических карт заключается в том, чтобы определить местоположение специфических маркеров в исследуемой молекуле ДНК. Приведен также краткий обзор методов и моделей картирования. Далее мы описываем алгоритм для решения задачи с последовательными единицами; в составлении физических карт эта абстрактная задача играет ключевую роль. Глава заканчивается разделами, посвященными алгоритмам аппроксимации и эвристикам, разработанным для решения варианта задачи составления физических карт.
Так же, как и целые организмы, белки и нуклеиновые кислоты изменяются в процессе смены поколений, и важным инструментом в понимании путей их эволюции является филогенетическое дерево объектов. Помимо этого, филогенетические деревья помогают лучше понять функции белков В главе 6 описаны некоторые математические задачи, связанные с восстановлением филогенетических деревьев, а также простые алгоритмы, разработанные для некоторых частных случаев.
Совсем недавно в вычислительной биологии появилась новая важная область, занимающаяся исследованиями перестроек генома. Было обнаружено, что у некоторых организмов генетические различия на уровне после довательностей нуклеотидов практически незаметны, однако проявляются на уровне длинных фрагментов ДНК. Для изучения различий данного типа были разработаны интересные математические модели, представленные в главе 7.
Понимание биологических функций макромолекул является, по сути, основой большинства задач вычислительной биологии. Поскольку эти молекулы свертываются в трехмерном пространстве, а их функции зависят от их специфической конформации, открытие трехмерной структуры биомолекул и, в частности, строения РНК и белков, вызывало первостепенный интерес ученых в течение нескольких последних десятилетий.
Это событие стимулировало развитие методов предсказания сложной структуры макромолекул на основании их первичной структуры, то есть последовательности мономеров. В главе 8 мы описываем алгоритмы метода динамического программирования, разработанные для предсказания струк туры РНК, приводим краткий обзор затруднений, связанных с прсдсказани ем структуры белка, и представляем очень важный недавно разработанный метод, называемый протягиванием белка, которое заключается в выравнивании последовательности исследуемого белка с моделью уже известной белковой структуры.
Глава 9 завершает книгу, представляя описание новой захватывающей области — вычислений с помощью ДНК. В этой главе мы описываем основной эксперимент, показавший возможность использования молекул ДНК
ПРЕДИСЛОВИЕ
17
для решения одной трудной алгоритмической задачи, а также теоретические основы алгоритма решения другой трудной задачи.
Оговорим некоторые обозначения, принятые в этой книге. Как уже было упомянуто, разделы, заголовки которых отмечены знаком звезды «*», содержат материал, который авторы считают наиболее трудным. Условимся, что полужирным шрифтом мы будем выделять важные термины, относящиеся ко всему материалу книги. Все остальные термины будут выделены курсивом. Многие из разработанных нами алгоритмов сначала описаны в виде простых предложений, а затем в форме псевдокодов (язык псевдокодов описан в разделе 2.3). В некоторых случаях псевдокод обеспечивает уровень детализации, необходимый читателям, заинтересованным в практической реализации алгоритмов.
Изложение материала наиболее длинных глав сопровождается кратким резюме.
УПРАЖНЕНИЯ
В конце каждой главы даны упражнения. Упражнения, отмеченные одной звездой «*» трудны, но выполнимы менее чем за день. Для этого могут потребоваться методы программирования, не представленные в данной книге. Задачи, отмеченные двумя звездами «**», в свое время были исследованы и решены, а их решения можно найти в специальной литературе (соответствующие ссылки находятся в библиографических примечаниях в конце глав). Наконец, упражнения, отмеченные знаком алмаза «о», содержат сложные задачи, которые, насколько известно авторам, так и нс были решены.
В конце книги мы приводим ответы и подсказки к избранным упражнениям.
ОШИБКИ
Несмотря на кропотливый труд авторов, в этой книге наверняка присутствуют некоторые ошибки. Мы будем рады получать ваши замечания и предложения по усовершенствованию нашего учебника. Сообщения об ошибках или любые другие комментарии отправляйте по адресу: bio@dcc.unicamp.br или
J. Meidanis / J. С. Sctubal
Institute de ComputaQao, С. P. 6176
UNICAMP
18
ПРЕДИСЛОВИЕ
Campinas, SP 13083-970
Brazil.
(С авторами можно непосредственно связаться по адресам электронной почты meidanis@dcc.unicamp.br и setubal@dcc.unicamp.br.) Заранее благодарим всех читателей, желающих оказать нам помощь в улучшении этой книги. По мере обнаружения ошибок мы будем сообщать о них на следующей веб-странице:
http: //www. dec. unicamp. br/~bio/ICMB. html
БЛАГОДАРНОСТИ
Эта книга — преемник другой, намного более краткой книги по тому же предмету, написанной авторами в Португалии и изданной в 1994 году в Бразилии. Изданию той первой книги во многом способствовала проводимая каждые два года Бразильская конференция по информатике, названная «Эскола ди компутасан». Мы полагаем, что без участия в конференции подобного уровня мы не писали бы сейчас это предисловие, и благодарны за такую возможность.
Настоящая книга начала свою жизнь во многом благодаря Майку Шу-гермену, Бонни Бергер и Тому Литону. Они оказали нам большую поддержку, а также дали некоторые полезные советы. Особенно ценной помощью оказались копии конспектов лекций Бонни, любезно предоставленные нам в начале работы над книгой.
К счастью, нам удалось получить финансовые гранты от FAPESP и CNPq (бразильские научно-исследовательские учреждения); их помощь была многоплановой. Гранты от FAPESP были предоставлены в рамках проекта «Лаборатории алгоритмов и комбинаторики» и обеспечили нам покупку компьютерного оборудования. Гранты от CNPq были предоставлены в форме индивидуальных стипендий на проведение научно-исследовательских работ, а также, в рамках программы PROTEM и проектов PROCOMB и ТСРАС, были направлены на финансирование научных командировок.
Мы благодарим наших студентов, которые помогали нам при чюнии корректуры рукописи. Особую благодарность выражаем Налву Франку ди Алмейде младшему и Марии Эмилии Машаду Телльз Уолтер. Налву, кроме того, сделал много рисунков и дал несколько полезных комментариев.
Беседы с нашим коллегой Жоржи Стольфи были весьма полезны, и, кроме того, он оказал нам значительную помощь в вопросах, связанных
ПРЕДИСЛОВИЕ
19
с набором текста. Фернанду Рейнаш и Жилсон Паулу Манфиу помогли нам при написании главы 1. Назначение и задачи книги, а также прочие вопросы общего плана мы обсуждали с Джимом Орлином. Мартин Фарах и Сампат Каннан, а с ними еще несколько рецензентов, внесли много полезных предложений и замечаний, некоторые из которых были включены в текст учебника. Наши коллеги в «Институте вычислений в UNICAMP» оказывали нам искреннюю поддержку и создавали рабочую обстановку, способствовавшую продуктивной творческой деятельности.
Следует поблагодарить многих коллег, любезно присылавших нам научные статьи: Фарида Ализаде, Альберто Капрару, Мартина Фараха, Дэвида Гринберга, Дэна Гасфильда, Сридара Ханненхалли, Вэнь-Лянь Сю, Сяоцю Хуана, Тао Цзяна, Джона Кецециоглу, Лукаса Кнехта, Рика Лэтропа, Джина Майерса, Алехандро Шеффера, Рона Шамира, Мартина Вингрона (который, ко всему прочему, прислал конспекты своих лекций), Тодда Уэрхема и Тенди Уорноу. При работе над некоторыми разделами книги мы широко использовали материал некоторых из этих статей.
Большое спасибо мы говорим Эрику Бриссону, Эйлин Салливан, Брюсу Дейлу, Карлусу Эдуарду Феррейре и Томасу Русу, которые всячески помогали нам в работе.
Ж. К. С. хочет поблагодарить своих близких: жену Сильвию (Теку) и детей Клаудию, Томаса и Каю за оказанную ими поддержку, без которой эта книга, возможно, не была бы написана.
При наборе текста авторы использовали систему Лесли Лэмпорта IAlgX2e, работающую на ТрХ-системе Дона Кнута. Это поистине изумительные программы!
Цитату Дона Кнута, приведенную в качестве эпиграфа к предисловию, мы взяли из интервью, данного им «Компьютер литераси букшопс, инк.» 7 декабря 1993 года.
Жуан Kap.iyc Ссгубал
Жуан Мсйдаиис
Глава 1
ОСНОВНЫЕ ПОНЯТИЯ МОЛЕКУЛЯРНОЙ БИОЛОГИИ
В згой главе мы представляем основные понятия молекулярной биологии. Ваша цель здесь состоит в том, чтобы дать нашим читателям надежные ориентиры и они могли бы свободно лавировать не только в биологическом контексте этой книги, но и в море остальной литературы по вычислительной молекулярной биологии. Читатели, ранее специализировавшиеся в точных науках, должны с самого начала быть готовы к тому, что в молекулярной биологии ничто не будет действительно точным на 100 %. К каждому правилу всегда найдется свое исключение. Мы попытались указать некоторые из наиболее примечательных исключений к общим правилам, в остальных же случаях опускали такое упоминание, с тем чтобы не превращать эту главу в самостоятельный учебник по молекулярной биологии.
1.1.	ЖИЗНЬ
В природе мы встречаем как живые, так и неживые объекты. Живые природные объекты способны передвигаться, воспроизводить себе подобных, расти, питаться, и т. д. — словом, они принимают активное участие в процессах окружающей среды, в отличие от неживых форм. Однако результаты исследований за последние столетия показывают, что оба вида материи состоят из одних и тех же атомов и подчиняются одним и тем же физическим и химическим законам. Но в чем же тогда заключается различие между ними?
В течение длительного периода человеческой истории люди думали, что некоторый вид «сверхматерии» даровал живым существам их активные характеристики, — что они «одушевлялись» этой особой субстанцией. Но до сих пор ничего подобного так и не удалось обнаружить. Напротив, наши современные представления свидетельствуют о том, что живые сушества организованы именно так, как они есть, а не иначе, в силу множества происходящих в них сложнейших химических реакций. Эти реакции никогда не
1.2. БЕЛКИ
21
прекращаются. Часто продукты одной реакции сразу же включаются в следующую, и такой принцип поддерживает непрерывное функционирование системы (организма) в целом. Кроме того, живой организм постоянно обменивается с окружающей средой материей и энергией. Напротив, что-либо, находящееся в равновесии с окружающей средой, можно, как правило, считать мертвым. (Некоторые известные исключения — вегетативные формы жизни наподобие семян и вирусов, которые могут быть абсолютно неактивными в течение длительных периодов времени, и несмотря на это нельзя сказать, что они мертвы.)
Современная наука показала, что жизнь зародилась приблизительно 3,5 миллиарда лет назад, вскоре (в геологических сроках) после того, как была сформирована и сама планета Земля Первые формы жизни были весьма примитивны, но непрерывно действующий процесс, названный эволюцией, который в течение миллиардов лет заставлял их развиваться и изменяться, привел к тому, что сегодня мы можем встретить как очень сложные организмы, так и совсем простые.
И сложные и простые организмы имеют сходную молекулярную химию, или биохимию. Главные актеры в химии жизни — молекулы белков и нуклеиновых кислот. Описывая их функции в общих чертах, можно сказать, что белки определяют специфическую организацию и физиологические функции живых организмов. (Выдающийся ученый Расселл Дулиттл однажды сказал: «Мы — это наши белки».) Нуклеиновые кислоты, с своей стороны, кодируют информацию, необходимую для производства белков, и отвечают за передачу этого «рецепта» последующим поколениям.
Молекулярная биология, в основном, занимается исследованием структуры и функций белков и нуклеиновых кислот. Поэтому эти молекулы являются фундаментальными объектами настоящей книги, и мы продолжаем наш рассказ вводным и кратким описанием современного представления о них
1.2.	БЕЛКИ
Большая часть веществ, из которых состоят наши тела, — белки самых разнообразных форм и функций Структурные белки являются строительным материалом тканей, тогда как белки другого класса, называемые ферментами, - действую! как катализаторы химических реакций. Катализаторами называют вещества, ускоряющие химические реакции. Если бы многие биохимические реакции протекали самопроизвольно, то для их завершения потребовалось бы слишком много времени, или они не заверши
22
Глава 1
лись бы вовсе, а потому были бы совершенно бесполезны для отправления жизненных функций. Фермент может увеличить скорость протекания реакции на несколько порядков, таким образом делая жизнь возможной. Ферменты чрезвычайно специфичны: как правило, отдельный фермент может воздействовать на биохимическую реакцию только определенного типа. Если представить себе количество реакций, протекание которых необходимо для поддержания жизни, то становится очевидным, что организм нуждается в большом числе разнообразных ферментов. Другими примерами функций белка являются перенос кислорода и антителогенез. Но что же на самом деле представляют собой белки? Как они устроены? И как они выполняют свои функции? В данном разделе мы попытаемся кратко ответить на все эти вопросы.
Макромолекула белка устроена в виде цепи более простых молекул, называемых аминокислотами. Примеры структурных формул аминокислот приведены на рие. 1.1. Каждая аминокислота содержит один центральный углеродный атом, который получил название «альфа-углерод» и был обозначен CQ. С атомом CQ соединены водородный атом, аминогруппа (NH2), карбоксильная группа (СООН) и боковая цепь. Именно боковая цепь отличает одну аминокислоту от другой. Боковые цепи могут быть совершенно простыми и состоять лишь из одного водородного атома (аминокислота глицин) или сложными и содержать в себе, например, два углеродных кольца (триптофан). Всего в природе обнаружено 20 различных аминокислот, названия и обозначения которых приведены в таблице 1.1. Эти 20 аминокислот являются наиболее общими компонентами всех белков; иногда в их состав могут входить лишь несколько нестандартных аминокислот.
НО	СН3
СН3	СН
H2N — Са — СООН	H2N — са — СООН
Н	Н
Рис. 1.1. Аминокслоты: аланин (слева) и треонин (справа)
В белковых макромолекулах аминокислоты соединены посредством пептидных связей, в результате чего они образуют полипептидные цепи.
1.2. БЕЛКИ
23
Таблица 1.1. Двадцать «популярных» аминокислот1
Однобуквенный		Трехбуквенный код		Название
	код			
1	А	Ala	Ала	аланин
2	С	Cys	Цис	цистеин
3	D	Asp	Acn	аспарагиновая кислота
4	Е	Glu	Глу	глутаминовая кислота
5	F	Phe	Фен	фенилаланин
6	G	Gly	Гли	глицин
7	Н	His	Гис	гистидин
8	I	He	Иле	изолейцин
9	К	Lys	Лиз	лизин
10	L	Leu	Лей	лейцин
И	М	Met	Мет	метионин
12	N	Asn	Асн	аспарагин
13	Р	Pro	Про	пролин
14	Q	Gin	Глн	глутамин
15	R	Arg	Apr	аргинин
16	S	Ser	Сер	серин
17	Т	Thr	Тре	треонин
18	V	Vai	Вал	валин
19	W	Trp	Трп	триптофан
20	Y	Tyr	Тир	тирозин
В пептидной связи углеродный атом, принадлежащий карбоксильной группе аминокислоты А,, соединен с атомом азота, входящим в аминогруппу аминокислоты А,+з. При образовании такой связи высвобождается молекула воды, поскольку кислород и водород карбоксигруппы присоединяются к одному водородному атому аминогруппы. Следовательно, в качестве звеньев цепи полипептида в действительности выступают остатки исходных аминокислот. Таким образом, о некотором белке мы можем сказать, что он состоит, например, из 100 остатков, а нс из 100 аминокислот. Обычные белки содержат около 300 остатков, но известны также белки, содержащие всего 100 или целых 5 000 аминокислотных остатков.
’Для обозначения аминокислот используют одно- и трехбуквенный код. Трехбуквенные обозначения более удобны для чтения, а однобуквенные для компьютерного анализа* 2. Прим. ред.
2 Для отличия однобуквенных обозначений нуклеотидов и аминокислот первые принято (однако не все авторы соблюдают это условие сравните обозначения нуклеотидов в тексте кни! и
24
Глава 1
Пептидная связь обусловливает наличие в каждой белковой молекуле основной цепи, образованной повторными структурными звеньями вида N С„(СО). Каждому атому Со соответствует боковая цепь (см рис. 1.2) Поскольку на одном конце основной цепи находится ами ногруппа, а на другом — карбоксигруппа, мы можем различать оба конца полипептидной цепи и придать ей условное направление. Принято считать, что полипептиды начинаются аминогруппой (N-конец) и оканчиваются карбоксигруппой (С-конец).
Рис. 1.2. Полипсптидиая цепь. Боковые цени R, определяют входящие в состав белка аминокислоты. Атомы внутри каждой четырехугольной рамки лежат в олной плоскости, которая может вращаться на у1лы ф и ф
Однако большая часть белков представляют собой не простые линейные последовательности аминокислотных остатков (такая последовательность называется первичной структурой белка), а свертываются в трех измерениях, образуя вторичную, третичную и четвертичную структу ры. Вторичная структура белка формируется посредством взаимодействия только между атомами основной цепи и проявляется в виде «локальных» структур например спиралей. Третичные структуры — результат вторичной укладки белковой структуры на более высоком уровне Следующий уровень укладки, то есть четвертичную структуру, образует группа различных белков, собранных в одну сложную макромолекулу. Эти структуры схематично изображены на рис. 1.3.
Белки могут свертываться в трех измерениях, поскольку плоскость связи между атомом Со и атомом азота может вращаться, так же, как и плоскость между атомом Са и другим углеродным атомом. Эги углы вращения
и в примерах записей баз .чанных) набирают строчными буквами, а вторые — прописными. Таким образом, запись «atg» обозначает последовательность нуклеотидов аденин тимин- гуанин, а запись «ATG» - последовательность остатков аминокислот Ала Тре-Гли. Прим перев.
1.2. БЕЛКИ
25
Рис. 1 3 Первичная, вторичная, третичная и четвертичная структуры белка [28]
обозначаются, соответственно, греческими буквами ф и Ф (см. рис. 1.2). Боковые цепи также способны вращаться, но это уже вторичное вращение по отношению к вращению основной цепи. Таким образом, если мы определим значения всех пар углов ф-ф в молекуле белка, то мы узнаем точную конформацию основной цепи.
Определение рабочей конформации, или трехмерной структуры белка является одной из главных областей исследования в молекулярной биологии по трем причинам. Во-первых, трехмерная структура белка непосредственно определяет его функции. Во вторых, клеточный механизм, который составляет белковую молекулу из набора аминокислот 20 различных видов, делает конечную трехмерную структуру во многих случаях очень сложной и асимметричной. В-третьих, не известно ни одного простого и точного метода определения трехмерной структуры белка. Эти причины побудили нас к написанию главы 8, где мы рассматриваем некоторые методы предсказания сложной структуры молекул по последовательностям входящих в их состав мономеров.
Трехмерная структура белка определяет его функцию следующим образом. Свернутый белок имеет неправильную форму. Это означает, что в его молекуле есть различные бороздки и выступы, и эти особенности формы позволяют белку входить в тесный контакт, или связываться, с некоторыми другими специфическими молекулами. Виды молекул, с которыми может связываться белок, зависят от его формы. Например, форма белка может быть такой, что он способен связываться с несколькими идентичными копиями самого себя, выстраивая, скажем, нить волоса Или же его форма может быть такой, что молекулы вида 4 и В связываются с ним и начинают обмениваться атомами между собой. Другими словами, между веществами А и В происходит реакция, а белок выступает в роли катализатора.
26
Глава 1
Но каким образом организм получает необходимые ему белки? Белки производятся в клеточных структурах, называемых рибосомами. В рибосоме аминокислоты, входящие в состав белка, собираются одна за другой в полипептидную цепь благодаря информации, содержащейся в очень важной молекуле информационной рибонуклеиновой кислоты. Прежде чем объяснить механизм этих процессов, мы должны рассказать о нуклеиновых кислотах.
1.3.	НУКЛЕИНОВЫЕ КИСЛОТЫ
Живые организмы содержат два вида нуклеиновых кислот: рибонуклеиновую кислоту (РНК) и дезоксирибонуклеиновую кислоту (ДНК). Сначала опишем ДНК.
1.3.1.	ДНК
Подобно белкам, молекулы ДНК построены в виде цепи более простых молекул Фактически это двойная цепь, но сначала рассмотрим структуру простой одинарной цепи, называемой нитью. Несущая структура нити представлена основной цепью, состоящей из одинаковых повторных звеньев. Мономерное звено образовано молекулой сахара, а именно 2'-дезоксирибозой, с которой соединен фосфатный остаток. В молекулу сахара входит пять углеродных атомов, обозначаемых, соответственно, цифрами с 1' по 5' (см. рис. 1.4).
Связи, образующие основную цепь, находятся между З'-углеродным атомом одного звена и остатком фосфата, а также между этим остатком
Н
НО-5'-Н
Н
Н0-5'-Н
I I
НО ОН
рибоза	2'дезоксирибоза
Рис. 1.4 Сахара, входящие в состав нуклеиновых кислот Цифры с 1' по 5' обозна чают углеротиые азомы. Единственная разница между двумя сахарами заключается в наличии или отсутствии атома кислорода при углеродном атоме 2'. Рибоза входит в состав РНК, а 2'-дсзоксирибоза — в состав ДНК
1.3. НУКЛЕИНОВЫЕ КИСЛОТЫ
27
Рис. 1.5. Азотистые основания, входящие в состав ДНК. Точечными линиями отмечены связи, которые могут образовывать аденин с тимином или зуанип с ни го (ином
и 5'-углеродным атомом следующего звена. По этой причине молекулы ДНК имеют условную ориентацию; также принято считать б'-конец началом нити, а З'-консц — се окончанием. Когда мы видим изображение последовательности нуклеотидов одинарной цепи ДНК на технической бумаге, в книге или файле базы данных последовательностей, она всегда записана в этом каноническом направлении 5' —> 3', если не оговорено противное.
К l'-углсродному атому каждого звена основной цепи присоединены другие молекулы, называемые основаниями3. В природных биополимерах встречаются азотистые основания четырех видов: аденин (А), гуанин (G), цитозин (С) и тимин (Т). На рис. 1.5 представлены структурные формулы молекул этих оснований, а на рис. 1.6 изображено схематичное представление одной нити ДНК, которую мы только что рассмотрели. Основания А и G входят в группу веществ, названных пуринами, тогда как основания С и Т относятся к пиримидинам.
Когда мы рассматриваем фрагмент молекулы ДНК, состоящий из моносахарида, фосфата и азотистого основания, в качестве мономерного звена, мы называем его нуклеотидом. Таким образом, хотя основания и нуклеотиды — не одно и то же, мы можем говорить, что молекула ДНК содержит,
’Здесь и далее азотистые основания. — Прим, перев.
28
Глава 1
Рис. 1.6. Схематическое представление одной нити ДНК: Ф — фосфат; М — моносахарид; G. А, С, Т соответственно, гуанин, аденин, цитозин и тимин
например, 200 оснований или 200 нуклеотидов. Молекулу ДНК, включающую в себя несколько (десятки) нуклеотидов, называют олигонуклеотидом. Природные молекулы ДНК очень длинные - намного длиннее молекул-полипептидов. В клетках человека находятся молекулы ДНК, состоящие из сотен миллионов нуклеотидов.
Как было упомянуто выше, молекулы ДНК образованы двумя нитями. Две нити связаны вместе и закручены в виде спиральной структуры — знаменитой двойной спирали, открытой Джеймсом Уотсоном и Фрэнсисом Криком в 1953 году. Но каким образом две нити удерживаются вместе? Такая связь возможна благодаря тому, что каждое азотистое основание, расположенное в одной нити, образует пару (связывается) с некоторым основанием другой нити. Основание А всегда взаимодействует с основанием Т, а основание С — только с G, как показано на рис. 1.5 и 1.7. Говорят, что основания А и Т являются комплементами друг друга и образуют пару комплементарных оснований. В свою очередь, С и G — другая пара комплементарных оснований. Данные пары известны как пары оснований Уотсона-Крика. Пара оснований (сокращенно — по) является единицей длины, наиболее удобной при обозначении длины молекул ДНК. Так что мы говорим, что длина фрагмента ДНК равна, например, 100000 по или 100 кпо4.
В этой книге мы будем, в основном, рассматривать последовательность ДНК как строку знаков, где каждый знак обозначает соответствующее основание. На рис. 1.8 показано такое «строчное представление» двойной цепи ДНК, при котором одна строка помещается над другой. Обратите внимание на парность оснований. Даже при том, что обе нити связаны между собой,
4Очевидио, что в каждой молекуле ДНК число пар азотистых оснований равно числу пар нуклеотидов. Английская единица Ьр (по) подчеркивает; что пары образуют именно комплементарные основания; напротив, принятая в российской научной литературе единица п. н. показывает, что общая длина полинуклеотида складывается из сумм его мономерных звеньев нуклеотидов.
Таким образом, Ьр = п. и.; kbp = т. п. н.: mbp = м. п. н. - Прим, перев.
1.3. НУКЛЕИНОВЫЕ КИСЛОТЫ
29
каждая сохраняет свою собственную ориентацию и эти ориентации взаимно противоположны. Этот факт проиллюстрирован на рис. 1.8., где хорошо видно, что З'-конец одной нити соответствует б'-концу другой нити. Это свойство получило название антипаралчельности нитей. Фундаментальное следствие подобной структуры заключается в том, что, определив последовательность одной нити, возможно восстановить последовательность другой. Действие, которое позволяет нам сделать это, называют обратной комплементацией.
Например, задана последовательность s  AGACGT в каноническом направлении, и мы получаем ее обратный комплемент следующим образом. Сначала мы записываем последовательность s в обратном порядке, получая обратную последовательность s' = TGCAGA, а затем заменяем каждое основание его комплементом и получаем обратную комплементарную последовательность s = ACGTCT. (Для обозначения обратного комплемента последовательности s мы используем знак черточки над s.) Именно эти действия выполняет клеточный механизм, обеспечивающий репликацию ДНК в клетке, что позволяет организму, начавшему жизнь с одной-единственной клетки, последовательно превратиться в систему, насчитывающую миллиар-
5'	— TACTGAA — 3'
3'	— ATGACTT — 5'
Рис. 1.8. Строчное представление двойной цепи ДНК
30
Глава 1
ды клеток, где каждая клетка содержит копии молекул ДНК первоначальной клетки.
В организмах, построенных из безъядерных клеток ДНК свободно плавает в цитоплазме. У высших организмов ДНК находится в клеточном ядре, а также в особых органеллах клетки — митохондриях (животные и растения) и хпоропластах (только растения).
1.3.2.	РНК
Молекулы РНК во многом подобны молекулам ДНК, но имеют некоторые отличия состава и структуры:
•	В РНК моносахарид представлен рибозой вместо 2'-дезоксирибозы (см. рис 1.4).
•	В РНК вместо тимина (Т) присутствует урацил (U). Подобно тимину, урацил связывается с аденином.
•	РНК не образует двойную спираль. Иногда мы наблюдаем гибридные ДНК-РНК спирали; кроме того, благодаря комплсментарности оснований отдельные части молекулы РНК могут связываться с другими частями той же молекулы. Трехмерная структура РНК представлена гораздо большим числом форм, чем таковая у ДНК.
Еще одно различие между ДНК и РНК заключается в том, что по существу ДНК выполняет лишь одну функцию (кодирование информации), тогда как, как мы вскоре увидим, в клетке имеются различные виды РНК, выполняющие разнообразные функции.
1.4.	МЕХАНИЗМЫ МОЛЕКУЛЯРНОЙ ГЕНЕТИКИ
Значение молекул ДНК состоит в том, что в них закодирована информация, необходимая для построения всех молекул белков или РНК, функционирующих в организме. По этой причине ДНК иногда называют «матрицей жизни»5. В этом разделе мы опишем механизмы кодирования информации и построения белка с помощью ДНК (процесс синтеза белка). Мы также увидим, каким образом заложенная в ДНК генетическая информация передается от родителей к потомству.
1.4.1.	ГЕНЫ И ГЕНЕТИЧЕСКИЙ КОД
В каждой клетке организма находится несколько очень длинных молекул ДНК. Эти молекулы называют хромосомами. Позже мы сможем по-
5 Другое название — «молекула жизни». — Прим, перев.
1.4. МЕХАНИЗМЫ МОЛЕКУЛЯРНОЙ ГЕНЕТИКИ
31
Таблица 1.2. Универсальный генетический код6
Первая позиция	Вторая позиция				Третья ПОЗИЦИЯ
	G	A	С	U	
	Gly	Glu	Ala	Vai	G
G	Gly	Glu	Ala	Vai	A
	Gly	Asp	Ala	Vai	C
	Gly	Asp	Ala	Vai	U
	Arg	Lys	Thr	Met	G
А	Arg	Lys	Thr	He	A
	Ser	Asn	Thr	He	C
	Ser	Asn	Thr	He	U
	Arg	Gin	Pro	Leu	G
С	Arg	Gin	Pro	Leu	A
	Arg	His	Pro	Leu	C
	Arg	His	Pro	Leu	U
	Trp	СТОП	Ser	Leu	G
и	СТОП	стоп	Ser	Leu	A
	Cys	Туг	Ser	Phe	C
	Cys	Туг	Ser	Phe	U
дробнее рассказать о хромосомах, а в данный момент рассмотрим принципы кодирования генетической информации на примере одной очень длинной молекулы ДНК, которую мы просто будем называть «ДНК». Первая важная вещь, о которой следует упомянуть, — то, что цепь ДНК состоит из смежных участков, либо кодирующих, либо не кодирующих информацию, используемую в синтезе белков. Вторая важная вещь — то, что каждому конкретному виду белка в организме обычно соответствует один и только один участок ДНК. Этот участок получил название ген. Поскольку некоторые гены кодируют РНК, более корректно определять ген как непрерывный участок ДНК, содержащий информацию, необходимую для построения белка или молекулы РНК. Длины генов варьируют; гены человека могут иметь длину приблизительно 10000 п. н. Определенные клеточные механизмы способны точно распознавать в последовательности ДНК точки начала и конца каждого гена6 7.
6Редкая аминокислота селеноцистеин обозначается буквой и и трехбуквенным кодом Sec (Сец). Стоп-кодон обозначается буквой X. При.», перев.
7В современной молекулярной биологии понятие «ген» стало гораздо более расплывчатым и трудно определимым. Прим. ред.
32
Глава 1
Белок, как было показано выше, представляет собой цепь аминокислотных остатков. Поэтому все, что необходимо для того, чтобы «определить» белок, — это определить каждую аминокислоту, входящую в его состав. Именно эту операцию и выполняет молекула ДНК, используя триплеты нуклеотидов для кодирования всех аминокислот. Нуклеотидный триплет называют кодоном. Таблица соответствия всех возможных триплетов аминокислотам и есть так называемый генетический код (см. табл. 1.2). В таблице, как это видно, триплеты нуклеотидов приведены с учетом состава последовательности РНК, а не ДНК. Это связано с тем, что именно молекулы РНК обеспечивают связь между ДНК и непосредственным синтезом белка в процессе, который мы вскоре покажем в деталях. А пока что подробнее рассмотрим генетический код.
Интересно отметить, что существует 64 возможных триплета нуклеотидов, но всего только 20 аминокислот, которые нужно кодировать. Оказывается, одной и той же аминокислоте может соответствовать несколько триплетов. Например, кодоны AAG и ААА кодируют лизин. Напротив, три кодона в таблице не кодируют никакую аминокислоту, а служат сигналом окончания гена. Эти специальные, терминирующие кодоны обозначены в таблице 1.2 словом «стоп». Наконец, следует упомянуть, что генетический код, приведенный в таблице, используется подавляющим большинством живых организмов, однако некоторые организмы используют несколько видоизмененный код.
1.4.2.	ТРАНСКРИПЦИЯ, ТРАНСЛЯЦИЯ И СИНТЕЗ БЕЛКА
Теперь немного подробнее опишем процессы, посредством которых зашифрованная в молекуле ДНК генетическая информация реализуется в белках. Клеточный механизм распознает начало отдельного гена или целой группы генов благодаря промотору. Промотор — это участок ДНК, расположенный перед каждым геном и указывающий клеточному механизму, что непосредственно за ним начинается ген. Кодон AUG (кодирующий метионин) также сигнализирует начало гена8. После распознавания начала гена или группы генов, на молекуле РНК синтезируется копия этого гена. В результате образуется информационная РНК, или, сокращенно, иРНК, которая имеет точно такую же последовательность нуклеотидов, как одна из нитей участка ДНК, содержащего копируемый ген. но с заменой основания Т на U. Данный процесс называют транскрипцией. После этого синтезированная
83десь существенная неточность. Промотор указывает место, с которого надо начинать синтез РНК, тогда как кодон AUG указывает на начало кодирующей области РНК, причем таким указателем служит далеко не каждый триплет AUG. — Прим. ред.
1.4. МЕХАНИЗМЫ МОЛЕКУЛЯРНОЙ ГЕНЕТИКИ
33
цепь иРНК участвует в процессе синтеза белка, происходящего в клеточных структурах, называемых рибосомами9.
Поскольку РНК является одинарной, а ДНК — двойной цепью, последовательность произведенной иРНК идентична одной нити гена и комплементарна другой его нити (с учетом замены основания Т на U). Нить, идентичную синтезированной иРНК, называют смысловой или кодирующей нитью, а другую — антисмысловой, или антикодирующей, или же, иначе, матричной нитью. Фактически транскрибируется именно матричная нить, так как цепь иРНК состоит из рибонуклеотидов, комплементарных этой нити. В процессе транскрипции наращивание цепи иРНК всегда ведется от б'-конца к З'-концу, тогда как матричная нить считывается в направлении 3' —> 5'.
Также необходимо помнить, что матричная нить для разных генов не всегда одна и та же: например, матричная нить для некоторого гена А может быть первой из двух нитей, а матричная нить для гена В может быть второй нитью. Клеточный механизм распознает матричную нить для каждого конкретного гена благодаря промотору. Даже при том, что в другой нити находится обратный комплемент промотора гена, этот обратный комплемент не является его промотором и, следовательно, не будет распознан в качестве такового.
Одно важное следствие из этого факта — то, что гены в хромосомах имеют ориентацию друг относительно друга. Если какие-либо два гена находятся в одной и той же нити, то они имеют одинаковую ориентацию; в противном случае их ориентация будет встречной. Фундаментальное значение этого факта мы раскроем в главе 7. Наконец, обращаем ваше внимание, что для указания расположения какого-либо участка в молекуле ДНК относительно ориентации кодирующей нити, используют термины выше и ниже', например, промоторы всегда расположены выше своих генов.
Описанный вариант транскрипции относится к организмам, принадлежащим к надцарству доядерных, или прокариотов. ДНК данных организмов свободно плавает в цитоплазме клетки, поскольку у них отсутствует ядерная мембрана. Известные примеры доядерных организмов — бактерии и синие морские водоросли.
Организмы, относящиеся к ядерным, или эукариотам, имеют оформленное ядро, отделенное от остальной среды клетки ядерной мембраной, так что их ДНК постоянно находится в ядре. В этих организмах процессы генетической транскрипции намного сложнее. Многие гены ядерных организмов составлены из чередующихся частей, названных интронами
’Этот процесс называется трансляцией. — Прим. ред.
34
Глава 1
и экзонами. По завершении этапа транскрипции интроны вырезаются из последовательности иРНК. Это означает, что интроны - участки гена, не используемые в сингезе белка. Распределение интронов и экзонов покажем на примере гена (1082 п. н.) белка натрийуретрического фактора бычьего предсердия: экзоны расположены в позициях 1120, 219-545 и 1071-1082; интроны занимают позиции 121-218 и 546-1070. Таким образом, участки, кодирующие иРНК, содержат только 459 нуклеотидов, и соответствующий белок состоит из 153 остатков. После того как интроны вырезаны, укороченная иРНК, включающая в себя только копии экзонов и регуляторные участки в начале и конце, покидает ядро, поскольку рибосомы находятся в окружающей его цитоплазме10.
Феномен интрона-экзона обусловливает различные названия для обозначения исходной последовательности генов, находящейся в хромосоме, и укороченной последовательности, состоящей только из экзонов. Первую называют геномной ДНК, последнюю комплементарной ДНК или кДНК11. Ученые могут получить кДНК, не зная ее геномную копию. Сначала они захватывают иРНК, вышедшую из ядра и продвигающуюся к рибосомам. Затем, в процессе так называемой обратной транскрипции. они производят молекулы ДНК, используя иРНК в качестве матрицы. Поскольку иРНК содержит только экзоны, проводят также дополнительную сборку синтезированной ДНК. Таким образом, возможно получать молекулы кДНК, не используя генетический материал хромосом.
Как транскрипция, так и обратная транскрипция — сложные процессы, нуждающиеся в участии ферментов. Транскриптаза и обратная транскриптаза, или ревертаза, ферменты, катализирующие эти процессы в клетке. Известен также феномен альтернативного сращивания. Он наблюдается, когда, вследствие выборочного сочетания интронов и экзонов, одна и та же геномная ДНК может произвести две или более различных молекул зрелой иРНК. С них в свою очередь синтезируются различные белки.
Теперь возвратимся к синтезу белка и иРНК. В этом процессе очень важные роли играют молекулы РНК двух других видов. Как уже было упомянуто, процесс синтеза белка протекает в клеточных структурах, называс мых рибосомами. Рибосомы построены из белков, прикрепленных к каркасу из специфического вида РНК, получившей название рибосомной РНК, или рРНК12. Рибосома функционирует подобно сборочной линии, на «вход»
10Этот процесс называется сращиванием, или сплайсингом. Прим. ред.
11 Эта молекула называется зрелой иРНК, в отличие от пред-иРНК (иРНК-пре тшест-венннка), которая была транскрибирована, но не сплайсирована. При», ред.
12Скорее, рибосомы построены из РНК и сравнительно небольшого количества белка. — Прим. ред.
1.4. МЕХАНИЗМЫ МОЛЕКУЛЯРНОЙ ГЕНЕТИКИ
35
которой подается молекула иРНК, а также молекулы РНК другого вида (транспортной РНК, или тРНК), а с «выхода» снимается готовая полипеп-тидная цепь.
Репликация
Обратная транскрипция
Рис. 1.9. Передача генетической информации в клетке: так называемая «Центральная догма молекулярной биологии»
Именно молекулы транспортной РНК фактически включают генетический код в процесс, называемый трансляцией. Они обеспечивают связь между кодоном и кодируемой им определенной аминокислотой. На одной стороне каждой молекулы тРНК находится структура, имеющая высокую степень сродства с определенным кодоном, а на другой стороне - структура, которая легко связывается с соответствующей аминокислотой13. Когда информационная РНК продвигается через внутреннюю часть рибосомы, тРНК распознает текущий кодон — кодон в иРНК, находящийся в данное время внутри рибосомы,  комплементарно связывается с ним. принося с собой соответствующую аминокислоту («вблизи» активной рибосомы всегда имеется богатый запас аминокислот). В этот момент трехмерное положение всех этих молекул таково, что, как только тРНК связывается со своим кодоном, прикрепленная к ней аминокислота оказывается в непосредственной близости с предыдущей аминокислотой в формируемой полипептидной цепи. Тогда специальный фермент катализирует присоединение новой аминокислоты к белковой цепи и освобождает се от тРНК14. В ходе данного процесса полипептидная цепь последовательно наращивается остаток за остатком. Когда появляется стоп-кодон, ему не соответствует никакая тРНК н синтез прекращается. Информационная РНК освобождается и расщепляется клеточными механизмами до рибонуклеотидов, которые в свое время будут повторно использованы для синтеза новой молекулы РНК.
1 *Э1 о делают специальные белки аминоацил-тРИК-синтетаэы. Именно они устанавливают еоо1вететвие антикодон«-*аминокислота. Прим. ред.
’’Удивительно, но роль этого фермента исполняет рРНК, а не белок! Прим. ред.
36
ГЛАВА 1
На первый взгляд может показаться, что существует столько же видов молекул тРНК, сколько кодонов, но это не верно. Фактическое число молекул тРНК варьирует у разных видов организмов. Например, бактерия Е. coli имеет приблизительно 40 видов тРНК. Некоторые кодоны не представлены молекулами тРНК, а некоторые виды тРНК могут связывать более одного кодона.
На рис. 1.9 только что описанные нами процессы показаны в виде блок-схемы. Как правило, выражение «Центральная догма» используется для обозначения нашего современного, синтетического представления о передаче генетической информации в клетках.
1.4.3.	ИЗБЫТОЧНАЯ ДНК И РАМКИ СЧИТЫВАНИЯ
Здесь мы осветим некоторые дополнительные детали процессов, описанных в предыдущих разделах.
Ранее было сказано, что гены — это определенные непрерывные и смежные участки хромосомы; однако они не покрывают всю молекулу целиком. Каждый отдельный ген (или же группа сцепленных генов) с обеих сторон окружен регуляторными участками, роль которых заключается в управлении транскрипцией гена и другими связанными с ней процессами, тогда как функции всех прочих межгенных участков до сих пор не известны. Их называют избыточной или некодирующей ДНК, потому что они, по-видимому, находятся там без какой-либо конкретной цели. Более того, эти участки накапливают мутации, поскольку изменение, не затрагивающее гены или их регуляторные участки, часто оказывается не смертельным и поэтому передается потомству.
Однако недавние исследования показали, что избыточная ДНК имеет больше информационного содержания, чем полагали ранее. Количество избыточной ДНК варьирует у разных видов. Прокариоты, как правило, имеют совсем немного таких участков — их хромосомы почти полностью покрыты генами. Напротив, у эукариотов много избыточной ДНК. Хромосомы человека, по оценкам специалистов, на 90 % состоят из некодирующей ДНК.
Еще одна деталь, относящаяся к процессу транскрипции, которую следует знать, — понятие рамки считывания. Рамка считывания — это один из трех возможных способов группировки оснований при формировании кодонов в последовательности РНК или ДНК. Например, рассмотрим последовательность
TAATCGAATGGGC.
1.4. МЕХАНИЗМЫ МОЛЕКУЛЯРНОЙ ГЕНЕТИКИ	37
Одна рамка считывания может быть представлена кодонами ТАА, TCG, ААТ и GGG, не включая последнее основание С. Другая рамка считывания игнорирует первое основание Т и формирует кодоны ААТ, CGA, ATG и GGC. Еще одна рамка считывания дала бы кодоны АТС, GAA и TGG, не учитывая два основания в начале (ТА) и два основания в конце (GC).
Заметим, что эти три рамки считывания начинаются, соответственно, в позициях 1, 2 и 3 данной последовательности. Если бы мы должны были рассмотреть рамку считывания, начинающуюся в позиции 4, то полученные кодоны были бы поднабором кодонов для стартовой позиции 1, так что мы бы получили фактически ту же самую рамку считывания, но только начинающуюся с другой позиции. Вообще, если мы выбираем стартовые позиции г и j, где разница j i кратна трем, то мы фактически рассматриваем одну и ту же рамку считывания.
Иногда мы говорим не о трех, а о шести различных рамках считывания в последовательности. В этом случае мы рассматриваем последовательность ДНК и притом учитываем обе нити. Тогда получается: три рамки считывания в одной нити и другие три — в комплементарной нити, что дает общее количество шесть рамок. Обычно так поступают, когда исследуют недавно расшифрованную молекулу ДНК и хотят сравнить се с последовательностью белка из базы данных. Сначала нужно транслировать последовательность ДНК в последовательность белка, но для этого существует шесть способов, в каждом из которых необходимо выбрать новую рамку считывания. Тот факт, что мы теряем одно или два основания на концах последовательности, не важен; эти последовательности достаточно длинные, чтобы обеспечить достоверное сравнение, невзирая на несколько отсутствующих остатков.
Открытой рамкой считывания, или ОРС последовательности ДНК называют непрерывный участок этой последовательности, начинающийся в стартовом кодоне и включающий в себя целое число кодонов (его длина кратна трем), причем ни один из его кодонов не является стоп-кодоном. Дополнительные регулирующие участки, расположенные выше стартового кодона, также используются, чтобы характеризовать ОРС.
1.4.4.	ХРОМОСОМЫ
В этом разделе мы кратко опишем процесс передачи генетической информации на уровне хромосом. Сначала мы отметим, что полный набор хромосом в клетке называют геномом. Число хромосом в геноме организма характеризует его принадлежность к определенному виду. Например, каждая клетка человека содержит 46 хромосом, тогда как у мышей это чис
38
ГЛАВА 1
ло равно 40. В табл. 1.3 приведены наборы хромосом и размеры генома некоторых характерных видов.
Таблица 1.3. Размер генома определенных видов. Не говоря уже о человеке, пред ставленные здесь организмы чрезвычайно важны для исследований в области молекулярной биологии и генетики
Вид организма	Число хромосом (диплоид)	Размер генома (п. н.)
Бактериофаг А (вирус)	“ 1Т5—	5-Ю4
Escherichia coli (бактерия)	I15	5  106
Saccharomyces cerevisiae (дрожжи)	32	1- 107
Caenorhahditis elegans (червь)	12	1  108
Drosophila melanogaster (плодовая мушка)	8	2 - 108
Homo sapiens (человек)	46	3- 109
Прокариоты, как правило, имеют только одну хромосому, которая иногда представляет собой молекулу кольцевой ДНК. Напротив, в клетках эукариотов хромосомы присутствуют в парном виде (по этой причине такие клетки называют диплоидными). Например, геном человека состоит из 23 пар хромосом. Каждый член пары наследуется от каждого родителя. Две хромосомы, формирующие пару, называют гомологичными, и гены в одном члене пары соответствует генам в другом.
Некоторые гены абсолютно идентичны в отцовском и материнском членах пары — например, ген, кодирующий гемоглобин (белок, осуществляющий перенос кислорода в крови). Другие гены могут присутствовать в альтернативных формах, получивших название аллели. Типичный пример данного явления (аллслизма) — ген, кодирующий группу крови людей. Этот ген встречается в трех формах: А, В и О. Как известно, если человек унаследует, скажем, аллель А от матери и аллель В от отца, то он будет иметь группу крови АВ.
Клетки, содержащие только по одному члену из каждой пары хромосом, называют гаплоидны ми. Эти клетки участвуют в половом размножении организмов. Когда гаплоидная клетка матери сливается с гаплоидной клеткой отца, образуется яйцеклетка16, которая снова является диплоидной. Гаплоидные клетки формируются в процессе мейоза, при котором клетка
,5Эти организмы имеют одинарный набор хромосом. Прим, ред
,бЯйцеклеткой называется материнская половая клетка (гаплоидная), а после ее слияния с отцовской половой клеткой образуется оплодотворенная яйцеклетка17. Прим. ред.
1.4. МЕХАНИЗМЫ МОЛЕКУЛЯРНОЙ ГЕНЕТИКИ
39
делится на две и каждая дочерняя клетка получает по одному члену из каждой пары хромосом.
Интересно отметить, что, несмотря на тот факт, что во всех клетках организма присутствует полный набор генов, лишь только малая часть генома обычно используется, или, если употребить биологический термин, экспрессируется любой отдельной клеткой. Например, клетки печени экспрессируют набор генов, отличный от того, который экспрессируют клетки кожи. Механизмы, посредством которых клетки организма дифференцируются на клетки печени, клетки кожи и т.д., все еще во многом не ясны
1.4.5.	ПОДОБЕН ЛИ ГЕНОМ КОМПЬЮТЕРНОЙ ПРОГРАММЕ?
После краткого обзора основных механизмов синтеза белка возникает соблазн рассмотреть их в свете так называемой «метафоры генетической программы». Согласно этой метафоре геном организма — это компьютерная программа, полностью определяющая характеристики организма, клеточные механизмы — простые интерпретаторы этой программы, а биологические функции белков — лишь результат механического выполнения команд >той «программы».
Безусловно, метафора выглядит чрезмерно упрощенной, особенно если принять во внимание следующие два факта:
•	В реальном процессе транскрипции и трансляции «программа ДНК» подвергается изменениям, так что невозможно узнать, какой белок соответствует данному гену, непосредственно применив генетический код к участку ДНК, кодирующему этот ген
•	Экспрессия гена — сложнейший процесс, который может зависеть как от пространственного, так и от временного контекста. Например, нс все гены, присутствующие в геноме, экспрессируются в течение жизни организма, тогда как другие экспрессируются снова и снова; некоторые гены экспрессируются только тогда, когда организм подвергается определенным внешним воздействиям например вирусной инфекции и т. п. Иногда можно наблюдать обратное явление гены, которые экспрессируются в нормальных условиях, могут подавляться под воздействием определенных внешних фак-1оров. Известно, что экспрессия некоторых генов в значительной степени безотносительна, и именно благодаря этому свойству развитие биотехнологии становится возможным. Но это свойство ни в коем случае не верно для всех юнев. Если мы рассматриваем экспрессию гена в клетке как «вычислительный процесс», мы можем сказать, что в случае генома человека
1 Оплодотворенная яйцеклетка (диплоидная) образуется в результате слияния мужской и женской гамет (гаплоидных) и называется зиготой. Прим перев
40
ГЛАВА 1
существует более 1018 таких процессов, происходящих и взаимодействующих одновременно.
Ввиду этих наблюдений, представляется более верным рассматривать организм нс как биологическую систему, абсолютно обусловленную своим геномом, а, скорее, как продукт очень сложной сети одновременных взаимодействий, в которых набор генов является лишь одним из нескольких составляющих факторов.
1.5.	МЕТОДЫ ИЗУЧЕНИЯ ГЕНОМА
Первое, на что следует обратить внимание при научном исследовании генома, различный порядок величин, с которыми придется иметь дело. В качестве примера будем рассматривать геном человека. Основная информация, которую мы хотим извлечь из любой части ДНК - послсдо вательность пар нуклеотидов. Процесс получения этой информации называют секвенированием. Человеческая хромосома содержит около 108 п. н. С другой стороны, длина наибольших фрагментов ДНК. которые могут быть секвенированы в лаборатории, составляет всего 700 п. н. Это означает, что между масштабами длин фрагментов, которые мы можем фактически сскве-нировать, и длиной хромосомы существует разрыв приблизительно в 105 порядков. Этот разрыв лежит в основе многих проблем и задач вычислительной биологии; некоторые из них будут рассмотрены в главах 4 (сборка фрагментов) и 5 (составление физических карт). В этом разделе мы кратко опишем несколько лабораторных методов, применение которых сопряжено с трудностями, обусловленными этими проблемами.
1.5.1.	КАРТЫ И ПОСЛЕДОВАТЕЛЬНОСТИ
Расположение генов в хромосомах — особенно важный момент, требующий отдельного рассмотрения. Термин локус используют для обозначения местоположения гена в хромосоме (иногда — как синоним слова ген). Самый простой вопрос, возникающий в этом контексте: если рассматривать два гена, — принадлежат ли они одной или разным гомологичным парам? На него можно ответить, не обращаясь к молекулярным методам, поскольку в данном вопросе подразумеваются гены, затрагивающие видимые признаки организма, — например, цвет глаз или форма крыльев. Требуется всего лишь проверить, наследуются ли эти признаки совместно или независимо. Мы скажем, что они наследуются или, более профессионально, — что они распределяются, или расщепляются независимо, если вероятность того, что потомство унаследует от одного родителя оба признака, прибли
1.5. МЕТОДЫ ИЗУЧЕНИЯ ГЕНОМА
41
жённо равна 50 %. Если признаки распределяются независимо, то вполне возможно, что соответствующие гены не сцеплены, то есть скорее всего они принадлежат разным хромосомам. Два гена, принадлежащих одной гомологичной паре, должны распределяться совместно, и тогда потомство, вероятно, унаследует от одного родителя оба признака.
Как это обычно имеет место в биологии, веши не настолько четки: 100 %-е или 50 %-е расщепление признаков встречается далеко не часто. На практике можно наблюдать любой процент распределения генов вследствие кроссинговера. В процессе особого клеточного деления, ведущего к образованию половых клеток, могут появляться новые последовательности генов. В таком случае мы говорим, что происходит рекомбинация генов. Рекомбинация становится возможной, поскольку гомологичные хромосомы перед расхождением могут «перекрещиваться» и обмениваться концевыми фрагментами.
Число возможных вариантов рекомбинации огромно, и на практике мы видим, что частота рекомбинации варьирует в значительной степени. Эти частоты в свою очередь дают информацию о том, как далеко друг от друга в хромосоме расположены исследуемые гены. Если эти гены находятся близко друг к другу, то шанс на расщепление при кроссинговере весьма мал. Если же они отстоят далеко друг от друга, то возможность расщепления возрастает и гены распределяются независимо.
Для составления первых генетических карт изучали последовательные поколения организмов и анализировали наблюдаемые процентные часто-1Ы расщепления исследуемых признаков. Карта сцепления генетических признаков хромосомы представляет собой составленную с использованием подобной информации схему, показывающую порядок и относительное расстояние между генами. Генетические карты полученные на основании частот рекомбинации, безусловно важны, но они имеют два существенных недостатка:
1)	они не показывают фактические длины участков хромосомы в парах нуклеотидов или в других линейных единицах;
2)	если гены расположены очень близко друг к другу, то нельзя определить их порядок, поскольку при этом вероятность расщепления настолько мала, что наблюдаемые частоты рекомбинации равны нулю.
Карты, которые отражают фактические длины участков в парах нуклео-|идов, называют физическими картами. Для составления физических карт необходимо использовать совершенно иные методы. В частности, мы должны работать с фрагментами ДНК намного меньшей протяженности, чем длина хромосомы, но все еще слишком большими для их непосредственной расшифровки. Физическая карта может указать положение маркеров,
42
Глава 1
которые представляют собой точно известные короткие последовательности длиной до 104 п. н. или около того. Вычислительные задачи, связанные с составлением физических карт, представлены в главе 5.
Хромосома
Карта сцепления генетических признаков (уровень 10 10 пн)
Клоны
Физическая карта 5	6
(уровень 10—10 п.н.)
Секвенирование
(уровень 10 —10 п.н.)
/ CGGACACCGACGTCATTCTCATGTGCTTCTCGGCACA X
Рис 1.10. Различные уровни, на которых изучается геном [19]
Наконец, для обработки фрагментов ДНК, длины которых имеют порядок 103 п.н., мы можем использовать совершенно другие методы и получать информацию о целой последовательности. Ранее мы упомянули, что современные лабораторные методы позволяют секвенировать фрагменты ДНК. содержащие самое большее 700 п н.; для расшифровки фрагмента длиной до 20000 п. н (что известно как крупномасштабное секвенирование) неоходимо разрезать несколько копий фрагмента ДНК в разных местах, непосредственно секвенировать последовательности (коротких) фрагментов, а затем снова объединить расшифрованные последовательности этих фрагментов, используя вычислительные методы, описанные в главе 4.
На рис. 1.10. показаны различные уровни изучения генома человека.
1.5 МЕТОДЫ ИЗУЧЕНИЯ ГЕНОМА
43
1.5.2.	СПЕЦИАЛЬНЫЕ МЕТОДЫ
При составлении физических карт и расшифровке последовательностей необходимо использовать некоторые специальные лабораторные методы. В ном разделе мы приводим краткий обзор таких методов.
Важно понять, что в молекулярной биологии лабораторные меюды почти что всегда производят данные, содержащие ошибки. По этой причине большая часть алгоритмов, разработанных для решения задач вычислительной биологии, применима только в пределах, в которых они могут контролировать ошибки. Данная проблема будет неоднократно подниматься в этой книге.
Вирусы и бактерии
Мы начнем с краткого описания тех организмов, которых наиболее часто используют в генетических исследованиях, то есть с вирусов и бак тсрий.
Вирусы — это паразиты на молекулярном уровне. Едва ли их можно счесть формой жизни, хотя они и могут воспроизводиться при инфицировании подходящих клеток, называемых хозяева ми. Вирусы не проявляют никакого метаболизма: в них не происходят никакие биохимические реакции Вместо этого, для собственной репликации вирусы всецело полагаются на метаболизм хозяина, и именно это их свойство используют в лабораторных экспериментах.
Большинство вирусов состоит из белковой оболочки (капсида), внутри которой содержится генетический материал (ДНК либо РНК) Вирусная ДНК намного меньше ДНК хромосом и поэтому намного больше подходит для всевозможных манипуляций. Когда вирусы заражают клетку, их генетический материал вводится в цитоплазму. Клеточный механизм по ошибке интерпретирует ДНК вируса как свою собственную, и по этой причине клетка начинает производить кодируемые вирусом белки как если бы они были собственными белками клетки. Эти белки активизируют репликацию ви русной ДНК и формирование новых капсидов, так что в зараженной клетке скапливается большое количество вирусных частиц. Затем другие вирусные белки разрушают мембрану клетки и выпускают новые вирусные частицы в окружающую среду, где они могут атаковать следующие клетки.
Некоторые вирусы не убивают хозяев сразу. Вместо этого вирусная ДНК встраивается в геном хозяина и может оставаться там в течение длительного промежутка времени без какого-либо заметного изменения в жизни клетки. При некоторых условиях дремлющий вирус может активизиро
44
Глава 1
ваться, после чего он отделяется от генома хозяина и начинает реплицироваться.
Вирусы чрезвычайно избирательны; они способны инфицировать клетки только определенного вида. Так, например, вирус Т2 заражает только бактерию Е. coli; ВИЧ, вирус иммунодефицита человека, заражает только клетки иммунной системы человека; ВТМ, вирус табачной мозаики, заражает только листья табака. Бактериофаги, или просто фаги, являются вирусами, атакующими бактерии.
Бактерия одноклеточный организм, имеющий только одну хромосому18. Бактерии могут размножаться путем простой репликации ДНК, причем этот процесс можег осуществляться за очень короткий период времени, что делает бактерии очень полезными для генетических исследований. Бактерия, наиболее часто используемая в лабораториях, — уже упомянутая нами Escherichia coli, которая способна делиться всего за 20 минут. Бла> о-даря малым размерам и высокой скорости воспроизводства, в лабораторных условиях можно легко получать и использовать миллионы бактерий.
Разрезание и расщепление ДНК
Поскольку молекула ДНК чрезвычайно длинна, необходимо иметь специальный инструмент для ее разрезания в определенных местах (подобно ножницам) или же расщепления ее на части каким-либо иным способом. Рассмотрим основные методы осуществления этих процессов.
«Ножницы» представлены рестриктазами. Это белки, катализирующие гидролиз ДНК (расщепление молекулы с присоединением воды) в некоторых определенных местах, названных участками рестрикции, которые определяются специфической последовательностью оснований. Другими словами, они разрезают молекулы ДНК во всех местах, где появляется определенная последовательность. Например, £coRJ - рестриктаза, которая разрезает ДНК везде, где появляется последовательность GAATTC. Интересно, что эта последовательность является своим собственным обратным комплементом, то есть GAATTC = GAATTC. Последовательности, тождественные своим обратным комплементам, называют перевертнями или палиндромами. Так, каждый раз, когда такая последовательность появляется в одной нити, она обязательно появляется также и в другой нити. Разрезы делаются в обеих нитях между основанием G и первым А. Поэтому оставшиеся фрагменты ДНК будут иметь «липкие» концы, то есть их 5'-концы в точке отреза будут на четыре основания короче З'-концов (см. рис. 1.11). Это способствует взаимной гибридизации фрагментов ДНК,
18Бактерия холерного эмбриона имеет две негомологичные хромосомы. — Прим. ред.
1.5. МЕТОДЫ ИЗУЧЕНИЯ ГЕНОМА
45
разрезанных одним и тем же ферментом, и обеспечивает своего рода методику «вырезания встраивания ДНК», очень полезную в генной инженерии для производства рекомбинантной ДНК.
   ATCCAgJaATTCTCGGA.......ATCCAG AATTCTCGGA. . .
. . .TAGGTCTTAaJgAGCCT. . .	. . .TAGGTCTTAA	GAGCCT. . .
ДНК до разрезания	ДНК после разрезания
Рис. 1.11. Фрагменты ДНК с «липкими» концами после обработки рестриктазой
К обычным типам рсстриктаз относятся: 4-, 6- и 8-рсстриктазы. Нечетные рестриктазы встречаются сравнительно редко, так как последовательности нечетной длины не могут быть палиндромами. Рестриктазы называют также эндонуклеазами, поскольку они расщепляют Д1IK в какой-либо внутренней точке. Экзонуклеазы ферменты, разрушающие ДНК в направлении от концов внутрь.
В бактериях рестриктазы выступают в роли защитников от вирусных атак. Эти ферменты способны разрезать вирусную ДНК прежде, чем она успеет вызвать какие-либо повреждения. Бактериальная ДНК, с своей стороны, защищена от рестриктаз посредством метилирования оснований в участках рестрикции.
Молекулы ДНК могут быть разорваны методом дробовика, который иногда используют при секвенировании. Раствор, содержащий очищенную ДНК — большое количество идентичных молекул - подвергается некоторому разрушающему процессу например вибрации высокого уровня. Каждая отдельная молекула ДНК рвется в нескольких случайных местах, и затем некоторые из фрагментов фильтруются и отбираются для дальнейшей обработки — в частности, для копирования или клонирования (см. ниже). В результате мы получаем набор отдельных клонированных фрагментов, которые соотвстшвуюг случайным смежным фрагментам очищенной последовательности ДНК. Секвенирование этих фрагментов и дальнейшая сборка полученных последовательностей стандартный способ определения последовательности очищенной ДНК. Кроме того, этот метод может быть использован при составлении клонотек — коллекций клонов, покрывающих определенную длинную молекулу ДНК.
копирование ДНК
Другой очень важный метод, необходимый в исследованиях молекулярной биологии, — процесс копирования ДНК (называемый также размно-
46
Глава 1
жснием, или амплификацией ДНК). Здесь мы имеем дело с молекулами, представляющими собой микроскопические объекты. Чем больше копий молекулы мы получим тем легче будет ее изучать. К счастью, для этой цели было разработано несколько методов.
Клонирование ДНК. Для проведения любого эксперимента с ДНК в лабораторных условиях, необходимо иметь хотя бы минимально необходимое количество материала; одной молекулы явно не достаточно. Тем не менее, иногда в распоряжении исследователя имеется всего-навсего единственная молекула ДНК. Кроме того, материал должен быть сохранен некоторым способом, который давал бы возможность по существу неограниченного производства нового материала для повторения старого эксперимента или же проведения новых, если это необходимо Клонирование ДНК — название обшей технологии, способствующей достижению этих целей.
Один из способов получения копий фрагментов ДНК состоит в использовании самой природы. Мы встраиваем исходный фрагмент в геном организма-хозяина, или вектора, и затем позволяем этому организму размножаться. Посредством размножения хозяина встроенный фрагмент (встроика1С>) амплифицируется наряду с его собственной ДНК. После чего мы можем убить хозяина и избавиться от его генома, сохраняя только встройки в желаемом количестве. Производимую этим способом ДНК называют рекомбинантной. В число популярных векторов входят: плазмиды, космиды, фаги и дрожжевые искусственные хромосомы.
Плазмида — это кольцевая молекула ДНК, присутствующая в клетках бактерий20. Она намного меньше бактериальной хромосомы и не зависима от нее Тем не менее, плазмида также реплицируется в процессе деления клетки, и каждая дочерняя клетка содержит одну (или много) копию плазмиды Плазмиды являются хорошими векторами, но налагают ограничение на размер встройки: приблизительно 15 т. п. н. Встройки, намного превышающие этот предел, значительно увеличивают размер плазмиды, а большие плазмиды в ходе репликации обычно укорачиваются.
”В нашей литературе в данном контексте употребляются термины ве|авка и ветровка Хотя с точки зрения русского языка более правильным в этом случае является слово «вставка> встраивание предполагает более тесную связь нового объекта с основой, чем вставление. Таким образом, если мы говорим, что фрагменты клонируемой ДНК встраивают, например, в плазмиду, то естественнее называть такие встроенные фрагменты встройками. Кроме того, это позволит не путать данные объекты со вставками пробелов в последовательности при их выравнивании, со вставками знаков при выполнении редактирующих операций и с мутациями типа вставок. Прим, персе.
20В одной клетке часто находится много (десятки или сотни) одинаковых плазмид (мулыи-копнйные плазмиды). Прим. ред.
1.5. МЕТОДЫ ИЗУЧЕНИЯ ГЕНОМА
47
Фаги тоже довольно часто используют в качестве векторов. Наиболее известный пример — фаг А, который заражает бактерии Е. coli. Встройки в ДНК фага реплицируются, когда этот вирус заражает колонию хозяина. Длина ДНК фага А обычно составляет 48 т. п. н., и эти молекулы, как правило, хорошо переносят встройки до 25 т. п. н. Превышение этого предела недопустимо, поскольку в таком случае образованная ДНК просто не войдет в белковую капсулу фага. Однако если ДНК фага целиком заменить на встройку плюс некоторый минимум репликативного аппарата, то можно получить допустимые встройки длиной до 50 т. п. н. Такие встройки называют космидами.
Для очень больших встроек (порядка миллиона пар нуклеотидов) в качестве вектора может быть использована ДИХ (дрожжевая искусственная хромосома). ДИХ — дополнительная, искусственно полученная хромосома, которая может быть построена путем добавления регуляторных участков дрожжевой хромосомы ко встройке, в результате чего репликативный механизм дрожжей воспринимает ес как собственную дополнительную хромосому.
Полимеразная цепная реакция (ПЦР) — способ производства множества копий молекулы ДНК без необходимости ее клонирования. Вначале исходную молекулу ДНК прогревают, чтобы разрушить водородные связи, и получают две одинарные матричные нити. Затем реакционную смесь охлаждают в присутствии двух коротких фрагментов (праймеров), каждый из которых связывается с комплементарным участком в начале соответствующей матричной нити ДНК и задает точку начала синтеза новой нити. Удлинение комплементарных нитей на матричных ДНК катализируется ДНК-полимеразой. К растущим нитям присоединяются нуклеотиды, пока длина синтезированных нитей не станет равной длине матричных нитей и не сформируются две новые двойные цепи ДНК.
ПЦР, в основном, состоит из чередующегося повторения двух стадий: стадия разделения двунитсвой ДНК на две отдельных нити под воздействием температуры и стадии, в которую каждая отдельная нить прсобра-|уется в двойную путем присоединения праймера и действия полимеразы. При каждом повторении этих стадий число молекул удваивается. Благодаря экспоненциальному закону роста числа молекул в ходе этой процедуры удвоения, после требуемого числа повторений количество произведенного материала становится достаточным для проведения дальнейших экспериментов.
Любопытно отметить, что Кэри Б. Муллис, изобретатель ПЦР (1983), осознал, что эта, посетившая его, идея, хороша, потому что «проводил уй
48
Глава 1
му времени за написанием компьютерных программ» и таким образом быт знаком с итерационными функциями а, следовательно, и с процессами экспоненциального роста.
Измерение и считывание ДНК
Каким же образом мы непосредственно «считываем» пары оснований в последовательности ДНК? Считывание осуществляется с помощью методики, известной как гель-электрофорез, которая основана на разделении молекул по размеру. В процессе разделения участвует гелевая среда и сильное электрическое поле. Молекулы ДНК или РНК заряжаются в водном растворе и движутся в определенном направлении под действием электрического поля. Свойства гелевой среды определяют специфический характер их движения — медленного, совершаемого со скоростью, обратно пропорциональной размеру молекул. Первоначально все молекулы погружают в гель вблизи одного края емкости и помещают ее в постоянное электрическое поле. В течение нескольких часов молекулы меньшего размера постепенно мигрируют к противоположному краю емкости, тогда как более крупные молекулы отстают и остаются позади, около стартового места. Тогда с помощью метода интерполяции можно с достаточно хорошим приближением рассчитать относительные размеры молекул.
В подобных экспериментах молекулы ДНК могут быть помечены радиоактивными изотопами, с тем чтобы гель можно было сфотографировать и получить графический отпечаток положений молекул в конце пробега. Этот процесс используют при секвенировании ДНК, определении длин ре-стриктов и т. п. Альтернативный вариант — вместо радиоактивных изотопов использовать флуоресцентные красители. Лазерный луч может сканировать гель, отслеживать красители и посылать информацию о местоположении молекул непосредственно компьютеру, полностью избегая фотографического процесса. Так, на основании этой методики были созданы автосеквенаторы.
Следующая технология, в которой используют этот процесс, позволяет считывать основания ДНК или РНК. Например, имея некоторую молекулу ДНК, можно получить все ее фрагменты, которые оканчиваются в каждой точке, где появляется основание А. Подобно этому, могут быть получены все фрагменты, оканчивающиеся основаниями Т, G или С. Таким образом мы получаем четыре различные пробирки — по одной для каждого основания. Фрагменты в каждой пробирке будут иметь различную длину. Например, предположим, что мы исследуем следующий фрагмент ДНК:
GACTTAGATCAGGAAACT.
16 ПРОЕКТ «ГЕНОМ ЧЕЛОВЕКА»
49
Рис. 1.12. Схематичный эскиз пленки, полученной при гсль-электрофорезе. Отдельные основания ДНК могут быть идентифицированы на каждой из четырех дорожек. Метки более коротких фра! ментов находятся вблизи вершины, более длинных — вблизи основания пленки
Тогда оканчивающиеся основанием Т фрагменты ДНК GACT, GACTT и GACTTAGAT, а также и сама последовательность в целом. Таким образом, если мы разделим такие фрагменты по размеру (и сделаем это одновременно, но отдельно для всех четырех пробирок), то мы определим все позиции соответствующих оснований, то есть точный состав исходной последовательности ДНК. Процесс показан на рис. 1.12.
При чтении гелевой пленки могут появляться ошибки, поскольку иногда метки расплываются, особенно около границ пленки. Еще одно ограничение состоит в том, что размер фрагментов ДНК, которые могут быть определены этим способом, не должен превышать 700 п. н.
1.6. ПРОЕКТ «ГЕНОМ ЧЕЛОВЕКА»
Проект «Геном человека» — международная программа, начатая в 1988 году, цель которой состоит в том, чтобы полностью расшифровать последовательность человеческой ДНК и составить полную физическую карту всех хромосом человека. Как часть этого проекта, изучаются также геномы таких организмов, как бактерии, дрожжи, мухи и мыши.
50
Глава 1
Это нелегкая задача, так как геном человека является чрезвычайно большим. К настоящему времени уже полностью расшифрованы геномы мно1их вирусов, но их размеры, как правило, находятся в пределах 110 т.п.н. Первый свободно живущий организм, который был полностью секвенирован, — бактерия Haemophilus influenzae, содержащая геном длиной 1800 т. п. н. В 1996 году была успешно определена целая последовательность генома дрожжей — последовательность длиной 10 м. п. н. Это событие можно считать важной вехой в осуществлении проекта, если учесть, что дрожжи являются свободно живущими эукариотами. Картирование генома человека все еще кажется отдаленной мечтой, поскольку его размер в 100 раз превышает наибольший геном, который удалось расшифровать к настоящему времени21.
Одна из причин, по которой в проект вошли другие организмы, — совершенствование методов секвенирования, с тем чтобы в дальнейшем их можно было бы применять к геному человека. Можно ожидать, что благодаря появлению новой, усовершенствованной технологии стоимость расшифровки понизится. Другая причина заключается в непосредственной пользе расшифровки геномов этих организмов, поскольку, как уже было отмечено, все вовлеченные в проект виды организмов широко используются в генетических и молекулярных исследованиях.
Кроме того, в ходе работы над проектом были усвоены некоторые уроки. Осуществление крупных проектов, подобных этому, нельзя возлагать на одну лабораторию. Скорее, более эффективный путь (а, возможно, и единственный) доведения работы до конца  консорциум совместно работающих первоклассных лабораторий. Одна только координация всех этих задач уже сама по себе является вызовом нашим ученым. Что же касается вычислительной техники, то должны поддерживаться банки последователь ностей и базы данных с обновляемой, унифицированной и согласованной информацией, а также с возможностью быстрого доступа к данным. Главным образом обеспокоенность вызвана возможностью присутствия ошибок во вносимых в базу последовательностях. Основная задача для решения этой проблемы состоит в получении последовательностей ДНК, содержащих не более одной ошибки на каждые 10 000 нуклеотидов.
Другая проблема — отыскать и принять за основу некий «усредненный геном». Как известно, различные индивиды имеют различные геномы (именно благодаря этому становится возможной ДНК-дактилоскопия}.
21В настоящее время секвеиированы геномы нескольких сотен видов бактерий, нескольких видов мух, комара, червя, человека, мыши, крысы, шимпанзе, собаки, арабидопси-са22(растение), риса и многие другие. Прим. ред.
22Arabidopsis lhaliana однолетнее цветковое растение резушка Таля. - При.», перев.
1.7 БАНКИ ПОСЛЕДОВАТЕЛЬНОСТЕЙНУКЛЕОТИДОВ
51
В пределах одной популяции ген может быть представлен множеством аллелей, а последовательность межгенных участков (которые нс кодируют белки) у разных людей может варьировать. Известно, что геномы двух случайно отобранных человек отличаются в среднем на один из каждых 500 нуклеотидов. В связи с этим возникает резонный вопрос: чей же геном должен быть расшифрован9 Даже если один индивидуум каким-либо образом выбран и ее или его ДНК принята за стандарт, то все равно остается неразрешенной проблема транспозиции локусов23. Совсем недавно стало известно, что определенные части генома продолжают перемещаться из одних участков хромосом в другие, так что в лучшем случае после секвенирования мы получим лишь «моментальный снимок» генома.
Как только полная последовательность ДНК будет расшифрована, мы столкнемся с трудной задачей се анализа. Мы должны будем распознать гены и определить функцию кодируемых ими белков. Однако методика распознавания генов находится еще в фазе младенчества, а определение функций белков — пока что очень трудоемкая процедура. До лечения генетических болезней на основании данных, полученных в проекте «Геном человека», все еще очень далеко, хотя бурно развивающаяся передовая стратегия уже дала определенные ободряющие результаты.
1.7. БАНКИ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
НУКЛЕОТИДОВ
Частично благодаря методикам, описанным в предыдущих разделах, за последние десятилетия было определено большое число последоватсльно-с1ей ДНК, РНК и белков. Были учреждены некоторые институциональные папки последовательностей, призванные вместить в себя как сами секвени-рованные последовательности, так и прочие сопутствующие данные. Скорость, с которой новые последовательности ганосятся в банки, экспоненциальна. Для осуществления быстрого поиска в базах данных были разработаны специальные вычислительные методы (некоторые из них описаны и главе 3). Ниже мы приводим краткое описание нескольких крупнейших банков последовательностей нуклеотидов.
«Геибанк» (GenBank): Поддерживается «Национальным центром био-ехпологичсской информации» («НЦБИ»), США, и содержит сотни тысяч
'При тгом надо понимать, что геном человека динлонд и ратные хромосомы не идентичны. хоть и гомологичны. Прим ред.
52
Глава 1
LOCUS DEFINITION ACCESSION KEYWORDS SOURCE ORGANISM	HUMRHOA	539 bp mRNA	PRI	04-AUG-1986 Human ras-related rho mRNA (clone 6), partial cds. M12174 c-rayc proto-oncogene; ras oncogene; rho gene. Human peripheral T-cell, eDNA to mRNA, clone 6. Homo sapiens Eukaryota; Animalia; Chordata; Vert ebrat a.- Mammalia; Theria; Eutheria; Primates; Haplorhini; Catarrhini; Kominidae.
REFERENCE AUTHORS JOURNAL	1 (bases 1 to 539) Madaule,P. Unpublished (1985) Columbia U, 701 W 168th St, New York, NY 10032
REFERENCE AUTHORS TITLE JOURNAL MEDLINE COMMENT	2 (bases 1 to 539) Madaule,P. and Axel.R. A novel ras-related gene family Cell 41, 31 40 (1985) 85201682 [2] has found and sequenced a family of highly evolutionarily conserved genes with homology to the ras family (И-ras, K-ras. N-ras) of oncogenes. [2] named this family rho (for ras homology). In humans at least three distinct rho genes are present. A draft entry and computer-readable copy of this sequence were kindly provided by P.Madaule (07-OCT-1985). NCBI gi: 337392
FEATURES	Location/Qualifiers
source	1..539 /organism-“Homo sapiens"
CDS	<1..509 /note="rho protein; NCBI gi: 337393" /codon_starts=2
BASE COUNT ORIGIN	105 a	180 c	172 g	82 t 185 bp upstream of Hinfl site.
1 cgagttcccc	gaggtgtacg	tgc	....	tatgtggccg	acattgaggt
61 ggacggcaag	caggtggagc	tgg	....	ggccaggagg	actacgaccg
121 cctgcggccg	ctctcctacc	egg	. . . .	atgtgettet	cggtggacag
181 cccggactcg	ctggagaaca	tee	gaggtgaagc	acttctgtcc
421 egaggtette	gagacggcca	ege	....	cgctacggct	cccagaacgg
481 ctgcatcaac	tgetgeaagg	tgc	....	cgcgcctgcc	cctgccggc
//
Рис. 1.13. Типичная запись «Генбанка». Файл записи был отредактирован, чтобы он мог уместиться на странице. В реальной записи каждая строка последовательности состоит из 60 символов, с возможным исключением для последней строки
1 7. БАНКИ ПОСЛЕДОВАТЕЛЬНОСТЕЙ НУКЛЕОТИДОВ
53
ID ECTRGA standard; RNA; PRO; 75 BP.
M24860;
24-APR-1990 <Rel. 23, Created) 31-MAR-1992 (Rel. 31, Last updated. Version 3)
E.coli Gly-tRNA.
transfer RNA-Gly.
Escherichia coli prokaryote; Bacteria; Gracilicutes; Scotobacteria; Facultatively anaerobic rods: Enterobacteriaceae; Escherichia.
[1] 1-75 Carbon J., Chang S-, Kirk L.L.; "Clustered tRNA genes in Escherichia coli: Transcription and processing";
Brookhaven Symp Biol. 26:26-36(1975).
Key	Location/Quallf lers
tRNA	1..75
/note»"Gly-tRNA"
SQ Sequence 75 BP; 13 A; 24 C; 19 G; 19 T; 0 other; gcgggcatcg tataatggct attacctcag _________ tgatgatgcg ogttcgattc
ccgctgcccg ctcca //
Рис I 14. Типичная запись «ЕЛМБ», отредактированная к размеру страницы. В рс Ильной записи в поле «Последова1ельность» строки по 60 символов, с возможным исключением для последней строки

54
Глава 1
PIR1:CCHP cytochrome с - hippopotamus
Species: Hippopotamus amphlbius (hippopotamus)
Date; 19-Feb-1984 lsequence_revision 19-Feb-1984 «text_change 05-Aug-1994
Accession: AO0008
Thompson, R.B.; Borden, D.; Tarr, G.E.; Nargoliash, E. J. Biol. Chera. 253, 8957-8961, 1978 Title: Heterogeneity of amino acid sequence in hippopotamus cytochrome c.
Reference number; A00008; MUID;79067782
Accession: A00008 Molecule type: protein Residues: 1-104 <THO> Note: 3-1le was also found
Superfamily: cytochrome c; cytochrome c homology
Keywords: acetylated amino end; electron transfer; heme; mitochondrion; oxidative	phosphorylation;	respiratory chain
Residues	Feature
1	Modified	site: acetylated	amino end	(Gly)
♦status predicted
14,17	Binding	site: heme (Cys)	(covalent)	Istatus
predicted
18,80	Binding site: heme iron (His, Net) (axial
ligands) «status predicted
	Composition
6 Ala А	4 Gin Q	6 У eu L	2 Ser S
2 Arg	R	8	Glu	E 5 Asn	N	14	Gly	G 3 Asp	D	3	Hie	H 2 Cys	C	6	lie	I Mol. wt. unjnod. chain » 11,530 5	10	IS 1GDVEKGKKIFVQKCA 31NLHGLPGRKTGQSPG 61EETLMEYLENPKKYI	17 Lys	К	8	Thr	T 2 Net	N	1	Trp	W 4 Phe	F	4	Tyr	Y 4 Pro	P	3	Vai	V Number of residues » 104 20	25	30 QCHTVEKGGKHKTGP FSYTDANKNKGITWG PGTKMIFAGIKKKGE
Рис. 1.15. Типичная запись «РИБ», подо! манная к размеру страницы
1.7. БАНКИ ПОСЛЕДОВАГЕЛЬНОСТЕЙ НУКЛЕОТИДОВ
55
HEADER	MYOGLOBIN (CARBONMONOXY)		19-JUL-95	1MCY
TITLE		SPERM WHALE MYOGLOBIN (MUTANT	WITH INITIATOR MET	AND
TITLE	2	WITH HIS 64 REPLACED BY GLN,	LEU 29 REPLACED BY	PHE
COMPND	MOL_ID: 1;			
COMPND	2	MOLECULE: MYOGLOBIN (CARBONMONOXY) I		
COMPND	3	CHAIN: NULL;		
COMPND	4	ENGINEERED: YES;		
COMPND	5	MUTATION: INS(MET 0), F29L, Q64H, N122D		
SOURCE	MOL_ID: 1;			
SOURCE	2	SYNTHETIC: SYNTHETIC GENE;		
SOURCE	a	ORGANISM-SCIENTIFIC: PHYSETER CATODON;		
SOURCE	4	ORGANISM—COMMON: SPERM WHALE,		
SOURCE	5	EXPRESSION-SYSTEM: ESCHERICHIA COLI		
KEYWDS	1	HEME, OXYGEN TRANSPORT, RESPIRATORY PROTEIN		
EXPDTA		X-RAY DIFFRACTION		
AUTHOR		Г.LI,G.N.PHILLIPS JUNIOR		
REVDAT	1	07-DEC-95 1MCY	0		
JRNL		AUTH	X. ZHAO, K.VYAS.B.D. NGUYEN, K. RAJ ARATHNAM,		
JRNL		AUTH 2 G.N.LAMAR,T.LI,G.N. PHILLIPS JUNIOR,R.EICH,		
JRNL		AUTH 3 J.S.OLSON.J.LING,D.F.	.BOCIAN	
JRNL		TITL A DOUBLE MUTANT OF SPERM WHALE MYOGLOBIN		
JRNL		TITL 2 MIMICS THE STRUCTURE	AND FUNCTION OF	
JRNL		TITL 3 ELEPHANT MYOGLOBIN		
JRNL		REF	J.BIOL.CHEM.	V. 270 20763	1995
JRNL REMARK	1	REFN ASTM JBCHA3 US ISSN	0021-9258	0071
REMARK	2			
REMARK	2	RESOLUTION. 1.7 ANGSTROMS.		
REMARK	3			
REMARK	3	REFINEMENT.		
REMARK	3	PROGRAM	X-PLOR	
REMARK	3	AUTHORS	BRUNGER	
REMARK	3	R VALUE	0.182	
REMARK	3	RMSD BOND DISTANCES	0.020 ANGSTROMS	
REMARK	3	RMSD BOND ANGLES	1.82 DEGREES	
REMARK	3			
REMARK	3	NUMBER OF REFLECTIONS	23187	
REMARK	3	RESOLUTION RANGE	5.0	- 1.7 ANGSTROMS	
REMARK	3	DATA CUTOFF	0.0	SIGMA(F)	
REMARK	3			
REMARK	3	DATA COLLECTION.		
REMARK	3	NUMBER OF UNIQUE REFLECTIONS	25787		
REMARK	3	RESOLUTION RANGE INFINITY	-1.7 ANGSTROMS	
REMARK	3	COMPLETENESS OF DATA	95.8	%	
Рис. 1.16. Типичная запись «БДБ», неполный заголовок. Последние столбцы с символами 1MCY г, 1де г — номер строки, были опущены. Также произведены другие тмеиения, чтобы размер записи соответствовал странице
56
Глава 1
АТОМ	1	N	МЕТ	0	24.486	8.308	-9.406	1.00	37.00
АТОМ	2	СА	МЕТ	0	24.542	9.777	-9.621	1.00	36.40
АТОМ	3	С	МЕТ	0	25.882	10.156	-10.209	1.00	34.30
АТОМ	4	О	МЕТ	0	26.833	9.391	-10.078	1.00	34.80
АТОМ	5	св	МЕТ	0	24.399	10.484	-8.303	1.00	39.00
АТОМ	6	CG	МЕТ	0	24.756	9.581	-7.138	1.00	41.80
АТОМ	7	SD	МЕТ	0	24.017	10.289	-5.719	1.00	44.80
АТОМ	8	СЕ	МЕТ	0	24.761	12.009	-5.824	1.00	41.00
АТОМ	9	N	VAL	1	25.951	11.334	-10.816	1.00	31.10
АТОМ	10	СА	VAL	1	27.185	11.834	-11.382	1.00	28.40
АТОМ	11	С	VAL	1	27.330	13.341	-11.124	1.00	26.30
АТОМ	12	О	VAL	1	26.444	14.135	-11.452	1.00	26.60
АТОМ	13	СВ	VAL	1	27.270	11.547	-12.912	1.00	29.30
АТОМ	14	CG1	VAL	1	28.532	12.207	-13.526	1.00	28.60
АТОМ	15	CG2	VAL	1	27.275	10.038	-13.163	1.00	29.70
АТОМ	16	N	LEU	2	28.435	13.739	-10.500	1.00	23.00
АТОМ	17	СА	LEU	2	28.691	15.142	-10.318	1.00	20.80
АТОМ	18	С	LEU	2	29.289	15.737	-11.599	1.00	20.10
АТОМ	19	О	LEU	2	30.129	15.110	-12.276	1.00	19.50
АТОМ	20	св	LEU	2	29.661	15.356	-9.134	1.00	20.90
АТОМ	21	CG	LEU	2	29.036	15.387	-7.726	1.00	20.40
АТОМ	22	CD1	LEU	2	28.556	13.983	-7.402	1.00	19.60
АТОМ	23	СО2	LEU	2	30.058	15.904	-6.689	1.00	19.50
АТОМ	24	N	SER	3	28.996	17.003	-11.826	1.00	18.80
АТОМ	25	СА	SER	3	29.696	17.733	-12.852	1.00	19.40
АТОМ	26	С	SER	3	31.096	18.141	-12.385	1.00	19.50
АТОМ	27	О	SER	3	31.397	18.121	-11.174	1.00	19.10
АТОМ	28	СВ	SER	3	28.861	18.954	-13.223	1.00	20.60
АТОМ	29	OG	SER	3	29.019	19.969	-12.261	1.00	22.10
АТОМ	30	N	GLU	4	31.947	18.561	-13.310	1.00	18.40
АТОМ	31	СА	GLU	4	33.293	18.956	-12.937	1.00	19.00
АТОМ	32	С	GLU	4	33.173	20.215	-12.047	1.00	19.20
АТОМ	33	О	GLU	4	34.026	20.457	-11.206	1.00	19.10
АТОМ	34	СВ	GLU	4	34.135	19.270	-14.198	1.00	19.60
АТОМ	35	CG	GLU	4	35.491	19.937	-13.932	1.00	21.10
АТОМ	36	CD	GLU	4	36.537	19.020	-13.295	1.00	22.60
АТОМ	37	ОЕ1	GLU	4	36.355	17.787	-13.230	1.00	23.90
АТОМ	38	ОЕ2	GLU	4	37.569	19.550	-12.840	1.00	24.60
АТОМ	39	N	GLY	5	32.182	21.062	-12.313	1.00	18.30
АТОМ	40	СА	GLY	5	32.039	22.287	-11.532	1.00	19.10
АТОМ	41	С	GLY	5	31.669	22.025	-10.056	1.00	18.20
АТОМ	42	О	GLY	5	32.251	22.638	-9.140	1.00	18.60
Рис. 1.17. Типичная запись «БДБ», пространственные координаты атомов. Последние столбцы, содержащие символы 1MCY г, где г — номер строки, были опущены. В каждой строке были удалены по несколько символов пробела
1.7. БАНКИ ПОСЛЕДОВАТЕЛЬНОСТЕЙ НУКЛЕОТИДОВ
57
последовательностей ДНК. «Генбанк» разделен на несколько секций по по-24 следоватсльностям, сгруппированным согласно видам, включая :
•	PLN: растения
•	PRI: приматы
•	ROD: грызуны
•	МАМ: прочие млекопитающие
•	VRT: прочие позвоночные
•	INV: беспозвоночные
•	ВСТ: бактерии
•	PHG: фаги
•	VRL: прочие вирусы
•	SYN: синтетические последовательности
•	L'NA: нсаннотированные последовательности
•	РАТ: патентованные последовательности
•	NEW: новые последовательности
Поиск может вестись по ключевым словам или же непосредственно по последовательностям. Типичная запись «Генбанка» показана на рис. 1.13. Запись разделена на поля, и каждое поле состоит из идентификатора поля — слова, описывающего содержание поля, и информации как таковой. Записи представляют собой обычный текст. Важное поле — помер доступа, который является уникальным кодом записи и может быть использован для более быстрого доступа к ней. В приведенном примере номер доступа равен М12174. Некоторые записи имеют несколько номеров доступа как результат объединения нескольких связанных между собой, но все же немного отличных записей в одну общую запись. Другие поля большей частью говорят сами за себя.
«Генбанк» — часть исследовательского проекта международного сотрудничества, куда входят также «ЯБД» «Японский банк ДНК» (DDBJ) и «Европейская лаборатория молекулярной биологии» («ЕЛМБ»). Записи «Генбанка» доступны по следующему веб-адресу:
24К настоящему времени в «Генбанке» произошли следующие изменения: 1. В секцию PI N входят не только растения, но также и грибы с водорослями. 2. Появились новые секции: RNA структурная РНК; EST — ярлыки экспрессируемых постелователыюсгей (ЯЭПы); STS — меченые участки последовательностей (МУПы); GSS характеризующие геном последовательности (ХГП); HTG — последовательности высокопроизводительной геномики (Bill) Прим, перев.
58
ГЛАВА 1
http://www.ncbi.nlm.nih.gov/
«ЕЛМБ» (FMBL): «Европейская лаборатория молекулярной биологии» — учреждение, которое обслуживает несколько хранилищ последовательностей. включая банк ДНК, или «Банк последовательностей нуклеотидов». Организация «ЕЛМБ» подобна организации «Генбанка», а записи имеют примерно те же поля. В банке данных «ЕЛМБ» записи идентифицированы по двубуквенным кодам (см. рис. 1.14). Номер доступа, например, определяется по буквам АС. Код XX указывает на пустые строки. Как «Ген-банк», так и «ЕЛМБ» разделяют последовательности на блоки по десять букв, с шестью блоками в строке. Такая схема облегчает поиск определенных позиций в пределах последовательности. Записи «ЕЛМБ» можно найти по следующему веб-адресу:
http://www.embl-heidelberg.de/
«РИБ» (PIR): «Ресурс идентификации белка» — банк последовательностей белка, совместно обслуживаемый и развиваемый тремя учреждениями: «НФБИ» — «Национальным фондом биомедицинских исследований» (США), «Мартинсридским институтом последовательностей белка» (Европа) и «ЯМИББ» (JIPID) — «Японской международной информационной базой (данных) белка» (Япония). Типичная запись «РИБ» показана на рис. 1.15.С этим банком данных обеспечивают связь несколько веб-страниц, включая следующие:
http://www.gdb.org/ http://www.mips.biochem.mpg.de/
«БДБ» (PDB): «Банк данных белка» хранилище трехмерных структур белков. Для каждого представленного здесь белка имеется заголовок с общей информацией, сопровождаемый списком всех атомов, присутствующих в структуре, с тремя пространственными координатами для каждого атома, которые указывают их положение с точностью до трех десятичных знаков. Пример записи «БДБ» приведен на рисунках 1.16 и 1.17. Это хранилище обслуживается в Брукхейвене, США. Доступ к нему может быть осуществлен по веб-адресу:
http://www.pdb.bnl.gov/
Прочие банки данных: Для хранения данных молекулярной биологии были созданы многие другие банки, кроме упомянутых выше. Среди них
УПРАЖНЕНИЯ
59
стоит упомянуть ACEDB, мощный банк данных, подготовленный для проекта расшифровки генома червя С. elegans, но легко адаптируемый к подобным проектам; «Флайбейс» (Flybase) — банк последовательностей генома мух; кроме того — банки данных рестрпктаз, предпочтительного использования кодонов и т. д.
УПРАЖНЕНИЯ
1.	Рассмотрите последовательность TAATCGAATGGGC. Транслируйте с нее шесть возможных последовательностей белка.
2.	Имея воображаемый «ген», представленный ниже, найдите:
а)	последовательность соответствующей нРНК;
б)	последовательность синтезируемого белка (используйте стандартный генетический код).
ATGATACCGACGTACGGCATTTAA
TACTATGGCTGCATGCCGTAAATT
3.	Сколько последовательностей ДНК могли произвести последовательность белка LMK? Подсказка: Одна из них — CTGATGAAG.
4.	Приведите примеры рестриктов, полученных в результате обработки рестриктазами 5ашН1 и
5.	Предположим, что мы имеем молекулу ДНК длиной 40000 п. н. и гидролизируем ее 4-рестриктазой. Если допустить случайное распределение оснований в молекуле, то сколько фрагментов мы можем надеяться получить?
6.	Просмотрите вирусную секцию последовательностей «Генбанка» и найдите любой болезнетворный агент, о котором вы прежде никогда не слышали.
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
Читателям, впервые знакомящимся с молекулярной биологией, возможно, будет интересно заглянуть во вводную «книжку комиксов» Розенфельда, Зиффа и Ван Луна [165]. Желающим выйти за рамки нашего краткого обзора стоит ознакомиться с известными книгами по молекулярной биологии, в том числе:
60
Глава 1
•	Уотсон, Хопкинс, Робертс, Стейц и Уэйнер [203; 204].
•	Альберте, Брей, Льюис, Рафф, Робертс и Уотсон [7],
•	Левин [124].
Следует иметь в виду, что вследствие быстрого прогресса исследований в молекулярной биологии такие книги постоянно обновляются.
Другие учебники, которые мы нашли полезными в ходе подготовки этой главы, следующие: По биохимии — Мэтьюз и ван Холд [131], по генетике Тамарин [183], по белковым структурам - Бранден и Туз [28].
Цитата Р. Ф Дулиттла, приведенная на странице 13, взята из журна ла [50], который содержит достаточно хороший для «любителей-самоучек» обзор белков и выходит под специальной рубрикой, посвященной «молекулам жизни». Интересное описание открытия Муллисом ПЦР можно прочи тать в [141]. Цитата на странице 37 была взята из той же статьи.
Роббинс [162] и Френкель [66] в своих статьях обсуждают трудности проекта «Геном человека» с точки зрения информатики. Роббинс подчеркнул важность научного взгляда на организм как на результат сложного взаимодействия многих «клеточных процессов». Левонтин [125] приводит отрезвляющий критический анализ проекта «Геном человека»
Проблемы, связанные с «метафорой генетической программы», были освещены многими специалистами; нашим источником была работа Атла-иа и Коппела [17]. С другой стороны, заинтересованный читатель может заглянуть в книгу Гофштадтера [96], в который содержится интересное обсуждение параллелей между молекулярной биологией и математической логикой
Глава 2
СТРОКИ, ГРАФЫ И АЛГОРИТМЫ
Эта глава представляет символику, условные обозначения и краткий обзор главных понятий математики и информатики, используемых в этой книге, однако же не является введением в рассматриваемые предметы. Читателю, не знакомому с этими темами, мы предлагаем несколько книг в биб-лиографичсских примечаниях
2.1. СТРОКИ
Сгроки — основной тип данных, с которыми мы будем работать в этой книге Сз рока предс гавляет собой упорядоченную последовательное гь знаков, или символов, взятых из конечного набора — алфавита. Термин последовательность употребляют как синоним термина «строка». В большинстве наших примеров мы используем либо алфавит нуклеотидов ДНК {А, С, G, Т}, либо 20-значный алфавит аминокислот (см. главу 1). Но все же мы хотим подчеркнуть, что некоторые из представленных в книге результатов имеют смысл и являются общезначимыми для любого алфавита В частное ги, определения, которые мы даем в этом разделе, действительны во всех случаях.
В строках могут встречаться повторные знаки, например, в строке s AATGCA знак А появляется три раза. Длина строки 8, обозначаемая s|, равна числу знаков в строке. В данном примере |.s| = 6 Знак, занимающий г-ю позицию в строке з, обозначают «[г]. Индексы знаков — цифры от 1 до |в|. Снова обращаясь к тому же примеру, мы имеем: s[l] = A, s[2] = A, s[3j = Т и т.д. Существует также строка нулевой длины, называемая пустой строкой Пустую строку обозначают специальным символом е.
Несмотря на то, что термины строка и последовательность имеют тождественное значение, термины подстрока и подпоследовательность выражают различные понятия. Подпоследовательностью строки s называют последовательность, которая может быть получена путем удаления некоторых знаков из строки в. Например, последовательность ТТТ является
62
Глава 2
подпоследовательностью строки АТАТАТ, а последовательность ТААА — не является Пустую строку можно считать подпоследовательностью любой строки. Если строка t является подпоследовательностью строки s, то говорят, что s — надпоследовательность строки t.
В отличие от понятия подпоследовательности, подстрока последовательности s — это строка, образованная последовательными знаками строки я, стоящими в том же порядке, в котором они расположены в самой строке s. Например, подстрокой последовательности AGTACA можно считать строку ТАС, но не TTGAC. Быть подстрокой некоторой строки также означает быть подпоследовательностью но не все подпоследовательности можно считать подстроками. Если последовательность t является подстрокой последовательности s, то говорят, что s — надет рока последовательности t.
Иногда подстрока w появляется в строке и несколько раз, например, когда w = ТТ, а и = CTTTAGCATTAA. Иногда требуется различать такие случаи, и для этого существует понятие интервала. Интервал строки s — это такой набор последовательных индексов г .. .у], что 1 г j + 1 С |s| +1. Интервал включает в себя все индексы между г и j, включая и сами индексы г и j. Для интервала г. .у] строки s, запись вида ,ч|г... j] обозначает подстроку s[i]s[i + 1]... s[j| строки s при г С j, и пустую строку — при г = j + 1 Поэтому для любой подстроки I строки s существует по крайней мерс один интервал г... j] строки s, где t = s[i.. .j].
Сцепление двух строк s и t обозначают st и образуют присоединением всех знаков строки t к концу строки s в порядке их появления в t. Например, если s = GGCTA и t СААС, то st - GGCTACAAC. Длина сцепления st равна |s|+|t|. Сцепление нескольких копий одной и той же строки я обозначают возведением я в соответствующую степень — например, я = sss.
Префиксом строки s называют любую подстроку s вида s[l...j], где 0 С j $ |s|. Мы допускаем j = 0 и определяем подстроку s[l . О как пустую строку, которая вместе с тем является префиксом строки s. Обратите внимание, что строка t является префиксом строки s тогда и только тогда, когда существует некоторая строка и, такая, что s = tu. Иногда необходимо обратиться к префиксу строки s, содержащему точно к знаков, где О /с |s|, тогда для этой подстроки мы используем обозначение prefix(s, к).
Аналогично суффикс строки s подстрока вила ,s|z... [s|] для некоторого г, где 1 г |s| + 1. Мы допускаем i = |s| + 1, и в данном случае s[|s| + 1 .. |s|] обозначает пустую строку. Сзрока t является суффиксом строки s тогда и только тогда, когда существует некоторая строка и.
2.2. ГРАФЫ
63
такая, что s = ut. Выражение .suffix(.s, к) обозначает уникальный суффикс строки S, содержащий точно к знаков, где О С к |s|.
Облитератор. Все строки s удовлетворяют условию |s|	0. Чтобы
упростить некоторые аргументы, мы постулируем существование специ альной строки к, такой, что

Эта строка действует как курсор, стирающий знаки, с которыми он соприкасается при сцеплении, и таким образом укорачивает строку. Например,
KGCTAGT = CTAGT.
Интересно отметить, что полученный результаз — суффикс первоначальной строки. Вообще, сцепление с облитсразором к, стоящим в какой-либо степени, может быть использовано в качестве альтернативной формы обозначения префиксов, суффиксов, а также подстрок в целом:
prefix(s, к) = fc, suffixes, к) = к'®' fc.s,
Однако в использовании облитератора есть один недостаток в при сутствии к сцепление теряет свойство сочетательности. Например,
(ATCk)GTC = ATGTC.
тогда как
ATC(kGTC) = АТСТС.
Следовательно, значение выражения aTCkGTC без скобок не является однозначно определенным. Однако следующее равенство по-прежнему верно
|st| = |s| + |t|,
где s и t — общие выражения для строк, в которых допустимо присутствие облитератора к.
2.2. ГРАФЫ
Граф может быть описан при помощи двух множеств. Одно из них — V, множество узлов, или вершин графа; другое Е, множество его ребер,
64
Глава 2
Рис. 2.1. Примеры графов: а — неориентированный граф; б — орграф
которое является также множеством различных пар вершин. Графы обозначают записью вида G = (V,E), его вершины — буквами и, v или ш, а ребра — буквой е или парами вершин в круглых скобках, например (u, v). Граф может быть неориентированным, тогда его ребра представляют собой неупорядоченные пары вершин ((u, v) = (v, и)), или ориентированным, и тогда его ребра — упорядоченные пары вершин {(u,v) ф (у, и)). Когда мы упоминаем графы в остальных разделах этой книги без указания дополнительных характеристик, мы подразумеваем неориентированный граф; в этом разделе термин «граф» означает, что утверждение касается как ориентированных, так и неориентированных графов. Хотя графы — нс более чем абстрактные математические объекты, их обычно представляют в виде топологических схем (см. пример на рис. 2.1). Если нс оговорено противное, то все графы в этой книге — простые графы, а это значит, что они не содержат петель (то есть ребер вида (и, и)) и также кратных ребер между одной парой вершин (здесь следует обратить внимание на то, что в ориентированном графе ребра (u, v) и (у, и) не являются кратными). Число вершин графа мы обозначаем как |V| или п, а число ребер — как |Е?| или т.
Говорят, что точки и и v ребра (u, и) — его конечные точки. Также говорят, что точки и и v инцидентны ребру (y,v), а ребро (и, и) инцидентно точкам и и V. Если (и, и) — ориентированное ребро, то точка и — хвост этого ребра, a v — его голова. Если и и v — конечные точки неориентированного ребра, то говорят, что они смежные. Степенью вершины v неориентированного графа считают число смежных с ней вершин. В случае ориентированных графов (орграфов) вершина v имеет полустепень исхода, которая показывает число ребер вида (у, х), и полустепень захода, которая равна числу ребер вида (т, г). Например, степень вершины Т’з на рис. 2.1 равна трем, а степень вершины vg — единице. Полустепень захода вершины из равна единице, а ее же полустепень исхода — двум.
Во взвешенном графе к каждому ребру приписано некоторое вещественное число. В разных литературных источниках и в зависимости от
2.2. ГРАФЫ
65
контекста, вес ребра (u. v) называют его стоимостью, расстоянием между точками и и v или же просто весом.
Рассматривая графы G = (V, Е) и G' = (V, Е'), мы говорим, что граф G' является подграфом G, если V' С V и Е' С Е. Если граф G' является подграфом G, но G' G, то мы говорим, что G' является собственным подграфом графа G. Если G' является подграфом G и при этом V = V, то мы говорим, что граф G' является остовным подграфом G. Если V — множество всех вершин, инцидентных некоторому ребру данного графа Е', то мы говорим, что граф G' индуцирован графом Е'. Наоборот, если Е' является множеством ребер, обе конечные точки которых принадлежат данному множеству V, то мы говорим, что граф G' индуцирован графом V.
Путь в графе представляет собой список различных вершин (vj, v%,  ., Vk), таких, что при 1 г < к каждая пара соединенных между собой вершин (ц,, является ребром этого графа. Цикл в орграфе — это путь, для которого к > 1 и V] = iy. Цикл в неориентированном графе — такой путь, что г>1 = Vk и никакое ребро не повторяется. Если не оговорено противное, то все упоминаемые в данной книге циклы простые; это означает, что все вершины цикла, кроме первой и последней, различны. Пример (простого) цикла в неориентированном графе — цикл (vi,U2,^3,^i) на рис. 2.1. Если между вершинами и и v существует путь, то говорят, что вершина v достижима из вершины и. Вес пути во взвешенных графах — это сумма весов входящих в него ребер.
Если каждая вершина неориентированного графа G достижима из любой другой вершины, то говорят, что граф связный. Когда граф не связен, мы можем найти его связные компоненты. Понятие связного компонента интуитивно. Например, на рис. 2.1, а показан неориентированный граф с двумя связными компонентами. Можно дать и более формальное определение: множество связных компонентов графа G является таким множеством всех связных подграфов G, что никакой элемент множества не является подграфом другого элемента этого множества. В случае орграфов мы говорим, что граф может быть сильно связным, слабо связным или несвязным. В сильно связном графе каждая вершина может быть достижима из любой другой вершины. В слабо связном графе это условие выполнимо, только если мы игнорируем направления ребер (таким образом, основной неориентированный граф связен); пример такого орграфа см. на рис. 2.1, б. Если ни одно из этих двух условий не выполняется, граф несвязен.
Теория графов подразделяет все графы на классы согласно некоторым свойствам. Вот несколько важных примеров:
•	ациклический граф — граф без циклов.
66
Глава 2
•	полный граф граф, где для каждой пары вершин v и и> справедливо выражение (v, w) е Е (и также выражение (w. v) е Е в случае орграфов).
•	двудольный граф — граф, вершины которого разделены на такие два нсперссекающихся подмножества U и V, что одна из конечных точек любого ребра принадлежит подмножеству U, а другая — подмножеству V.
•	дерево — ациклический и связный граф. Граф, связные компоненты которого в свою очередь являются деревьями, называют 1есом.
Деревья образуют важный класс графов, для которого разработана особая терминология. Каждый узел дерева, имеюший степень 1, называют листом. Все остальные узлы дерева — его внутренние уллы. Дерево может быть корневым, что означает, что один из его узлов выделяют и называют корнем (обозначают г). Если мы рассматриваем некоторый узел и и произвольный узел V, находящийся на пути от и к корню г, то мы говорим, что v — предок узла и, а и — потомок узла ц; если узлы и и v смежны, то i' называют родителем узла и, а и — сыном узла v. Листья не имеют сыновей, а корень не имеет родителя. Число ребер на пути от узла v к корню г называют глубиной узла v. Наинилший общий предок узлов и и v — это самый глубокий узел, который является общим предком этих узлов.
Другой важный класс графов в вычислительной биологии — класс графов интервалов, или интервальных графов. Интервальный граф G = (V, Е) представляет собой неориентированный граф, образованный множеством интервалов С на вещественной оси. Каждому интервалу множества С соответствует вершина графа G; при этом ребро между вершинами и и г мы проводим тогда и только тогда, когда их интервалы имеют непустое пересечение.
Ниже мы приводим несколько важных задач с графами, которые особенно важны для предмета этой книги:
1.	В заданном ориентированном или неориентированном графе необходимо найти цикл, который включал бы в себя вес ребра графа, но чтобы каждое ребро графа входило в него только один раз (вершины могут повторяться). Графы, в которых можно найти такой цикл, называют Эйлеровыми. В другом варианте этой задачи требуется найти путь в графе, соблюдая то же условие (в таком случае говорят, что граф содержит Эйлеров путь).
2.	Имея ориентированный или неориентированный граф, нужно найти в нем такой цикл, чтобы каждая вершина графа принадлежала этому циклу, но входила в него только один раз (кроме первой и последней вершины). Графы, для которых это условие выполнимо, называют Гамильтоновыми. В другом варианте этой задачи требуется найти путь, пролегающий через
2.2. ГРАФЫ
67
все вершины графа, но так, чтобы каждая вершина появлялась в этом пути только один раз (говорят, что такой граф содержит Гамильтонов путь). Еще один вариант этой задачи определен на взвешенных графах: необходимо найти Гамильтонов цикл минимального веса. Эта задача известна также как задача коммивояжера, поскольку города могут быть представлены вершинами, дороги - ребрами графа, а коммивояжеры, будем надеяться, заинтересованы в сокращении расстояния, которое они проходят при посещении множества городов.
3.	В неориентированном взвешенном связном графе желательно найти такое остовнос дерево, чтобы сумма весов его ребер была минимальной среди всех возможных остовных деревьев. Эта задача получила название «задача о минимальном остовном дереве».
4.	Требуется найти минимальное число красок, необходимых для получения раскраски заданного неориентированного графа. Раскрашивание вершин (или просто раскраска) графа представляет собой функцию, которая приписывает целые числа (краски) к вершинам так, чтобы никакие две смежные вершины не были окрашены в одинаковый цвет.
5.	Имея неориентированный граф, надлежит найти для него паросо-четание максимальной мощности. Паросочетанис — такое подмножество ребер Л/, что никакие два ребра в М не имеют общую конечную точку. Вариант этой задачи для взвешенных графов требует найти паросочетанис с максимальным суммарным весом.
В компьютерных программах графы могут быть представлены множеством способов. Один из наиболее известных — представление с помощью матрицы смежности. Для матрицы Л/, содержащей п х п элементов, принимаем Л/у = 1, если (i,j) е Е; в противном случае Л/у = 0. Если граф взвешен, то мы заменяем единицы в матрице весом каждого соответствующего ребра. Для такого представления используется порядка п2 ячеек памяти. Другой способ представления графов — описание с помощью списка смежных вершин. В данном случае мы храним все вершины в форме списка и для каждой вершины в списке мы создаем дополнительный список, содержащий смежные с ней вершины. В случае орграфов необходимо иметь дна списка на вершину и: один для выходящих из г1 ребер, и другой — для ребер, входящих в v. При таком представлении необходимо использовать порядка п + тп ячеек памяти. Когда число ребер в графе относительно мало, списки смежных вершин имеют преимущество по сравнению с матрицами смежности, состоящее в использовании меньшего объема памяти. Такие 1 рафы называют разреженными. Когда число ребер т намного превышает число вершин н, мы говорим, что граф насыщен.
68
ГЛАВА 2
2.3. АЛГОРИТМЫ
В общем смысле слово «алгоритм» означает вполне определенную конечную последовательность шагов, предназначенную для решения хорошо структурированной задачи. Простейший пример алгоритма — последовательность шагов при умножении двух целых чисел. Алгоритмы предназначены для выполнения людьми или машинами. Важно определить заранее, кто или что будет выполнять разрабатываемый алгоритм, потому что именно это придаст алгоритму качество «вполне определенного». В этой книге мы прежде всего интересуемся алгоритмами, понятными для людей, но которые могли бы (с дополнительными деталями) быть выполнены машинами. Под «машиной» мы подразумеваем не какую-либо конкретную модель ЭВМ, а абстракцию, которую назовем моделью машины с произвольным доступом (МПД). Скажем вкратце, что такая машина содержит следующие компоненты: один процессор, рассчитанный на пошаговое выполнение операций; конечную памя гь (набор слов); и конечный набор регистров (еще один набор слов). В каждом слове может храниться отдельное целое или вещественное число. Процессор выполняет шаги программы, то есть алгоритма, закодированного с помощью машинных команд. Нередко мы злоупотребляем термином машинная команда и допускаем неформальные команды, которые предназначены для людей, но требуют значительного расширения (детального формального описания) прежде, чем они могут быть выполнены на настоящем компьютере.
В этой книге алгоритмы описаны в виде обычных предложений и (затем) на языке псевдокодов. Одна из целей представления такого псевдокода состоит в том, чтобы помочь читателям, желающим применить описанные здесь алгоритмы на практике. Мы не даем формального описания этого кода, а просто объясняем его со ссылкой на известные языки программирования, такие как «Си» или «Паскаль». Ниже приведены условные обозначения, принятые в этой книге:
1.	Ключевое слово Algorithm стоит в начале псевдокодов описания алгоритмов.
2.	Ключевые слова input: и output: использованы для обозначения, соответственно, входа и выхода алгоритма.
3.	Ключевые слова набраны в полужирном начертании.
4.	Имена переменных, процедур и функций набраны курсивом.
5.	Константы набраны капителью.
6.	Комментарии начинаются с символа И, продолжаются до конца строки и набраны наклонным шрифтом.
2.3. АЛГОРИТМЫ
69
7.	Неформальные операторы и условия набраны обычным шрифтом.
8.	Как правило, различные операторы находятся в разных строках; точки с запятой используются только в качестве разделителя операторов, находящихся в одной строке Если неформальный оператор занимает более одной строки, то следующая строка начинается абзацным отступом
9.	Блочные структуры выделяются отступом, без ключевых слов begin и end. Иногда мы используем комментарии, чтобы сигнализировать конец длинного блока.
10.	Массивы обозначены квадратными скобками (например, И[г]), а записи — точкой (например, R.field).
11	Параметры в обращении к процедуре или функции заключены в круглые скобки и отделены запятыми.
Ниже мы описываем формальные операторы, которые мы используем в наших алгоритмах. Большинство из них подобно тем, которые встречаются в любом современном процедурноориентированном компьютерном языке.
1.	Оператор присвоения «—, например: а <— а + 1.
2.	Оператор организации цикла for, например: for г <— 1 to п do. Его разновидности включают ключевое слово dowiito и выражают, если употребить неформальный термин, повторение какой-либо операции (например: for (для) каждого элемента множества S do (выполнить))
3.	Оператор условия if <условие> then... else....
4.	Оператор цикла while <условие> do....
5.	Оператор цикла repeat... until <условие>.
6.	Оператор выхода из цикла break, который останавливает выполнение оператора окружения самого внутреннего цикла.
7.	Оператор возврата return, который останавливает выполнение процедуры в том месте, где он появляется, и возвращает текущий ответ.
Условие> в представленных здесь операторах может быть задано как формально, так и неформально.
Алгоритмы предназначены для решения всех вариантов задач, для которых они были разработаны; если алгоритм отвечает данному требованию, го он считается правильным. Следовательно, для любого алгоритма в первую очередь имеет значение гарантия его правильности. Другой важной характеристикой алгоритмов является время счета. За время счета алгоритма принято число машинных команд, которые он выполняет при решении
70
Глава 2
определенной задачи. Таким образом, предмет анализа алгоритма включает в себя две составляющие: предоставление гарантии, или доказательство его правильности, и оценку времени счета.
Вместо подсчета точного числа машинных команд мы оцениваем время счета алгоритма. Это связано с тем, что мы хотим иметь представление относительно поведения алгоритма при решении любого варианта задачи. Чтобы получить такую информацию, необходимо следовать двум правилам. Первое - время счета алгоритма следует определять для наихудшего варианта задачи. Второе время счета должно зависеть от объема решаемого варианта задачи. Таким образом, вместо числа мы получаем функцию времени счета. Например, мы можем сказать, что время счета алгоритма А равно 5п2 + Зп + 72, где переменная п отражает объем задачи. Функции времени счета упрощают, опуская все константы и члены более низкого порядка. В приведенном выше примере Зп и 72 члены более низкого порядка по сравнению с величиной т?. Следовательно, время счета алгоритма А можно считать равным О(п2), где буква О (от слова overall — общее, или полное время счета) означает то, что мы не учитываем константы и члены более низкого порядка. Благодаря этому мы сможем сравнивать алгоритмы только на основе их асимптотического поведения. Таким образом, алгоритм О(п2) может быть быстрее алгоритма О(п) при малых значениях п; однако мы знаем, что при достаточно больших значениях п быстрее будет алгоритм О(п). Между прочим, алгоритмы, время счета которых равно О(п), называют линейными; если же их время счета равно О(п2), то они квадратичны.
Из сказанного в предыдущем параграфе ясно, что для сравнения времени счета алгоритмов, выраженного через функцию О, мы должны уметь сравнивать скорость роста функций, то есть, рассматривая две функции, действительные для всех целых вещественных чисел, отвечать на вопрос: Какая из этих функций растет быстрее? Мы предполагаем, что читатель без труда справится с задачей сравнения простых функций, пользуясь следующими формальными определениями. Сравнивая две функции /(п) и </(п), действительные для всех целых вещественных чисел, мы говорим, что д(п) = О(/(п)), если существуют такие константы с и по, что для всех п > по справедливо неравенство д(п) с/(п). Другими словами, если g(n) =	то мы знаем, что функция д(п) растет не быстрее, чем
функция f(n); функция f является верхним пределом функции д. Например, д(п) = logn, а /(п) = у/п. Учитывая, что мы отбрасываем константы, основание логарифмов (если оно постоянно) для функции О становится несущественным, в силу того, что, когда а и Ь постоянны, функции loga п и log6 п связаны через постоянный множитель.
2.3. АЛГОРИТМЫ
71
Иногда желательно описать функцию д(п) как растущую по крайней мере с такой же скоростью, как некоторая другая функция /(п). В этом случае мы принимаем д(п) = Q(/(n)). Формально это означает, что существуют такие константы с и по, что для всех п > по выполняется неравенство д(п) cf(n). Функция f представляет собой нижний предел функции д. Когда функция д(п) одновременно равна О(/(п)) и П(/(п)), мы говорим, что g(ri) = 0(/(п)).
В этой книге мы прежде всего рассматриваем эффективные алгоритмы. Алгоритм эффективен для решения задачи объемом п, если его время счета ограничено многочленом р(п). Алгоритм, время счета которого равно П(2П), считают неэффективным, так как функция 2П растет быстрее любого многочлена степени п.
Одна из главных проблем, волнующих специалистов в области теоретического программирования, заключается в том, чтобы классифицировать задачи на два класса: задачи, для решения которых существуют эффективные алгоритмы (класс П) и задачи, для которых такие алгоритмы нс существуют, — то есть провести так называемый анализ сложности задач. Однако существует очень важный класс задач, для которых проблема классификации до сих пор так и не была решена. Пока что никому нс удалось найти эффективные алгоритмы для их решения, но также не было показано, что подобных алгоритмов не существует. Это НП-полные задачи1. Они принадлежат к классу НП - классу задач, решение которых, после того как его нашли, может быть проверено методом полиномиальной оценки временных затрат. Этот класс включает в себя класс П в качестве подкласса. В очень строгом смысле, НП-полные задачи - самые трудные задачи в классе НП. Это означает, что любой вариант любой задачи класса НП может быть преобразован за полиномиальное время к варианту НП-полной задачи. Частный случай этого утверждения гласит, что при полиномиальных преобразованиях все НП-полные задачи равносильны друг другу. А это, в свою очередь, означает, что если для решения какой-либо одной НП-полной задачи найден алгоритм с полиномиальным временем счета, то все НП-полные задачи могут быть решены за полиномиальное время.
Упомянутая выше нерешенная проблема известна как задача П = НП. )то выражение означает вопрос: Могут ли все задачи класса НП быть решены за полиномиальное время? Если П = НП, то существуют эффективные алгоритмы для каждой задачи класса НП и, в частности, для НП-полных
'Аббревиатура НП образована оз названия «недетерминированный полиномиальный» и означает, что задачи класса НП могут быть решены на недетерминированной машине Тьюринга за время, определяемое полиномиальной функцией, аргументом которой является размер входа задачи. — Прим, перев.
72
Глава 2
задач; если П НП, то все НП-полные задачи являются трудными для вычислений, а П - собственный подкласс НП. Большинство специалистов по теории алгоритмов полагают, что последнее утверждение верно.
НП-полные задачи встречаются в этой книге довольно часто. Еще один термин из этой области — НП-трудная задача. Чтобы объяснить различие между задачами этих двух классов, мы должны несколько уточнить наши утверждения о классах задач, высказанные чуть выше. Строго говоря, классы П и НП включают в себя только задачи принятия решений', ответ должен быть либо «да», либо «нет». Типичный пример -- задача, в которой требуется решить, является ли заданный граф Гамильтоновым. Однако большинство задач, которые мы встретим в этой книге, представляют собой задачи оптимизации — это означает, что есть некоторая функция, соотнесенная с задачей, и мы хотим найти решение, которое минимизирует или максимизирует значение этой функции. Типичный пример задачи оптимизации — задача коммивояжера, упомянутая в разделе 2.2. Задача оптимизации может быть преобразована в задачу принятия решений путем включения в ее условие параметра К и постановки вопроса о том, существует ли решение, значение которого К (в случае задач минимизации) или К (в случае задач максимизации). Этот прием позволяет нам говорить о варианте с принятием решений для каждой задачи оптимизации и, следовательно, пытаться классифицировать эту задачу как принадлежащую либо к классу П, либо к классу НП. Таким образом можно показать, что вариант с принятием решений для задачи коммивояжера — НП-полная задача. Но что можно сказать о самой задаче коммивояжера? Она не принадлежит к классу НП, так как не является задачей принятия решений; но совершенно очевидно, что она по крайней мере столь же трудна, как и ее вариант с принятием решений. Задачи, которые являются по крайней мере столь же трудными, как НП-полная задача, но которые не принадлежат к классу НП, называют НП-трудными. Все задачи оптимизации, варианты с принятием решений которых НП-полные, сами являются НП-трудными.
Для задач, описанных в разделе 2.2, известно следующее. Задача, в которой требуется решить, является ли заданный граф Эйлеровым, принадлежит к классу П, учитывая, что она может быть задана в виде варианта со временем счета О(п + т). Задача, в которой требуется решить, является ли граф Гамильтоновым, является НП-полной. Как уже было упомянуто выше, задача коммивояжера — НП-трудная задача. Минимальное остовное дерево может быть найдено за время О(п2), и, следовательно, (ее вариант с принятием решений) принадлежит к классу П. Раскрашивание вершин — еще одна НП-трудная задача. Наконец, задачи о совпадении могут быть решены за полиномиальное время.
2 3. АЛГОРИТМЫ
73
Когда мы впервые сталкиваемся с задачей X неизвестной сложности, мы имеем два варианта выбора: мы можем попытаться найти алгоритм, который решает задачу X эффективно (то есть доказать, что эта задача принадлежит к классу П), или же мы можем попытаться доказать, что задача X является НП-полной. Ниже приведены краткие рекомендации относительно того, как нужно поступать при решении подобной проблемы. Сначала мы должны доказать, что задача принадлежит к классу НП (то есть, что найденное для нее решение может быть проверено методом полиномиальной оценки временных затрат). Затем мы должны доказать, что решение какой-либо известной НП-полной задачи Y может быть сведено к решению задачи X. Для этого нужно показать, что если мы действительно имеем полиномиальный алгоритм решения задачи X, то мы могли бы его использовать и для решения задачи Y также за полиномиальное время. Как правило, самая трудная часть в доказательствах НП-полноты отыскание НП-полной задачи Y, наиболее легко сводимой к задаче X. Тот факт, что уже более тысячи задач были классифицированы как НП-полные, свидетельствует о том, что эта проблема стала теперь значительно легче.
Что мы должны делать, когда сталкиваемся с НП-полной или НП-труд-ной задачей? Вот несколько вариантов действий:
1.	Проверить, действительно ли варианты задачи, которые необходимо решить, являются общими. В некоторых случаях решение НП-трудной задачи с ограниченным классом условий может быть найдено за полиномиальное время. Раскрашивание графа — классический пример такой задачи. Отыскание минимальной раскраски для графов общего вида НП-трудная задача, но если по условию исходные графы могут быть только двудольными, то она может быть решена за полиномиальное время (любой двудольный граф может быть раскрашен самое большее двумя красками).
2.	Изобрести исчерпывающий алгоритм поиска (то есть алгоритм метода перебора всех возможных решений и выбора лучшего). Как правило, на практике такие алгоритмы применимы только для маленьких задач, поскольку их время счета растет экспоненциально.
3.	Изобрести алгоритм аппроксимации с полиномиальным временем счета. Такой алгоритм находит решение, гарантированно близкое к оптимальному, но не обязательно оптимальное. Гарантия может быть выражена в форме отношения между решением, найденным алгоритмом, и оптимальным решением. Например, для одного варианта задачи коммивояжера существует алгоритм аппроксимации, который гарантированно выдает решение, вес которого не более чем в 1,5 раза превышает оптимальное значение. Эта
74
Глава 2
гарантия может иметь, либо не иметь практического значения — в зависимости от самой гарантии и решаемой задачи.
4.	Изобрести различные эвристики Под эвристиками мы понимаем полиномиальные алгоритмы без какой бы то ни было гарантии касательно точности решения. Во многих случаях эвристики имеют удовлетворительные характеристики и широко используемы на практике.
Оставим НП-полные задачи и опишем несколько других важных задач, для решения которых были найдены эффективные алгоритмы. В первой из них требуется проверить неориентированный граф на связность Эту задачу можно решить, используя хорошо известные методы обхода графов. Один из них — метод поиска в глубину, начав обход с произвольной вершины v, нужно посетить сначала ее, затем зайти в одну из еще не пройденных смежных с нею вершин. Мы повторяем этот процесс до тех пор, пока все вершины не будут пройдены или пока не застрянем (то есть когда все достижимые вершины уже пройдены, но в графе остались еще не пройденные вершины). В первом случае граф связен, во втором нет. Другой известный метод обхода — метод поиска в ширину, в котором для обработки вершин мы используем очередь. Мы обходим все соседние с первой вершины в порядке очереди, после чего помещаем их все в очередь для дальнейшего исследования Затем мы выбираем следующую вершину из очереди, и так далее. Время счета обоих алгоритмов равно О(п + т). Эти же методы могут быть использованы для решения многих других задач теории графов; с помощью метода поиска в глубину, в частности, можно проверять графы на ацикличность. Используя один из рассмотренных методов, можно, кроме того, совершать обход деревьев. Связность дерева не вызывает сомнений, однако эти методы обеспечивают систематический и удобный способ обхода его узлов.
Задача о минимальном остовном дереве (МОД) также может быть решена эффективно, хотя и при помощи методов, намного более сложных, чем простой обход вершин. В графе на п вершинах мы можем найти МОД с помощью простого алгоритма за время О(п2). Идея заключается в том, чтобы начинать обход с произвольной вершины и выращивать из нее дерево, добавляя ребра с наименьшим весом, соединяющие вершины дерева с вершинами, еще не принадлежащими дереву. Удивительно, что такая простая идея работает, ведь мы выбираем ребра, основываясь лишь на том, что кажется «локально» наилучшим выбором. Алгоритмы, в основу которых заложены подобные методы, называют жадны ни.
Еще одна задача класса П гадача сортировки. Для заданного вектора, содержащего п различных чисел, необходимо сортировать их в порядке
2.3. АЛГОРИТМЫ
75
возрастания или убывания. Можно показать, что при произвольном выборе чисел сортировка потребует время ©(nlogn). Если числа ограничены некоторой постоянной или даже многочленом постоянной степени (например, д3), то задача может быть решена за линейное время.
Мы завершаем этот раздел, упоминая несколько идей и методов, касающихся построения алгоритмов. Индукция один из таких методов. Если толковать этот термин широко, то идея данного метода заключается в следующем. Рассматривая задачу, варианты которой имеют размер п, мы начинаем с поиска способа решения очень маленьких вариантов задачи (например сортировки числа 1), предполагая при этом, что способ решения вариантов размером п — 1 заранее известен. Тогда мы видим, что необходимо сделать для того, чтобы расширить решение вариантов размером п - 1 к вариантам размером п. Во многих случаях такое расширение осуществить достаточно просто, и путем математической индукции можно показать, что мы решили задачу в целом. При построении алгоритмов по данной методике результат часто выражается в рекурсивном виде. В языках программирования рекурсивной считается функция, которая обращается сама к себе (прямо или косвенно). На рис. 2.2. приведен пример рекурсивного алгоритма.
Algorithm RSort1
input: массив А с п различными элементами output: массив А, сортированный по возрастанию if /г - 1 then
return А
else
х <— mm(A) // mm возвращает наименьший элемент
Remove х from А
RSort(A) И рекурсивное обращение
return х : А // сцепление х с началом А
Рис. 2.2. Рекурсивный алгоритм сортировки массива из п элементов
Методика построения алгоритмов, известная как динамическое программирование, особенно важна для этой книги. Суть методики заключается в том, что мы находим решение задачи, постепенно решая многие меньшие и подобные ей подзадачи. Эту методику можно рассматривать как частный случай метода индукции. Конкретные примеры приведены в главе 3 Обратите внимание, что нет никакой связи между этой методикой и компьютерным программированием в современном смысле этого слова Она получила свое название по историческим причинам.
’Рекурсивная сортировка. Прим иерее
76
Глава 2
Использование структур данных — другая идея, применяемая в построении алгоритмов. Это структуры, предназначенные для хранения данных и эффективного выполнения некоторых операций наподобие операций поиска или ввода данных. Обычно на эти операции затрачивается постоянное время или время O(logn), где п — число хранимых элементов данных. Типы используемых структур данных меняются в зависимости от задачи.
К самым известным структурам данных относятся специальные виды списков, называемые стеками и очередями, хэш-таблицами и деревьями дихотомического поиска. Читатели, незнакомые с этими структурами, могут обратиться к книгам, приведенным в библиографических примечаниях.
Одна из часто упоминаемых в этой книге структур, хотя и не столь известная, как указанные выше, — структура данных, получившая название леса непересекающихся множеств. Она поддерживает действия с динамическим семейством непересекающихся множеств, в результате которых первоначально каждый элемент данных находится в отдельном множестве, а по мере выполнения алгоритма множества постепенно объединяются друг с другом. Эта структура данных поддерживает три основных операции: MakeSet(a), которая помещает элемент а в отдельное множество; FindSedp.), которая возвращает множество, которому в настоящее время принадлежит элемент а; и Union(S, Т), которая объединяет множества S и Т (по этой причине структуры данных, поддерживающие такие операции, также называют структурами объединения-поиска данных). Если мы имеем в сумме п элементов, то лес непересекающихся множеств вместе с двумя другими методами позволяет выполнить ряд т > п операций FindSet и/или Union за время О(та{т,п)), где а(т, п) — функция, которая растет настолько медленно, что для всех практических целей ее можно счесть постоянной.
УПРАЖНЕНИЯ
1.	Сколько различных подстрок содержится в строке АСТАС? А сколько различных подпоследовательностей и интервалов?
2.	Постройте и проанализируйте алгоритм проверки того, является ли строка р подстрокой данной строки t. Можете ли вы построить алгоритм, время счета которого равно О(|р| + |t|)?
3.	Используя любимый язык программирования, напишите компьютерную программу, которая принимает на вход последовательность ДНК любого размера и возвращает ее обратный комплемент.
4.	Сколько ребер содержит полный орграф на п вершинах? А сколько, если этот граф неориентирован? Сколько ребер имеет дерево с п узлами?
УПРАЖНЕНИЯ
77
5.	Покажите, что в неориентированном графе G = (V,E) полная степень 'И1') = где степень вершины v.
6.	Опишите графы, изображенные на рис. 2.I., с помощью матрицы смежности и списка смежных вершин.
7	Объясните, каким образом при малых значениях п алгоритм О(п2) может быть быстрее алгоритма О(п)
8.	Допустим, что для решения одной задачи, размер которой определяется параметром п, вы построили два алгоритма: ,4| и Л2. Если время счета алгоритма Ai равно О(п/ logn), а время счета алгоритма А> равно то который из этих двух алгоритмов асимптотически быстрее?
9.	Леонард Эйлер показал, что существует такой связный граф (Эйлеров), что все его вершины имеют четную степень. Основываясь на этом наблюдении, предложите алгоритм, который находит в заданном графе Эйлеров цикл, если таковой существует.
10	Покажите, что во взвешенном неориентированном графе, где стоимости всех ребер различны, минимальное остовное дерево уникально
11.	На основании информации, приведенной в разделах 2.9 и 2.10, постройте эффективный алгоритм решения задачи о минимальном остовном дереве. Проанализируйте свой алгоритм.
12	Топологическое упорядочение вершин орграфа G является таким, что на всех ребрах (и, v) вершина и появляется прежде вершины v. Топологическое упорядочение является вполне определенным только для ориентированных ациклических графов. Постройте и проанализируйте алгоритм топологического упорядочения ациклического орграфа G.
13	Допустим, что вы имеете структуру данных в виде леса нспсрссе-кающихся множеств. Используйте ее для построения алгоритма, определяющего связные компоненты неориентированного графа G. Сравните свой алгоритм с каким-либо другим, основанным на методе поиска в ширину или в глубину.
14	Предположим, что вам задали задачу X неизвестной сложности, но вам удалось свести ее к известной НП-полной задаче. Что вы можете сказать о сложности задачи X?
15.	Задача покрытия веришн определена для неориентированного графа G = (V,E), и в ней требуется найти такое минимальное множество вершин И С V, чтобы по крайней мере одна из конечных точек любого ребра < € Е принадлежала множеству И’. Для этой задачи напишите собственный вариант с принятием решений.
78
Глава 2
16.	Кчитй в графе G называют полный подграф графа G. Задача о клике определена для неориентированного графа G = (V, Е) и требует найти такое максимальное множество вершин С С V. чюбы множество С было кликой. Учитывая, что задача покрытия вершин, определенная в предыдущем упражнении, является НП-полной, покажите, что задача о клике также НП-полная.
17.	Учитывая, что задача о Гамильтоновом цикле НП-полная, покажите, что задача о Гамильтоновом пути между двумя произвольными вершинами и и г - также НП-полная.
18.	Алгоритм аппроксимации для задачи покрытия вершин (описанной в упражнении 15) следующий. Начинаем с пустого покрытия множества И . Возводим покрытие вершин, выбирая любое ребро (и, V) и добавляя ко множеству 1Г вершины и и V. Затем удаляем пит из графа G (то есть удаляем любые другие инцидентные к ним ребра) и повторяем эти шаги до тех пор, пока все ребра графа не будут покрыты. Покажите, что этот алгоритм находит такое покрытие вершин, размер которого превышает минимальное покрытие вершин не более чем вдвое.
19.	Постройте и проанализируйте исчерпывающий алгоритм поиска для задачи о Гамильтоновом цикле.
20.	Задача о ранце формулируется следующим образом. Задано множество объектов п, где объект I имеет вес wz, и положительное целое К (вместимость ранца); требуется определить, существует ли подмножество объектов, суммарный все которых в точности равен К. Это типичная НП-полная задача, но для се решения возможно построить алгоритм со временем счета О(пК). В этом нет никакого противоречия, потому что величина К может быть произвольно большой (например. 2П). и. следовательно, этот алгоритм не строго полиномиален. Постройте такой алгоритм, используя вышеописанный метод динамического программирования.
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
Книги Стивена [180], а также Крошемора и Риттера [39] посвящены исключительно алгоритмам обработки строк. Ахо [6] дает полезный обзор. Новая книга Гасфилда [85] должна быть особенно полезна для изучения вычислительной биологии.
Читателям, незнакомым с теорией графов, было бы желательно прочитать главу по этому предмету в учебнике по дискретной математике хотя бы на уровне колледжа. К этой категории можно отнести книгу Розена [163];
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
79
кроме того, она содержит ссылки на другие источники, посвященные теории графов Принятая нами система обозначений и описание теории графов во многом основаны на первой главе книги Тарджана [184].
Еще две превосходные книги по теории алгоритмов написали Ман-бср [ 129], а также Кормен, Лейсерсон и Ривест [37]. Манбер ставит акцент на описании метода индукции при построении алгоритмов, тогда как Кормен [37] обеспечивает более энциклопедический охват материала. В книгах Седгсвика [170], а также Тонне и Баеза-Ятеса [76] приведены удобные примеры алгоритмов для решения множества разнообразных задач.
Классическое описание НП-полных задач и общей теории НП-полноты можно найти у Гэри и Джонсона [68]. Более современная книга Пападимит-риу [151] охватывает общие вопросы сложности вычислений.
Глава 3
СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ И ПОИСК В БАЗАХ ДАННЫХ
В этой главе мы представляем некоторые из самых известных и наиболее часто используемых на практике методов сравнения последовательностей и поиска в базах данных. Сравнение последовательностей, несомненно, есть самая основная операция в вычислительной биологии. Именно к ней мы будем прямо или косвенно обращаться во всех последующих главах этой книги. Кроме того, эта операция в различных вариантах встречается в других разделах информатики.
3.1.	БИОЛОГИЧЕСКИЕ ОСНОВЫ СРАВНЕНИЯ
ПОСЛЕДОВАТЕЛЬНОСТЕЙ
Для чего же нужно сравнивать последовательности? И зачем для этого использовать компьютер? Каким образом можно сравнивать последователь ности с помощью компьютера? Это главные вопросы, которые мы будем рассматривать в этой главе. На первые два мы ответим в этом разделе, а последнему посвятим остальную часть настоящей тлавы.
Сравнение последовательностей — наиболее важная элементарная операция вычислительной биологии, служащая основанием для многих других, более сложных, манипуляций. Попросту говоря, эта операция состоит из поиска схожих и отличающихся частей последовательностей. Однако за этим, на первый взгляд простым, понятием скрывается большое число весьма разнообразных задач с многоликой формализацией, для эффективного решения которых иногда требуются особые структуры данных и специальные алгоритмы.
В качестве примеров мы приводим задачи, часто встречающиеся в вы числительной биологии В этих примерах мы используем два понятия, точные определения которых будут даны в последующих разделах. Первое —
3.1. БИОЛОГИЧЕСКИЕ ОСНОВЫ
81
понятие подобия двух последовательностей, определяющее меру того, насколько рассматриваемые последовательности подобны. Второе понятие — выравнивание двух последовательностей, выражающее способ, согласно которому одну из сравниваемых последовательностей помещают над другой, чтобы определить меру их соответствия, пропорциональную числу одинаковых знаков или подстрок в соответствующих позициях этих последовательностей. Кроме того, в приведенных ниже примерах задач (и во всей главе) используются сформулированные в разделе 2.1 основные понятия, касающиеся строк.
1.	Даны две последовательное i и знаков, взятых из одного алфавита; обе примерно одной длины (десятки тысяч знаков). Мы знаем, что эти последовательности почти тождественны и имеют лишь несколько одиночных различий типа вставок, удалений и замен знаков. Средняя частота таких различий низка - например, одно на каждую сотню знаков. Необходимо найти все позиции, в которых появляются эти различия.
2.	Мы имеем две последовательности знаков из одного алфавита, содержащие несколько сотен знаков каждая. Требуется ответить на вопрос, существует ли в первой последовательности некоторый префикс, который подобен суффиксу второй. Если ответ положительный, то такие префикс и суффикс должны быть воспроизведены в ответе.
3.	Условие задачи аналогично пункту 2, но теперь мы имеем несколько сотен последовательностей, которые необходимо сравнить (каждую со всеми остальными). Кроме того, мы знаем, что большая часть пар последовательностей нс связаны между собой генетически, то есть они нс будут иметь требуемой степени подобия.
4.	Рассматриваем две последовательности знаков из одного алфавита, состоящие из нескольких сот знаков каждая, и хотим знать, существуют ли две подстроки (каждая из своей последовательности), которые являются взаимно подобными.
5.	Задача аналогична п. 4, но вместо двух нам задана одна последовательность, которую мы будем сравнивать с тысячами других.
Задачи, подобные п. 1, встречаются, когда, например, один и тот же ген был секвенирован двумя разными лабораториями и нужно сравнить полученные результаты; или же когда какая-нибудь длинная последовательность дважды введена в компьютер и мы ищем возможные опечатки. Задачи, подобные п.
2 и п. 3, решают в контексте сборки фрагментов в программах, участвующих в расшифровке длинных последовательностей ДНК. Задачи, подобные п. 4
82
Глава 3
и п. 5, встречаются при поиске локальных подобий при помощи мощных баз данных последовательностей.
Далее в этой главе мы увидим, что для решения всех перечисленных выше задач может быть достаточно одной-единственной основной идеи, воплощенной в универсальном алгоритме. Однако это решение может оказаться не самым эффективным. Иногда для решения каждой конкретной задачи лучше подходят менее универсальные, но зато более быстрые методы.
Применение компьютеров едва ли требует обоснований, когда мы имеем дело с большим количеством данных, как, например, при поиске в крупных базах данных. И даже в тех случаях, когда сравнения возможно проводить «вручную», использование компьютеров безопаснее и удобнее, как показывают следующие примеры, взятые из статьи Смита [176].
Симс с группой сотрудников исследовал подобные области ДНК двух бактериофагов. В статье [173] они представили выравнивание между областями Н-гена фагов St-1 и G4, содержащее 11 совпадений (то есть 11 столбцов, в которых знаки обеих последовательностей совпадают). Процедура, которую они использовали для получения хороших выравниваний, была описана как «вставка случайных пробелов с целью максимизации гомологии [числа тождеств]». Однако Смит вместе с коллегами [176] отмстил выравнивание с 12-ю случаями совпадения, найденное с помощью компьютера, и которое, несомненно, было пропущено первой группой исследователей.
В статье [164] Розенберг и Корт описали результаты своих экспериментов по выравниванию 46-ти последовательностей промоторов различных организмов. Авторы построили множественное выравнивание путем выравнивания определенных областей, по предположению относительно инвариантных, и последующего расширения этого «затравочного» выравнивания в обоих направлениях без введения в него пробелов. Хотя построенное выравнивание было хорошо в целом, полученные из него попарные выравнивания были относительно плохими. При множественном выравнивании это случается довольно часто, но в данном случае Смит с группой коллег с помощью компьютера нашли выравнивание между двумя подстроками этих последовательностей, содержащее 44 одинаковых знака при общем количестве 45 знаков. Это, конечно, удивительно хорошее локальное выравнивание, и тот факт, что оно не было упомянуто Розенбергом и Кортом, опять-таки должен означать, что они не смогли найти его вручную.
Эги два примера показывают, что использование компьютеров позволяет обнаружить интересные подобия, которые могли бы остаться незамеченными.
3.2. СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ 83
3.2.	СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
В этом разделе мы изучим основные методы сравнения двух последовательностей. А именно, мы интересуемся отысканием оптимальных выравниваний между двумя последовательностями. На практике встречается несколько вариантов этой задачи, в зависимости от того, ищем ли мы выравнивания целых последовательностей или только их подстрок. Это ведет к определению понятий глобального и локального сравнения. Известен также третий вид сравнения где мы строим выравнивание не произвольных подстрок, а только префиксов и суффиксов данных последовательностей. Этот третий вид сравнения мы называем полуглобальным сравнением. Далее мы увидим, что все упомянутые здесь задачи могут быть решены эффективно методом динамического программирования.
3.2.1.	ГЛОБАЛЬНОЕ СРАВНЕНИЕ - ОСНОВНОЙ АЛГОРИТМ
Рассмотрим последовательности GACGGATTAG и GATCGGAATAG. Трудно не заметить, что фактически они выглядят очень подобными, и это становится более заметно, когда мы выравниваем их, поместив одну над другой следующим образом:
GA-CGGATTAG
(3.1) GATCGGAATAG.
Единственные отличия второй последовательности — дополнительный знак Т в третьей позиции слева, а также замена Т на А в четвертой позиции справа. Обратите внимание, что в первую последовательность мы вставили пробел (обозначенный черточкой), чтобы основания до и после него расположились точно над соответствующими основаниями второй после-ловательности.
Наша цель в этом разделе состоит в том, чтобы представить эффек-|ивный алгоритм, который оценивает две последовательности и определяет оп1имальное выравнивание между ними, как мы сделали в приведенном выше примере. Конечно, прежде чем подойти к решению самой задачи выравнивания, мы должны дать определение «оптимального» выравнивания. Чтобы упростить рассуждения, мы примем простой формализм; позже мы ладим возможные обобщения.
Начнем с точного определения того, что мы подразумеваем под выравниванием двух последовательностей. Исследуемые последовательности moi ут иметь различные размеры. Как было показано в последнем примере, выравнивания могут содержать пробелы в любой из последовательностей.
84
ГЛАВА 3
Таким образом, мы определяем выравнивание как вставку пробелов в произвольных позициях последовательности, с тем чтобы в результате длина этих последовательностей совпала. Удлиненные до одного размера последовательности могут быть расположены одна над другой, образуя соответствие между знаками или пробелами первой последовательности и знаками или пробелами второй последовательности. При этом никакой пробел в одной последовательности не должен быть сопоставлен с пробелом в другой. Пробелы могут быть вставлены даже в начале или в конце обеих последовательностей.
Построив выравнивание между двумя последовательностями, мы можем назначить ему счет следующим образом. Каждому столбцу выравнивания в зависимости от его содержания мы присваиваем некоторую величину (очко), и тогда полный счет выравнивания будет равен сумме очков, назначенных его столбцам. Если столбец содержит два одинаковых знака, то ему будет назначено +1 очко (совпадение). Различные знаки дадут —1 очко (несовпадение). Наконец, пробел в столбце понижает его счет до —2. Оптимальным будет считаться выравнивание с максимальным полным счетом. Этот максимальный счет будем называть подобием между этими двумя последовательностями и обозначать как функцию sim(s, t), где suf — выравниваемые последовательности. Как правило, может быть найдено множество выравниваний с максимальным счетом.
В качестве примера практического применения этих понятий вычислим счет выравнивания (3.1). Оно содержит девять столбцов с одинаковыми знаками, один столбец с разными знаками и один столбец с пробелом, что дает полный счет
9-1 + 1 (-1)4-1 (-2) = 6.
Почему же для назначения счета мы выбрали именно величины (+1, — 1 и —2)? Такая система очков часто используется на практике. Мы награждаем совпадения и штрафуем несовпадения и пробелы. В разделе 3.6.2 мы обсудим выбор этих параметров подробнее.
Один из подходов к вычислению подобия между двумя последовательностями состоит в том, чтобы построить все возможные выравнивания и затем выбрать из них оптимальное. Однако число выравниваний между двумя последовательностями экспоненциально, и такой подход привел бы к недопустимо медленному алгоритму. К счастью, существует намного более быстрый алгоритм, который мы сейчас опишем.
В основу этого алгоритма заложен метод так называемого динамического программирования. Этот метод главным образом состоит из разбиения задачи на подзадачи и последовательного решения основной задачи, ис
3.2. СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
85
пользуя решения промежуточных, более легких подзадач. Итак, имея две последовательности s и t, вместо того, чтобы определять подобие между целыми последовательностями s и t, мы выстраиваем решение, определяя все подобия между произвольными префиксами этих двух последовательностей. Мы начинаем с более коротких префиксов и затем используем результаты предыдущих вычислений для решения задачи с более длинными префиксами.
Пусть т — длина последовательности .s, ап — длина последовательности t. Тогда существует т Ч 1 возможных префиксов последовательности s и п + 1 префиксов последовательности t, включая пустую строку. Таким образом, мы можем организовать наши вычисления в виде массива размером (т + 1) х (n + 1), где элемент (г, j) содержит подобие между префиксами s[l... г] и f[l. . j].
На рис. 3.1 показан массив, соответствующий последовательностям s АААС и t AGC. Для более удобного индексирования префиксов мы расположили знаки последовательности s по левому краю, а знаки последовательности t — по верхнему краю массива. Обратите внимание, что элементы первой строки и первого столбца массива инициализированы значениями, кратными штрафу за пробел ( -2 в нашем случае). Это связано с тем, что если одна из последовательностей пуста, то существует только одно возможное выравнивание. Нужно всего лишь добавить столько же пробелов в пустую последовательность, сколько знаков содержит другая последовательность. Счет этого выравнивания равен 2/с, где к — длина непустой последовательности. Следовательно, заполнение первых строк и столбцов массива не представляет никакой сложности.
Теперь сосредоточим наше внимание на остальных элементах массива. Ключевой принцип состоит в том, что мы можем вычислить значение элемента (г, j), оценивая всего только три предшествующих элемента: (г — 1, j), (г - 1,J — 1) и (i,J — 1). Это связано с тем, что есть только три способа получить выравнивание между префиксами в[1...г] и	и
в каждом способе необходимо использовать один из этих предшествующих ыементов. Фактически, мы имеем следующие три возможности построения выравнивания между префиксами s[l... г и f[l... j]:
•	выровнять si... г] с t[l... j — 1] и сопоставить пробел с t[J];
•	выровнять s[l... г — 1] с 1[1... j — 1] и сопоставить s[i] с t[j];
•	выровнять s[l... г — 1] с t 1... j] и сопоставить в[г] с пробелом.
Эти возможное 1 и являются исчерпывающими, поскольку в последнем столбце выравнивания не должно быть пары из двух пробелов. Если мы
86
ГЛАВА 3
А
G
С
Рис. 3.1. Двумерный массив для вычисления выравниваний. Цифра в левом верхнем углу ячейки (г, j) показывает, равны ли знаки я[г] и t[j]. Индексы строк и столбцов начинаются нулем
выберем подходящий порядок вычисления элементов массива, то в нем автоматически сохраняются счета оптимальных выравниваний между меньшими префиксами, вследствие чего искомое подобие может быть найдено
3.2. СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
87
Algorithm Similarity1
input: последовательности .s и t
output: подобие между s и t
т <— |s|
И
for г «— 0 to т do
n[t,0] <-гд
for 3 «— 0 to n do
<- 39
for г <— 1 to m do
for j <— 1 to n do
a[i, j] «- max(o[i - 1, j] + <?, o[i-l.J-l]+p(i,j), a[t,j-l]+p)
return a[m, n]
Рис. 3.2. Основной алгоритм метода динамического программирования для сравнения двух последовательностей
по формуле
sim(s(l.. .z], t[l ..j — 1]) - 2
sim(s[l... г], t[l •.. j]) - max < sim(s[l.. .г — 1], t[l... j — 1]) + p(i, j) sim(s[l.. .i — l],t[l. . j]) — 2,
(3.2) где p(i,j) = +1 при s[i] = t[j] и p(i,j) = —1 при s[t] t[j]. Значения записаны в верхних левых углах ячеек массива на рис. 3.1. Если мы обозначим массив буквой а, то это уравнение может быть переписано в следующем виде:
а(г, j) = max
a(i,j - 1) - 2
a(i - l.j - 1) + p(z, j) а(г - l,j) - 2
(3 3)
Как было упомянуто выше, необходимо соблюдать подходящий порядок вычислений. Это требование легко выполнимо Для этого достаточно заполнять массив строку за строкой, слева направо каждую, или столбец за столбцом, сверху вниз. Вообще, для заполнения массива подходит любой порядок, в котором при вычислении значения элемента обеспечен доступ к величинам a[i,j 1], а[г — 1,j 1] и а[г — 1, j].
1 Подобие. Прим персе.
88
ГЛАВА 3
Мы провели стрелки на рис. 3.1, чтобы указать, откуда максимальные значения берутся согласно уравнению (3.3). Например, значение а[1.2] было выбрано как максимальное среди следующих чисел:
а[1,1] - 2 = -1 а[0,1] - 1 = -3 а[0,2| — 2 = —6.
Поэтому есть только один способ получить это максимальное значение выбрать его из элемента (1,1), и именно этот порядок и показывают стрелки.
На рис. 3.2 представлен алгоритм заполнения массива указанным способом. Этот алгоритм вычисляет элементы массива строку за строкой. Он зависит от параметра д, который определяет штраф за пробел (обычно д < 0), и от функции парных счетов р (счетов пар знаков). При индексировании массива на рис. 3.1 мы использовали следующую систему очков: д 2, р(а. b) = 1 при а = b и р(а. b) = 1 при а / 6.
Оптимальное выравнивание
Итак, мы узнали, как надлежит вычислять подобие между двумя после-довагсльностями. Здесь мы научимся строить оптимальное выравнивание между ними. Стрелки на рис. 3.1 будут полезны также и в этом отношении. Все, что мы должны сделать — начать построение с элемента массива (ш, п) и следовать за стрелками, пока не дойдем до элемента (0,0). Каждая пройденная стрелка даст нам один столбец выравнивания. Например, рассмотрим стрелку, выходящую из элемента Если эта стрелка горизонтальна, то она соответствует столбцу с пробелом в последовательности s, сопоставленным со знаком t[j|; если же она вертикальна, то она соответствует знаку в[г], сопоставленному с пробелом в последовательности t, наконец, диагональная стрелка означает сопоставление знаков s[i] и f[j|. Заметим, что первую последовательность, s, всегда помещают вертикально. Таким образом, оптимальное выравнивание может быть легко построено справа налево, если мы имеем массив а, вычисленный основным алгоритмом (рис. 3.2). Нет необходимости задавать направление явно (стрелками) — простая проверка может помочь выбрать каждый последующий элемент пути.
На рис. 3.3 показан рекурсивный алгоритм для определения оптимального выравнивания; для этого на входе необходимо иметь матрицу а и последовательности s и t. Процедура Align(m, п, 1еп) строит оптимальное выравнивание. Ответ будет выдан в паре векторов align-s и align-t, содержащих
3.2. СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
89
Algorithm Align2
input: индексы i и j, массив а из Similarity output: векторы выравнивания align-s и align-t, длина выравнивания len
if г = 0 and j = 0 then
len «— 0
else if i > 0 and a[i, j] = a[i — 1, j] + д then
Align(i — l,j, len)
len *— len + 1
align s[len] «— s[z]
align-t[len] <--
else if z > ( and j > 0 and <i[z.j] = a[i l,j — 1] + p(z,j) then
Align(i — 1, j — 1, len)
len «— len +1
aligns[len\ «— s[i]
align-t[len] <- t[j]
else // должно быть j> 0 и а[г, j] = a[i,j — 1] + д
Align(i,j 1, len)
len — len +1
align-s[len] <--
align t[len] <- t [j]
Рис. 3 3. Рекурсивный алгоритм оптимального выравнивания
в позициях 1... len выровненные знаки, которые могут быть пробелами или символами из мданных последовательностей. Переменные aligns и align-t программа рассматривает как глобальные. Длину выравнивания алгоритм возвращает в переменной len Здесь max(|s|, |t|) len ^тп + п.
Как было сказано ранее, для одной пары последовательностей может быть найдено множество оптимальных выравниваний. Алгоритм на рис. 3.3 возвращает только одно из них, отдавая максимальное предпочтение направлениям (стрелкам), выходящим из элемента (г, у) вертикально (см. рис. 3 4). В результате оптимальное выравнивание, возвращенное этим алгоритмом, имеет следующую общую характеристику: когда есть возможность выбора, столбец с пробелом в последовательности I имеет приоритет над столбцом с двумя символами (и предшествует ему), который, в свою очередь, имеет приоритет над столбцом с пробелом в последовательности s. Например, при выравнивании последовательностей s = АТАТ и t = ТАТА, мы, скорее
2 Выравнивание. При», перев.
90
Глава 3
максимальное предпочтение
Рис. 3.4. Предпочтительные направления построения оптимального выравнивания
всего, получим выравнивание
-АТАТ
ТАТА-,
а не
АТАТ—
-ТАТА,
представляющее собой альтернативный вариант оптимального выравнивания этих последовательностей. Проше говоря, при выравнивании последовательностей s = АА и t = АААА мы получаем выравнивание
—АА
АААА,
хотя существует еще пять других оптимальных выравниваний. Это выравнивание иногда упоминают как наивысшее выравнивание, потому что оно всегда использует стрелки матрицы, направленные вверх. Чтобы изменить порядок предшествования столбцов на противоположный, мы должны изменить условие операторов if в программе алгоритма и получить в таком случае наинизшее выравнивание. Столбец, появляющийся как в наивысшем, так и в наинизшем выравниваниях, будет присутствовать во всех оптимальных выравниваниях между двумя рассматриваемыми последовательностями.
Данный алгоритм возможно преобразовать таким образом, чтобы он производил все оптимальные выравнивания между последовательностями s
3.2. СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
91
и t. Мы должны оставлять в стеке адреса элементов массива, в которых есть варианты путей, чтобы возвращаться к ним и исследовать все возможности достижения элемента (0,0). Однако число оптимальных выравниваний может быть очень большим. В этих случаях желательно сохранять в некотором усеченном виде все или часть этих выравниваний — например, наивысшее и наинизшее.
Теперь определим сложность алгоритмов, описанных в этом разделе. Основной алгоритм на рис. 3.2 имеет четыре цикла. Первые два выполняют инициализацию и затрачивают, соответственно, время О(т) и О(п). Последние два цикла вложены и заполняют остальную часть матрицы. Число выполняемых операций главным образом зависит от числа элементов, которые должны быть вычислены, то есть от размера матрицы Таким образом, в этой части программы мы затрачиваем время O(mri), и это главный член в формуле временной сложности алгоритма. Используемое пространство памяти также пропорционально размеру матрицы. Следовательно, сложность основного алгоритма равна О(тп) как в отношении времени, так и пространства. Если последовательности имеют одинаковую или почти одинаковую длину (например, п), то мы получаем пространственно-временную сложность О(тг2). Именно поэтому мы говорим, что сложность таких алгоритмов квадратична
Построение выравнивания — при уже заполненной матрице — требует время О(1еп) (где 1еп — размер возвращенного алгоритмом выравнивания), то есть О(т + п).
3.2.2. ЛОКАЛЬНОЕ СРАВНЕНИЕ
Локальное выравнивание последовательностей s и t представляет собой выравнивание между подстроками последовательностей s и t В этом разделе мы представляем алгоритм поиска оптимальных локальных выравниваний между двумя последовательностями.
Этот алгоритм является разновидностью основного алгоритма, приведенного на рис. 3.3. Как и прежде, основная структура данных — массив размером (m+1) х (zi+1). Только на сей раз интерпретация значений элементов массива будет иной. Теперь каждый элемент (г, у) хранит максимальный счет выравнивания между суффиксами подстрок s[l... г] и t[l... у]. Первая строка и первый столбец массива инициализируются нулями.
Для любого элемента (i,j) всегда существует выравнивание между пустыми суффиксами подстрок .ч[1 . .г] и t[l.. .j], которое имеет нулевой счет; поэтому значения всех элементов данного массива больше или равны нулю. Это частично объясняет принятую здесь систему инициализации.
92
Глава 3
= шах •
Следуя данной инициализации, массив может быть заполнен обычным способом, где величина а\г, J] зависит от значений грех ранее вычисленных элементов. В результате получаем заполнение в виде
о[г,> - 1] + д a[i~l,j- 1] +р(г, а[г- l,j] +д О,
то есть то же самое, что и в основном алгоритме, за исключением того, что теперь мы имеем четвертую возможность (пустого выравнивания), недоступную в случае глобального выравнивания.
Итак, достаточно найти максимальный элеменг массива. Его значение равно счету оптимального локального выравнивания. Чтобы построить такое выравнивание, в качестве отправной точки может быть выбран лю бой элемент с максимальным значением Остальная часть выравнивания выстраивается обычным прохождением элементов в обратном порядке, но здесь мы должны остановиться, как только достиг нем элемента, из которого не выходит ни одна стрелка, или же элемента с нулевым значением.
Вообще, при выполнении локального сравнения мы интересуемся нс только оптимальными выравниваниями, но также и близкими к оптимальному, счет которых превышает некоторый порог. Ссылки на методы поиска выравниваний, близких к оптимальному, даны в библиографических примечаниях.
3.2.3. ПОЛУГЛОВАЯЬНОЕ СРАВНЕНИЕ
При полуглобальном сравнении мы назначаем счет выравниваниям, игнорируя некоторые крайние пробелы* в последовательностях. Интересная характеристика основного алгоритма динамического программирования то, что посредством очень простых преобразований первоначально выбранной системы очков мы можем управлять штрафом за крайние пробелы
Начнем с точного определения понятия крайних пробелов и ответа на вопрос, почему в некоторых ситуациях может быть более выгодно вставлять их без назначения штрафных санкций. Крайние пробелы расположены перед первым или после последнего знака последовательности. Например, все пробелы во второй последовательности изображенного ниже выравни вания - крайние, а единственный пробел в первой последовательности —
3Крайиие пробелы в свою очередь подразделяются на начальные (стоящие в начале строки) и конечные (стоящие в конце строки). - Прим. перев.
3.2. СРАВНЕНИЕ ДВУХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
93
не крайний
CAGCA-CTTGGATTCTCGG
(3.4) ---CAGCGTGG---------
Интересно отметить, что длины этих двух последовательностей отличаются значительно. Первая имеет длину 18, вторая — 8 знаков. В подобных случаях в любом выравнивании будет присутствовать много пробелов, вносящих большой отрицательный вклад в общий счет Тем не менее, если мы игнорируем крайние пробелы то получаем довольно хорошее выравнивание: 6 совпадений, 1 несовпадение и 1 пробел.
Заметим, что это далеко нс оптимальное выравнивание между данными последовательностями. Ниже представлен другой вариант выравнивания с более высоким счетом (—12 против —19 у предыдущего), соответствующий применяемой системе очков.
CAGCACTTGGATTCTCGG
CAGC------G-T-----GG	(
Несмотря на то. что мы получили более высокий счет и все знаки второй последовательности совпадают с идентичными знаками первой, >то выравнивание нс столь интересно с точки зрения поиска подобных областей в последовательностях нуклеотидов. В таком случае только ради полного совпадения оснований вторую последовательность пришлось бы попросту жестоко разорвать на отдельные фрагменты. Если мы ищем области более длинной последовательности, приближённо подобные более короткой последовательности. то для этого случая, несомненно, первое выравнивание (3.4) подходит гораздо больше второго (3.5). Это отражено в счете, получаемом, когда мы игнорируем (то есть нс штрафуем) крайние пробелы: выравнивание (3.4) получает 3 очка в отличие от - 12 у выравнивания (3.5).
Теперь опишем разновидность основного алгоритма, который будет игнорировать крайние пробелы Рассмотрим вначале случай, где мы не штрафуем конечные пробелы в последовательности s, и найдем для него оптимальное выравнивание. Пробелы в конце s сопоставляются с суффиксом последовательности Если мы удаляем эту конечную часть выравнивания, то остается выравнивание между последовательностью s и префиксом последовательности t, с таким же счетом, как в выравнивании целых последовательностей. Поэтому, чтобы вычислить счет оптимального выравнивания между последовательностями я и t без штрафа за пробелы в конце я, все, что мы должны сделать, это найти наилучшее подобие между последовательностью s и префиксом последовательности t Но из раздела 3.2.1 мы знаем, что элемент (i,j) матрицы а содержит подобие между префикса
94
Глава 3
ми ,s[l... г] и t[l... j]. Следовательно, для отыскания подобия достаточно выбрать максимальное значение в последней строке матрицы а, то есть
sim(s,t) = maxa[m,j].
>=1
Учтите, что в этом разделе мы изменили определение функции sim(s, t), так что теперь она обозначает подобие, игнорирующее конечные пробелы в последовательности .ч. Это выражение дает счет оптимального выравнивания. Чтобы построить само выравнивание, мы выполняем действия, как и в основном алгоритме, но начинаем с элемента (тп, к), где к выбирается так, чтобы выполнялось равенство bini(s,t) = а[т, fc].
Аналогичный способ применяется и тогда, когда мы нс штрафуем конечные пробелы в последовательности t. В этом случае мы выбираем максимум в последнем столбце матрицы а. Мы можем даже объединить эти два способа и искать оптимальное выравнивание без штрафов за конечные пробелы в обеих последовательностях. Ответ будет найден, если выбрать максимальный элемент в последней строке и последнем столбце матрицы. В любом случае, чтобы построить оптимальное выравнивание, мы начинаем с элемента, который содержит значение подобия, и следуем за стрелками, пока ие достигнем элемента (0,0). Как и в случае основного алгоритма, каждая стрелка лает один столбец выравнивания.
Теперь обратим наше внимание на начальные пробелы. Предположим, что мы хотим построить оптимальное выравнивание, не штрафуя начальные пробелы в последовательности s. Оно эквивалентно оптимальному выравниванию между я и суффиксом последовательности t. Чтобы получить желаемый результат, мы, так же, как и в основном алгоритме, используем массив размером (тд + 1) х (п + 1), но с небольшим отличием. Теперь каждый элемент (i,j) содержит максимальное подобие между префиксом .ч[1... i и суффиксом некоторого префикса, например, суффиксом префикса t[l... j].
Ясно, что при этом результатом будет величина а[т, п]. Что менее ясно, но тем нс меиее верно, — так это то, что данный массив может быть заполнен с использованием той же формулы, что и в основном алгоритме, то есть уравнения (3.3)! Однако инициализация будет отличаться. Первая строка должна быть инициализирована нулями вместо значений, кратных штрафу за пробел, что связано с иным назначением элементов. Мы предоставляем читателю возможность убедиться в том, что и в этом случае уравнение (3.3) истинно.
Мы можем применить тот же прием и инициализировать первый столбец нулями, игнорируя при этом пробелы в начале последовательности t.
3.3. РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
95
Если же мы инициализируем нулями и первую строку и первый столбец, а затем применим уравнение (3.3) для остальных элементов, то в каждом элементе мы вычислим максимальное подобие между соответствующими суффиксами последовательностей s и t. Чтобы найти оптимальное выравнивание, начиная от элемента с максимальным значением мы следуем за стрелками, пока нс достигнем одной из границ, инициализированных нулями, после чего возвращаемся по этой границе к началу массива.
В таблицу 3.1 сведены все рассмотренные нами случаи. Существует четыре позиции, в которых мы можем не штрафовать пробелы: начало или конец последовательности s и начало или конец последовательности t. Мы можем независимо комбинировать эти условия любым способом и использовать описанные выше примеры, чтобы найти подобие. Единственные озличия — это инициализация и позиция, в которой нужно искать максимальное значение. Прощение начальных пробелов преобразуется в инициализацию определенных позиций нулями. Прощение конечных пробелов означает поиск максимума в определенных позициях. Но заполнение массива - всегда один и тот же процесс, основанный на уравнении (3.3).
Таблица 3.1. Действия, заменяющие штрафы за крайние пробелы
Позиция прощения	Эквивалентное действие
Начало первой посл-ти Конец первой посл-ти Начало второй посл-ти Конец второй посл-ти	Инициализ-ть первую строку нулями Искать максимум в последней строке Инициализ-ть первый столбец нулями Искать максимум в последнем столбце
3.3.	РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
Алгоритмы, представленные в разделе 3.2, в общем случае адекватны для решения большинства задач сравнения последовательностей. Однако иногда мы имеем особую ситуацию и нуждаемся в лучшем алгоритме. В этом разделе мы рассмотрим несколько методов, которые могут быть использованы в некоторых из таких ситуаций.
Один вид усовершенствований связан с вычислительной сложностью задачи. Мы покажем, что за счет увеличения времени вычислений приблизительно в два раза пространственную сложность алгоритмов возможно уменьшить от квадратичной (тпп) до линейной (m + n). С другой стороны, мы также покажем способ сокращения временной сложности, но он
96
Глава 3
работает только в случае сравнения подобных последовательностей и при использовании определенной системы очков.
Другое усовершенствование имеет отношение к биологической интерпретации выравниваний. С биологической точки зрения, более реалистично рассматривать непрерывный ряд последовательных пробелов вместо отдельных, разрозненных пробелов. Мы представим версии основных алгоритмов, адаптированные к этому варианту задачи сравнения.
3.3.1.	ЭКОНОМИЯ ПРОСТРАНСТВА
Квадратичная сложность основных алгоритмов делает их неприменимыми в некоторых практических приложениях для работы с очень длинными последовательностями или для повторного сравнения нескольких последовательностей. Нс известен никакой алгоритм, который затрачивал бы асимптотически меньшее время и сохранял бы при этом ту же универсальность, хотя существуют более быстрые алгоритмы с ограниченной возможностью выбора параметров.
Algorithm BestScore*
input: последовательности я и t
output: вектор a
rn«— |.s|
|t|
for j t— 0 to n do
a[j] >~j-S
for i«— I to in do
old <— a[0]
a[0] <- г • g
for J <— 1 to n do
temp <- a[j]
a[j] «- max(a[j] + g, old + p(i,j), a[J - 1] old <— temp
Рис. 3.5. Алгоритм поиска подобия в линейном пространстве. На выходе элемент a[n] содержит значение функции sim(s,t)
Максимальный счет. Прим. перев.
3.3. РАС ШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
97
Однако пространственную сложность алгоритма возможно уменьшить ог квадратичной до линейной без снижения его универсальности. 11ена, которую нужно за это заплатить, — приблизительное удвоение времени счета. Тем не менее, асимптотическая временная сложность остается неизменной, а во многих случаях именно пространство, а не время является ограничивающим фактором, так что такое преобразование имеет большую практическую ценность. В этом разделе мы опишем этот изящный прием экономии пространства.
Начнем с того, что вычисление функции sim(s, t) может быть легко выполнено в линейном пространстве. Каждая строка матрицы зависит только от предыдущей строки, поэтому возможно проводить вычисления, сохраняя в памяти только один вектор, в котором будет храниться часть строки, вычисляемой в данный момент, и часть предыдущей строки. Этот метод отражен в алгоритме на рис. 3.5. Ясно, что то же самое верно и для столбцов, и если т < п, то, используя этот же прием со столбцами, мы занимаем еще меньше пространства памяти. Заметим, что каждый раз после выполнения операций цикла с переменной г в алгоритме на рис. 3.5, вектор а содержит подобия между префиксом s[l ...г] и всеми префиксами последовательности t. К этому факту мы возвратимся чуть позже.
Самос трудное заключается в построении оптимального выравнивания в линейном пространстве. Для работы алгоритма на рис 3.3 нужна целая матрица элементов. Чтобы устранить эту трудность, мы используем стратегию по принципу разделяй и властвуй, то есть мы делим задачу на две меньшие подзадачи, а затем объединяем их решения и получаем решение целой задачи.
Ключевая идея заключается в следующем. Находим одно оптимальное выравнивание, выбираем позицию г в последовательности s и оцениваем, что можно сопоставить символу s[i] в этом выравнивании. Есть только два возможных случая:
1.	Символ s[i] совпадет с символом t[j] для некоторого j в интервале 1... п.
2.	С символом s[i] совпадет пробел между символами ф] и t[j 4-1] для некоторого j в интервале 0 .. п.
Во втором случае индекс j изменяется между 0 и п, потому что в последовательности всегда существует одна дополнительная позиция для пробелов, но не для символов. Мы также нарушили принятую систему понятий, допустив j = 0 и j — п. В этих случаях мы подразумеваем то, что пробел будет стоять, соответственно, в позициях перед t 1] или после t[n].
98
Глава 3
Пусть функция
обозначает оптимальное выравнивание между хну. Любое выравнивание между последовательностями s и t соответствует случаю I или 2 независимо от того, оптимально оно или нет. В частности, наше оптимальное выравнивание также должно относиться к одному из них. Если оно соответствует случаю 1, то для построения всех оптимальных выравниваний мы должны произвести следующее сцепление:
л ,/s[l.. .г — 1]\ s[i] _ . .(s[i + 1.. .
Optimall ,	) +	1 + Optimall	1,	(3.6)
если же оно соответствует второму случаю, то мы производим сцепление следующего вида:
„	/я[1 . . .1 — 1]\ s[l] „ .	,/s[l+ 1...7n]\
Optimall	-i)+ J + Optimall	.	(3.7)
Эти соображения дают нам рекурсивный метод вычисления оптимального выравнивания, до тех пор пока мы можем определить, для данной позиции г, какой из случаев (1 или 2) рассматривается и каково соответствующее значение позиции j.
Вычисления выполняют следующим образом. Согласно уравнениям (3.6) и (3.7), для определенной позиции i мы должны найти подобия между префиксом s[l ...г — 1] и произвольным префиксом последовательности t, а также подобия между суффиксом ,s[i + 1... т] и произвольным суффиксом последовательности t. Если мы знаем эти величины, то мы можем в явном виде вычислить счета j выравниваний по уравнению (3.6) и j +1 выравнивания по уравнению (3.7). Выбирая оптимальное среди них, мы получаем информацию, необходимую для следующего шага рекурсии.
Как было показано ранее, наилучшис счета выравниваний между некоторым префиксом последовательности s и всеми префиксами последовательности t возможно вычислить в линейном пространстве (см. рис. 3.5). Подобный алгоритм существует и для суффиксов. Следовательно, наша задача почти решена. Остается только решить, какое значение г следует использовать в каждом рекурсивном обращении. Лучший вариант — выбирать г как можно ближе к середине последовательности. Полный алгоритм показан на рис. 3.6. В этом алгоритме обращение
BestScore(s[a... г — 1], t[с... d], pref-sim)
3.3. РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
99
Algorithm Align5
input: последовательности suf, индексы а, Ь, с и d,
стартовая позиция start
output: оптимальное выравнивание между s[a.. .6] и t[c.. .d], помещенное в векпоры align-s и align-t, начинающиеся в позиции start и оканчивающиеся в позиции end
if s[a... 6] пуста or t [с... d] пуста then
// Основной случай: s[a... 6] пуста или t[c... d] пуста Выровнять непустую последовательность вставкой пробелов end *- start + max(|s|, |£|)
else
И Общий случай
i-L(« + 6)/2J
Bes/5core(s[a... (i — 1)], t[с... d], pref-sim)
BestScoreRev(s[(i + 1)... 6], t[c... d], suff-sim)
posmax •— c — 1
typemax •— space
vmax «— pref-sim\c — 1] + д + suff-sim[c — 1]
for j *— c to d do
if pref-sim[j — 1] + p(i, j) + sujf-simfj] > vmax then posmax«— j
typemax •— SYMBOL
vmax •— pref-sim[j — 1] + p(i, j) + sujfsim[j]
if prefsim[j] + д + suff-simUj > vmax then
posmax«— j
typemax<— SPACE
vmax *— pref-sim[j] + д + suff-simlj]
if tvpemax = SPACE then
Align(a, i — 1, c, posmax, start, middle)
align-s[middle]«— s[i]
align-t[middle]«— SPACE
Alignfi + 1, 6, posmax +1, d, middle +1, end)
else // typemax = symbol
Align(a, г - 1, c, posmax -1, start, middle)
align-s[middle]«— s[t]
align-t[middle]«— t[posmax]
Align(i + 1, b, posmax +1, d, middle +1, end)
I’nc. 3.6. Алгоритм построения оптимального выравнивания в линейном пространстве
нощращает в переменной pref-sim подобия между префиксами s[a... г — 1] и t|c... J] для всех j в интервале с — 1.. .</. Аналогично, обращение
'Выравнивание. — Прим, перев.
100
Глава 3
BestScoreRev(s[i + 1... 6], t[c... d], suffsim) возвращает в переменной suffsim подобия между суффиксами s[i + 1... 6 и t [j + 1 ... d] для всех j в интервале с — 1... d. Наконец, обращение
Align(\, т, 1,п, 1,1еп)
возвращает оптимальное выравнивание в глобальных переменных align-s и align-t, а также размер этого выравнивания в переменной 1еп
Остается неразрешенным только один вопрос: Может ли благодаря этим дополнительным вычислениям время обработки возрасти слишком сильно? Может, но не намного. Как мы покажем ниже, время приблизительно удваивается.
Пусть Т(т,п) — количество вычислений максимума во внутреннем цикле BestScore или BestScoreRev в результате обращения Align(a, b, с, d, start, end), где m = 6 — а +1 и п = с — d +1. Легко увидеть, что общее время обработки будет пропорционально выражению, содержащему член Т(ш, п) плюс дополнительные линейные члены, связанные с управлением программой и инициализацией элементов. Мы утверждаем, что Т(тп, и) 2r,in.
Доказательство этого утверждения может быть построено методом индукции на тп. При m = 1 не произойдет никаких вычислений максимума, так что, безусловно, Т(1, п) 2п. При m > 1 мы будем иметь обращение к процедуре BestScore (самое большее тпп/2 вычислений максимума) плюс такое же число операций для BestScoreRev и, кроме того, два рекурсивных обращения к процедуре Align (самое большее T(m/2,j) и Т(т/2,п — j) вычислений максимума). Складывая это все, мы получаем
Т(т,	+	T(m/2,j) + Т(т/2, п-3)
тп + mj + т(п — j)
= 2тп,
что доказывает наше утверждение.
3.3.2.	ОБЩИЕ ФУНКЦИИ ШТРАФОВ ЗА ПРОПУСКИ
Определим пропуск как группу последовательных пробелов количеством к > 1. Известно, что, когда в последовательности аминокислотных остатков происходят мутации, появление пропуска из к пробелов более вероятно, чем появление к отдельных пробелов. Это связано с тем, что пропуск может появиться из-за единственного мутационного события, которое удалило целый участок аминокислотных остатков, тогда как отделенные
3.3. РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
101
пробелы появляются скорее всего вследствие независимых музационных событий, а появление одного события, несомненно, более вероятно, чем появление целой группы событий.
До сих пор мы не проводили никакого различия между сгруппированными или отдельными пробелами. Это означает, что штрафы за пропуски мы налагаем посредством линейных функций. Обозначая штраф за пропуск из к пробелов через w(k), где к 1, мы получаем
w(k) = bk,
где b - абсолютное значение счета, назначенного пробелу.
В этом разделе мы представляем алгоритм, который вычисляет подобия по общим функциям штрафов за пропуски w. Этот алгоритм имеет временную сложность О(п3) для последовательностей длиной п и поэтому работает медленнее, чем основной алгоритм. Однако между этими двумя алгоритмами есть много общего. Главное отличие нового алгоритма состоит в том, что схема назначения счета не аддитивна, в том смысле, что мы не можем разделить выравнивание на две части и ожидать, что полный счет будет равен сумме счетов частей общего выравнивания. В частности, мы не можем отделить последний столбец выравнивания и ожидать, что счет выравнивания будет суммой счета этого последнего столбца и счета остальной части (префикса) выравнивания. Однако аддитивность счета сохраняется, если мы разделяем выравнивание на блоки. Каждое выравнивание может быть уникальным образом разделено на группу последовательных блоков. Ниже перечислены три типа блоков:
1.	Два выровненных знака из алфавита Е.
2.	Максимальный ряд последовательных знаков строки t, выровненных с пробелами строки s.
3.	Максимальный ряд последовательных знаков строки s, выровненных с пробелами строки t.
Термин максимальный означает, что ряд не может быть продолжен. На рис. 3.7 показано выравнивание и его блоки. Блоки первого типа получают счет р(я, 6), где а и Ь — два выровненных знака. Блоки 2-го и 3-го типов получают счет — w(k), где к длина пропуска.
Как видно, теперь назначение счета выравнивания проводится не на уровне столбцов, а на уровне блоков. Соответственно, мы можем ожидать, что аддитивность счета сохранится только в том случае, если мы разделим выравнивание на блоки. Это в свою очередь подразумевает, что для вычисления подобия по общей функции штрафов за пропуски, в алгоритме
102
Глава 3
Si	AAC---AATTCCGACTAC
s2	ACTACCT------CGC--
«I
$2
AAC---
ACTACC
Рис. 3.7. Выравнивание и его блоки
динамического программирования необходимо произвести некоторые существенные изменения. Вместо того, чтобы рассматривать последний столбец выравнивания, мы должны рассматривать последний блок. Кроме того, блоки не могут следовать друг за другом в произвольном порядке. Блок 2-го или 3-го типа не может следовать за блоком того же типа. Из этого следует, что для каждой пары (i,j) мы должны сохранять не наилучший счет выравнивания между префиксами s[l... г] и t[l... j], а наилучший счет этих префиксов, которые, кроме того, должны заканчиваться в блоке определенного типа.
Для того чтобы сравнить последовательность s длиной т с последовательностью t длиной п, мы используем три массива размером (т + + 1)х(п+1) — по одному для каждого типа конечного блока. Массив а используем для выравниваний, заканчивающихся в блоках типа знак-знак; массив b используем для выравниваний, заканчивающихся пробелами в последовательности s; массив с используем для выравниваний, заканчивающихся пробелами в последовательности t.
Инициализация первой строки и первого столбца проводится следующим образом, согласно назначению массивов:
«[0,0] =0 Ь[о, J] = -w(j) с[г.О] = —го (г).
Все остальные значения в начальных строках и столбцах должны быть установлены в -оо, чтобы сделать их безопасными для вычислений максимума, в которых они используются.
Теперь зададим естественный вопрос: Блоком какого типа заканчивается наше оптимальное выравнивание? Ответ на него определяет, который массив, а, b или с, будет обновлен. Рекурсивные соотношения для этой операции следующие:
а[г, j] = р(г, j) + max <
a[i — 1, j — 1] Ыг- 1,7-1] с[г - 1, j - 1]
3.3. РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
103
6[г, J] = max	[ я[г, j — /с] — w(k), 1 с[г, j — fc] — w(k),	при при
с[г, j] = max <	[ я[г — k,j] — w(k), 1 Ь[г — к, J] — w(k),	при при
1 < к < j 1 < к < j
1 < к < г 1 < к < г.
Как обычно, p(i,j) показывает счет совпадения знаков а[г] и t[j].
Обратите внимание, что элементы массивов бис зависят от более чем одного предыдущего значения, потому что последний блок может иметь переменную длину. Кроме того, при вычислении элемента массива b мы не смотрим на предыдущие элементы Ь, потому что блоки 2-го типа не могут следовать сразу же за блоками типа 2. Аналогично, элементы массива с не зависят непосредственно от предшествующих элементов того же массива с. Чтобы получить окончательный ответ, то есть значение функции sini(s, t), мы выбираем максимум среди значений n[m, n], 6[т, п] и с[т, п].
Временная сложность этого алгоритма равна О(тп? + ?n2n). Чтобы понять смысл этого выражения, с помощью известных формул подсчитаем число обращений к некоторому элементу любого массива Это главный член выражения для временной сложности. Легко видеть, что для вычисления значений a[i,j], 6[г, J] и с[г, J] мы должны выполни хь
3 + 2j + 2г
обращений к предыдущим элементам массива, что в сумме даст
m п
££(з + 2Н2«)
г=1 э=1
обращений к массивам в целом. Эта сумма может быть вычислена в конечном виде следующим образом:
У^(2г + 2j + 3) = 2ni + п(п + 1) + Зп = 2m + п2 + 4п, 7=1
т
У^(2ш + т? + 4п) = пт(т + 1) + тп2 + 4тп = т2п + 5тп + тп2. i=l
11остроение оптимального выравнивания не вызывает затруднений. Достаточно руководствоваться теми же принципами, что и в предыдущих алгоритмах. В массивах мы проходим в обратном порядке те элементы, которые
104
ГЛАВА 3
мы выбирали для вычислений максимумов, и при этом отмечаем, которому из массивов эти элементы принадлежат.
Таким образом, мы видим, что в принципе возможно использовать любую функцию штрафов за пропуски. Однако цена за такую универсальность • значительное увеличение времени вычислений и пространства памяти (три вспомогательных массива). Это обстоятельство может быть критическим, когда алгоритм сравнения последовательностей методом динамического программирования является «узким местом» более крупного алгоритма.
3.3.3.	ЛИНЕЙНЫЕ ФУНКЦИИ ШТРАФОВ ЗА ПРОПУСКИ
Мы узнали, что время счета основного алгоритма с линейной функцией штрафов равно О(п2), где п — длина последовательностей; мы увидели также, что применение общих штрафных функций приводит к возрастанию времени счета до О(п3). Однако если мы используем менее общую функцию штрафов за пропуски, но такую, которая по-прежнему назначает меньший штраф за пропуск с к пробелами, чем за к отдельных пробелов, то можем ли мы все еще получить алгоритм со временем счета О(п2)? В этом разделе мы покажем, что это действительно возможно.
Если мы хотим поддержать идею о том, что появление к последовательных пробелов более вероятно, чем появление к отдельных пробелов (или по крайней мере столь же вероятно), то следующее уравнение должно быть верным:
w(k) С А:ш(1)
или, в общем виде,
w(ki + к-2 4--1- кп) w(ki) + w(k2) Ч---1- w(kn). (3.8)
Функцию w, удовлетворяющую уравнению (3.8), называют субаддитивной функцией. Линейная функция — функция w вида w(k) = h + gk, где k 1, причем ш(0) = 0. Она будет субаддитивной при h > 0 и g > 0.
Другой способ задания функции w как субаддитивной заключается в назначении первому пробелу пропуска стоимости h + g, а всем остальным пробелам стоимости д. Эта стоимость основывается на разнице Дщ(А') = = w(k) — w(k — 1) штрафов за к — 1 и к пробелов.
Теперь опишем алгоритм метода динамического программирования для этого случая. Главное различие между основным алгоритмом и этим состоит в том, что здесь мы должны штрафовать первый пробел пропуска и все остальные пробелы этого пропуска по-разному. Это достигается при
3 3. РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
105
помощи трех массивов, а, b и с, как и в случае общей функции штрафов. Элементы каждого из этих массивов имеют следующее назначение;
•	a[i,j] = максимальному счету выравнивания между префиксами s]l ..г и	оканчивающегося символом s[z , сопоставленным
с ф].
•	Ь[г, j] = максимальному счету выравнивания между префиксами s[l.. .г] и t[l.. .j], оканчивающегося пробелом, сопоставленным с ф].
•	c[z,J] = максимальному счету выравнивания между префиксами s[l...i] и t[l...J], оканчивающегося символом s[i], сопоставленным с пробелом.
Элементы (г, j) этих массивов зависят от предшествующих элементов согласно следующим формулам, действительным при	и 1 С jC п:
{«[г - 1 J - !] 6[г — 1, j — 1] с[г — 1, j — 1]
6[г, j] = max <
—(/г + р) 4- «[г, j — 1]
~(h + g)+c[i,j - 1]
f-(/i+p)+a[i-1,J] с[г, J] = max < — (h + g) + 6[i — 1, J] (-p + c[i - l,j].
Как и прежде, значение р(г, j) показывает счет совпадения между соответствующими знаками .ч[г] и ф].
Попробуем понять смысл этих формул. Формула для вычисления «[г, j] включает в себя член р(г, j), который является счетом последнего столбца, и наилучший счет выравнивания между префиксами s[l.. ,г—1] иф . .	1].
Что касается величины 6[г j], то мы знаем, что последний столбец будет содержать пробел Однако мы должны проверить, является ли он первым или последующим пробелом пропуска, с тем чтобы мы могли оштрафовать его правильно. Кроме того, мы должны прочитать из массивов значения наилучших счетов для проверяемых префиксов, то есть префиксов si .г Ht[l...j — 1] Именно поэтому в формулах для b\z,j мы всегда оцениваем элементы (г, j — 1). Выравнивания, соответствующие величинам a[i,j — 1] и с[г, j — 1), не оканчиваются пробелом в последовательности s, и, следовательно, конечный пробел должен быть оштрафован как первый в пропуске,
106
Глава 3
то есть вычшанием величины h + g. Выравнивания, соответствующие величине b\i,j — 1], уже имеют в конце пробел, принадлежащий последовательное ги s, так чго пробел, сопоставленный со знаком t[y], должен быть оштрафован как последующий пробел, то есть вычитанием величины д. Эти три возможности являются исчерпывающими, так что, выбирая максимум среди них, мы находим точное значение. Подобное же рассуждение объясняет формулу для величины с[г, у].
Инициализация этих массивов требует некоторого внимания. По-прежнему она будет зависеть от того, хотим ли мы штрафовать начальные пробелы. Чтобы рассуждать более конкретно, допустим, что мы будем штрафовать вес пробелы, а возможность адаптации алгоритма к другим случаям мы предоставим читателю.
Инициализировать необходимо элементы с индексами вида (г,0) для 0 г тп или вида (0,у) для 0 уп. Инициализацию следует проводить согласно содержанию каждого массива, как показано в определении этих массивов. Таким образом, для массива Ь. например, мы имеем:
6[г, 0] = —оо при 0 С г С m и Ь[0, j] = - (h + gj) при 1	ji	п.
Для того, чтобы определение оставалось непротиворечивым, величине b[г, 0] мы присваиваем значение оо, потому что между префиксами .ч[1...г] и /[!...()] (пустая последовательность) нс существует никакого выравнивания, в котором пробелу соответствует знак t 0, так как нс существует самого знака t[0|. Следовательно, если нет никаких выравниваний, то максимальное значение должно быть равно —оо, что равносильно вычислениям максимума. С другой стороны, существует ровно одно выравнивание, оканчивающееся пробелом в последовательности .ч — выравнивание между префиксом ,ч[1 ... 0] (тоже пустая последовательность) и префиксом t[l...у], — и счет этого выравнивания равен —(/г + gj).
Подобным же образом мы инициализируем массив с:
с[г, 0] = - (Л + gj) при 1 г тп и с[0,у] = — со при О^у^п,
и, в конечном счете, массив а:
я[0,0] = 0, а[г, 0] = —оо при 1 С г С тп и «[0, у] = —оо при 1 С у п.
3.3. РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
107
При инициализации массива а мы использовали выравнивания, которые не оканчиваются пробелами, в общем смысле данного определения. Чтобы получить окончательный результат, то есть подобие, достаточно выбрать максимальную величину из n[m, n|, 6[m,n] и с[гп,п], учитывая, что эти величины охватывают все возможности выбора.
Мы можем построить оптимальное выравнивание способом, аналогичным применяемому в случае общих штрафных функций. Для этого требуется всего лиш1. пройти обратный путь от конечной позиции (т, п) через элементы, значения которых выбирались как максимумы в процессе заполнения массивов, пока не будет достигнута начальная позиция — элемент массива (0 0). В течение этого процесса необходимо запоминать нс только текущий элемент, ио также и то, которому из массивов (я, b или с) ои принадлежит.
Возможность доказательства утверждения, что временная сложность этого алгоршма действительно равна О(тп), мы предоставляем читателю. Только что описанный вариант алгоритма тоже имеет пространственную сложность, равную О(тп); известны также варианты этою алгоритма с линейным пространством решения (см. библиографические примечания).
3.3.4,	( РАВНЕНИЕ ПОДОБНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
Две последовательности считают подобными, если они «выглядят похожими» в некотором смысле. Мы уже развили наше представление о подобии и формализовали его через понятия выравнивания и счета. Таким образом, две последовательности подобны, когда счета оптимальных выравниваний между ними очень близки к возможно максимальному (позже термин «возможно максимальный» будет уточнен). Этот раздел посвящен более быстрым алгоритмам поиска хороших выравниваний для подобных последовательностей. Здесь мы анализируем только глобальные выравнивания.
Сначала разберем случай, где две интересующие иас последовательности s и t имеют одинаковую длину п. Это допущение справедливо в силу того, что здесь мы рассматриваем подобные последовательности. Если последовательности я и t имеют одинаковую длину, то матрица динамического программирования является квадратной, а ее главная диагональ проходит от элемента (0,0) к элементу (п, п). Путь по этой диагонали соответствует уникальному выравниванию последовательностей s и t, без включения в него пробелов. Если это выравнивание не оптимально, то мы должны вставить некоторые пробелы в последовательности, чтобы получить более высокий счет. Учтите, что пробелы всегда будут парными: один в s, другой — в t.
108
Глава 3
По мере того как мы вставляем эти пары пробелов, выравнивание отходит от главной диагонали. Рассмотрим слсдуюшие две последовательности:
s=GCGCATGGATTGAGCGA t = TGCGCCATGGATGAGCA.
Оптимальные выравнивания соответствуют путям, которые идут по диагоналям, не более чем на две позиции отошедшим от главной, как показано на рис. 3.8. Оптимальные выравнивания содержат две пары пробелов. В данном случае число пар пробелов равно числу позиций отступа выравнивания от главной диагонали, но эго не всегда так. Определенно известно, что число пар пробелов больше или равно максимальному отступу от главной диагонали.
-GCGC-ATGGATTGAGCGA
TGCGCGATGGAT-GAGC-A
мического программирования. Линия проведена через главную диагональ матрицы
Тогда основная идея выравнивания выглядит следующим образом. Если последовательности подобны, то пути оптимальных выравниваний проходят вблизи главной диагонали матрицы. Чтобы вычислить оптимальный
3.3.	РАСШИРЕНИЯ К ОСНОВНЫМ АЛГОРИТМАМ
109
Algorithm к-ВапсР
input: последовательности s и t равной длины п, целое число к output: наилучший счет выравнивания, отходящего самое большее на к диагоналей от главной диагонали матрицы п — |s|
for i <— 0 to к do
а[г, 0] «— г • д
for j «— 0 to к do
я[°Л J -9
for i *— 1 to n do
for d «--к to A do
j «- г + d if 1 j n then // вычисляем максимум среди И предшествующих элементов «[ij] <- e[t - 1J - 1] +p(i,j) if InsideStrip(i — 1 j, k) then «[i.j] «— max(a[i,j].n[i - l,j] + </) if InsideStrip(i,j — 1, A’) then
«- max(a[t,j],e|i, j - 1] +p)
return n[n,n]
Рис. 3.9. Алгоритм заполнения матрицы динамического программирования в пределах A-полосы вокруг главной диагонали
счет и построить выравнивания, нет необходимости заполнять всю матрицу целиком. Достаточно заполнить тишь узкую полосу вокруг главной диагонали.
Представленный на рис. 3.9 алгоритм k-Bandосуществляет заполнение матрицы вблизи главной диагонали в пределах полосы с горизонтальной (или вертикальной) шириной 2А + 1. В конце работы алгоритма величина о[п, л] содержит наивысший счет выравнивания, ограниченного этой полосой. Время счета этого алгоритма равно О(кп), что является большой победой над обычной функцией О(п2), если к мало по сравнению с и.
Заметим, что мы никак нс используем элементы вне A-полосы. Мы нс инициализируем их и не обращаемся к ним при вычислении максимумов. Чтобы проверить, находится ли некоторая позиция (?, j) в А-полосс, мы используем следующий критерий:
InsideStrip(i.j,k) — (—к	г — j А).
6А-11олоса Прим, перев.
но
Глава 3
Как и в других алгоритмах метода динамического программирования, каждый элемент «[г, j] зависит от элементов а[г — 1,у], «[г — 1, j — 1] и п[г, j — 1]. Программа алгоритма устроена таким образом, что проверять элемент (г — — 1, j — 1) не обязательно, поскольку он находится на той же диагонали, что и элемент (г, j), так что он всегда будет внутри полосы. Проверке должны подвергаться элементы (г — l,j) и (i,j — 1), которые могут выходить за границы полосы, при том что элемент (г, j) находится внутри нее.
Как мы используем алгоритм k-Bandl Мы выбираем значение к и запускаем алгоритм. Если величина а[п, п] больше или равна возможно лучшему счету выравнивания с к + 1 или более парами пробелов, то нам крупно повезло: мы нашли оптимальное выравнивание всего за О(кп) шагов. Учитывая, что мы имеем по крайней мерс к+1 пар пробелов, возможно лучший счет равен
М(п — к — 1) + 2(к + 1)<?
(3.9)
и при этом вычисляется с допущением, что в выравнивании находится точно к + 1 пара пробелов и что все остальные пары дают совпадения. Здесь М — счет совпадения и штраф д налагается за каждый пробел. Примем А/ > 0 и д 0.
Если значение «[п, п] оказывается меньше найденного из (3.9), то мы удваиваем к и снова запускаем алгоритм. Если начальное значение к равно 1, то последующие значения будут степенями двойки. Условие остановки алгоритма принимает вид
М(п — к — 1) + 2(к + 1)д,
что эквивалентно
Мп - од[п, п]
К этому моменту мы уже запускали алгоритм много раз, и каждый раз с большим значением к, так что при допущении о том, что значения к равны степеням двойки, полная сложность равна
п + 2п + 4n -I--+ кп 2кп.
Чтобы ограничить эту полную сложность, нам нужен верхний предел к. Пока что мы не останавливали алгоритм, поэтому
Мп — щ./2|п,ц]
2 < А/ - 2д
3.4. МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ 111
Если я/;[п, n] = fifc/2[n, п], то это оптимальный счет функции sim(s, t) и тогда наш предел равен
к < 2
Л/п — sim(s, t) М-2д
Если a*[n, п] >	,2[п, п], то оптимальное выравнивание имеет более
чем к/2 пар пробелов и, следовательно,
sim(s. t) М
+ 2
S-
что даст
к С 2
Мп — sim(s,t)
М - 2д 1
то есть почти тот же самый предел, что и полученный выше.
Обратите внимание что значение разницы Л/ — 2д остается постоянным Тогда временная сложность алгоритма равна O(dn), где d — разница между возможно максимальным счетом Л/zi (счетом двух идентичных последовательностей) и оптимальным счетом. Таким образом, чем выше счет подобия, тем быстрее мы получаем ответ.
Не вызывает затруднений расширить этот метод на общие последовательности, причем не обязательно одинаковой длины Также могут быть легко получены варианты с экономией пространства.
3.4.	МНОЖЕСТВЕННОЕ СРАВНЕНИЕ
ПОСЛЕДОВАТЕЛЬНОСТЕЙ
До сих пор мы обсуждали сравнение пары последовательностей. Однако часто нам дают несколько последовательностей, которые мы должны выровнять между собой возможно лучшим способом. Например, такая ситуация возникает, когда мы исследуем последовательности некоторых белков с похожими функциями, встречающихся у организмов различных видов. Тогда необходимо определить, какие части этих последовательностей подобны, а какие — различны. Чтобы получить эту информацию, мы должны построить множественное выравнивание этих последовательностей, и именно этой задаче и посвящен настоящий раздел.
112
ГЛАВА 3
MQPILLL MLR-LL— MK-ILLL MPPVLIL
Рис. 3.10. Множественное выравнивание четырех последовательностей аминокислот
Множественное выравнивание представляет собой естественное обобщение выравнивания двух последовательностей. Пусть	— мно-
жество последовательностей знаков, взятых из одного алфавита. Множественное выравнивание последовательностей sj,... ,Sfc выстраивают путем вставки пробелов в эти последовательности таким образом, шобы привести их длины к одному значению. Обычной практикой является помещение удлиненных последовательностей в вертикальный список так, чтобы столбцы были образованы знаками (или пробелами), стоящими в соответствующих (номерам столбцов) позициях. В дополнение к этим условиям мы требуем, чтобы никакой столбец не был составлен исключительно из пробелов На рис. 3.10 показано множественное выравнивание четырех коротких последовательностей аминокислот. (Более обычны множественные выравнивания белков, так что в некоторых из наших примеров в этом разделе мы используем последовательности аминокислот.)
Одна важная проблема, требующая разрешения во множественном выравнивании, — >то точное определение качества выравнивания. Далее мы изучим один способ вычисления счета множественного выравнивания, основанный па попарных выравниваниях. Кроме того, ученые иногда оценивают множественные выравнивания, выращивая из последовательностей деревья, вместо того, чтобы складывать из них поленницы. Это ведет к нескольким различным мерам качества, которые мы рассмотрим в последующих разделах.
3.4.1.	МЕРА ПАРНЫХ СУММ
Вычисление счета множественного выравнивания более сложно, чем его определение у попарного аналога. Здесь мы ограничимся строго аддитивными функциями; то есть счет выравнивания будет равен сумме счетов столбцов. Поэтому мы нуждаемся в некотором способе, посредством которого можно было бы назначить счет каждому столбцу, а затем просуммировать эти счета и таким образом получить полный счет выравнивания.
Однако для вычисления счета столбца требуется определить функцию с к аргументами, где к — число последовательностей. Каждый из этих
3.4. МНОЖЕСТВЕННОЕ СРАВНЕНИЕ IЮСЛЕДОВАТЕЛЬНОСТЕЙ 113 аргументов — знак или пробел Один известный способ — организовать (--мерный массив, который мог бы быть индексирован этими аргументами и возвратить искомое значение. 11роблсма такого подхода связана с тем, что необходимо установить точное значение для каждой возможной комбинации аргументов, тогда как число таких комбинаций может быть равно 2к — 1. Типичное значение к равно 10, и тогда получается более чем 1000 возможных комбинаций. Отсюда видно, что для определения этой функции необходимо разработать более продуктивные методы.
Такие методы могут быть получены путем определения «разумных» свойств искомой функции. Во-первых, функция должна быть независима от порядка следования аргументов. Например, если один столбец содержит знаки I, -, I, V, а другой — знаки V, I, I, -, то оба столбца должны получить одинаковый счет Во-вторых, это должна быть функция, которая награждает присутствие многих подобных или генетически связанных аминокислотных остатков и штрафует несвязанные остатки и пробелы. Решение, которое удовлетворяет этим свойствам — так называемая функция парных сумм (ПС). Она определяется как сумма парных счетов всех пар символов в столбце. Например, счет столбца с вышеупомянутым содержанием вычисляется как
SP-score(I, -, I, V) = p(I, -) + p(I, I) + p(I, V) + + р(-, I) + p(-,V) + p(I,V),
где р(а.Ь) — парный счет символов а и 6. Заметим, что функция ПС может включать штрафы за пробелы, если знак а или Ь — пробел. Это очень удобная система очков, поскольку она полагается на парные счета, подобные тем, которые мы используем при сравнении двух последовательностей. Систему очков ПС используют довольно часто благодаря ее простоте и эффективности.
Чтобы завершить определение, осталось обратиться к маленькой, но очень важной детали. Хотя никакой столбец не может быть составлен исключительно из пробелов, допустимо иметь два или более пробела в одном столбце При вычислении счета ПС необходимо определить значение р(—, —). Данное значение не устанавливают при сравнении двух последовательностей, потому что в этом случае появление такой пары невозможно по определению. Однако для множественного сравнения, основанного на функции ПС, это необходимо. Обычная практика — принять р(—,—) — 0. Это может показаться странным, если учесть, что пробелы, как правило, штрафуют (то есть всегда, когда в парс присутствует пробел, парный счет отрицателен), так что пара с двумя пробелами тем более должна быть отрицательна. Тем не менее, есть серьезные основания, чтобы установить
114
Глава 3
для р(—, —) нулевое значение. Одно из них опя1Ь же связано с попарными выравниваниями. Часто выводы о множественном выравнивании мы делаем на основании оценки попарных выравниваний, которые оно индуцирует. Действительно, в любом множественном выравнивании возможно выбрать две произвольные последовательности и оценить способ, которым они выровнены друг с другом, безотносительно всех остальных последовательностей. Не трудно увидеть, что такая политика приводит к попарному выравниванию, за исключением того, что здесь мы допускаем столбцы с двумя пробелами. Но тогда мы просто удаляем эги столбцы и строим истинное попарное выравнивание. Пример этой процедуры представлен на рис. 3.11. Это то, что мы называем индуцированным попарным выравниванием или проекцией множественного выравнивания.
Очень полезное свойство, верное только при р(—, —) = 0, описывает следующая формула для определения счета ПС множественного выравнивания а:
SP- score(a) — score(&ij).	(3.10)
Здесь — попарное выравнивание пары последоваюлыюсюй st и индуцированное множественным выравниванием а. Это свойство верно, поскольку оно отражает два встречных способа определения одной величины. Мы можем вычислить счет каждого столбца и затем сложить счета всех столбцов, или же вычислить счет каждого индуцированного попарного выравнивания и затем просуммировать эти счета В любом случае, для каждого столбца с и для каждой пары (i,j) мы находим суммарный счет p(s<[c],Sj[c]), где s' обозначает удлиненную последовательность (со вставленными пробелами). Но выражение (3.10) верно юлько при р(—, —) = 0, потому что эти величины присутствуют только в первом вычислении.
Динамическое программирование
Выбрав меру, или счет, для определения качества множественного выравнивания, мы хотели бы вычислить выравнивания с максимальным счетом для заданного множества последовательностей, то есть оптимальные выравнивания.
Как и в случае двух последовательностей, для решения этой задачи возможно использовать метод динамического программирования. Для простоты предположим, что мы имеем к последовательностей, все одинаковой длины п. Для хранения оптимальных счетов множественных
3.4. МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ 115
Множественное выравнивание:
1	PEAALYGRFT---IKSDVW
2	PEAALYGRFT--IKSDVW
3	PESLAYNKF---SIKSDVW
4	PEALNYGRY---SSESDVW
5	PEALNYGWY---SSESDVW
6	PEVIRMQDDNPFttQSDVY
Выбираем только 2-ю и 4-ю последовательности: PEAALYGRFT---------------IKSDVW
PEALNYGRY-----SSESDVW
Удаляем столбцы с двумя пробелами:
PEAALYGRFT-IKSDVW PEALNYGRY-SSESDVW
Рис. 3.11 Индуцированное попарное выравнивание (проекция множественного выравнивания)
выравниваний префиксов этих последовательностей мы используем к-мерный массив а длиной п + 1 в каждом измерении. Таким образом, массив а[й,..., ifc] хранит счет оптимального выравнивания между префиксами sj [1.. .й),..., sfc[l.. .ifc].
После инициализации по схеме а[0,..., 0] <— 0 мы должны заполнить этот массив до конца. Только для его хранения требуется пространство О(пк). Это также нижний предел времени счета, поскольку мы должны вычислить значение каждого элемента массива. Тем нс менее, действительная временная сложность выше по ряду причин. Во-первых, каждый элемент массива зависит от 2*' — 1 ранее вычисленных элементов - по одному для каждого возможного состава текущего столбца выравнивания. В каждой позиции (ярусе) каждого столбца может находиться либо некоторый знак, либо пробел из расположенной на данном ярусе последовательности. Поскольку мы имеем к последовательностей, число возможных комбинаций составов равно 2к. Удаляя запрещенный состав (когда все знаки — пробелы), мы получаем заключительное число составов 2fc - 1. В него входит множитель 2fc экспоненциальной временной сложности.
Тогда возникает вопрос о доступе к данным массива. Лишь малая часть языков программирования и, определенно, ни один из самых популярных языков не дает пользователям возможность определения массива с числом
116
Глава 3
измерений к и приемлемым временем обработки. Альтернатива — применить наши собственные программы доступа. В любом случае, имея или не имея языковую поддержку, мы ожидаем О(к) шагов на один доступ.
Другая проблема — вычисление счетов столбцов. Метод ПС требует О(к2) шагов на каждый столбец, поскольку необходимо просуммировать к (к — 1)/2 парных счетов. Более простые схемы — например, подсчет только числа значащих символов (не пробелов) — требуют по крайней мере О(к) шагов, так как они предполагают просмотр всех аргументов.
Наконец, остается возможность вычисления значения afij,...,ifc], которое включает в себя операцию определения максимума. Используя полужирные буквы для обозначения fc-кортежей, команду, которую мы должны выполнить, запишем в виде
a[i] <— max{a[i — Ь] + SP-sc.ore(Cmo.46ey(s. г. Ь))}, 6^0
где Ъ изменяется в пределах всех ненулевых бинарных векюров к элементов, и
Столбец(з, i,b) = (Cy-JicfCfc,
где
если Ьз = ] i |	, если bj = 0.
Таким образом, оценка полного времени счета для этого первого плана применения алгоритма равна О(к22кпк) при использовании ПС, или О(к2кпк), если счета столбцов могут быть вычислены за время О(к). Если к постоянно, то для заполнения массива достаточно использовать к вложенных for-циклов. Оптимальные выравнивания могут быть восстановлены из этого массива в соответствии с процедурой обратного отхода, аналогичной применяемой в случае попарного выравнивания (раздел 3.2.1). Прямые расширения алгоритма дают подобные методы для случая, где последовательности нс обязательно должны быть одинаковой длины. В любом случае, сложность этого алгоритма экспоненциально зависит от числа входных последовательностей, а существование полиномиального алгоритма кажется маловероятным: было показано, что задача множественного выравнивания с ПС-мерой является НП-полной (см. библиографические примечания)
Экономия времени
Экспоненциальная сложность алгоритма метода динамического программирования делает его непригодным для решения широкого круга задач.
3.4. МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОС1 ЕЙ 117
Главную проблему создает размер массива. Для трех последовательностей мы уже имеем кубическое пространство из О(п3) ячеек, и по мере того как число последовательностей к растет, мы имеем все большие и большие «объемы», которые необходимо заполнять. Ясно, что если бы мы могли как-нибудь уменьшить количество ячеек, которые нужно вычислять, го это привело бы к прямому сокращению времени обработки.
В этом разделе мы описываем эвристику, которая позволит нам достичь именно этой цели. Мы покажем, как встроить ее в алгоритм динамического программирования, чтобы ускорить его вычисления. Но это всего лишь эвристика, потому что в наихудшем случае придется вычислять все ячейки; однако на практике мы можем ожидать хорошее ускорение счета. Эвристика основана на взаимосвязи между множественным выравниванием и его проекциями на массивы с двумя последовательностями, и, в частности, она использует уравнение (3.10), связывающее счета ПС с парными счетами. Таким образом, метод, который мы собираемся ввести в употребление, работает только для ПС-мсры.
Общая структура метода состоит в следующем. Мы имеем к последовательностей с длинами пг, где 1 г к, и хотим вычислить оптимальные выравнивания согласно ПС-мере. Здесь мы будем использовать опять же метод динамического программирования, но обрабатывать не все ячейки Мы выбираем только тс ячейки, которые для оптимальных выравниваний «важны» в некотором смысле. Но какие именно ячейки мы будем считать важными, и почему?
Ответ на этот вопрос нужно искать в попарных проекциях ячейки На стадии предварительной обработки мы определяем условия, которые позволят нам провести анализ важности произвольных ячеек. Чтобы извлечь пользу из этого анализа и сократить число ячеек, к которым мы должны обращаться, мы должны изменить также и порядок заполнения массива.
Анализ важности ячеек
Пусть а — оптимальное выравнивание множества последовательностей s(,. ..,Sfc. В первую очередь необходимо знать, что даже при том, что выравнивание а оптимально, его проекции нс обязательно будут оптимальны для данной пары последовательностей На рис. 3.12 показан случай, в котором проекция оказывается неоптимальной. К несчастью, такие случаи возможны. Если бы этого не происходило, то мы могли бы легко провести анализ важности ячеек по следующему условию: ячейка важна, если каждая из сс попарных проекций является частью оптимального выравнивания двух последовательностей, соответствующих этой проекции.
118
Глава 3
AT А— -Т АТ АТ Оптимальное множ, выравнивание
А-
-Т
Неоптимальная проекция
Рис. 3.12. Оптимальное выравнивание с нсоптимальной проекцией
Прежде чем мы продолжим, позвольте нам подчеркнуть, что рассмотренные нами алгоритмы сравнения удобно применять в случае двух последовательностей s и t, для того чтобы произвести матрицу, в которой каждый элемент (i,j) содержит наивысший счет выравнивания, которое включает сечение (i.j)- Попарное выравнивание о содержит сечснис (г, j), когда п может быть разделено на два подвыравнивания: одно выравнивание между префиксами s[l... г] и t[l... j] и другое — между оставшейся частью последовательности я и остатком последовательности t.
Чтобы получить искомые величины, мы добавляем две матрицы динамического программирования а и Ь со следующими значениями элементов:
a[i,j] = sim(s[l... г], t[l... j]) t>[i, j] = sim(s[i + 1.. .п],ф' + 1.. .m]),
где n = |s| и m = |i|. Матрица a — обычная матрица, которую мы использовали все это время. Матрица Ь может быть вычислена точно так же, как матрица а, но только в обратном порядке. Мы инициализируем последнюю строку и столбец и продвигаемся назад, пока не достигнем элемента Ь[0,0]. Мы делали это в разделе 3.3.1, когда обсуждали применение линейного пространства в алгоритмах метода динамического программирования. Тогда процедура BestScoreRev выполняла как раз те операции, которые мы должны сейчас выполнить в матрице Ъ. Итак, сумма с = а + 6 содержит точное значение наивысшего счета выравнивания, усеченного в элементе (i, j). Матрицу с мы называем матрицей полных счетов, тогда как матрицы я и 6 — соответственно, матрицами префиксных и суффиксных счетов.
Матрица с намного удобнее для визуального анализа, чем матрицы а и Ь. Для быстрого определения оптимальных выравниваний требуется всего лишь взглянуть на элементы матрицы с — простой трюк, который значительно труднее продслагь с матрицами а или Ь. Объясним это на следующем примере. На рис. 3.13 мы видим матрицы о и с для некоторой пары последовательностей и некоторой системы очков. Сможете ли вы точно определить,
3.4. МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ 119
G А Т Г С
0	-2	-4	-6	8	-10
-2	-1	-1	3	-5	-7
—4	-3	-2	0	-2	—4
-6	-5	—4	-1	1	-1
-8	-7	-6	3	-1	-2
10	-7	-8	-5	3	0
- 12	-9	-8	-7	-5	-2
G А Г Т С
—2	—2	-7	12	-17	-22
-7	—4	2	-7	-12	-17
-10	-7	5	-2	-7	-12
13	-10	7	-5	-2	-7
14	-13	10	-5	—4	-2
-17	-14	-13	-8	—4	-2
-22	-17	-14	-11	-7	-2
Рис. 3.13. Maiptiubi динамического программирования' префиксных счетов (слева) и полных счетов (справа)
где находятся оптимальные выравнивания, по матрице а? Их намного легче опрелелить по матрице с, потому что для этого достаточно просто следовать за ячейками с наивысшим счетом.
Хотя проекции оптимальных выравниваний могут нс быть оптимальны сами по себе, мы можем установить нижний предел для счетов проекций, так же как мы имеем нижний предел для оптимального счета. Этот принцип сформулирован в следующей теореме.
Теорема 3.1. Пусть а оптимальное выравнивание множества по-следовательностей .si....Sk- Ест SP-score(n) L, то
score(ctij) Ltj,
где
Lij = L— У' (simfSa:, Sy)).
(я- !/)/(* j)
Доказательство. Последовательно получаем:
SP- score (а) L, score(axy) L, х<у
(score(axy)) > L — scone(a,j),
У2 (sim(sx, sy)) L — score(atj), sc<V
ч го доказывает теорему.
120
Глава 3
Теперь мы имеем возможность проверить, является ли ячейка с индексом г = (ij,..., ifc) важной для оптимальных выравниваний относительно нижнего предела L. Проще говоря, эта ячейка важна, если все ее проекции удовлетворяют условиям предыдущей теоремы. Другими словами, ячейка i важна, когда
Cxylix, гу] Lxy
для всех х и у при 1 Si х < у С к, где сху — матрица полных счетов для пары последовательностей sx и sy. Согласно этой теореме, в оптимальных выравниваниях могут участвовать только важные ячейки, хотя не все важные ячейки будут участвовать в оптимальных выравниваниях. Тем не менее, это предполагает сокращение числа ячеек, которые являются потенциальными кандидатами на оптимальное выравнивание. По мере приближения L к истинному оптимальному счету это сокращение становится более существенным.
Чтобы определить подходящий нижний предел L, достаточно выбрать произвольное множественное выравнивание, включающее в себя вес последовательности, и принять его счет за нижний предел L. Этот предел действительно нижний, поскольку оптимальные выравнивания имеют возможно максимальный счет. Если мы уже имеем достаточно хорошее выравнивание, то мы можем использовать его счет и улучшить это выравнивание, чтобы построить оптимальное только что описанным способом. Альтернативный нижний предел может быть найден с помощью результатов, полученных в разделе 3.4.2.
Применение эвристики
Описанную в этом разделе эвристику следует применять с некоторой осторожностью. Отнюдь не достаточно проверить все ячейки на важность и затем использовать только важные. Это не даст никакого заметного сокращения времени, потому что мы по-прежнему просматриваем все ячейки, чтобы оценить их важность. Мы нуждаемся в способе практически полного отбрасывания неважных ячеек, чтобы к ним вообще не нужно было бы обращаться.
Вот одна из возможных стратегий. Мы начинаем с исходной ячейки 0 = (0,0,..., 0), которая является всегда важной, и распространяем ее влияние на зависимые от нее важные ячейки. Каждая из них в свою очередь распространит свое влияние на следующие ячейки, и так далее, пока мы не достигнем конечной угловой ячейки (гц,.... nt). В результате этих действий будут проанализированы только важные ячейки.
3.4, МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ 121
Чтобы лучше объяснить эту стратегию, нужно определить несколько новых понятий. Ячейка г влияет на другую ячейку j, если г — одна из ячеек, используемых в вычислении максимума при определении значения a[j]. В этом случае мы также говорим, что ячейка j зависит от ячейки i. Другая характеристика этого факта состоит в том, что элемент b = j — г является вектором, каждый компонент которого равен 0 или 1, причем i j. Так, каждая ячейка зависит от самое большее 2fc — 1 других ячеек и влияет на самое большее 2к — 1 других. Мы говорим «самое большее», потому что краевые ячейки могут влиять или зависеть от менее чем 2fc — 1 других ячеек.
Algorithm Multiple-Sequence Alignment1
input: множество s = (si,..., Sk), нижний предел L
output: Значение оптимального выравнивания
// Вычисляем Lxy, 1 х < у к
for всех х и у, 1 х < у к do
Вычисляем сху — массив полных счетов для sx и sy
for всех х и у, l^rc<7/^fcdo
<— L — 52(pjQ)yt(a:ijZ)Sim(Sp,sg)
// Вычисляем массив а
pooh—{0}
while pool не пустой do
г <— лексикографически наименьшая ячейка в pool pool «— pool {г}
if cXy[ix,iy] Lxy,X/x,y, 1 x < у k, then // Анализ важности for всех j зависимых от i do
if j	pool then
pool <— poolU{j}
a[J] <— a[i] + SP-score(Cmon5eq(s, i,j — «)) else
a[J] <— max(a[j],a[i] + SP-score(Cmo.i5eq(s. i.j — «))) return a[ni....rife]
Рис. 3.14. Алгоритм метода динамического программирования с эвристикой экономии времени для множественного выравнивания последовательностей
Мы поддерживаем пул ячеек, которые необходимо исследовать. Первоначально в пуле находится только ячейка 0. Пул всегда содержит только важные ячейки. Когда ячейку г заносят в пул, ее значение а[г] инициализируется. В течение пребывания ячейки в пуле ее значение обновляется
’Множественное выравнивание последовательностей. — Прим, перев.
122
Глава 3
Когда ячейку удаляют из пула, текущее значение а[г] принимают за истинное значение этой ячейки и используют в pacnpociранении на все важные ячейки, зависимые от г.
Значение ячейки распространяется следующим образом. Пусть ячейка j — важная и зависит от ячейки г. Если ячейка j не находится в пуле, то мы помещаем ее туда и инициализируем ее значение командой
o[j] «— а[г] + SP-score(Cmoi6ei{(s, г. Ь)).
Если ячейка j уже находится в пуле, то мы условно обновляем ее значение командой
о [у] <— max(o[j], а[г] + SP-score(Cmo.i6eii(s, i, Ь))).
Важно удостовериться, что каждый раз некоторая ячейка должна быть удалена из пула, при этом выбирается лексикографически меньшая Это гарантирует, что данная ячейка уже подверглась влиянию других важных ячеек и се значение нс нуждается в последующих обновлениях. Процесс останавливается, когда мы достигаем ячейки (гц,... пт), которая непременно является последней исследованной ячейкой; ее значение — искомый счет ПС. Алгоритм вычисления этого счета показан на рис. 3.14. Чтобы построить огпимальныс выравнивания, мы должны каким-либо образом отслеживать обновления. Один путь состоит в построении графа зависимостей, где важные ячейки будут представлены узлами, а зависимости, которые обеспечили максимальное значение, - ребрами. Временная и пространственная сложность этого алгоритма пропорциональны числу важных ячеек.
3.4.2.	ВЫРАВНИВАНИЕ ЗВЕЗДЫ
Вычисление оптимальных множественных выравниваний может занять долгое время, если мы используем стандартный подход динамического программирования, даже с методами экономии времени, кратко описанными в предыдущем разделе; однако были разработаны совершенно иные методы. Эти альтернативные методы часто являются эвристическими — в том смысле, что они не дают никакой гарантии качества найденного выравнивания. Это всего лишь более быстрые способы получения ответа, который во многих случаях оказывается достаточно точным.
Один из таких методов ~ так называемое выравнивание звезды. Он состоит в построении множественного выравнивания, основанного на попарных выравниваниях между фиксированной последовательностью из множества входов и всеми остальными последовательностями множества Эта фиксированная последовательность образует центр звезды. Построенное
3.4.	МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ 123 выравнивание о — такое, что его проекции aLj являются оптимальными, где г или j индекс центральной последовательности.
Пусть Sj,..., sk — множество к последовательностей, которые мы хотим выровнять. Чтобы построить выравнивание звезды, мы должны сначала выбрать одну из последовательностей в качестве центра. Мы отложим обсуждение методики этого выбора. В данный момент мы просто допустим, что центральная последовательность уже выбрана и ее индекс — некоторое число с в интервале 1... к. Затем для каждого индекса г с мы должны построить оптимальное выравнивание пары последовательностей яг и вс. Оно может быть получено с помощью стандартного метода динамического программирования, так что эта стадия процесса занимает время О(кп2), если допустить, что длина всех последовательностей равна О(п).
Затем мы объединяем все попарные выравнивания, используя методику, известную как «один пропуск — всегда пропуск», и применяем ее к центральной последовательности sc. Построение начинается с одного из попарных выравниваний (например, между последовательностями S] и sc) и продолжается добавлением каждого попарного выравнивания к фигуре. В ходе этого процесса мы последовательно увеличиваем пропуски в цен-зральной последовательности вс, чтобы они удовлетворяли последующим выравниваниям, и никогда нс удаляем пропуски, уже присутствующие в sc: один пропуск в sc — всегда пропуск.
Каждое последующее попарное выравнивание добавляется ко звезде, используя выбранную в качестве ее центра последовательность sc как ориентир. Мы имеем множественное выравнивание последовательности .sc с некоторыми другими последовательностями с одной стороны, и попарное выравнивание между sr и новой последовательностью с другой. Мы добавляем в оба выравнивания столько пропусков, сколько необходимо для того, чтобы все удлиненные копии sc пришли в соответствие. После этого достаточно только включить новую удлиненную последовательность в фигуру, поскольку теперь она имеет такую же длину, что и остальные удлиненные последовательности.
Временная сложность такой операции присоединения зависит от структуры данных, используемой для представления этих выравниваний, но она не должна быть выше О(к1) при использовании подходящих структур, где I верхний предел длины выравниваний. Поскольку число добавляемых в фигуру последовательностей равно О (к), постольку временная сложность стадии присоединения составляет О(к21), а полная временная сложность всего алгоритма — О(кп2 + к2Г). Если мы дополнительно вычисляем общий счет выравнивания, то сложность возрастет на величину О(к21), но асимптотическая сложность при этом остается той же самой.
124
Глава 3
Пришло время обсудит ь вопрос о том, каким образом мы должны выбирать центра тьную последовательность. Один путь выбора состоит в том, чтобы просто оценить их все и затем выбрать наилучший окончательный счет. Другой путь позволяет нам вычислить все O(fc2) оптимальных попарных выравниваний и выбрать в качестве центральной ту последовательность, которая максимизирует сумму парных счетов подобий между ней и входными последовательностями8:
57sim(s,,sc).	(3.11)
Пример 3.1. Рассмотрим следующие пять последовательностей ДНК Начнем с составления таблицы попарных подобий между этими последовательностями (см. рис. 3.15). Используемая система очков та же самая, что и в разделе 3.2.1, где мы рассматривали основной алгоритм.
Si = ATTGCCATT S2=ATGGCCATT 83 = АТССААТТТТ S4—АТСТТСТТ ss = ACTGACC
	«1	S2	S3	S4	SS
Si		7	-2	0	-3
«2	7		-2	0	—4
вз	-2	-2		0	-7
S4	0	0	0		-3
S5	-3	—4	-7	-3	
Рис. 3.15. Парные счета для последовательностей из примера 3.1
Из этой таблицы мы видим, что именно первая последовательность, Sj, является той, которая максимизирует выражение (3.11). Наш следующий шаг — выбрать оптимальные выравнивания между последовательностью S]
^Формула (3.11) исключает счет самоподобия центральной последовательности (уело-вне i с). При использовании меры подобия для этого нет никаких оснований; при использовании меры расстояния, конечно, главная диагональ таблицы на рис. 3.15 всегда была бы нулевой. — Доп. авт.
3.4. МНОЖЕСТВЕННОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ 125
и всеми остальными последовательностями из таблицы. Предположим, что мы выбрали следующие оптимальные выравнивания:
ATTGCCATT
ATGGCCATT
ATTGCCATT—
АТС-СААТТТТ
ATTGCCATT
АТСТТС-ТТ
ATTGCCATT
ACTGACC
В этом примере единственными пробелами, представленными в центральной последовательности Si, причем во всех ее выравниваниях, являются два пробела в конце S], вставленные для построения выравнивания с последовательностью S3. Поэтому в окончательном множественном выравнивании последовательность S] будет содержать только эти два пробела. Другие последовательности выравнивают с Si, как показано в этом примере. Итоговое выравнивание звезды представлено ниже:
ATTGCCATT—
ATGGCCATT—
АТС-СААТТТТ
АТСТТС-ТТ—
ACTGACC----
3.4.3.	ВЫРАВНИВАНИЕ ПО ДЕРЕВУ
В этом разделе обсуждается альтернативный метод множественного сравнения последовательностей — выравнивание по дереву9. Причина появления и предпосылка к применению этого подхода связана с тем, что иногда нам известно эволюционное дерево изучаемых последовательностей
’Этот метод часто называют прогрессивным выравниванием. — Прим. pet).
126
Глава 3
(эволюционные деревья предмет главы 6). В таком случае мы можем вычислить обшее подобие, основанное на попарных выравниваниях по ребрам дерева. Сравните это с ПС мерой, которая учитывает все попарные подобия.
Предположим, что нам дано к последовательностей и дерево с к листьями и взаимно однозначным соответствием между листьями и последовательностями. Если мы припишем заданные последовательности к внутренним узлам дерева, то мы сможем вычислить вес каждого ребра, который отражает подобие между двумя последовательностями в узлах, инцидентных этому ребру. Сумма всех этих весов счет дерева для данного варианта приписывания последовательностей к внутренним узлам. Отыскание такого приписывания последовательностей, которое максимизирует счет, представляет собой так называемую задачу выравнивания дерева. Выравнивания звезд можно рассматривать как частные случаи выравниваний деревьев, в которых дерево является звездой10.
Пример 3.2. Рассмотрим вход задачи, показанный на рис. 3.16. Приписывая последовательность СТ к вершине .г, а последовательность CG — к вершине у, мы получаем счет 6. Используемая система очков: р(а, —) = —1; р(а, b) = 1, если о - 6; р(а. 6) = 0, если а Ь. 
Рис. 3.16. Вход задачи выравнивания дерена
Задача выравнивания дерева является НП-т рудной. Су шествует алгоритм, который находит оптимальное решение, но он экспоненциально зависит от числа последовательностей. Используя идеи, развитые в разделе 3,4.1, возможно улучшить пространственные и временные требования на практике. Алгоритмы аппроксимации с хорошими гарантиями эффективности были разработаны для случая, когда веса ребер определены в единицах расстояния, а не подобия (см. раздел 3.6 1) В этом случае мы ищем та
10Как было показано в предыдущем разделе, центральная последовательность может быть выбрана нз множества входных последовательностей, либо та центр может быть принята последовательность, вычисленная по формуле (3.11). Именно в этом случае выравнивания звезд можно рассматривать как частные случаи выравниваний деревьев, в которых дерево является звездой. Доп. авт.
3.5. ПОИСК В БАЗАХ ДАННЫХ
127
кое приписывание последовательностей, которое минимизирует суммарное расстояние. В библиографических примечаниях даны ссылки на источники, в которых рассмотрены эти алгоритмы11 *
3.5.	ПОИСК В БАЗАХ ДАННЫХ
С появлением быстрой и падежной технологии секвенирования последовательностей нуклеиновых кислот и белков, были созданы централизованные базы данных, способные хранить большое количество информации о последовательностях, производимых лабораториями во всем мире. Это вызвало потребность в использовании эффективных программ для обработки запросов в этих базах данных. Типичная задача поиска - сравнить запрашиваемую последовательность со всеми уже имеющимися в базе данных и найти локальные подобия, что означает сотни тысяч операций сравнения последовательностей.
Квадратичная сложность рассмотренных нами методов для вычисления подобий и оптимальных выравниваний между двумя последовательностями делает эти методы непригодными для поиска в больших базах данных. С целью ускорения поиска были развиты новые и более быстрые методы. Как правило, эти методы основаны на эвристиках, и поэтому трудно теоретически установить их временную и пространственную сложность1’ Тем не менее, основанные на них программы стали очень важными средствами поиска, и потому эти методы заслуживают внимательного изучения.
В этом разделе мы сконцентрируем наше внимание на двух из самых популярных программ поиска в базах данных. Ни одна из них нс использует метод динамического программирования в чистом виде, хотя одна из них использует вариант этою метода для улучшения выравниваний, полученных с помощью других методов.
Прежде чем мы начнем описание этих программ, мы сделаем небольшое отступление, чтобы объяснить назначение некоторых матриц счетов для сопоставления аминокислот, поскольку эти матрицы являются очень
нМетол прогрессивного выравнивания в настоящее время является наиболее популярным. Основная идея алгоритма попарным выравниванием последовательностей можно определить расстояния. Затем с использованием расстояний строится бинарное кластерное дерево («путеводное дерево»). В каждом узле дерева строится множественное выравнивание (стопка) как попарное выравнивание выровненных стопок последовательностей в дочерних узлах. Здесь на каждом шаге используется алгоритм попарного выравнивания обобщенных последовательностей (стопок). Прим. ped.
Ьеда в том, что не всегда удается сформулировать математическую задачу, которую решают эти алгоритмы Они не ищут оптимального выравнивания! — Прим ред.
128
Глава 3
важными для поиска в базах данных, а также для сравнения белковых последовательностей в целом.
3.5.1.	МАТРИЦЫ ПТМ
При сравнении белковых последовательностей простые системы очков (как. например, +1 за совпадение, 0 за несовпадение и —1 за пробел) не достаточны. Биохимические свойства аминокислотных остатков, из которых состоят белковые последовательности, влияют на их относительную взаи-мозамснимость в ходе эволюции. Например, гораздо более вероятно, что друг друга заменят аминокислоты сходных размеров, чем таковые со значительно отличающимися размерами. Другие свойства (например, тенденция связываться с молекулами воды) также влияют на вероятность взаимной замены остатков. Поскольку сравнения белков часто проводятся в эволюционном контексте, важно использовать такую систему очков, которая могла бы отражать эти вероятности настолько, насколько это возможно.
Факторы, влияющие на вероятность взаимной замены остатков аминокислот, настолько многочисленны и разнообразны, что лучшим способом определения счета подобия для пар остатков часто оказывается прямое наблюдение фактических частот замен. Стандартная процедура, предназначенная для этих целей, основана на важном семействе матриц счетов — так называемых матриц ПТМ, очень популярных среди практиков в этой области. Аббревиатура ПТМ13 обозначает понятие принятых точечных му таций и процента точечных мутаций и освещает тот факт, что основная матрица ПТМ-1 отражает количество эволюции, производящее в среднем одну мутацию на сотню аминокислот. В этом разделе мы кратко опишем, как вычисляются матрицы ПТМ и каково их назначение.
Наше описание немного отходит от вопроса первоначального получения этих матриц, но оно выдвигает на первый план роль, которую частоты появления и мутабильность (способность к изменению) аминокислот играют в определении счета. В частности, определение мутабильности может отличаться в различных источниках.
Прежде всего, пользователь должен выбрать эволюционное расстояние, на котором он будет сравнивать последовательности. Матрицы ПТМ являются функциями этого расстояния. Например, матрица ПТМ-250 подходит для сравнения последовательностей, отстоящих на 250 единиц эволюции. Сначала мы организуем матрицу, соответствующую ПТМ-1, а затем из этой
13Здесь авторы восхищаются языковыми способностями Маргарет Дейхофф, язык которой отчеканил сей универсальный триплет, кодирующий сразу три сущности: оба представленных выше понятия, а также название изобретенных ею матриц. - Прим, перев.
3.5. ПОИСК В БАЗАХ ДАННЫХ
129
матрицы получим матрицы для других расстояний. Здесь мы рассматриваем мутации только на аминокислотном уровне, но никак не на уровне ДНК.
Для каждого эволюционного расстояния мы строим вероятностную матрицу переходов Л/ и матрицу счетов S. Матрица счетов получается из вероятностной матрицы, так что наше описание мы начнем именно с матрицы переходов Л/. Необходимые компоненты для построения матрицы М ПТМ-1 следующие:
•	список принятых мутации;
•	вероятности появления ра каждой аминокислоты а.
Принятая мутация — мутация, благополучно прошедшая процесс естественного отбора, то есть она не привела к гибели организма и была принята (допущена) окружающей средой. Один из способов выявления принятых мутаций состоит в выравнивании двух гомологичных белков из организмов разных видов (например, цепи а-гемоглобина человека и орангутанга). Каждая позиция, в которой последовательности отличаются, даст нам принятую мутацию. Принятые мутации мы рассматриваем как ненаправленные собы тия; то есть, определив пару а-Ь выровненных аминокислот, мы не знаем наверняка, какая из них является мутантной, а какая — дикой. Какая бы из них ни присутствовала в этой позиции в последовательности предка — она очевидно мутировала в другую, но мы не знаем, какая из них принадлежит организму-предку, а какая — потомку. Возможно даже, что последовательность предка содержала какую-либо третью аминокислоту, которая мутировала в обе существующие, но вероятность этого минимизируется, когда берут очень тесно связанные последовательности. Важно, чтобы в основной матрице ПТМ-1 мы рассматривали непосредственные мутации а —> Ь, а не опосредствованные например я —> с —> 6.
Вероятности возникновения мутаций могут быть оценены путем простого вычисления относительной частоты появления аминокислот в пределах большого, достаточно разнообразного множества последовательностей белка. Значения вероятностей удовлетворяют выражению
L
а
Из списка принятых мутаций мы можем вычислить частоты /аь, показывающие число появлений мутации а <-> b Вспомним, что здесь мы имеем дело с ненаправленными мутациями, так что /аь — fba- Помимо этого нам
130
Глава 3
понадобится сумма
показывающая общее количество мутаций аминокислоты а, и сумма
/ = £/-
дающая общее число появлений аминокислоты, участвующей в мутации. Число f равно удвоенному общему количеству мутаций.
Частоты fab и вероятности ра — все, что необходимо для построения вс роятностной матрицы переходов А/ ПТМ-1. Это матрица размером 20 х 20, где элемент Маь — вероятность замены аминокислоты а на аминокислоту Ь. Обрати ге внимание, что остатки а и Ь могут быть одним и тем же веществом, и в таком случае мы имеем вероятность сохранения аминокислоты а неизменной в течение данного эволюционного периода. В случае матриц ПТМ вычисление вероятности Afaa проводится на основании относительной мутабильности аминокислоты а, определяемой как
Мутабильность аминокислоты — мера ее изменчивости, то есть вероятность того, что данная аминокислота изменится в течение данного эволюционного периода. Следовательно, вероятность сохранения аминокислоты а неизменной равна дополнительной вероятности
ATqq -- 1 Шг; .
С другой стороны, вероятность замены аминокислоты а на Ь может быть вычислена как произведение условной вероятности замены а на Ь при условии, что аминокислота а изменилась, на вероятность изменения аминокислоты а. Условную вероятность мы оцениваем как отношение между мутациями вида а «-> Ь и общим количеством мутаций аминокислоты а. Поэтому
Mab = Рг(а —> Ь) =
= Pr(a —> Ь | а изм.) = Рг(а изм.)
Обратите внимание, что мы вычисляем эти вероятности, используя упрощенную модель эволюции белка. Например, здесь мы допускаем, что
3.5. ПОИСК В БАЗАХ ДАННЫХ
131
аминокислота мутирует независимо от предшествующих мутационных событий, что в силу природы генетического кода далеко не всегда верно. Кроме того, мы игнорируем влияние, которое другие аминокислоты в той же самой последовательности могут оказывать на мутацию данного аминокислотного остатка. В частности, независимость от предыстории ведет к эволюционной модели типа марковской, которая имеет хорошие математические свойства; некоторые из них будут упомянуты в дальнейшем.
Легко убедиться, что вероятностная матрица переходов А/ обладает следующими свойствами;
^МаЬ=1,	(3.13)
ь
^РаМ^ 0,99.	(3.14)
а
Уравнение (3.13) просто показывает, что, складывая вероятность того, что аминокислота а останется неизменной, с вероятностями ее замен на каждую другую аминокислоту из матрицы, мы получаем 1. Таким образом, мы вполне оправданно называем эги величины «вероятностями». Вспомним, что эти вероятности относятся к единице эволюционной изменчивости. Возникает соблазн думать об единице эволюции как о временной единице, однако хорошо известно, что в общем ходе эволюции различные объекты изменяются с разными скоростями, так что в общепринятом смысле время и количество эволюции нс являются прямо пропорциональными величинами.
Единица эволюции, используемая в этой модели, отражает количество эволюции (число эволюционных событий, или периодов), которое приводит к изменению в среднем одной из 100 аминокислот. Далее мы упоминаем эту единицу как эволюционное расстояние ПТМ-1. Чтобы отразить этот факт, вероятностная матрица переходов была нормализована, как видно из уравнения (3.14). Эта нормализация осуществлена делением уравнения (3.12) на 100. Если бы в этом уравнении вместо 100 мы бы использовали другое число, например, 50. то мы бы получили матрицу с точно такими же свойствами, за исключением лишь того, что уравнение (3.14) отражало бы одну из 50-ти средних замен, что составляет вероятность 0,98 того, что никакая замена не произойдет. Таким образом, единица эволюции отражала бы в среднем одну мутацию на 50 аминокислог.
Как только мы определили основную матрицу А/, мы можем найти вероятности переходов для больших количеств эволюции. Например, чему равна вероятность того, что аминокислота а изменится в b за две эволюцион
132
Глава 3
ные единицы ПТМ? Итак, в первый эволюционный период аминокислота а с вероятностью Мас заменяется на любую аминокислоту с, возможно даже на саму себя (то есть сохранится), и затем во второй эволюционный период аминокислота с заменяется на Ь с вероятностью к!сь- Складывая эти вероятности, мы заключаем, что итоговое число — не что иное как то есть возведенный в квадрат элемент матрицы Л/. Тогда Мк — вероятностная матрица переходов за период в к единиц эволюции.
Одно интересное свойство (которое смелый читатель с легкостью сможет доказать) заключается в том, что когда к становится очень большим, скажем, порядка тысяч, вероятностная матрица Мк сходится к матрице с идентичными строками. Каждая строка такой матрицы будет содержать относительную частоту рь в столбце Ь. То есть, независимо от того, какую аминокислоту мы выбираем за исходную, в результате длительного периода эволюции эта аминокислота с вероятностью рь изменится в аминокислоту Ь.
Теперь мы готовы дать определение матрицы счетов. Элементы этой матрицы содержат отношения между двумя вероятностями: вероятностью того, что данная пара аминокислот является мутацией, и противоположной вероятностью того, что ее появление — случайное событие. Это отношение называют отношением правдоподобия или отношением шансов.
Вычислим это отношение для двух аминокислот а и Ь. Предположим, что в данном выравнивании мы сопоставили аминокислоты а и b и рассматриваем их как пару. Если за исходную, или дикую, принять аминокислоту а, то вероятность того, что аминокислота Ь находится в другой последовательности именно из-за мутации, будет равна ЛГа(,. С другой стороны, есть шанс рь случайного появления аминокислоты Ь. Тогда отношение шансов записывают в виде:
Mgb РЬ ’
То же рассуждение остается верным, даже если аминокислоты а и b тождественны. Фактический счет равен десяти логарифмам этого отношения, поскольку при выравнивании нескольких пар сумма отдельных счетов будет соответствовать произведению этих отношений. На практике значения частот округляют до ближайшего целого, чтобы ускорить вычисления. Логарифм умножается на 10, чтобы уменьшить несоответствие между точным значением и целочисленной аппроксимацией.
Предшествующее обсуждение относится к ПТМ-1. Но мы можем использовать точно такую же схему и для произвольного эволюционного расстояния. Матрица счетов для расстояния ПТМ-Л’ определяется следующим
3.5. ПОИСК В БАЗАХ ДАННЫХ
133
образом:
scorek(a,b) — 101g-аЬ
На первый взгляд это не очевидно, но данная матрица факпгчески симмет-рична. Матрицы счетов должны быть симметричными, чтобы давать счет сравнения, независимый от порядка выборки последовательностей. Легко проверить симметричность для k = 1, поскольку
Mab	faWa.   fab
Рь	faPb	WOfPaPb'
Можно показать, что при больших к симметричность также сохраняется (см. упражнение 15). Это свойство обусловлено тем фактом, что рассматриваемые здесь принятые мутации являются ненаправленными, так что при вычислении вероятностей замены а на b и b на а используются одинаковые частоты fab = fba.
Несмотря на то, что матрицы счетов заполняют только на основании наблюдаемых принятых мутаций и общих частот появления аминокислот, в итоге они отражают несколько важных химических и физических свойств аминокислот: например, их сродство к воде и размер молекулы. Как правило, остатки с взаимно подобными свойствами обычно имеют высокие парные счета, а счета сильно отличающихся остатков сравнительно ниже. Этот факт не должен казаться странным, поскольку в результате принятых мутаций аминокислоты гораздо чаще заменяются на подобные чем на отличные. Предпочтение подобных остатков при заменах говорит о стремлении природы сохранить большинство свойств эволюционирующего белка.
Как было упомянуто ранее, для того чтобы выбрать соответствующую матрицу счетов и провести сравнения, мы должны установить расстояние ПТМ. Но иногда мы имеем две последовательности и совершенно никакой информации об их истинном эволюционном расстоянии В этом случае рекомендуется сравнивать последовательности, используя две или три матрицы. охватывающие широкий диапазон расстояний, например' ПТМ-40, ПТМ-120 и ПТМ-250. Как правило, низкие числа ПТМ хороши для поиска близких, сильных локальных подобий, тогда как высокие числа ПТМ позволяют обнаружить дальние, слабые подобия.
3.5.2.	BLAST
В этом разделе мы приводим краткое описание BLAST — семейства программных средств поиска подобия последовательностей. Программы пакета BLAST — одни из наиболее часто используемых средств поиска в базах
134
Глава 3
данных последовательностей во всем мире. BLAST — аббревиатура названия «Basic Local Alignment Search Tool» (основное программное средство поиска локальных выравниваний).
Важно заметить, что в данном контексте термин база данных обозначает обычно большой набор последовательностей, организованных в форме каталога. Это не подразумевает никаких дополнительных функций быстрого доступа, совместного использования данных и т. д., обычно предусмотренных в стандартных системах управления базами данных. Поэтому для нас «база данных» — простая коллекция последовательностей, хотя данные о самих последовательностях сопровождаются дополнительной информацией об источниках данных, библиографическими ссылками, сведениями о функциях последовательностей (если известны) и т. п.
BLAST возвращает список пар сегментов с высоким счетом между запрашиваемой последовательностью и последовательностями в базе данных. Прежде чем мы объясним, что это означает и как BLAST получает эти результаты, мы вкратце представим некоторую терминологию касательно пар сегментов, чтобы наше описание было согласованным с оригинальной документацией семейства BLAST.
Сегментом называют подстроку последовательности. Пара сегментов между двумя последовательностями — это пара сегментов одинаковой длины, взятых из обеих последовательностей. Поскольку подстроки в парс сегментов имею! одинаковую длину, на них мы можем построить выравнивание без пропусков. Этому выравниванию с помощью матрицы счетов замен может быть назначен счет. При этом не нужны никакие функции штрафов за пропуски, так как здесь нет никаких пропусков. По определению, полученный таким образом счет равен счету пары сегментов. На рис. 3.17 показан пример пары сегментов со счетом, назначенным с помощью матрицы замен ПТМ-120. Как правило, пары сегментов представляют собой локальные выравнивания без пропусков.
К A L М	R
V А К	N	S
—4 3 —4 —3 —1 —> Итого: —9
Рис. 3.17. Пара сегментов и ее счет согласно ма>рице ПТМ-120
Теперь мы владеем всей информацией, необходимой для точного описания принципа работы BLAST. Получив на вход запрашиваемую последовательность, BLAST возвращает все пары сегментов между запросом и последовательностями базы данных со счетами выше некоторого порога S.
3.5. ПОИСК В БАЗАХ ДАННЫХ
13*
Параметр S может быть задан пользователем, хотя в большинстве серверов доступа к программе его значение задано по умолчанию. Мы упомянули, что отличительная характеристика возвращаемых программой выравниваний — отсутствие пропусков. По существу, это главная причина высокой скорости BLAST, поскольку поиск хороших выравниваний с пропусками является намного более затратным по времени.
Максимальная пара сегментов (МПС) между двумя последовательностями — это пара сегментов с максимальным счетом. Этот счет является мерой подобия последовательностей и может быть точно вычислен с помощью метода динамического программирования. Однако BI AST оценивает это число намного быстрее, чем любой известный алгоритм метода динамического программирования. Программа также возвращает юкально максимальные пары сегментов, то есть те, счет которых больше не может быть улучшен путем их продолжения или укорачивания.
Принцип работы BLAST
Подход BLAST к вычислению пар сегментов с высоким счетом заключается в следующем. Программа находит некоторые «затравки», представляющие собой очень короткие пары сегментов из последовательности запроса и последовательностей в базе данных. Затем эти затравки без включения в них пропусков наращиваются в обоих направлениях, пока не будет достигнут возможно максимальный счет для продолжений данной затравки. При этом оцениваются нс все продолжения. Программа имеет критерий остановки продолжения затравок, когда их счет падает ниже тщательно вычисленного предела. При этом остается небольшой шанс на то, что правильное продолжение не будет найдено из-за подобного способа оптимизации времени счета, но на практике такой компромисс вполне приемлем.
Программу BLAST можно представив в виде трехступенчатой алгоритмической процедуры, выполняющей следующие задачи:
I.	Составление списка строк (или слов, в терминологии BLASI ) с высоким счетом.
2.	Поиск совпадений — каждое дает затравку.
3.	Продолжение затравок.
Каждый шаг алгоритма зависит от типа сравниваемых последовательностей: ДНК или белка. Далее мы рассматриваем каждый случай подробно.
В случае сравнения последовательностей белка, список слов с высоким счетом состоит из всех w-значных слов базы данных (названных ш-мсрами), причем счет сравнения этих слов с некоторым w-мсром запроса
136
ГЛАВА 3
равен по крайней мере Т; для вычисления счета используют матрицу ПТМ. Здесь w и Т — параметры программы. Обратите внимание, что этот список может содержать далеко не все w-меры запроса! Если w-мср запроса состоит из очень часто встречающихся аминокислот, то он может быть отброшен. поскольку даже счет его сравнения с самим собой может упасть ниже порога Т. Однако в программе предусмотрена специальная опция, вызывающая включение в список всех ш-меров запроса. Для поиска белковых последовательностей рекомендуется устанавливать длину затравки w, 14 равную четырем14.
На следующем этапе программа просматривает базу данных двумя методами поиска совпадений в списке, составленном на предыдущем шаге. Согласно первому методу, из слов списка составляется хэш-таблица. Затем, для каждого слова размером w, взятого из базы данных, по таблице легко определить его индекс и сравнить со словами в списке.
Второй метод поиска совпадений основан на использовании детерминированного конечного автомата. Это устройство характеризуется наличием состояний и переходов и работает подобно вычислительной машине. Автомат начинает работу в установленном начальном состоянии, и для каждого знака в базе данных происходит переход в другое состояние. Слово из списка распознается на основании оценки текущего состояния и предыдущего перехода автомата. Автомат строят только один раз, он использует в качестве входа список слов с высоким счетом и представляет собой компактный способ хранения всех этих слов. Поиск осуществляется быстро, поскольку для распознавания одного знака требуется только один переход автомата в другое состояние.
Заключительный этап — продолжение затравок — не вызывает трудностей. Как мы упоминали, с целью экономии времени алгоритм останавливается, когда при некоторой степени удлинения затравки счет падает ниже наилучшего, полученного для самых коротких продолжений. Удлинение затравок производится в обоих направлениях, и пара сегментов с высоким счетом, полученная из этой затравки, сохраняется в памяти. При этом существует небольшая вероятность потери хороших продолжений, но она пренебрежимо мала.
При сравнении последовательностей ДНК начальный список содержит только w-мсры запроса. Поскольку система очков для последовательностей ДНК более проста, этого достаточно для всех практических целей. Стратегия просмотра радикально отличается от случая белков. Используя преимущества малого размера алфавита (4 знака), база данных сначала сжимается
14 В настоящее время используют длину слова 3. Прим. ред.
3.5. ПОИСК В БАЗАХ ДАННЫХ
137
так, чтобы каждый нуклеотид был представлен двумя битами (тогда четыре нуклеотида умещаются всего в один байт) Теперь, помимо экономии пространства памяти, поиск может быть проведен намного быстрее, потому что каждый раз необходимо сравниваеть только один байт. Дополнительный inai фильтрации удаляет из исходного списка очень частые слова базы данных, чтобы избежать большого количества неинформативных совпадений.
Продолжение затравок осуществляется тем же способом, что и при сравнении белковых последовательностей. В обоих случаях продолжение основано на адаптированной статистике, которая дает точное распределение счета локального максимума для случайных последовательностей без пропусков и очень точное вычисление вероятности того, что найденная пара сегментов появилась в результате случайного события. Чем меньше эта вероятность, тем более значимо совпадение данной пары сегментов.
Теперь мы вкратце опишем наиболее важные моменты статистики. Распределение счега МПС (определение см. выше) для случайных последовательностей -ч и t с соответствующими длинами тип может быть найдено методом точного приближения, описанным ниже. Это приближение улучшается по мере увеличения длин тип.
Имея матрицу счетов замен для пар знаков из некоторого алфавита и вероятность р, появления каждого отдельного знака в сравниваемых последовательностях, сначала мы вычисляем значение Л, решая уравнение
= 1.
Параметр А — единственное положи гельное решение этого уравнения; оно может быть найдено методом Ньютона. Когда значение А известно, ожидаемое число различных пар сегментов между последовательностями s и t со счетом выше порога S равно15
Kmne~xs,
где К — вычислимая постоянная. Фактически, распределение числа пар сегментов со счетом выше порога S — это распределение Пуассона со средним арифметическим, определяемым по предыдущей формуле. Из формулы для числа пар сегментов легко получить выражения и для других интересующих нас величин: среднего счета, интервалов, в пределах которых счет будет падать в течение 90 % времени, и т. д.
15Эта величина называется e-vahie. Прим. ред.
138
Глава 3
3.5.3.	FAST
FAST — другое семейство программ для поиска в банках последовательностей. Основная программа пакета — FASTP — первая общедоступная программа поиска в базах данных последовательностей, предназначенная для поиска подобий запрашиваемой последовательности. Основной алгоритм, используемый FASTP, по очереди сравнивает каждую строку базы данных с последовательностью запроса и выдает строки, оказавшиеся существенно подобными ей, наряду с выравниваниями и другой полезной информацией. Поэтому скорость FASTP обусловлена главным образом се способностью очень быстрого сравнения пары последовательностей. Соответственно, наше внимание в этом разделе будет сосредоточено на том, как именно FASTP выполняет этот основной шаг алгоритма.
Обозначим две сравниваемые последовательности буквами я и t и допустим для данного случая, что это белковые последовательности. Их длины обозначим m = |s| и п = t|. Сравнение начинается с определения к-кортежей, общих в обеих последовательностях, где к равно 1 или 2. В программе значение к задано параметром ktup. Смещение общего fc-кортсжа — еще один важный параметр алгоритма и представляет собой величину между —п + 1 и т — 1, которая определяет относительный сдвиг двух последовательностей. Болес точно, если общий /г-кортеж начинается в позициях л [г] и Z[j], то мы говорим, что смещение этого кортежа равно г — j.
Необходимы следующие структуры данных: 1) таблица соответствия и 2) вектор, индексированный смещениями и инициализированный нулями. Вначале программа просматривает последовательность я и заполняет таблицу соответствия значениями всех позиций данного /г-кортежа в последовательности я (см. рис. 3.18). Затем программа просматривает последовательность t и ищет в таблице соответствие каждому fc-кортежу этой последовательности. При каждом совпадении программа прирагцает векторный элемент соответствующего смещения. На рис. 3.18 показано итоговое содержание вектора смещения и таблицы соответствия для последовательностей я = HARFYAAQIVL и t = VDMAAQIA. Заметим, что при смещении +2 значение векторного элемента максимально; это означает, что при данном смещении было найдено достаточно много совпадений. Этот метод называют диагональным, потому что смещение можно рассматривать как диагональ в матрице динамического программирования. Одно возможное использование максимального смещения — свести область работы алгоритма динамического программирования к некоторой полосе вокруг диагонали, соответствующей этому смещению.
3.5. ПОИСК В БАЗАХ ДАННЫХ
139
123456	789 10 11
s = Н A R FYAAQIVL
А F Н
I
L
Q R
V Y прочие
-7-6-5-4-3 2-1 0+1+2-3|4~5+-6+7--8т9т1(1
	1			1	2	1		1	4	1|						1	
Рис. 3.18. Таблица соошстстния и вектор смещения для сравнения последовательностей программой FASTP. Значение ktup равно 1
Но FASTP проводит более детальный анализ общих А-кортежсй и объединяет два или более таких А-кортсжей, когда они находятся на одной диагонали и вместе с тем не очень далеко друг от друга. Кри герии анализа являются эвристическими. Сцепленные Ажортежи формируют так называемую область. Область можно рассматривать как пару сегментов, в терминологии BLAST, или, иначе, как локальное выравнивание без пропусков. Областям назначается некоторый счет в зависимости от числа содержащихся в них пар совпадающих и не совпадающих знаков. Важно помнить, что области нс имеют пропусков.
Следующий шат про, рам мы состоит в переназначении счетов пяти наилучших областей, полученных на предыдущем этапе с помощью матриц ПТМ, чаще всего ПТМ-120 или ПТМ-250. Наилучший из этих новых счетов является первой мерой подобия между последовательностями s и t и назван начальным счетом16. Начальный счет вычисляется для каждого сравнения запроса с последовательностью базы данных. Эти значения выдаются в виде гистограммы счетов наряду со средним значением счета. Начальный счет используется также для ранжирования всех последовательностей базы данных. Для наивысшего ранжирования таких последовательностей вычисляется оптимизированный счет с помощью алгоритма динамического
16В других источниках эту величину (iniln, то есть initial number) называют начальным числом (НЧ). Прим перев.
140
Глава 3
программирования, ограниченного полосой вокруг начального выравнивания того, которое произвело начальный счет. Эта процедура имеет много общего с методом, представленным в разделе 3.3.4. На практике, когда последовательности на самом деле генетически связаны, оптимизированный счет обычно значительно выше начального. Это свойство часто помогает отличать случайно появившиеся хорошие выравнивания от действительно связанных.
Величина ktup влияет на работу алгоритма через его главные параметры: чувствительность и избирательность. Чувствительность — способность средства поиска распознавать отдаленно связанные последовательности. Избирательность — способность средства отбрасывать ложные совпадения — совпадения между генетически несвязанными последовательностями. Вообще, чувствительность и избирательность взаимно противоположные параметры. При использовании FASTP и других программ этого семейства, низкие значения ktup увеличивают чувствительность, а высокие повышают избирательность.
Помимо средств поиска семейство FAST включает в себя программу, полезную при оценке статистической значимости счета. Это средство работает, перемешивая одну из последовательностей, например t, (при этом сохраняя состав аминокислот неизменным, но изменяя их порядок), и запуская алгоритм метода динамического программирования для сравнения перемешанной последовательности t с исходной последовательностью в. Этот процесс повторяется много раз, так чтобы могли быть вычислены среднее значение и среднеквадратическое отклонение счета. Далее по этим значениям определяют значение z-параметра по формуле
счет усредненный счет z ~ среднеквадратическое отклонение счета ‘
Однако, поскольку статистическое распределение счетов подобий для случайных последовательностей не подчиняется закону нормального распределения, эти z-параметры имеют ограниченную пригодность.
Усовершенствование FASTP привело к созданию программы FASTA. Одна из ее новых функций — способность обрабатывать последовательности ДНК, а не только белковые последовательности. В этом отношении программу FASTA можно рассматривать как комбинацию FASTP с FASTN — программой, специально разработанной для работы с последовательностями нуклеотидов. Еще одна программа семейства — TFASTA — предназначена для сравнения запрашиваемой белковой последовательности с последовательностями из базы данных ДНК (выполняет операции трансляции одновременно с процессом поиска).
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
141
Другое дополнение связано с вычислением начальных счетов После того как наилучшие области были отобраны, FASTA производит дополнительный шаг и пробует объединять близлежащие области, даже если они не лежат на одной диагонали. При этом начальные счета значительно улучшаются для генетически связанных последовательностей и становятся ближе к улучшенным счетам («оптимизированные счета» на языке FASTA). Кроме того, в FASTA сохраняются десять наилучших областей — против пяти наилучших в FASTP. В пакет входят также другие программы, использующие те же самые методы. Например, LFASTA — средство поиска локальных подобий, в том смысле, что для сравниваемой пары последовательностей эта программа выдает более одного хорошего выравнивания
Средство оценки стагисгической значимости также было улучшено. Его наиболее выдающаяся функция возможность выполнения локальной перетасовки последовательностей. Было замечено, что очень часто биологически невыразительное выравнивание получало высокое значение г-парамстра, потому что перетасовка разрушала неравномерное распределение остатков в последовательности. Локальная перетасовка в некоторой степени устраняет эту проблему. Перетасовка проводится блоками по 10-20 остатков, таким образом давая перетасованные последовательности со случайным распределением в целом, но неизменным локальным составом исходной последовательности. Тогда, если высокие счета были вызваны действительно измененным локальным составом, то это затронет средний счет локально перетасованных последовательностей. Другие усовершенствования этого средства включают в себя высокую гибкость в выборе матрицы счетов и вычисление большего количества счетов для каждой перетасованной последовательности.
3.6.	РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
И ТОЧНОЕ СРАВНЕНИЕ
ПОСЛЕДОВАТЕЛЬНОСТЕЙ
Настало время рассмотреть некоторые дополнительные вопросы, связанные со сравнением последовательностей Первый вопрос имеет отношение к понятию расстояния между последовательностями и его взаимосвязи с подобием. Второй вопрос связан с правилами выбора параметров при сравнении последовательностей. Наконец, мы кратко обсудим методы сопоставления строк и точного сравнения последовательностей.
142
Глава 3
3.6.1.	* ПОДОБИЕ И РАССТОЯНИЕ
Подобие и расстояние обусловливают два различных, взаимно противоположных подхода к сравнению строк символов. При поиске подобия мы интересуемся наилучшим выравниванием между двумя строками, и счет такого выравнивания дает нам меру того, насколько эти строки похожи. При определении расстояния мы присваиваем стоимости элементарным редактирующим операциям и ищем наименее дорогой их набор, который преобразует одну строку в другую. Таким образом, расстояние — мера различия строк. В обоих случаях мы ищем численную величину, которая измеряет степень того, насколько последовательности подобны или различны.
Если раньше мы акцентировали наше внимание в основном на вычислении подобия, то в этом разделе мы вводим понятие расстояния и связываем его с подобием. Мы покажем, что во многих случаях эти две меры могут быть связаны с помощью простой формулы, так что мы можем легко получить одну меру из другой.
Мы должны особо подчеркнуть, что наше описание расстояний ограничено глобальным сравнением. Мера расстояния не подходит для локальных сравнений. Это ограничение — одна из причин, по которым мы посвятили эту главу главным образом мере подобия. В таблицу 3.2 сведены основные различия между подобием и расстоянием. Некоторые термины могут быть неясны читателю, но суть их будет раскрыта в дальнейшем.
Таблица 3.2 Отличительные свойства подобия и расстояния
Свойства	Подобие	Расстояние
Аксиома треугольника? Локальное сравнение? Возможность р(а, а) р(Ь, Ь)	нет да да	да нет нет
Начнем с точного определения понятий подобия и расстояния. Пусть s и t — две последовательности знаков, взятых из алфавита £. Этот алфавит может состоять из азотистых оснований ДНК или аминокислотных остатков, но представленные здесь результаты применимы также и для общих случаев. Вспомним, что мы ищем численную величину, которая показывает меру того, насколько строки подобны или различны. Как и прежде, подобие мы обозначаем функцией sim(s. t), а расстояние — функцией dist(s, f).
Подобие
Мера подобия всегда основывается на выравниваниях. Вспомним и пересмотрим точное определение понятия выравнивания. Выравниванием по
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
143
следовательностей s и t будем называть пару последовательностей (s',£z), полученных, соответственно, из последовательностей s и t путем вставки в них знаков пробелов. Выравнивание а = (s'.f) должно удовлетворять следующим условиям:
1-И = И-
2.	Удаление всех пробелов из последовательности s' даст последовательность s.
3.	Удаление всех пробелов из последовательности t’ дает последовательность t.
4.	В любой позиции г выравнивания должен стоять по крайней мере один значащий символ: s'[г] либо Г[г].
Выравнивание образует связь между символами s'[г] и t'[i], занимающими одинаковую позицию г в каждой последовательности. Говорят, что символы s'[г] и 4'[г] выровнены по а.
Подобие — наивысший счет любого выравнивания. Здесь мы делаем допущение об аддитивности системы очков. Теперь вспомним и уточним понятие системы очков. Система очков состоит из пары (р. д), где р — функция вида р : £ х S н» Я, используемая для назначения счета парам выровненных знаков, и д штраф за пробелы. Обычно принимают д < О, но мы не требуем этого. С такой системой очков мы способны назначить численное значение, или счет, каждому возможному выравниванию. Мы прибавляем р(а, Ь) каждый раз, когда знаки а и b совпадают в выравнивании а, и налагаем штраф д каждый раз, когда знак а оказывается в паре с символом пробела. Полная сумма - счет выравнивания <т, обозначаемый как score(n). Тогда, согласно принятой системе очков, подобие между двумя последовательностями s и t равно
sim(s,t) = max score(a), aeA(s,t)
где _4(s, t) — множество всех выравниваний между последовательностями s и t. Такую систему очков называют аддитивной, так как, если мы разделим любое выравнивание на два последовательных блока, то счет полного выравнивания будет равен сумме счетов его блоков.
Расстояние
Расстояние на множестве строк Е может быть выражено функцией d: Е х Е R, удовлетворяющей следующим условиям:
144
ГЛАВА 3
1.	d(x, х) = 0 для всех х G Е и й(ж, у) > О для всех х у
2.	d(x, у) = d(p, х) для всех х G Е и у G Е (d симметричная)
3.	d(x, у) С d(x, z) + d(y, z~) для всех х G Е, уСЕигсЕ.
Третье условие известно как аксиома треугольника. Это условие очень полезно во многих контекстах, и многие алгоритмы полагаются на его обоснованность. В случае выравнивания строк возможно определить расстояние на множестве всех строк из алфавита S, основанное на количестве операций, необходимых для преобразования одной строки в другую.
Последовательным применением ряда допустимых операций, любая строка из множества может быть преобразована в любую другую. Если мы назначим стоимость каждой допустимой операции, то мы сможем определить расстояние между двумя строками как минимальную полную стоимость преобразования одной строки в другую. Допустимые операции следующие:
1	Замена знака а знаком Ь.
2	. Вставка или удаление произвольного знака.
Чтобы назначить счет этим операциям, мы используем меру стоимости {с, h), где с функция стоимости вида с : Гх Г н Ли вещественное число. Тогда замена знака b на а стоит с(а, Ь), а вставка или удаление знака стоит h. Стоимость ряда операции а равна сумме стоимостей отдельных операций и обозначается функцией cost(a').
Итак, согласно мере стоимости расстояние между двумя последовательностями s и t равно:
dist(s, t) = mm cost(a),
„(SlsJ'l
где S(s. t) — множество всех рядов операции, выполненных для преобразования последовательности s в последовательность I.
Для того чтобы это определение было достаточно обоснованным, необходимо ввести некоторые ограничения на меру стоимости (с, h). Во-первых, мы имеем дело только с неотрицательными значениями стоимости, иначе минимум этой функции не имел бы смысла. Мы также допускаем, что функция стоимости с является симметрической, иначе расстояние нс было бы необходимо симметричным Этот минимальный набор требований гарантирует, что функция dist(s, t) является симметрической и удовлетворяет аксиоме треугольника. Чтобы удостовериться в том, что эта функция действительно выражает расстояние, мы нуждаемся в дополнительном
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
145
условии: с(а, Ь) > 0 при а b, h > 0. Это необходимо, чтобы избежать случаев, когда две последовательности s и t не равны между собой, но функция dist(s,Z) оказывается равной нулю. Мы хотим, чтобы расстояние было нулевым только когда последовательности идентичны.
Также мы сделаем допущение, что функция стоимости с удовлетворяет аксиоме треугольника, то есть
с(х, у) с(х, z) + с(у, z)	(3.15)
для всех х, у и z из алфавита S. Причина введения этого последнего допущения состоит в том, что, даже если мы начинаем выполнение операций с пары (с, h). не удовлетворяющей аксиоме треугольника, у нас всегда будет возможность определить новую пару (с', Л), которая действительно удовлетворяет ей и позволяет определить ту же самую функцию расстояния. Например, если три знака х, у и z — такие, что с(г, у) > с(х, z) + c(z, у), то каждый раз, когда мы должны заменять х на у, мы не будем делать этого непосредственно, а вначале заменим д’ на г, а уже затем z на у, получая тот же самый результат, но уже с более низкой стоимостью. Во всех случаях ответ выглядит так, как если бы эффективная стоимость замены т на у была бы равна с(х, z) + c(z, у), а не с(х, у), поскольку первое выражение - это суммарная стоимость операций замены. Используя выражение (3.15), мы можем избежать подобных ситуаций.
Пример 3.3. Принимая
с(з.,.)==10 пРи Х = У '	1 при х у
и h = 1, мы получаем так называемое редактирующее расстояние между двумя последовательностями, и<вестное также как расстояние Левенштей-на.	
Вычисление расстояния
Имея меру стоимости (с, h) и постоянную М, мы можем определить систему очков (р, д) следующим образом:
р(а, b) = М — с(а, 6),
(3.16)
(3-17)
146
Глава 3
Если мы имеем выравнивание а между двумя последовательностями s и I, то возможно определить такой ряд операций <т, что
score(a) + cost(a) =	+ n)i	(3.18)
где т = |я| и n = t. Чтобы найти ряд операций <т, достаточно разбить выравнивание а на столбцы, как мы делали ранее при вычислении счета. Столбцы непосредственно соответствуют допустимым операциям. Совпадения знаков соответствуют заменам. Пробелы соответствуют вставкам или удалениям знаков. Эти операции могут быть применены в любом порядке, потому чго они действуют на непересекающиеся области выравнивания и не мешают друг другу.
Ряд <т будем называть рядом допустимых операций, выполненных слева направо. Теперь вычислим счет выравнивания а и стоимость ряда <т. Предположим, что в выравнивании а есть точно I совпадений знаков, где каждое г-е совпадение — совпадение знака сц последовательности s и знака bi последовательности t. Предположим далее, что в выравнивании а есть точно г пробелов. Считая эти предположения верными, мы получаем следующее выражение для счета выравнивания а:
1
score(a) = У^р(аг,Ьг) + гд.
«=]
С другой стороны, стоимость ряда а равна
1
cost{<j) =	с(а,, bi) + rh.
2=1
Почленное сложение этих двух уравнений и отношений (3.16) и (3.17) дает
score(a) + costfcr) = IM +	(3.19)
Заметим, что величины I и г не являются независимыми. Они должны удовлетворять соотношению, включающему в себя также общее количество знаков в этих двух последовательностях. Действительно, на каждое совпадение нужно учитывать два знака, тогда как пробел соответствует только одному знаку. Поэтому общее число знаков т + п должно быть равно
т + п — 21 + г.
(3-20)
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
147
Теперь мы можем видеть, что уравнение (3.19) может быть переписано в виде
score(a) + costfa) = — (т + n),
что представляет собой уравнение (3.18).
Это верно для любого выравнивания. В частности, если а есть оптимальное выравнивание, то мы имеем
sim(s, t) + cost(a) = ^(т + n)i
где <т — ряд операций, произведенных в выравнивании а. Поскольку расстояние между последовательностями в и t равно минимальной стоимости любого ряда операций, мы окончательно получаем
л#
sim(s, t) + dist(s, t) (m + n).
Теперь резюмируем полученный выше результат в виде теоремы, на которую будем ссылаться в дальнейшем.
Теорема 3.2. При заданной мере стоимости (с, /г), соответствующей системе очков и некоторой постоянной М, для каждой пары строк s и t мы имеем:
dist(s,/.) + sim(s,t) < ^(|s| + HD-
Теорема 3.2 дает нам верхний предел значения функции dist(s, t). Мы хотим показать, что это также нижний предел и что расстояние может фактически быть получено из подобия прямым способом.
Теорема 3.3. При условиях теоремы 3.2 следующее неравенство верно:
sim(s. t) 4- dist(s. t) 4^-(|s| + |t|).
ДОКАЗАТЕЛЬСТВО. Последовательно рассмотрим теорему 3.2. Во-первых, имея ряд допустимых операций <т, мы строим выравнивание а со следующим свойством:
score(a) + cost (с) > 4r(m + n).
(3-21)
148
Глава 3
Следуet подчеркнуть, что здесь мы не можем получить равенство в общем виде, как мы делали в предыдущем дока таз ельстве. Этот случай немного отличен, потому что ряд может состоять из противоположных операций, и тогда соответствующее выравнивание покажет только суммарный эффект выполнения этих операций. Например, если ряд <7 в некоторый момент вставляет знак а где-нибудь и затем немедленно удаляет его, то суммарный результат этого ряда операций будет пустым, хотя мы назначили им счет. Предыдущее уравнение должно вычислять все ряды операций вне зависимости от их эффективности, и именно поэтому оно представляет собой неравенство вместо равенства.
Докажем соотношение (3.21) методом индукции на числе операций ряда <7. Если <т| = 0, то это значит, что никакая операция не была выполнена, так что .ч = t. Выравнивание (s.s) имеет счет Мт Мп = М(т + п)/2, и в этом случае соотношение верно.
В случае, когда ряд <т состоит из по крайней мере одной операции, необходимо рассмотреть последнюю операцию отдельно. Запишем ряд операций в виде <7 = а'и, где и — эта последняя операция, так что
д' .1 «	.
s —> t —> t,
то есть t' — строка, полученная из последовательности s посредством всех операций ряда, кроме последней, а строка f получена из последовательности t' в результате применения операции и.
Сделаем индуктивное предположение, что мы имеем такое выравнивание а' между последовательностями s и t', чго
score(ct) + со st {а')	+ п')-
где п' = |t'|. Поскольку cost(a) = cost(<r') + cost(u), достаточно всего лишь найти выравнивание о между последовательностями s и t и получить следующее неравенство:
scorefa) score(ct) +	— п') ~~ costfu).	(3.22)
Почленное сложение этих двух неравенств даст нам желаемый результат. Согласно типу последней операции и можно pacCMOtpeib три следующих случая: замена, вставка, удаление.
Случай 1: и — операция замены.
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
149
В этом случае cost(u) = c(a,b), п = п' и строка t отличается от строкиЕ./' только в одной позиции, как показано ниже:
s	.. .х...
t'	.. .а...
t	...Ъ...
Мы можем построить выравнивание о простой заменой знака а на b в выравнивании а', что на вышеприведенной схеме соответствует игнорированию средней линии. Если символ х в строке s значащий, то
score(ct) = score(a') — р(а,х) + p(b,x)
= score (а') — А/ + с(а, х.) + А/ — с(Ь, х)
= score(a') + с(а, х) — с(Ь, х) score(a') —c(a,b),
где последний шаг — следствие аксиомы треугольника для функции стоимости с. Таким образом, мы пришли к желаемому результату.
Если х - знак пробела, то счета выравниваний о и п' равны и, следовательно, score(a) = score(a') scorefa') — с(а, b),
поскольку в соответствии с индуктивным предположением с(а, Ь) 0.
Случай 2: и — операция вставки.
В этом случае cost(u) h и п' = п — 1. Чтобы операция вставки знака стала возможной, выравнивание а' должно быть «открытым» в некоторой позиции, как показано ниже:
s
t'
|...
|...
t ...|а|...
В последовательность s вставлен дополнительный пробел. Тогда разница в счете между выравниваниями о и а' обусловлена этим дополнительным пробелом в выравнивании о:
score[a)=score(a') + д = =score(a') — h +
Это доказывает верность соотношения (3.22) в случае, когда и является операцией вставки.
Случай 3: и — операция удаления.
150
Глава 3
В этом случае снова cost(u) = h, но п' = п+1. Получается следующая картина:
S	. . .X...
t'	.. .а...
t	.......
Здесь мы выделяем два подслучая, согласно тому, является ли знак х пробелом или нет. Если х — значащий символ, то
score(a) = score(a') —р(а,х) + д
= score(a') — А/ + с(а, х) — h + 4/-= score(a') — h —	+ с(а. х)
scorefa') — h—
что и требовалось, поскольку с(а, х) 0. Если же х — знак пробела, то score(a)=score(a’) — д
=score(a') -h + ~-^scorefa') — h —
поскольку h > 0.
Этот случай завершает индуктивное доказательство и показывает, что соотношение (3.21) верно. В частности, оно верно для минимальной стоимости ряда операций <т, и поэтому
score(a) + dist(.s,£)	+ п),
или же, принимая во внимание, что sim(s,t) — возможно максимальный счет выравнивания между последовательностями в и t,
А/ sim(s,t) + dist(.s,t) — (m + n), что доказывает теорему.	
Объединяя теоремы 3.2 и 3.3, мы можем записать соотношение
sim(.s,£) + dist(s,t) = ^-(тп + п),	(3.23)
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
151
которое показывает нам, как надобно вычислять расстояние через подобие. Таким образом, вычисление расстояния может быть сведено к вычислению подобия. Чтобы вычислить расстояние, все, что мы должны сделать, — это выбрать подходящую постоянную М. определить параметры системы очков р и д, как в выражениях (3.16) и (3.17), и применить один из алгоритмов глобального сравнения, которые мы уже рассмотрели. После чего найденное подобие преобразуется в расстояние вышеприведенной формулой.
Например, в случае редактирующего расстояния мы можем выбрать М = 0 и запустить алгоритм подобия со следующими параметрами системы очков: совпадение = 0, несовпадение = — 1, пробел = — 1. Или же мы можем выбрать А/ = 2 и принять: совпадение = 2, несовпадение = 1 и пробел = 0. Обе системы очков дают одни и те же оптимальные выравнивания, хотя и с различными счетами. Но после применения формулы (3.23) расстояние получается одинаковым.
Прежде чем мы закончим этот раздел, надлежит сделать комментарий относительно постоянной М. Может показаться странным, что для теоремы 3.2 подходит любое значение М. Если М — большое положительное число, то в результате система очков может дать отрицательные значения штрафов за пробелы w'(k) для многих, а возможно и всех, значений к. Это противоречит нашей интуиции, учитывая, что пробелы должно штрафовать, а никак не награждать. То же самое происходит при отрицательном, но очень большом по абсолютной величине значении М. Функция р на сей раз будет отрицательной, что снова противоречит здравому смыслу. Причина этой очевидной аномалии связана с тем фактом, что здесь мы рассматриваем только глобальные сравнения. Когда мы изменяем значение Л/, счет всех выравниваний возрастает или убывает взаимно пропорционально, так что оптимальные выравнивания всегда остаются теми же самыми. Для локальных выравниваний уравнение (3.20) не действительно, и, варьируя параметр М, мы можем отдать предпочтение более длинным или более коротким локальным выравниваниям.
3.6.2.	ВЫБОР ПАРАМЕТРОВ ПРИ СРАВНЕНИИ
ПОСЛЕДОВАТЕЛЬНОСТЕЙ
В этом разделе мы приводим некоторые соображения относительно выбора параметров системы очков и выбора алгоритма для каждого конкретного случая сравнения последовательностей.
При выборе системы очков должны быть учтены многие факторы. Эта система включает, в простейшем виде, очки за совпадения (М), несовпадения (тп) и пробелы (д < 0).
152
Глава 3
Выбирая ту или иную систему очков, важно убедиться в том, что совпадение стоит больше несовпадения, с тем чтобы мы поощряли выравнивания идентичных знаков. Другое общеизвестное правило состоит в том, чтобы убедиться, что несовпадение мы всегда предпочитаем паре пробелов. Например, следующее левое выравнивание должно иметь более высокий счет, чем столь же возможное правое:
А	-А
С	С-.
Вышеприведенные правила записывают в виде неравенства параметров системы очков:
2д < т < Л/.
Обратите внимание, что, если мы умножим все веса на некоторую положительную постоянную, то оптимальные выравнивания останутся теми же самыми. Это свойство может быть использовано для округления значений всех весов до целых чисел, которые большинством современных компьютеров обрабатываются значительно быстрее чисел с плавающей запятой.
Рассмотрим транспозиции знаков. Если мы имеем, например, последовательности АТ и ТА, то для них можно построить по существу два выравнивания, соревнующихся за лучший счет:
АТ	-АТ
ТА	ТА-.
(Есть еще третье выравнивание с таким же счетом, как у второго, но в нем пару совпадения образуют символы Т.) Счета этих двух выравниваний равны, соответственно. 2т и Л/ + 2д. Таким образом, если т равно среднему арифметическому значений Л/ и 2д, то два предыдущих выравнивания эквивалентны в значении счета. Чтобы отдать предпочтение одному из них, мы должны выбрать значение т ближе к одной из конечных точек интервала [2д, М].
Рассуждая подобным же образом, возможно представить другие примеры пар коротких последовательностей и в каждом случае постулировать, какое выравнивание является наиболее предпочтительным. Это дает нам дополнительные неравенства параметров т, М и д. Например, при сравнении последовательностей ATCG и TCGA мы можем предпочесть первое из двух следующих выравниваний:
ATCG-	ATCG
-TCGA	TCGA.
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
153
Это предпочтение будет отражено в счете при выполнении нсравенова 4т < 4М + 2д. Помимо некоторых других причин, значения параметров, используемые в разделе 3.2.1, были выбраны именно на основании этих критериев.
Иа практике часто необходимы более сложные системы очков, чем простая система параметров А/, т и д. Обычно предпочитают субаддитивные функции штрафов за пробелы, упомянутые в разделе 3.3.3. Среди них очень популярны линейные функции благодаря квадратичному времени счета в противоположность кубическому для общих функций. Другое важное свойство, особенно для сравнения белковых последовательностей, — способность дифференцированной оценки совпадений аминокислот. Так, совпадение аминокислот с подобными химическими или физическими характеристиками (размер, заряд, гидрофобность и т. д.) должно получать больше очков, чем совпадение между незначительно подобными. Отсюда следует, что системы очков, основанные только на идентичности, как правило, недостаточны. При сравнении белков общепринятым является использование матриц ПТМ.
Тем не менее, простой метод идентичности/нсидснтичности достаточно универсален, чтобы включить в себя в качестве частных случаев несколько известных задач сравнения последовательностей. Одна из этих задач состоит в том, чтобы найти длиннейшую общую подпоследовательность (ДОП) пары последовательностей. Это равносильно использованию основного алгоритма при А/ = 1 и т = g = 0. Таким образом, при заданных последовательностях длиной т и п мы можем решить эту задачу в пространстве O(min(m, п)) за время О(тп). Эта задача получила большое внимание, и для се частных случаев были описаны несколько более быстрых алгоритмов17.
Теперь обсудим выбор алгоритмов18. Решение о том, стоит ли штрафовать крайние пробелы, а также выбор локальных или глобальных методов во многом зависит от области применения и вида желаемых результатов. Если мы хотим сравнись относительно подобные последовательности приблизительно одинаковой длины, то, вероятно, более уместным будет метод глобального сравнения со штрафами за все пробелы. Например, сюда можно включить случай двух молекул тРНК различных организмов, или же двух тРНК одного организма, но специфичных к разным аминокислотам.
^Существенно, что для этого случая есть точные оценки статистической значимости вы-равни вания. — Прим. ред.
11а самом деле шесь имеются в виду не разные алгоритмы решения одной математической задачи, а разные математические задачи. Прим. ред.
154
Глава 3
Если, напротив, одна из последовательностей коротка, а другая намного длиннее то наиболее желательно штрафовать только крайние пробелы в более короткой последовательности. Это позволит нам с заданной точностью найти все появления короткой последовательности в длинной. Такой поиск полезен при попытке определить в недавно расшифрованной молекуле ДНК местонахождение сравнительно сильно консервативных структур.
Локальное сравнение следует использовать при сравнении двух относительно длинных последовательностей, которые могут содержать области высокого подобия. Типичный случай последовательности белка с подобными функциями, принадлежащие организмам, в действительности далеко отстоящим в единицах эволюционного расстояния. Так как исследуемые в данном случае белки выполняют подобные функции, то весьма вероятно, что в их последовательностях существуют некоторые области высокого подобия (активные центры, мотивы, функционально тождественные структуры и т. д ), разделенные избыточными несвязанными областями, которые накопили мутации и не оказывают заметного влияния на их функции.
Если сравнение последовательностей проводят с целью проверки гипотезы об их общем происхождении, то интерпретации результатов необходимо уделять особое внимание. Как правило, случайные оптимальные выравнивания являются наименее вероятными, однако всегда желательно сравнивать полученный счет с тем, что ожидалось в среднем от генетически несвязанных последовательностей с теми же самыми характеристиками, как у этих двух сравниваемых последовательностей. Если оптимальный счет получается намного выше среднего, то это служит хорошим показателем тою, что подобие между сравниваемыми последовательностями не случайно. Но даже в таком случае этот результат сам по себе не подразумевает гомологию или любой другой признак общего происхождения последовательностей. Как правило, с целью подтверждения или опровержения гипотезы об общем предке проводят дополнительные эксперименты, основанные на информации, полученной из этого выравнивания. С другой стороны, если подобие почти равно ожидаемому среднему, то вполне вероятно, что данные последовательности не связаны. Однако в биологии не существует правил без исключений и известны случаи гомологичных белков без каких-либо следов подобия на уровне последовательностей. Для подтверждения гомологичности в этих случаях были использованы другие виды данных — “	T9
например, результаты анализа трехмерной структуры молекулы .
,9При выборе способа формализации задачи и при подборе параметров, а также при оценке качества используют «золотой стандарт», для которого известен ответ. В частности, для оптимизации методов и параметров выравнивания используют выровненные пространственные структуры белков. - Прим. ред.
3.6. РАССТОЯНИЕ, СОПОСТАВЛЕНИЕ СТРОК
155
3.6.3.	СОПОСТАВЛЕНИЕ СТРОК И ТОЧНОЕ СРАВНЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ
Две другие задачи, имеющие важное значение для вычислительной молекулярной биологии, — это задачи сопоставления строк и точного сравнения последовательностей. При сопоставлении строк мы выбираем строки s и f, где |s| = п и |t| = т, и хотим найти все появления строки t в строке s Другими словами, ответить на вопрос, является ли строка t подстрокой последовательности s. Если да, то в каких именно позициях строки s мы можем найти строку t? Это классическая задача информатики, и она может быть решена эффективно. Так, разработаны алгоритмы, которые могут решить эту задачу за время О(п + т), что намного быстрее по сравнению с квадратичной сложностью основного алгоритма сравнения двух последовательностей. Мы не будем описывать такие алгоритмы, ибо их можно найти в любом хорошем учебнике по теории алгоритмов; некоторые из них мы упоминаем в библиографических примечаниях главы 2. Обратим наше внимание на го, что эффективные алгоритмы были развиты также для задачи о приближённом совпадении строк, где мы допускаем появление некоторого числа ошибок при поиске совпадения. Такие алгоритмы, конечно, тоже важны для молекулярной биологии. Ссылки на них даны в библиографических примечаниях.
Большую часть этой главы мы посвятили методам сравнения последовательностей, допускающих появление ошибок. Несомненно, такое допущение справедливо для большинства случаев сравнения последовательностей в реальной жизни, но в некоторых ситуациях мы нуждаемся в точных сравнениях. Многие задачи точного сравнения последовательностей могут быть решены с помощью очень полезной и универсальной структуры, известной как суффиксное дерево. Ниже приведены примеры задач этого класса.
•	В главе 4 будет показано, что присутствие повторных подстрок (повторений) в последовательностях — одна из главных проблем, возникающих при крупномасштабном секвенировании ДНК. Естественно, в данном случае задача состоит в том, чтобы найти самую длинную повторную подстроку последовательности.
•	При использовании ПЦР (см. раздел 1.5.2) мы должны найти короткий фрагмент ДНК, называемый праймером, причем сам он не должен появляться в молекуле ДНК, предназначенной для клонирования. Эта задача может быть формализована следующим образом. Даны строки А (длинная) и В (короткая) и для каждой позиции i строки В требуется найти такую кратчайшую подстроку, которая начинается в строке В с позиции i и притом не появляется ни в одной позиции строки А.
156
Глава 3
Рис. 3.19. Пример суффиксного дерева для строки GTATCTAGG. Знак доллара ($) обозначает конец строки
•	В разделе 1.5.2 было показано, что участки рестрикции для рестрик-таз представляют собой перевертни равной длины. Задача состоит в том, чтобы найти все максимальные палиндромы данной последовательности ДНК.
Теперь мы объясним, что такое суффиксное дерево. Как правило, оно содержит все суффиксы строки s, причем общие префиксы вынесены за скобки в максимально возможной для данной структуры дерева степени. Формальное определение звучит следующим образом: суффиксное дерево строки s = Si, S2,. -., sn — это корневое дерево Т с п + 1 листьями, обладающее перечисленными ниже свойствами:
•	Ребра дерева Т ориентированы в направлении от корня, и каждое ребро помечено подстрокой последовательности s.
РЕЗЮМЕ
157
•	Ребра, выходящие из данной вершины, несут различные метки, а все такие метки имеют различные префиксы (не считая пустых префиксов).
•	Каждому листу дерева соответствует суффикс последовательности s, и этот суффикс образован сцеплением меток всех ребер, принадлежащих пути от корня к данному листу
На рис. 3.19 показан пример суффиксного дерева. Чтобы избежать проблем с пустым суффиксом, к концу последовательности s мы обычно добавляем дополнительный знак $, нс встречающийся где-либо еще в этой строке. Суффиксные деревья могут быть построены с помощью одного хорошего алгоритма (не будем его описывать), время счета которого при постоянном объеме алфавита равно О (и). Как только суффиксное дерево построено, большинство задач, рассчитанных на его применение, могут быть решены за время О(п) Это относится к только что описанным задачам. Задача поиска праймера может быть решена за время О(|В|) Мы предоставляем читателю возможность самолично найти варианты применения суффиксных деревьев для решения описанных выше задач.
Относящаяся сюда же структура, называемая массивом суффиксов, также можез быть использована для решения задачи точного сравнения последовательностей Эта структура состоит в основном из всех лексикографически сортированных суффиксов последовательности s.
РЕЗЮМЕ
Мы начали главу с рассмотрения способов сравнения пары последовательностей. Для этой цели может быть успешно применена методика построения алгоритмов, называемая динамическим программированием, которая дает точные и эффективные алгоритмы. Затем мы изучили несколько расширений к основным алгоритмам метода динамического программы рования Некоторые из этих расширений позволяют экономить время или пространство, что в некоторых случаях особенно необходимо. Другие расширения нацелены на решение более общих вариантов задачи сравнения последовательностей, разработанных для некоторых специальных случаев.
Вспомним различные способы сравнения и области их применения’
•	Глобальное сравнение целых последовательностей;
•	Локальное поиск подобных участков последовательностей;
•	Полуглобальное — определение степени подобия суффиксов, префиксов или внутренних областей последовательностей.
158
Глава 3
Алгоритмы, построенные для решения этих задач, имеют квадратичную сложность как в отношении времени, так и пространшва. Однако для всех этих алгоритмов были разработаны версии, экономящие пространство. Эти версии используют линейное пространство, но при этом могут удваивать время счета.
В приведенную ниже таблицу сведены обобщенные характеристики алгоритмов по типу используемой ими функции штрафов за пропуски.
Тип функции	Уравнение	Сложность	Пространство
линейная	w(fc)= ак		один массив
линейная	w(k) = ак + b		три массива
общая	любое w(k)	O(n3)	три массива
Далее мы рассмотрели проблемы множественного выравнивания последовательностей. В данном случае метод динамического программирования привел к неэффективному алгоритму, так что возникла необходимость выбора других методов; мы описали ряд альтернативных методов. Другая ситуация, в которой алгоритмы, основанные на методе динамического программирования, работают недостаточно быстро, возникает при поиске некоторой последовательности или структуры в базе данных. Мы изучили эту задачу в разделе 3.5, исследуя эвристики, используемые в системах программного обеспечения, специально разработанных для поиска в базах данных.
Большая часть материала этой главы основана на понятии подобия, однако это не единственный подход к сравнению последовательностей. Понятие расстояния, используемое в качестве меры отличия двух последовательностей, также является важным. В разделе 3.6.1 мы рассмотрели соотношение между этими двумя понятиями. Глава завершается кратким обсуждением выбора методов сравнения и параметров при решении задач сравнения последовательностей.
УПРАЖНЕНИЯ
1.	Найдите соответствие между перечисленными ниже алгоритмами и задачами (описание задач см. в разделе 3.1):
полуглобальное сравнение;
полуглобальное сравнение после предварительной фильтрации;
k-Band',
УПРАЖНЕНИЯ
159
поиск в базах данных;
локальное сравнение.
2.	Определите счет выравнивания (3.1) на стр. 49 согласно следующей системе очков: д = — 1, р(а, b) = 1 при а = b и р(а, Ь) = 0 при а Ь.
3.	Найдите все возможные оптимальные выравнивания между последовательностями AAAG и ACG, используя систему очков из раздела 3.2.1.
4.	Обычно наинизшсс и наивысшее выравнивания (см. определения в конце раздела 3.2.1) включают в себя все оптимальные выравнивания между двумя сравниваемыми последовательностями. Приведите пример выравнивания, опровергающий это утверждение.
5.	Рассмотрите системы очков из упр. 2 и из раздела 3.2.1. Найдите две последовательности, оптимальные выравнивания которых различны для этих двух систем.
6.	Преобразуйте алгоритм Align на рис. 3.3 так, чтобы он находил оп-|имальное полу глобальное выравнивание последовательностей s и t и при этом не штрафовал пропуски на обоих концах одной из последовательностей: s либо t. Сделайте допущение о том, что массив а заполнен способом, подходящим для этого метода сравнения.
7.	Найдите иаилучшее локальное выравнивание между последовательностями ATACTACGGAGGG и GAACGTAGGCGTAT. Используйте любую систему очков на ваше усмотрение.
8.	Какая величина является большей при оценке любых двух последовательностей: их локальное подобие или их глобальное подобие? Почему? Какова взаимосвязь полуглобального подобия с другими двумя величинами?
* 9. Разработайте алгоритмы с линейным пространством для решения задач поиска локального и полуглобального подобия, включая построение оптимального выравнивания.
10.	Решите вопрос о том, верно ли следующее утверждение или ложно, и обоснуйте ответ. Два оптимальных выравнивания между последовательностями s и t всегда могут быть разбиты на одинаковое число блоков (определение понятия блока выравнивания см. в разделе 3.3.2).
11.	Вспомните понятия из раздела 3.3.4. Найдите такую пару последовательностей, чтобы наилучший счет при к = 0 был бы равен наилучшему счету при к = 1, но был бы значительно ниже при к = 2. Для этой задачи примите М =1ит = д = —1.
160
Глава 3
12.	Преобразуйте алгоритм k-Band (рис. 3.9) так, чтобы он мог обрабатывать последовательности неравной длины. Какова его полная временная сложность?
13.	Найдите все оптимальные множественные выравнивания между последовательностями АТС, CAGC и CGC, используя меру ПС, где р(а, b) = 1, если знаки а и Ъ значашие и а = Ь; р(а, Ь) — 0. если знаки а и b значащие и а Ь; р(а, —) = —1.
14.	Сколько пространства памяти занимает алгоритм Multiple-Seq-uence Alignment на рис. 3.14 помимо пространства пула важных ячеек?
15.	Докажите, что матрица счетов ПТМ-/с симметрична для всех к.
16.	Было показано, что матрица ПТМ-1 соответствует мутациям примерно 1 % аминокислот. Можем ли мы на этом основании утверждать, что матрица ПТМ-2 соответствует в среднем 2 % мутаций?
17.	Используя программный пакет BLAST, запросите последовательность GAATTCCAATAGA в «Генбанке». Какие последовательности, идентичные этой, были найдены в результате поиска?
1	К. Функция штрафов за пропуски w является вогнутой, если Д w(Jc) Д|/ (/с4 1). Докажите, что вогнутая функция, для которой w(0) = 0, является также субаддитивной. (Определение функции &w(k) см. на стр. 64.)
* 19. Определите, верно ли следующее утверждение: Субаддитивная неубывающая функция штрафов за пропуски ш является также необходимо вогнутой функцией.
20.	Рассмотрите выравнивание длиной I между последовательностями s и t. Разделите это выравнивание на две части, одна от столбца 1 до столбца к, и другая — от столбца fc+1 до столбца I. Какие свойства системы очков гарантируют, что при любых значениях к счет целого выравнивания будет равен сумме счетов его частей?
21.	Являс ся ли представленная в примере 3.2 схема приписывания последовательностей оптимальной?
22.	Согласно рассмотренному в разделе 3.6.1 соотношению между подобием и расстоянием, разработайте одну возможную систему очков, соответствующую редактирующему расстоянию.
о 23. Имея две случайные последовательности ДНК с длинами тп и п, найдите распределение глобального подобия между ними. Приближается ли оно к любому известному закону распределения по мере возрастания п и т?
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
161
24. Постройте алгоритм поиска кратчайшей общей надпоследовательности любых двух последовательностей. Подсказка: это может быть сделано простой адаптацией основного алгоритма сравнения последовательностей.
25. Покажите, каким образом можно использовать суффиксные деревья для решения задач, упомянутых в разделе 3.6.3.
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
Книгу Санкова и Крускала [168] можно по праву считать классическим трудом о сравнении последовательностей. Работа Уотермсна [196] представляет собой хороший обзор методов оптимального выравнивания, поиска подобия, расстояния, а также построенных на этих методах алгоритмов. Довольно полный обзор Пирсона и Миллера [156] посвящен методам динамического программирования. Другим полезным источником сведений о сравнении последовательностей можно назвать книгу Хейнс [191].
Известную работу Нидлмена и Вунша [146] обычно рассматривают как первый важный вклад в сравнение последовательностей с точки зрения биологов, хотя С. Улам еще в 1950-х гг. оценивал расстояния на пробелах последовательности. Описанный Нидлменом и Вуншем алгоритм имеет фиксированный штраф за пропуск, не зависящий от его длины. В этой работе нс было представлено никакого анализа сложности. Болес поздний анализ показал, что в представленном в статье виде алгоритм имеет кубическое время счета. Теперь мы знаем, как выполнить то же самое вычисление за квадратичное время, используя алгоритм с линейными функциями штрафов за пробелы, который дополнительно использует и постоянные функции. В любом случае, название «алгоритм Нидлмена-Вунша» часто используют для обозначения любого вида алгоритма (глобального выравнивания), основанного на методе динамического программирования.
Подобное же явление произошло и с методом локального выравнивания последовательностей. Плодотворная статья Смита и Уотермсна [175] оказала большое влияние на развитие соответствующей научной области и предоставила имена своих авторов в качестве наименования почти что любого алгоритма метода динамического программирования для локального выравнивания. Сама работа очень коротка (всего три страницы) и приводит только формулу для заполнения массива, но не содержит никакого анализа сложности В примере, представленном в этой статье, авторы использовали линейную функцию штрафов за пробелы. Позже, Хуан с коллегами разработали версии этого алгоритма с квадратичным временем счета и линей
162
Глава 3
ным пространством [100]. Уотермсн [197] описал версии этого алгоритма, предназначенные для эффективного восстановления выравниваний, близких к оптимальному.
Не известно, когда основной алгоритм, представленный в разделе 3.2.1, был разработан впервые. Вероятно, его много раз псрсоткрывали для решения различных классов задач [172]. Благодаря Хиршбергу [94] появился полезный алгоритм, позволяющий экономить пространство памяти. Позже он был включен в большинство важных версий алгоритмов метода динамического программирования для сравнения последовательностей [100; 145].
Большое внимание в специальной литературе было уделено также вогнутым функциям штрафов за пробелы [140]. Частично это связано с тем, что они хорошо моделируют систему очков, в которой за отдельные пробелы назначаются более крупные штрафы — так же, как при использовании субаддитивных функций. В общем случае вогнутость и субаддитивность несравнимы, хотя вогнутость плюс дополнительное условие 2w(l)	ш(2)
подразумевает субаддитивность (см. упражнение 18).
Наш раздел, посвященный сравнению подобных последовательностей, главным образом основан на работе Фикетта [63]. Укконен [188], Майерс [142], а также Чан и Лолер [34] создали более эффективные алгоритмы для систем очков с некоторыми специальными свойствами.
Матрицы ПТМ были представлены в работе Маргарет Дейхофф и ее колле! [45]. В [70] приведено достаточно хорошее их описание. Альт-шуль [10] описывает полный анализ, согласно которому для каждого конкретного сравнения следует выбирать расстояния ПТМ. Этот анализ во многом зависит от оценки статистической значимости, проведенной Карлином и Альтшулем [109], а также Карлином, Дембо и Кавабатой [110]. Многочисленные вопросы, связанные с поиском в базах данных рассмотрены в работе Альтшуля и др. [11]. Супруги Стивен и Перья Хеникофф [93] предложили матрицы БЛОЗАМ20 (BLOSUM) — альтернативу матрицам ПТМ.
Были найдены также способы вычисления оптимальных выравниваний одновременно для многих систем очков. Подобные методы рассмотрены Уотерменом [198].
Применение программного пакета FAST описано в статьях Липмена и Пирсона [127], Пирсона и Липмена [155], а также Пирсона [153]. Полное сравнение между методом, заложенным в программу FASTA, и классическим методом динамического программирования было проведено Пирсоном [154]. Программа BLAST описана в работе Альтшуля и др. [12]. Интересный вариант метода рекурсии — использование общих окон (которые могут быть найдены очень быстро) с целью построения больших вырав
20Сложноусеченное слово БЛОЗАМ означает «блочные гамены». — Прим, перев.
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
163
ниваний. Среди различных описаний приложений этого нового метода мы приводим работу Чао, Чзана, Остела и Миллера [36], посвященную локальному сравнению чрезвычайно длинных последовательностей См. также следующие работы Чао и Миллер [35], Иозеф, Мейданис и Тивари [104].
В ряде работ обсуждается взаимосвязь между расстоянием и подобием. Стандартное преобразование, использованное нами в разделе 3.6.1, уже было рассмотрено ранее в статье Смита, Уотермсна и Фитча [176]. Обзорная глава из книги Уотсрмена [197] посвящает этой теме один раздел. В [134] описан алгоритм выравниваний, который допускает совпадения типа пробел пробел
Каррилло и Липмсном [32] был разработан метод проекций, позволяющий экономить время при построении множественного выравнивания. Аль-тшуль и Липмен [13] обобщили этот метод к методу выравнивания звезд. Гасфилд [83] также рассматривал методы выравнивания звезд и доказал надежность характеристик меры расстояния парных сумм. Гупта, Кецсциоглу и Шефер [81 ] описывают разработанную ими на основе алгоритма Каррилло и Липмена программу Multiple Sequence Alignment (MSA). Кецециоглу [113] формализовал понятие «множественного выравнивания, которое является настолько близким, насколько возможно к множеству попарных выравниваний», и назвал его задачей о следе с максимальным весом Он доказал, что эта задача является НП-трудной и разработал для се решения алгоритм метода ветвей и границ. Описание альтернативного, эвристического метода выравнивания последовательностей, основанного на понятии следа, дано в [137]. Ван и Цзян [193] показали НП-трудность задач множественного выравнивания, меры ПС и задачи выравнивания дерева. Алгоритм с экспоненциальным временем счета для выравнивания дерева описан в [166]. Алгоритмы аппроксимации для выравнивания дерева на основе расстояния описаны Ваном и Гасфилдом [192], которые улучшили прежний результат Цзяна, Лолера и Вана [102]. Несколько эвристик для множественного выравнивания призваны решить задачу выравнивания множества выравниваний. Две ссылки на эту тему: Миллер [139] и Гото [77]. Обзор методов множественного сравнения последовательностей приведен в статье Чаня, Вона и Чиу [33].
Поскольку на практике известные методы построения оптимальных выравниваний иногда оказываются недопустимо медленными, объединение компьютеров в сеть для параллельной работы часто расценивают как способ ускорить процесс вычислений. Одна такая попытка описана в статье Джонса и др. [103].
Суффиксные деревья и многие алгоритмы обработки строк описаны в книге Стивена [180], а также Крошемора и Риттера [39]. Массивы суф
164
Глава 3
фиксов впервые были упомянуты в статье Манбера и Майерса [130]. О применении суффиксных деревьев к задаче поиска праймера и к задаче поиска палиндрома (см. раздел 3.6.3) мы узнали из разговора с Дэном Гасфилдом. Недавно Гасфилд выпустил новую книгу, в которой достаточно подробно описаны различные алгоритмы обработки строк и варианты их применения в вычислительной биологии [85].
Глава 4
СБОРКА ФРАГМЕНТОВ ДНК
В главе 1 мы рассматривали пространственные структуры, химическое строение и методы секвенирования молекул ДНК. В этой главе мы обсудим вычислительную задачу секвенирования — гак называемую задачу сборки фрагментов. Разработка математических моделей и алгоритмов решения этой задачи связана с тем, что с помощью современных технологий возможно непосредственно секвенировать1 фрагменты нуклеотидных последовательностей длиной не более нескольких сот нуклеотидов. С другой стороны, в арсенале ученых имеется технология, позволяющая нарезать длинную молекулу ДНК на случайные фрагменты и производить достаточно много копий этих фрагментов для последующего секвенирования Таким образом, типичный подход к расшифровке длинных молекул ДНК фрагментация и последующее секвенирование полученных фрагментов. Олнако в таком случае остается нерешенной задача сборки фрагментов, анализу которой мы и посвятим эту главу. Кроме того, мы представляем формальные модели этой задачи и алгоритмы ее решения.
4.1.	БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ
Секвенировать ДНК - шачит расшифровать последовательность азотистых оснований этой молекулы. При крупномасштабном секвенирова нии молекул ДНК мы пытаемся разгадать шифр, закодированный в очень длинной целевой последовательности ДНК (тысячи2 пар нуклеотидов) Мы можем представить эту задачу как головоломку, в которой перед нами лежит двойной ряд карт, повернутых тыльной стороной вверх, как показано на рис. 4. ]. Мы не знаем, какая буква из алфавита {А, С, G, Т} написана на каждой карге, но зато мы точно знаем, что карты в одинаковых позициях обоих
’Секвенировать — определять последовательность оснований в молекуле ДНК или после-донагельность аминокислот в белке. Прим. ред.
' Миллионы и миллиарды. — Прим. ред.
166
Глава 4
5'	... □□□□□□□...	3'
3'	... □□□□□□□...	5'
Рис. 4.1. Неизвестная последовательность ДНК — цель секвенирования
рядов формируют комплементарные пары. Наша цель состоит в том, чтобы определить буквы, используя некоторые подсказки, в качестве которых мы можем использовать (приближённые) подстроки этих рядов. Длинную последовательность, которую необходимо восстановить, называю! целью.
В биологическом варианте этой задачи нам известна приближённая длина целевой последовательности с точностью до 10 % или около этого. Невозможно секвенировать целую молекулу непосредственно. Однако вместо этого мы можем получить некоторый отрезок молекулы, начинающийся в случайной позиции в одной из нитей и секвенирвать этот отрезок в каноническом направлении (5' —» 3') в пределах некоторой длины. Каждый такой отрезок называют фрагментом. Фрагмент соответствует подстроке одной из нитей целевой молекулы, но мы не знаем, к которой из нитей он относится, не известна также его позиция относительно начала нити, и, кроме того, он может содержать ошибки. Используя метод дробовика (см. раздел 1.5.2), мы получаем большое количество фрагментов и затем на основании анализа их взаимного перекрытия пытаемся восстановить после-довагельноегь целевой молекулы. В зависимости от особенностей эксперимента, допустимая длина фрагмента может находиться в пределах от 200 до 700 п. н. Типичные задачи молекулярной биологии ставят целью расшифровку последовательностей длиной от 30000 до 100 0003 п. н., что означает секвенирование 500-20004 фрагментов.
Таким образом, наша задача состоит в том, чтобы восстановить всю последовательность целевой молекулы ДНК. Поскольку для этого необходимо соединить множество фрагментов, ее называют задачей сборки фрагментов. Мы обращаем внимание, что так как последовательность второй нити может быть легко восстановлена по правилу комплементарное™ пар, то достаточно определить код одной из нитей исходной молекулы.
Далее в этом разделе мы осветим дополнительные детали биологического плана, важные для построения алгоритмов сборки фрагментов.
3В настоящее время секвенирование одной бактериальной хромосомы несколько миллионов пар оснований - занимает около недели работы хороню оснащенной лаборатории. Прим ред.
4Поскольку секвеннруются случайные фрагменты, некоторая часть целевой последовательности будет покрыта многими фрагментами. В то время как другая часть может н не быть покрыта прочитанными фра1ментамн вовсе. Суммарная длина прочитанных фрагментов, отнесенная к длине целевой последовательности (она может быть определена экспериментально без чтения), называется покрытием. — Прим ред.
4.1. БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ
167
4.1.1.	ИДЕАЛЬНЫЙ СЛУЧАЙ
Как известно, лучший способ изучения любою материала — использование наыядного примера. Однако следует сделать оговорку относительно того, что реальные задачи молекулярной биологии намного сложнее абстрактных примеров, которые мы приводим в учебнике. Предположим, что вход задачи представлен четырьмя последовательностями:
ACCGT CGTGC ТТАС TACCGT
и мы знаем, что ответ (целевая последовательность) содержит приблизительно 10 оснований. Один из возможных способов сборки множества этих последовательностей следующий:
—ACCGT—
----CGTGC
ТТАС-----
-TACCGT—
TTACCGTGC
Обратите внимание, что мы выровняли входное множество, игнорируя крайние пробелы. Мы стараемся всего лишь переместить строки выравнивания таким образом, чтобы каждый столбец содержал одинаковые основания. Единственным руководством на сборку, кроме приближённого размера цели, являются перекрытия фрагментов. Здесь под перекрытием мы подразумеваем подобие между конечными частями одних фрагментов и начальными частями других (как у первой и второй, а также у третьей и четвертой последовательностей в приведенном примере). Расположив фрагменты так, чтобы они хорошо выровнялись друг с другом, мы получаем так называемую компоновку, которую можно рассматривать как разновидность множественного выравнивания фрагментов.
Последовательность под горизонтальной чертой внизу компоновки, которую называют согласованной последовательностью или просто консенсусом, и есть ответ на нашу задачу. Консенсус определяют простым подсчетом большинства голосов среди всех оснований в каждом столбце. В данном примере все столбцы единогласны (содержат основания одного типа), так что вычисление консенсуса не вызывает трудностей. В данном примере согласованная последовательность содержит девять оснований, что
168
Глава 4
близко к заданной целевой длине, равной 10 основаниям, причем каждый фрагмент является точной подстрокой консенсуса. Однако на практике, как будет показано далее, фрагменты редко соответствуют точным подстрокам согласованной последовательности.
4.1.2.	ТРУДНОСТИ
Как было упомянуто выше, реальные примеры задачи сборки фрагментов очень сложны. Помимо этого факта существует еще несколько осложне ний, которые делают эту задачу намного труднее, чем только что рассмотренный упрощенный пример. Основные факторы, дополнительно усложняющие задачу, — это ошибки, неизвестная ориентация, повторные области и неполное покрытие. Опишем каждый из этих факторов последовательно.
Ошибки
Простейшие ошибки называют ошибками обращения к основанию, к которым относят замены, вставки и удаления оснований во фрагментах. Примеры ошибок каждого типа приведены, соответственно, на рис. 4.2, 4.3 и 4.4. Еще одной распространенной ошибкой является транспозиция оснований, но мы можем рассматривать ее как сочетание вставки и удаления или двух замен знаков.
Вход:	Ответ:
ACCGT	—ACCGT—
CGTGC	----CGTGC
ТТАС	ТТАС------
TGCCGT	-TGCCGT—
TTACCGTGC
Рис. 4.2. В этом примере произошла ошибка типа замены во второй позиции последнею фрагмента, где основание А было заменено на G. Консенсус остается верным вследствие большинства голосов
На практике ошибки обращения к основанию появляются с частотой от 1 до 5 ошибок на каждые 100 знаков5. Их распределение по последовательности неравномерное, так как они имеют тенденцию концентрироваться ближе к З'-концу фрагмента. Как видно из примеров, правильный консенсус возможно восстановить даже в присутствии ошибок, но компьютерная программа должна быть подготовлена к обработке возможных ошибок, и это
Современные машины допускают значительно меньше ошибок. Прим. ред.
4.1. БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ
169
Вход:
ACCGT CAGTGC
ТТАС
TACCGT
Ответ:
—ACC-GT— ----CAGTGC ТТАС------ -TACCGT— TTACC-GTGC
Рис 4.3. В этом примере произошла ошибка типа вставки во второй позиции июрого фрагмента: появилось лишнее основание А. Консенсус все равно верен благодаря вставке пробелов во множественное выравнивание и большинству голосов. Учтите, что при выдаче ответа пробел в консенсусе будет отброшен
Вход:
ACCGT CGTGC ТТАС
TACGT
Ответ:
—ACCGT—
---CGTGC
ТТАС----
-TAC-GT—
TTACCGTGC
Рис 4.4. В этом примере произошла ошибка типа удаления втретьей (или четвертой) позиции в последнем фрагменте. Консенсус верен благодаря пробелам в выравни вании и большинству голосов
обычно означает построение алгорит мов, которые требуют большего количества времени и пространства. Например, если нет никаких ошибок, то оптимальные выравнивания между двумя последовательностями возможно найти за линейное время, тогда как для обработки последовательностей с пропусками необходимы квадратичные алгоритмы (см. главу 3).
Помимо ошибочных обращений к основаниям, сборку могут испортить ошибки других двух типов: присутствие химерных фрагментов и загрязнение материалом ДНК хозяина или вектора. Далее мы объясним оба вида ошибок.
Химерные фрагменты, или химеры, появляются, когда два правильных фрагмента из различных частей целевой молекулы присоединяются встык и формируют фрагмент, который не является непрерывным участком цели Пример химерного фрагмента показан на рис. 4.5. Эти ложные фрагмен ты должны быть распознаны в качестве таковых и удалены из множества фрагментов еще на стадии предварительной обработки выравнивания.
Иногда во входном множестве присутствуют фрагменты или их части, которые не имеют никакого отношения к целевой молекуле. Это происхо-
170
Глава 4
Вход:
ACCGT CGTGC ТТАС TACCGT TTATGC
Ответ
—ACCGT—
----CGTGC
ТТАС----
-TACCGT— TTACCGTGC
TTA---TGC
Рис. 4.5. Последний фрагмент в этом входном множестве — химера. Единственный способ оперировать с химерами распознавать и удалять их из входного множества прежде чем начинать сборку
ди г вследствие загрязнения клонов материалом ДНК хозяина или вектора. Как было показано в разделе 1.5.2, процесс репликации фрагмента состоит из встройки его в геном вектора, то есть организма, который будет воспроизводить и переносить в себе копии встроенного фрагмента. В конце репликации фрагмент должен быть очишен от векторной ДНК, и если эта очистка неполная, то загрязнение происходит именно на этом этапе. Когда в качестве вектора используется вирус инфицированная клетка как правило, бактериальная клетка — также может внести некоторый генетический материал во фрагмент.
Загрязнение — довольно обычное явление в практкс секвенирования. Свидетель этому — значительное количество векторной ДНК в банках данных. Иногда ученые оказываются не в состоянии отсеять векторные последовательности до начала сборки и вносят в банки данных загрязненные консенсусы.
Как и в борьбе с химерами, средство от этой проблемы проверка данных перед началом сборки. Последовательности векторов, обычно используемых в секвенировании ДНК, хорошо известны, так что нс трудно проверить все фрагменты на содержание этих последовательностей и определить, присутствует ли некоторая часть их в любом фрагменте. Обнаружение химерных фрагментов ведет к интересным алгоритмическим тадачам, но мы нс будем описывать их в этой книге. Соответствующие ссылки даны в библиографических примечаниях.
Неизвестная ориентация
Фрагменты могут быть взяты из любой нити ДНК, и мы, в общем то, не знаем, к какой именно нити принадлежит данный фрагмент. Но зато
4.1. БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ
171
мы точно знаем, что, независимо от принадлежности к той или иной нити, считывание последовательности происходит в направлении 5' —» 3'. Вследствие комплементарное™ и противоположной ориентации нитей, тот факт, что фрагмент является подстрокой одной нити, равносилен факту, что его обратный комплемент является подстрокой другой нити. В результате мы можем допустить, что все входные фрагменты являются приближенными подстроками искомой согласованной последовательности либо в исходном состоянии, либо в виде обратного комплемента. На рис. 4.6 показана задача сборки свободных от ошибок фрагментов в обеих ориентациях, первоначально неизвестных. На практике, к сожалению, приходится иметь дело как с ошибками, так и с неизвестной ориентацией фрагментов.
Вход:
CACGT
ACGT ACTACG GTACT
ACTGA CTGA
Ответ:
-> CACGT---------
-» -ACGT---------
<- —CGTAGT-------
<- -----AGTAC----
-> --------ACTGA
-> --------CTGA
CACGTAGTACTGA
Рис. 4.6. Сборка фрагментов с неизвестной ориентацией. Каждый фрагмент может быть использован в прямой или обратной ориентации. В решении мы обозначаем стрелкой выбранное направление: —» означает фрагмент в исходной ориентации. «— означает его обратный комплемент
Поскольку ориентация фрагментов не известна, в принципе мы должны перепробовать все возможные комбинации, число которых равно 2" для множества из п фрагментов. Конечно, этот метод неприемлем и поэтому его не используют в программах сборки, но он указывает на высокую сложность задач с неизвестной ориентацией.
Повторные области
Повторные области, или повторения6, — это последовательности, которые появляются в целевой молекуле два или более раз. На рис. 4.7 показан пример таких ошибок. Короткие повторения, то есть повторения, которые
6На профессиональном жаргоне часто употребляется термин «повтор», однако с точки зрения русского языка повторные области, как и вообще побые повторяющиес места или фрагменты, правильно называть повторениями. — Прим, перев.
172
Глава 4
Рис. 4.7. Повторные области. Блоки Xj и Хг представляют собой примерно одинаковые последовательности
могут быть полностью покрыты одним фрагментом, абсолютно безвредны. Настоящие проблемы вызывают более длинные повторения Кроме того, сборку могут нарушить не только идентичные копии одного повторения. Если степень подобия между двумя копиями некоторого повторения достаточно высока, то различия могут быть приняты за ошибки обращения к основаниям. При построении сборки фрагментов следует учитывать возможность появления ошибок, так что в обнаружении перекрытий обычно устанавливают некоторую степень допуска.
Проблемы, вызываемые повторениями, являются двоякими Во-первых, если какой-либо фрагмент целиком содержится в некотором повторении, то в конечном выравнивании мы можем поместить его в несколько мест, поскольку данный фрагмент может достаточно хорошо соответствовать нескольким копиям этого повторения. Можно было бы возразить, что не имеет значения, куда мы помещаем его, так как при выборе любой копии одного и того же повторения консенсус будет приблизительно тем же самым. Но все дело в том, что когда такие копии нс полностью тождественны, мы можем ослабить консенсус, поместив фрагмент не в ту копию.
Во-вторых, повторения могут быть расположены таким образом, что сборка становится существенно неопределенной; то есть две или более компоновки совместимы со входными фрагментами и приближённой длиной цели с равной степенью соответствия. Примеры обеих ситуаций представлены, соответственно, на рис. 4.8 и 4.9. Первый показывает три копии одного повторения, а второй изображает две перемежающиеся копии различных повторений. Общее свойство этих двух случаев присутствие двух различных областей, по обе стороны которых находятся одинаковые повторения. В первом примере области В и С окружены повторениями вида X. Во втором примере области В и D находятся между повторениями X и У'.
До сих пор мы обсуждали только прямые повторения, то есть повторные копии в одной и той же нити. Однако инвертированные повторения, которые являются повторными областями во встречных нитях, также могут появиться и потенциально более опасны. Всего лишь двух копий длинного инвертированного повторения достаточно, чтобы сборка стала неопределенной. Пример такой ситуации представлен на рис. 4.10.
4.1. БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ
173
А X С X В X D
Рис. 4 8 Целевая последовательность, ведущая к неопределенной сборке вследствие повторений вида XXX
А X D Y С X В	Y Е
Рис. 4.9. Целевая последовательность, ведущая к неопределенной сборке вследствие повторений вида А'У'ХИ
Неполное покрытие
Другая проблема — неполное покрытие. Покрытие в позиции I цели мы определяем как число фрагментов, покрывающих эту позицию. Покрытие — вполне определенное понятие, но его невозможно вычислить, потому что мы не знаем действительные позиции фрагментов в цели. Даже после сборки мы имеем лишь гипотетическое предположение об этих позициях. Тем нс менее мы можем вычислить среднее покрытие, складывая длины всех фрагментов и деля эту сумму на приблизительную длину цели.
Если для одной или более позиций покрытие равно нулю, то это значит, что во множестве фрагментов имеется недостаточно информации для полного восстановления цели. На рис. 4.11 показан пример цели с непо-
174
Глава 4
X поворот 180° X
Рис. 4.10. Целевая последовательность с инвертированным повторением. Область X обратный комплемент области X
крытой областью. В таких случаях лучшее, на что мы можем надеяться, компоновка для каждой отдельно взятой непрерывно покрытой области, или контига7. Например, на рис. 4.11 можно определить два контига.
Целевая ДНК
Фрагменты
Непокрытая область
Рис. 4.11. Пример неполного покрытия
Неполное покрытие возникает в силу по существу случайного характера процесса отбора фрагментов; поэтому возможно, что некоторые области окажутся не полностью покрытыми или не покрытыми вовсе. Вообще, желательно, чтобы не только один, но несколько различных фрагментов покрывали каждый отдельный участок целевой молекулы. Чем больше фраг
7Варваризм «контиг» есть калька с английского термина contig, образованного сокращением слова contiguous, которое характеризует цельные объекты, состоящие из плотно, без зазоров, пригнанных (смежных) частей. По сути в данном случае имеется в виду непрерывно покрытая область (НПО). - Прим, персе.
4.1. БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ
175
ментов мы имеем, тем более надежна наша оценка консенсуса, основанная на голосовании. Также желательно, чтобы каждая область была покрыта фрагментами из обеих нитей, поскольку, как было замечено на практике, появление серий ошибок некоторого вида возможно только в одной нити.
Обычно неполного покрытия можно избежать, отбирая больше фрагментов, но мы должны быть осторожны с этим подходом. Если целевая последовательность покрыта почти полностью, кроме отдельных непокрытых участков, то случайный отбор фрагментов может оказаться весьма неэффективным способом покрытия этих зазоров. В подобном случае может быть использован подход, называемый прямым секвенированием или обходом (см. раздел 4.1.3). Чтобы избежать формирования таких небольших зазоров, некоторые исследователи рекомендуют получать выборку фрагментов с очень высокой степенью покрытия посредством отбора фрагментов, общая длина которых достаточна для как минимум восьмикратного покрытия целевой молекулы.
Важно знать, сколько фрагментов мы должны произвести, чтобы получить необходимое покрытие. Конечно же, ответ не может быть абсолютен, так как отбор фрагментов — случайный процесс, но разумные границы могут быть определены. Здесь мы приводим важную формулу, которая при некоторых упрощающих допущениях становится общезначимой.
Обозначим длину целевой молекулы буквой Т. Допустим, что все фраг-мсп гы имеют примерно одинаковую длину I и что мы можем безошибочно распознать перекрытия по крайней мере t оснований. Если мы произвели случайный отбор п фрагментов, то ожидаемое число р кажущихся контигов определяется по следующей формуле:
р = пе-п(‘-^/т.	(4.1)
Термин «кажущийся контиг» связан с принятым допущением о том, что мы способны распознать перекрытия, только если они имеют размер по крайней мере t оснований. Таким образом, некоторые контиги, которые на самом деле представляют собой части более длинного истинного контига, могут перекрываться фрагментами меньше, чем на t оснований, и «казаться» нам двумя отдельными контигами.
Обратите внимание, что по мере возрастания числа фрагментов п величина р приближается к нулю, хотя это и кажется странным, поскольку мы знаем, что всегда существует по крайней мере один кажущийся контиг. Это происходит потому, что формула (4.1) приближённая. Она может быть использована также в контексте картирования ДПК, где число контигов является намного большим, так что разница в один или два пренебрежимо
176
Глава 4
мала. Формула полезна в том смысле, что она обеспечивает область приближённой оценки для самых разных ситуаций.
Известна также формула для определения покрытой фрагментами долн целевой молекулы. При тех же обозначениях область, покрытая точно к фрагментами, определяется как
гк =	(4.2)
к!
где с = nl/T — среднее покрытие.
4.1.3.	АЛЬТЕРНАТИВНЫЕ МЕТОДЫ СЕКВЕНИРОВАНИЯ ДНК
Думаем, что стоит упомянуть также несколько альтернативных подходов к секвенированию ДНК. Мы начнем с прямого секвенирования - метода, который может быть использован для покрытия маленьких зазоров, остающихся при получении фрагментов методом дробовика. В прямом секвенировании из последовательности около конца контига производят специальный праймер, чтобы в ходе ПЦР генерировались фрагменты, перекрывающие этот контиг, включая конец этого контига и продолжение его в целевой последовательности. Затем эти новые фрагменты секвенируют и определяют последовательность, примыкающую к контигу, таким образом наращивая его. Повторяя этот процесс, мы можем постепенно покрыть зазор, простирающийся до следующего контига. Проблема этого подхода, в основном, связана с очень высокой стоимостью получения специальных праймеров. Кроме того, каждый последующий шаг может быть выполнен только после окончания предыдущего, так что процесс по большей части последователен, а нс параллелен (но может быть осуществлен параллельно для всех зазоров).
Другую методику, которая недавно стала очень популярной, называют секвенированием с двух концов или встречным секвенированием. Методом дробовика несколько копий целевой молекулы ДНК разрывают в случайных позициях, и короткие фрагменты молекулы отбирают для клонирования и последующего секвенирования. Вспомним из раздела 1.5.2, что эти фрагменты называют встройками, потому что для амплификации их встраивают в вектор. Размер встроек варьирует в пределах от 1 до 5 т. п. н., но только приблизительно 200-700 оснований могут быть непосредственно считаны с одного конца встройки и дать секвенированный фрагмент последовательности. Однако если мы имеем подходящий праймер, то возможно в то же самое время считывать и другой конец встройки. Два фрагмента, полученные таким образом, принадлежат встречным нитям и в конечном
4.1. БИОЛОГИЧЕСКИЙ АППАРАТ СЕКВЕНИРОВАНИЯ
177
выравнивании должны быть выделены по приближённому выражению: размер встройки минус размер фрагмента. Такая дополнительная информация чрезвычайно полезна — например, при покрытии зазоров. Иногда секвенирование проводят с двух концов только в том случае, когда необходимо покрыть зазор. Стоит отметить, что метод встречного секвенирования основан на том факте, что длина встроек обычно превышает длину считываемой с них области.
Недавно был предложен подход, совершенно отличный от метода дробовика и названный секвенированием посредством гибридизации (СПГ). Этот подход состоит из сборки целевой молекулы на основании данных, полученных в результате многих реакций гибридизации участков молекулы с очень короткими, фиксированной длины, мечеными фрагментами, или зондами. Гибридизация просто показывает, связывается ли зонд (благодаря свойству комплементарности) с молекулой ДНК. Идея состоит в том, чтобы спроектировать чип ДНК, который выполняет все необходимые реакции гибридизации одновременно и выдает список всех строк длиной w, то есть w-меров, присутствующих в цели. Современная технология позволяет строить такие чипы для зондов длиной до восьми оснований. Большие размеры зондов кажутся на данный момент все еще недопустимыми8.
С методом СПГ связаны следующие важные проблемы. Ясно, что не все целевые молекулы могут быть восстановлены с помощью зондов размером всего лишь восемь оснований (см. упражнение 10). В связи с этим возникает несколько серьезных проблем. Во-первых, необходимо охарактеризовать молекулы, которые действительно могут быть восстановлены с помощью зондов такого размера. Во-вторых, реакции гибридизации не дают информации о числе появлений w-мсров в цели, а только показывают, присутствует ли такой-то w-мер в молекуле или нет. Ясно, что было бы хорошо иметь дополнительные данные о том, сколько копий фрагментов появляется в действительности. Наконец, нужно заняться проблемой погрешности экспериментов гибридизации, а также проблемой неизвестной ориентации фрагментов. Была предложена стратегия, рекомендующая сводить метод дробовика к методу гибридизации, просто используя все ш-мсры полученных фрагментов молекулы вместо самих фрагментов и представляя, что они были генерированы реакциями гибридизации. Однако эта стратегия отбрасывает некоторую информацию, потому что, как правило, невозможно восстановить фрагменты из w-меров, тогда как сами w-меры возможно генерировать из фрагментов. В этой книге мы нс рассматриваем алгорит
8Современные гибридизационные чипы могут содержать многие сотни тысяч типов зон-дов. Прим. ред.
178
Глава 4
мы решения задачи СНГ, а лишь приводим некоторые интересные ссылки в библиографических примечаниях в конце этой главы9.
4.2.	МОДЕЛИ
Вспомнив биологические основы задачи сборки фрагментов, мы готовы построить ее математические модели. В этом разделе мы представим три модели: КРАТЧАЙШАЯ ОБЩАЯ НАДСТРОКА (КОН), BOCCTAHOR4FHHF И МУЛЬТИКОНТИГ. Каждая модель освещает различные стороны вычислительной задачи, хотя ее биологические основы по-прежнему остаются в тени. Все три модели принимают допущение о том, что выборка фрагментов свободна от загрязнения инородным генетическим материалом и избегает химер.
4.2.1.	КРАТЧАЙШАЯ ОБЩАЯ НАДО РОКА
Одной из первых попыток формализовать задачу сборки фра! ментов была задача поиска кратчайшей надстроки заданного множества строк. Соответственно, ее назвали задачей поиска кратчайшей общей надстроки, или КОН. Хотя эта математическая модель имеет серьезные недостатки в формальном описании задачи сборки фрагментов (например, она не нс объясняет ошибки), методы, используемые для эффективного решения конечной вычислительной задачи, находят применение также и в других моделях. Поэтому изучение этих методов заслуживает пристального внимания. Задача поиска кратчайшей обшей надстроки может быть формализована следующим образом:
Задача: Кратчайшая общая надстрока (КОН).
Вход: Множество строк у.
Выход: Возможно кратчайшая строка S, являющаяся надстрокой всех строк f G у.
Пример 4.1. Пусть у = {ACT, СТА, AGT}. Тогда последовательность S = ACTAGT — кратчайшая общая надстрока множества Очевидно, что все фрагменты из у являются се собственными подстроками. Чтобы доказать, что она является кратчайшей, мы покажем, что любая строка S', которая содержи! строки и = ACT и и  AGT в качестве собс гвенных подстрок, должна иметь длину по крайней мере 6. Более того, при длине |S"| =6 мы
9В настоящее время идея секвенирования на гибридизационных чипах не популярна, однако эта технология привела к появлению высокоэффективных диагностических тестов и к многим другим приложениям. — Прим. ред.
4.2. МОДЕЛИ
179
имеем только сцепления uv и vu. Но строка СТА является подстрокой только для сцепления uv = S.	
В контексте сборки фрагментов множество строк соответствует множеству фрагментов, каждый из которых определен своей последовательностью в правильной ориентации, а строка S — последовательности целевой молекулы ДНК.
Заметим, что вычислительная задача предполагает, что строка S должна быть совершенной, а не приближенной надстрокой каждого фрагмента, так что она не допускает ошибок во фрагментах. Кроме того, должна быть известна ориентация всех фрагментов, что редко возможно Наконец, даже в проекте совершенной сборки, в котором все эти факторы можно так или иначе контролировать, кратчайшая обшая надстрока можег нс быть реальным биологическим решением из-за присутствия повторных областей в целевой последовательности ДНК, как показывает следующий пример
Пример 4.2. Предположим, что целевая молекула содержит две копии точного повторения и что фрагменты отобраны, как показано на рис. 4.12. Обратите внимание, что копии повторений длинны и включают в себя много фрагментов. В этом случае, даже если фрагменты являются точными подстроками консенсуса, и даже если мы знаем их правильную ориентацию, поиск кратчайшей общей надстроки может дать непредсказуемый результат.
Действительно, на рис. 4.13 изображена альтернативная сборка с более коротким консенсусом для того же самого множества фрагментов. Поскольку копии повторений идентичны, надстрока может содержать только одну копию, то есть все фрагменты, целиком содержащиеся в любой из этих копий. Другая копия может быть короче, поскольку она должна содержат!. только фрагменты, которые пересекают границу между повторением Д' и примыкающими к нему областями. На этом рисунке укороченная версия повторения X обозначена X'.
Рис. 4.12. Целевая последовательность с длинным повторением, содержащим много фрагментов. Этот пример показывает, что даже без ошибок и при известной ориеп-1 ации формулировка задачи поиска КОН теряет смысл в присутствии повторений
180
Глава 4
Рис. 4.13 Альтернативная сборка множен на фратмсшов, изображенною иа пре «идущем рисунке. Эта сборка даст более короткий консенсус, поскольку все фраг-мешы, целиком содержащиеся в правой копии (обозначенные илриховои линией), были перенесены в левую копию что и вызвало сокращение длины правой копии
Очевидно, что, хотя эта альтернативная сборка короче, она хуже как в отношении покрытия, так и сцепления. Покрытие неравномерное: повторение X покрыто гораздо большим числом фра! ментов, чем повторная область Сцепление плохое, потому что никакой фрагмент не связывает левый край повторения X' с его правым краем. Фактически, этот консенсус представляет собой сцепление двух несвязанных частей и и г>, где часть и простирается от начала сборки до приблизительно середины X', а часть т от середины X' до конца сборки. Поскольку мы ищем кратчайшие налегро-ки, сцепление vu было бы вполне равнозначным консенсусом.	
Задача поиска КОН является НП-трудной, но для се решения существуют алгоритмы аппроксимации. Однако, учитывая все недостатки этой модели по отношению к реальной биологической задаче, такие алгоритмы вызывают главным образом теоретический интерес.
4.2.2.	ВОССТАНОВЛЕНИЕ
Эта модель учитывает и ошибки и неизвестную ориентацию. Прежде чем говорить об ошибках, необходимо дать несколько новых определений. Вспомним из главы 3, что мы можем преобразовать основной алгоритм (метода динамического программирования) сравнения последовательностей таким образом, чтобы он удовлетворял многим различным потребностям. Здесь мы будем использовать меру расстояния, а нс подобия, и версию алгоритма, которая штрафует только крайние пропуски во второй последовательности. Система очков — редактирующее расстояние; то есть одна единица расстояния назначается за каждую операцию вставки, удаления или замены знака, кроме удалений в крайних позициях второй последовательности, которые являются «бесплатными». Вычисленное таким образом расстояние будем называть редактирующим расстоянием подстроки, чтобы
4.2. МОДЕЛИ
181
отличать его от классического редактирующего расстояния, которое штрафует крайние удаления в обеих строках. Мы обозначим его ds и формально опишем его выражением
dB(a,b) = min d(a,s), s£S(b)
где S(b) обозначает множество всех подстрок строки b, a d — классическое редактирующее расстояние. Следует помнить, что редактирующее расстояние подстроки — асимметрическая функция, то есть в общем случае dB(a, b) dB(b, а).
Пример 4.3. Если а = GCGATAG и b - CAGTCGCTGATCGTACG, то оптимальное выравнивание соответствует представленному на рис. 4.14, а редактирующее расстояние dB(a, b) =2.	
------GC-GATAG-------
CAGTCGCTGATCGTACG
Рис. 4.14. Оптимальное выравнивание с таким редактирующим расстоянием подстроки при котором не штрафуются крайние пропуски в первой строке
Пусть е — вещественное число между 0 и 1. Тогда строка / является приближённой подстрокой строки S с частотой появления ошибок г. когда
dB(f,S)^e\f\,
где |/| — длина строки /. Это означает, что мы допускаем появление в среднем 6 ошибок на одно основание в приближённой подстроке /. Например, если 6 = 0,05, то мы допускаем пять ошибок на сотню оснований. Теперь мы в силах формально описать задачу сборки фрагментов с помощью модели ВОССТАНОВЛЕНИЕ.
Задача: Восстановление.
ВХОД: Множество строк и допустимый коэффициент ошибок е со значением от 0 до 1.
ВЫХОД: Возможно кратчайшая строка S. причем для каждой строки / С У мы имеем неравенство
min(ds(/,S),ds(/,S))O|/|,
где / — обратный комплемент строки /.
182
Глава 4
Идея данной модели заключается в отыскании таков возможно кратчайшей строки S, чтобы строка f (либо ее обратный комплемент /) была приближённой подстрокой строки S при частоте появления ошибок е. Данная формулировка корректна для всех примеров, приведенных в разделе 4.1, кроме одного — с химерным фрагментом. Однако обшая задача по-прежнему НП-трудная. В обшем, это не удивительно, поскольку она включает в себя задачу КОН в качестве частного случая с е = 0 (см. упражнение 18).
Итак, модель ВОССТАНОВЛЕНИЕ учитывает ошибки и ориентацию, но заю не учи1ывает повторения, неполное покрытие и размер цели.
4.2.3.	МУЛЬТИКОНТИГИ
Модель МУЛЬТИКОНТИГ учитывает фактор сцепления. Предыдущие модели нс заботятся о внутреннем сцеплении фрагментов в компоновке важен только окончательный ответ. Таким образом, модель выдает ответы, сформированные несколькими контигами, и по этой причине их называют «мультиконтнгами»10.
Сначала мы даднм определение версии модели МУЛЬТИКОНТИГ, основанной на допушенин об отсутствии ошибок. Имея на входе множество фрагментов J7, мы строим множественное выравнивание, или компоновку. Компоновка должна быть такой, чтобы каждый столбец содержал основания только одного типа. Именно это требование и отражено в гипотезе об отсутствии ошибок. Кроме того, для учета ориентации фрагментов мы требуем, чтобы в выравнивании находились либо фрагмент, либо его обратный комплемент, но никак не оба.
Компоновку, отвечающую этим требованиям, обозначим буквой £. Мы нумеруем столбцы цифрами от 1 до | £ | - длины компоновки. Согласно этой нумерации, каждый фрагмент f имеет левую конечную точку 1(f) и правую конечную точку r(f), так что |/| = r(f) — 1(f) + 1. Тогда, если целочисленные интервалы [1(f).. -r(f)] и [1(g) ...г(§)] пересекаются, то мы говорим, что фрагменты I и д перекрываются в этой компоновке. Непустое пересечение [1(f)    г(/)] П [1(g)    г(</)] называют перекрытием между фрагментами f и д. Таким образом, размер перекрытия фрагментов равен размеру пересечения соответствующих интервалов. Поскольку мы используем целочисленные интервалы, все множества конечны.
Из всех перекрытий между фрагментами мы интересуемся только самыми важными — теми, которые обеспечивают сцепление. Мы говорим,
|0По сути, это multiple contigs, то есть множественные непрерывно покрытые области (МНПО). Прим. перев.
4.2. МОДЕЛИ
183
что перекрытие [х.. .у] — не связь, если во множестве Т существует фрагмент, который полностью содержит перекрытие с обеих сторон, то есть если фрагмент содержит интервал [(а; — 1)... (у + 1)]. Если никакой фрагмент не обладает таким свойством, то перекрытие — связь. Слабейшая связь в компоновке — любая связь наименьшего размера. Наконец, мы говорим, что компоновка представляет собой t-контиг, если размер се слабейшей связи равен по крайней мере t. Если из фрагментов множества Т возможно построить t-кон гиг, то мы говорим, что множество Т допускает /-контиг.
Теперь мы можем формализовать задачу сборки фрагментов с помощью модели МУЛЬТИКОНТИГ. Имея множество фрагментов F и целое число t, мы хотим разбить множество F на минимальное число подмножеств Ci, где 1 гк, с тем чтобы каждое подмножество Сг допускало t-контиг.
Пример 4,4. Пусть F = {GTAC, TAATG, TGTAA}. Мы хотим разбить множество F на минимальное число t-контигов. Если t = 3, то это число равно двум:
—TAATG	GTAC
TGTAA—
Нс существует никакого способа покрыть один отдельный контиг всеми тремя фрагментами, так что возможный в этом случае минимум — два контига. Интересно отметить, что строка GTAC — собственный обратный комплемент.
Если t = 2, то же самое решение — разбиение на 2-контиги, так как каждый 3-контиг равен 2-контигу. Однако существует и другое решение:
TAATG---- GTAC
---TGTAA
Здесь снова невозможно собрать множество F в один t-контиг.
Наконец, сели t = 1, то мы видим, что сушсствуст решение с одним t-контигом:
TGTAA------
—TAATG-----
-------GTAC

Версия модели, учитывающая ошибки, может быть определена следующим образом. Компоновка не обязательно должна быть свободна от
184
Глава 4
ошибок, но с каждым выравниванием мы должны ассоциировать согласованную последовательность S одинаковой длины, возможно содержащую знаки пробелов (-). Числа 1(f) и г(/) по-прежнему определяются как крайний левый и крайний правый столбцы фрагмента f в выравнивании, но теперь мы допускаем |/| r(f) — 1(f) + 1. Подстроку S[l(f).. .г(/)] мы называем образом выровненного фрагмента f в консенсусе. Задавшись допустимым коэффициентом ошибок 6, мы говорим, что если редактирующее расстояние между каждым выровненным фрагментом / и его образом в консенсусе равно самое большее б|/|, то строка S — е-консенсус данного контига. Теперь мы готовы к формальному определению.
Задача: мультиконтиг.
ВХОД: Множество строк J7, целое число t J 0 и допустимый коэффициент ошибок 6, со значением от 0 до 1.
ВЫХОД: Разбиение множества Т7 на минимальное число подмножеств Ci, где 1 г к, с тем чтобы каждое подмножество Ci допускало ^-контиг с е-консснсусом.
Обратите внимание, что в модели восстановление фрагмент просто обязан быть приближённой подстрокой последовательности S, но конкретная позиция его выравнивания в S не важна. Напротив, в формулировке задачи МУЛЬТИКОНТИГ мы должны явно указать позицию каждого фрагмента.
Даже в простейшем случае (без ошибок и с известной ориентацией) формальное описание сборки фрагментов с помощью модели МУЛЬТИКОП-ТИ1 представляет собой НП-трудную задачу. В качестве частного случая математическая модель мультиконтиг включает в себя задачу о Гамильтоновом пути в графах строго определенного класса.
Эта модель учитывает ошибки, ориентацию и неполное покрытие, но не предоставляет никакой возможности использования данных о приближённом размере целевой молекулы. Кроме того, она частично моделирует повторения в том смысле, что она может удовлетворительно решать некоторые варианты задачи с повторениями, хотя и не все из них. Например, она может правильно восстановить согласованную последовательность, представленную на рис. 4.12.
4.3.	* АЛГОРИТМЫ
В этом разделе мы представляем два алгоритма сборки фрагментов, свободных от ошибок и с известной ориентацией. Первый известен как
4.3. * АЛГОРИТМЫ
1X5
жадный алгоритм; многие практические системы были созданы на основе той же самой идеи, но с дополнениями, которые позволяют учитывать ошибки и неизвестную ориентацию. Второй алгоритм основан на модели МУЛЬТИКОНТИГ и полезен, когда, отбрасывая ребра с малым весом, мы можем получить ациклический граф перекрытий. Следует упомянуть, что из-за ограничивающей гипотезы, на базе которой они построены, сами алго-ригмы имеют небольшую практическую ценность. Тем не менее, заложенные в них идеи могут быть полезны при построении алгоритмов решения прикладных вариантов этой задачи.
4.3.1.	ПРЕДСТАВЛЕНИЕ ПЕРЕКРЫТИЙ
Общие надстроки соответствуют путям в некоторой топологической структуре, построенной на множестве J7. Мы можем наделить пути свойствами соответствующих им надстрок. Поскольку к настоящему времени теория графов разработана достаточно хорошо, многие задачи возможно (а часто и очень удобно) описывать при помощи графов.
Мультиграф перекрытий ОЛДУ) множества у — это ориентированный взвешенный мультиграф, определяемый следующим образом Множество узлов V графа представлено множеством строк у. Ориентированное ребро с весом t 0, идущее от фрагмента a G у к другому фрагменту b € У, существует, если суффикс фрагмента о, содержащий t знаков, является префиксом фрагмента Ь. В символьной записи это утверждение принимает вид:
suffix(a, t) = prefix(b, t),
или
ИЛИ
(як‘)6 = а(к‘Ь),
где к — облитератор (определение см. в разделе 2.1). Обратите внимание, что это ребро существует только при |а| t и |b| t. Учтите также, что между фрагментами а и b может существовать множество ребер, соответствующих различным значениям t. Именно поэтому данную топологическую структуру называют мультиграфом, а не просто графом. Следует отмстить, что мы запрещаем петли, то есть ребра, выходящие из узла и входящие обратно в себя же, но допускаем ребра с нулевым весом.
186
Глава 4
Скажем несколько слов о весах ребер. Реберные веса представляют перекрытия между фрагментами, и мы используем перекрытия, чтобы объединять фрагменты в более длинные строки посредством перекрытия общих частей. Такое объединение означает, что мы допускаем, что два объединяемых фрагмента принадлежат одной и той же области в целевой ДНК. Но это допущение должно быть как-то обосновано. В нашем случае обоснованием служит размер перекрытия. Короткое перекрытие обеспечивает слабое обоснование, тогда как длинное перекрытие дает прочное обоснование. Когда обрабатывают сотни фрагментов, каждый длиной несколько сотен знаков, было бы безрассудно допускать, что два фрагмента имеют общие концы, основываясь на перекрытии, скажем, трех знаков. По этой причине мы иногда устанавливаем минимально допустимое количество перекрытия и отбрасываем все ребра с весом ниже этого порога. Но, в принципе, мы будем сохранять все ребра в мультиграфе, включая ребра с нулевым весом. Существует всего п(п—1) таких ребер, потому что любые две строки имеют условное перекрытие из нулевых знаков.
4.3.2.	ПУТИ, ПОРОЖДАЮЩИЕ НАДСТРОКИ
Мультиграф перекрытий важен, потому что ориентированные пути в нем дают множественное выравнивание последовательностей, которые принадлежат этому пути. Путем построения общей надстроки множества последовательностей из этого выравнивания может быть получена согласованная последовательность. Рассмотрим этот процесс подробнее.
Имея ориентированный путь Р в мультиграфе перекрытий ОМ(р), мы можем следующим образом построить множественное выравнивание последовательностей, составляющих путь Р. Каждое ребро е = (f, д) этого пути имеет некоторый вес t, и это означает, что t конечных оснований в хвосте / ребра с составляют префикс головы д ребра е. Таким образом, хвост f и голова д могут быть выровнены, причем голова д должна быть расположена на I позиций раньше конца хвоста /.
Пример мультиграфа перекрытий приведен на рис. 4.15. Изображены только ребра со строго положительным весом. Здесь множество р множество строк {а, Ь, с, rf}, где
а = TACGA, b = АССС, с = CTAAAG, d = GACA.
4.3. * АЛГОРИТМЫ
187
TACGA
Рис. 4.15. Мультиграф перекрытий; ребра с нулевым весом не показаны
Обычно мы описываем пути при помощи списка: вершина, ребро, вершина, ребро, ..., вершина, где каждое ребро соединяет две вершины, соседние с ним в списке. Однако в этом примере нет параллельных ребер, так что для простоты мы будем описывать пути только списком принадлежащих им вершин. Путь Pi = dbc дает следующее выравнивание:
GACA--------
------АССС-- ------------CTAAAG
тогда как путь Рг = abed порождает другое выравнивание:
TACGA- ------------АССС-------- ----------------CTAAAG---------- ----------------GACA
В общем случае, пусть Р — путь в мультиграфе перекрытий С?Л4(Р) и А — множество фрагментов, принадлежащих пути Р. По определению, вершины в путях не могут повторяться, так что путь Р содержит точно |Л| — 1 ребро. Общую надстроку, порождаемую путем Р, обозначим S(P)
Соотношение между общей длиной фрагментов А, весом пути и длиной надстроки описывает уравнение вида
||Л||=ш(Р) + |5(Р)|,
(4.3)
188
Глава 4
где ||Д|| =	|а| — сумма длин всех последовательностей во множе-
стве Л; w(P) — вес пути Р. Верно ли это соотношение? Проверим его на нескольких простых примерах.
Начнем с пути, содержащего единственный фрагмент f и ни одного ребра. Тогда А = {/}, ||Л|| = |/| и w(P) = 0, поскольку путь Р не имеет ребер. Кроме того, общая надстрока S(P) состоит из единственного фрагмента /. Легко видеть, что уравнение (4.3) в этом случае верно. Попробуем увеличить дистанцию. Предположим, что путь Р = /161/262.../< и что формула для него верна. Что случится, если мы введем в этот путь дополнительное ребро? Тогда при w(ej+i) = к мы имеем Р' = PtT+i/i+i и
w(P') = w(P) + w(el+i) = w(P) + к.
С другой стороны, S(P') = S(P)suffix(fi+i,\fi+i\ к), потому что первые к «наков фрагмента /;+1 уже присутствуют в общей надстроке S(P). Мы должны прицепить только оставшийся суффикс фрагмента fi+i. Тогда
|S(P')|=|S(P)| + |/1+1| - к =
=||Л|| - w(P) + |/1+1| -к = =||Л'|| - ш(Р’)
и формула по-прежнему верна. Мы только что доказали уравнение (4.3) методом индукции.
Другой способ его записи — с помощью облитератора. Если путь Р = = /161/262 • • - /ь то
S(P) =
В этом случае правая часть формулы не является неопределенной, поскольку, согласно определению веса ребра,
(/*кю(е<))/*+1 = /.(Kw(ei)/.+i)-
Тогда длина обшей надстроки
|£(Л1=1/11 - w(fii) + I/2I - w(e2) +---w(ef_i) + |/f| =
= Е l/.|- Ew(ei) =
=||А|| - w(P).
Итак, каждый путь порождает общую надстроку составляющих его фрагментов. Это особенно важно, когда мы имеем путь, который обходит все
4.3. * АЛГОРИТМЫ
189
вершины. Такие пути называют Гамильтоновыми (см. раздел 2.2). Если мы провели Гамильтонов путь, то мы имеем общую надстроку множества А = р. В этом случае уравнение (4.3) преобразуется к виду
|S(P)| = ||^||-w(P)	(4 4)
и, поскольку — постоянная величина, то есть не зависит от выбора Гамильтонова пути, постольку мы видим, что минимизация |S(P)| равносильна максимизации »'(Р).
4.3.3.	КРАТЧАЙШИЕ НАДСГРОКИ В КАЧЕСТВЕ ПУТЕЙ
В предыдущем разделе мы выяснили, что каждый путь соответствует надстроке. Верно ли обратное? Не всегда, как показывает следующий пример Для множества фра!мснтов, породившего граф на рис 4.15. надстрока
GTATACGACCCAAACTAAAGACAGGG
нс соответствует никакому пути, и легко увидеть почему Надстроки могут содержать лишние знаки, которые нс встречаются ни в одном из фрагментов множества
Но крат чайшие падстроки не могут содержать избыточные знаки. Итак, всегда ли кратчайшие надстроки соответствуют путям? Ответ является утвердительным, и далее мы докажем это утверждение Мы сначала покажем, что это верно для гак называемых не содержащих подстрок множеств и затем распространим наше доказательство на любые множества.
Говорят, что множество У7 нс содержит подстрок, если в нем нет никаких двух различных строк а и Ь, таких, что а является подстрокой Ь. Преимущество нс содержащих подстрок множеств состоит в том, что в них легче доказать частичную обратимость построения типа путь надстрока
Теорема 4.1. Пусть р — не содержащее подстрок множество. Тогда для каждой общей падстроки S множества р в мультиграфе перекрытий ОМ{р) существует такой Гамильтонов путь Р, что общая надстрока S(P) является подпоследоватегьностью общей надстроки S
ДОКАЗАТЕЛЬСТВО. Строка S — общая надстрока множссзва р, так что для каждого фрагмента f G р существует такой интервал [/(/)... r(f)] строки S, что S[l(f).. . г(/)] = /. Для некоторых фрагментов может существовать множество позиций, в которых их можно прикрепить. Это нс имеет значения Выберем и запомним одну из них.
190
ГЛАВА 4
Никакой интервал вила [/(/).. .г(/)] не содержится в другом таком интервале, потому что множество У не содержит подстрок. Эти интервалы обладают следующим важным свойством. Все левые крайние точки различны и все правые крайние точки различны, хотя могут существовать левые крайние точки, равные правым крайним точкам. Более того, если мы сортируем фрагменты по возрастанию левых крайних точек, то правые крайние точки также образуют порядок возрастания. Действительно, если из множества р мы выберем две строки fug, где 1(f)	1(g) и r(f) т(д), то
интервал строки д будет содержаться в интервале строки /, что является невозможным. Итак, мы получили интервалы, сортированные по возрастанию начальных, а также конечных точек. Пусть (fi)i=i,...,m — такое упорядочение. Фрагменты в этом порядке составляют требуемый путь.
Рассмотрим соотношение между фрагментами ft и /,+] для всех г, где 1	— 1. Если Z(/l+i) r(fi) + 1, то в ОМ(Р) существует ребро
с весом r(fi) + 1 - /(/i+i). Если Z(/i+i) > r(ff) + 1, то мы выбираем ребро с нулевым весом, идущее от узла fi к узлу /,+j. Знаки S[J] для r(fi) + + 1 Sj j Sj l(fi+i) — 1 будут отброшены, потому что они не принадлежат никакому интервалу и. следовательно, являются избыточными, поскольку мы ищем именно общую надстроку. Эти знаки находятся в надстроке S, но не в S(P), которая поэтому представляет собой подпоследовательность общей надстроки S.	
Следствие 4.1. Пусть р — не содержащее подстрок множество. Если S — кратчайшая общая надстрока множества р, то существует такой Гамильтонов путь Р, что S = S(P).
Доказательство. Согласно предыдущей теореме, такой путь существует, причем строка S(P) является подпоследовательностью кратчайшей обшей надстроки S. Но строка S(P) также является общей надстрокой, потому что путь Р является Гамильтоновым. Поскольку S — кратчайшая общая надстрока, мы имеем |S(P)|	|S| и поэтому S = 8(Р).	
Теперь мы обобщим это доказательство для любых множеств. Сначала введем несколько новых определений. Множество фрагментов р доминирует над другим множеством Q, когда каждый фрагмент g Е Q является подстрокой некоторого фрагмента f 6 _Р. Например, если Q С р, то р доминирует над Q. Говорят, что два множества р и Q эквивалентны (обозначается Р = Q), когда р доминирует над Q, и Q также доминирует над р. Эквивалентные множества имеют одинаковые надстроки, так что для нас это понятие очень важно.
4.3. * АЛГОРИТМЫ
191
Лемма 4.1. Два эквивалентных не содержащих подстрок множества являются тождественными
Доказательство. Если д = Q и множество Д не содержит подстрок, то Д С (J. Чтобы показать это, рассмотрим фрагмент f 6 Д. Поскольку множество Q доминирует над Д, то должен существовать такой фрагмент g е Q, чтобы фрагмент f был подстрокой фрагмента д. Но множество Д также доминирует над (?, так что во множестве Д существует надстрока h фрагмента д. По свойству транзитивности фрагмент f является подстрокой фрагмента h. Но множество Д не содержит подстрок, так что f = h, и, поскольку фрагмент д находится «между» ними, f = д = h. Из этого следует, что f = д е б Поскольку выбор фрагмента f произволен, мы заключаем, что Д б То же самое рассуждение при обратном порядке множеств Д и б показывает, что б С Д. Следовательно, Д = б-	
Следующая теорема помогает нам понять, как получить не содержащее подстрок множество из множества произвольно отобранных фрагментов.
Теорема 4.2. Пусть Д — множество строк. Тогда существует однозначно определенное не содержащее подстрок множество б. эквивалентное множеству Д.
Доказательство. Однозначную определенность множества гарантирует предыдущая лемма. Докажем его существование. Мы хотим показать, что для каждого множества Д существует не содержащее подстрок множество б, эквивалентное множеству Д. Мы сделаем это индукцией на числе строк во множестве Д.
При | Д | = 0 множество Д само по себе не содержит подстрок и теорема доказана. При Д |	1 множество Д может либо содержать, либо
не содержать подстрок. Если не содержит, то мы снова считаем теорему доказанной. Если содержит, то во множестве Д существуют такие строки а и Ь, что строка а является подстрокой Ь. Удалим строку а из множества Д и получим меньшее множество Д' = Д {а}. Согласно индуктивному предположению, множеству Д’ соответствует эквивалентное не содержащее подстрок множество б- Но легко убедиться, что Д = Д'. Ясно, что Д доминирует над Д', поскольку Д' является подмножеством множества Д. С другой стороны, единственная строка, принадлежащая множеству Д, но при этом не принадлежащая его подмножеству Д', строка а, которая является частью строки Ь е Д'. Следовательно, множество б также эквивалентно множеству Д и теорема полностью доказана.	
Данная теорема свидетельствует о том, что, если мы ищем общие надстроки, то, пожалуй, мы могли бы ограничиться не содержащими подстрок
192
Глава 4
множествами, потому что для любого множества существует эквивалентное ему не содержащее подстрок множество, то есть имеющее те же самые общие надстроки. Кстати, доказательство теоремы 4.2 также дает нам способ получить однозначно определенное не содержащее подстрок множество, эквивалентное данному множеству J7. Для этого достаточно всего лишь удалить из множества У все строки, которые являются подстроками каких-либо компонентов множества у.
4.3.4.	ЖАДНЫЙ АЛГОРИТМ
Теперь мы знаем, что поиск кратчайших общих надстрок равносилен поиску Гамильтоновых путей с максимальным весом в ориентированном мультиграфс. Болес того, поскольку наша цель состоит в максимизации веса, мы можем упростить мультиграф и рассматривать только самые тяжелые ребра между каждой парой узлов, отбрасывая другие, параллельные ребра меньшего веса. Любой путь, который не использует самое тяжелое ребро между парой узлов, может быть улучшен, и, следовательно, он не является путем с максимальным весом. Назовем этот новый граф графом перекры тии множества Т7 и обозначим его	На практике мы не строили бы
эти ребра одно за другим Используя суффиксные деревья (см. раздел 3 6 3) мы можем строить ребра одновременно, экономя и пространство памяти и время счета компьютера (см. библиографические примечания). Подобные структуры могут помочь в обнаружении фрагментов, являющихся подстроками каких-либо других фрагментов множества и поэтому могущих быть не включенными в граф
Следующий алгоритм «жадная» попытка вычисления самого тяжелого пути. Основная идея, заложенная в нем непрерывно добавлять к пути самое тяжелое ребро, не нарушающее при этом текущий Гамильтонов путь, построенный на ранее выбранных ребрах. Поскольку этот граф полный, то есть в нем есть ребра между каждой парой узлов, этот процесс останавливается только тогда, когда будет сформирован путь, содержащий все вершины
В Гамильтоновом или практически в любом пути для этой задачи мы не должны иметь двух ребер, выходящих из одного и того же узла, или двух ребер, входящих в один и тот же узел. Кроме того, мы должны предотвратить формирование циклов. Итак, мы имеем три условия, которые мы должны проверять перед принятием каждого нового ребра в Гамильтонов пуль. Ребра обрабатываются в порядке невозрастания веса, и процедура заканчивается, когда мы имеем точно п — 1 ребро, то есть когда принятые ребра индуцируют связный подграф.
4.3 * АЛГОРИТМЫ
193
На рис. 4.16 показан алгоритм. Для каждого узла мы сохраняем текущие значения его полустепсни захода и полустепени исхода относительно принятых ребер. Эта информация используется для проверки того, имеет ли предыдущее выбранное ребро тот же самый хвост или голову, как исследуемое в данный момент ребро. Кроме того, мы сохраняем непересекающиеся множества, которые формируют связные компоненты графа, индуцируемые принятыми ребрами. Легко видеть, что новое ребро формирует цикл тогда и только тогда, когда его хвост и голова находятся в одном и том же компоненте. Поэтому эту структуру необходимо проверять на наличие циклов. Непересекающиеся множества поддерживаются структурой данных типа леса непсрссскающихся множеств (см. раздел 2.3).
\lgorithm Greedy'1
input: взвешенный орграф OG(F) на п вершинах
output: Гамильтонов путь в графе OQ(F)
И Инициализация
tor г <— 1 to п do
/и [г] <— 0 // сколько выбранных ребер входят в г
ouf[i] <— О И сколько выбранных ребер выходят из г
MakeSet(i)
И Обработка
Сортировать ребра по убыванию веса
for каждого ребра (/, д) в данном порядке do
И проверка ребра на приемлемость
if tn[p] — 0 and out /] = 0 and FindSet(f) ^FindSet(g) выбрать (f,g) '«If/1 ч- 1 ow/[/] «- 1
Union(FindSet(f), FindSet(g))
if получен только один компонент
break
return выбранные ребра
Рис. 4.16. Жадный алгоритм построения Гамильтонова пути
Мы описали жадный алгоритм для задачи на графах, но он может быть применен с непосредственным использованием самих фрагментов Алгоритм соответствует следующей процедуре, непрерывно применяемой ко множеству фрагментов, до тех пор, пока не останется только один фрагмент. Выбираем пару (f,g) фрагментов с наибольшим перекрытием к, удаляем
"Жадный При.» перев
194
Глава 4
эти два фрагмента из множества Т7 и добавляем кон гиг /ккд ко множеству J:. Мы основываемся на допущении, что множество У нс содержит подстрок.
Однако, как показывает следующий пример, эта жадная стратегия не всегда производи! наилучший результат.
Пример 4.5. Предположим, что мы имеем множество
F - {GCC, ATGC, TGCAT}.
Граф перекрытий показан на рис. 4.17, где мы опустили ребра с нулевым весом, чтобы избежать загромождения рисунка.
Рис. 4.17. Граф, в котором жадный алгоритм дает сбой
В этом графе ребро с весом 3 — первое, которое будет исследовано и, очевидно, принято, потому что первое ребро всегда принимается. Однако при этом два ребра с весом 2 автоматически признаются непригодными, так что для завершения Гамильтонова пути алгоритм вынужден выбрать ребро с нулевым весом. И это при том, го два отброшенных ребра формируют пут ь с общим весом 4, то есть самый тяжелый путь в данном примере. 
Этот пример показывает, что жадный алгоритм не всегда возвращет кратчайшую надстроку. Существует ли алгоритм, который надежно работает во всех случаях? По-видимому, нет. Мы пытаемся решить задачу поиска КОН с помощью задачи о Гамильтоновом пути; но, как мы видели в разделе 2.3, задача о Гамильтоновом пути является НП-полной. Возможно, мы могли бы получить лучшие результаты, применив другой подход к решению задачи поиска КОН. К сожалению, по всей вероятности, это тоже не выход, поскольку, как уже было упомянуто, можно показать, что задача поиска КОН является НП-трудной.
4.3. * АЛГОРИТМЫ
195
4.3.5.	АЦИКЛИЧЕСКИЕ ПОДГРАФЫ
Выводы о трудности, которые мы упоминали в предыдущем разделе, относятся к произвольной выборке фрагментов. В этом разделе мы рассмотрим задачу сборки фрагментов без ошибок и с известной ориентацией, допуская, что эти фрагменты были взяты из «хорошей выборки» целевой ДНК. Как будет показано далее, это допущение позволяет нам построить алгоритмы, которые дают верное и особенно эффективное решение.
Что мы подразумеваем под «хорошей выборкой»? Как правило, мы хотим, чтобы фрагменты полностью покрывали целевую молекулу, и чтобы множество в целом показывало сцепление, достаточное для гарантии надежности сборки. Вспомним определение t-контига из раздела 4.2.3. В этом разделе все определения основаны на подобных понятиях.
Предположим, что S — строка знаков из алфавита {А, С, G, Т}. Согласно определению из раздела 2.1, интервал строки S это такой целочисленный интервал [i.. .j], что 1 С i С j + 1 С |S| + 1. Выборкой строки S называют множество Д интервалов строки S. Выборка А покрывает строку S, если для любого г. такого, что 1 С Д |S'|, мы имеем по крайней мерс один интервал [j ... к] & А, где г С [j ... /с].
Мы говорим, что два интервала а и /3 сцеплены на уровне t, если |<э С (3\ t. Полная выборка А, как говорят, связна на уровне t, если для каждых двух интервалов п и р из выборки А существует такой ряд интервалов аг (где 0 С i /), что а = ао> Р = а/ и интервал оц сцеплен с <тг+1 на уровне t при 0 С г С I — 1. Обратите внимание, что мы используем параметр t в качестве меры того, насколько сцепление сильное. Выборка А считается хорошей, если она связна на уровне t.
Наша цель состоит в том, чтобы изучить множества фрагментов, получаемые из связных на уровне t выборок, покрывающих некоторую строку S. Обычно в практических приложениях значение t примерно равно 10, но в нашем примере мы не будем его фиксировать. Все же мы сделаем допущение, что t - неотрицательное целое число.
Множество фрагментов, порожденное выборкой А, равно
£ = [Д1 = -№] I о ед}.
Мы говорим, что выборка Д не содержит подынтервалов, если в ней не существует никаких двух интервалов [г... j] и [/с... /], таких, что [г ... j] С С [А-... I]. Следующее свойство не содержащих подынтервалов выборок мы будем упоминать часто. В нс содержащей подынтервалов выборке никакие два интервала нс могут иметь одинаковую левую крайнюю точку. Иными словами, какой бы интервал ни имел большую (из двух) левую крайнюю
196
Глава 4
точку, он обязательно будет включать в себя и другую. Аналогичное рассуждение справедливо и для правых крайних точек.
Графы перекрытий могут быть преобразованы следующим образом. Имея множество J7, неотрицательное целое число t и мультиграф перекрытий ОЛ4.(У), мы получаем граф ОМ(^Л), сохраняя в OM(F) только ребра с весом, равным по крайней мере t. Подобное же построение определяет граф OQ(^,t). Такое преобразование позволяет уменьшить общее число ребер и сохранить лишь более тяжелые.
Мы будем использовать символ [] для обозначения ряда соотношений: |а| w, |/3| w и l(/3) + w— 1 = г(п). Точно так же f д означает, что в графе ОМ^) существует ребро с весом ш, идущее от вершины / к вершине д.
Предположим теперь, что мы имеем такое множество Т и хотели бы восстановить надстроку S. Как мы можем сделать это? Каковы хорошие алгоритмы для такой задачи? Оказывается, ответ однозначно зависит от структуры повторений в надстроке S. Если S не содержит никаких повторений размером t или больше, то ее восстановление не составляет труда. Но если S содержит такие повторения, то задача становится более сложной, и в некоторых случаях надстрока S не может быть восстановлена без присутствия неопределенности.
Существование Гамильтонова пути в графе	t) нс зависит от
структуры повторений в надстроке S. Перед тем, как приступить к анализу структуры повторений в надстроке S, мы сформулируем и докажем это основное свойство. Сначала докажем вспомогательную лемму.
Лемма 4.2. Пусть S — строка знаков из алфавита {А, С, G, Т} и А — не содержащая подынтервалов связная на уровне t выборка строки S, при некотором t 0. Если а — интервал выборки Д, такой, что в А существует другой интервал, /3, причем 1(a) < 1((3), то интервал /3 может быть выбран так, чтобы удовлетворялось неравенство
r(a) + 1 - l(/3) I.
Доказательство. Мы знаем, что выборка А связна на уровне t, поэтому в выборке А существует такая последовательность интервалов что л = Од. /3 = at и |<kt П ol+i| t при 0 г I — 1.
Пусть г — наименьший индекс, при котором 1(a) < l(at). Поскольку равенство /3 = at удовлетворяет этому условию, мы знаем что г I. С другой стороны, г > 0, потому что равенство а = аи нс удовлетворяет этому условию. Поскольку г — наименьший индекс, то, согласно условию,
4 3 * АЛГОРИТМЫ
197
мы имеем Z(a4_j) < 1(a) < 1(аг). Из этого следует, что r(a4_i) < г(а) < < т(а,), поскольку выборка А не содержит подынтервалов Граф изображен на рис. 4.18.
Рис 4.18. Три взаимно перекрывающихся интервала
Мы также знаем, что |a4_j Па4| > t. Но |оСаг| 5г |«i-i Г)а4| > t (см.
рис 4 18), так что аг является интервалом в выборке Л, таким, что
г(о) + 1 — 1(аг) t.
Теперь докажем теорему о существовании Гамильтонова пути.
Теорема 4.3. Пусть S — строка знаков из алфавита {А, С, G, Т} и Л — не содержащая подынтервалов связная на уровне t выборка строки S, для некоторого t 0. Тогда мультиграф OM(Jr,t), где ? - множество фрагментов, порожденное выборкой Л, допускает Гамильтонов путь Р Кроме того, если выборка Л покрывает строку S, то путь Р может быть выбран так, чтобы S(P) — S
Доказательство. Пусть	— последовательность всех интер-
валов из выборки Л, сортированных по левой крайней точке. Поскольку выборка Л нс содержит подынтервалов, эта последовательность оказывается сортированной также и по правой конечной точке. Пусть фрагмент /4 = к
= S[a4] при 1 i п. Мы утверждаем, что /4 Л fi+i для некоторого kt t, так что узел /г в вышеупомянутом порядке формирует Гамильтонов путь.
Пусть аг — любой интервал, кроме последнего. Согласно предыдущей лемме, существует другой интервал в € Л, такой, что Z(a4) < 1(0) и г(а4) + + 1-1(0) t. Последовательность (a4)i^4^n сортирована по левой крайней точке, так что Z(o4) < 1(ацл) 1(0). (Интервалы a4+i и 0 могут оказаться одним и тем же интервалом.) Следовательно,
кг = |а4Па4+1| = |[Z(o4+i).. г(а4)]| =
= г(а4) - Z(ft4+i) + 1 > r(a4) + 1 - 1(0) t.
198
Г1АВА4
Это соотношение показывает, что в графе ОЛ4(р. t) действительно существует ребро /г —> f,+i, и завершает доказательство первой части теоремы.
Доказательство второй части, которая гласит, что S(P) = S, построим на следующем свойстве. Каждый раз, когда верно а 0, мы имеем также S[o] Д[Д] и тогда Д[а]к“Д[Д] = Д[л U Д].	
Присутствие повторных областей, или повторных элементов, в целевой строке S зависит от существования циклов в графе перекрытий. В этом и последующих разделах мы покажем эту взаимосвязь в более явном виде.
Повторный элемент, или повторение, появляется в строке S, когда два различных интервала строки S дают начало одинаковым подстрокам Другими словами, существуют два интервала а Д, таких, что S а] = 5[Д]. Ример этого повторения равен (S а] и точно так же равен |Д[Д]|. Повторение является самоперекрывающимся, когда п П Д 0, в противном случае мы имеем несовместные появления этого повторения.
Следующая теорема показывает, что циклы в графе перекрытий всегда вызваны (индуцированы) повторениями в строке S. Обратное утверждение нс обязагсльно верно; то есть мы можем иметь повторения, но по-прежнему ациклический граф перекрытий. И снова, прежде чем мы сможем доказать саму теорему, необходимо доказать несколько промежуточных утверждений.
Лемма 4.3. Если а —> Д. то 1(a)	1(0) и г(а) г(Д).
Доказательство. Из|о| w мы находим/(a)+w—1 г(о) Изо Д мы получаем 1(0) + w — 1 = г(о) Посему 1(a) + w — 1	1(0) + w — 1, то
есть 1(a)	1(0). Точно так же, согласно предыдущим уравнениям, |Д| w
подразумевает, что 1(0) + w — 1 г(Д) и г(а) $ г(Д).	
И вновь мы не можем продолжить, пока не выучим несколько новых определений. Ложное перекрытие на уровне t такая пара интервалов а и Д, что верны условия w t и S[o] Д[Д], но а ™ 0 не верно. Название связано с допущением о том, что повторения S[a] и Д[Д] выбраны из пересекающихся областей в целевой молекуле, потому что их последовательности перекрываются, но дело обстоит не так. Они выглядят перекрывающимися, но на самом деле не перекрываются, так что они образуют ложное перекрытие
Лемма 4.4. Существование ложного перекрытия на уровне t подразумевает существование повторения размером по крайней мере t.
Доказательство. Из Д[а] Д[Д] мы имеем |а| w и |Д| > w. Если 1(0) = г(а) — w + 1, то а —> 0, поскольку в соответствии с гипотезой а Д. Следовательно, 1(0) r(a) — w + 1.
4.3. * АЛГОРИТМЫ
199
Кроме того, соотношение S[n] S[/3] подразумевает, что S[c/] = = S,[/7], где а' последние w элементов интервала п. а 0' - первые w элементов интервала 0. Поскольку 1(0) 5^ r(a) — w + 1, интервалы о' и 0' являются различными и дают начало одной и той же подстроке; то есть мы имеем повторение размером w > Е	
Теорема 4.4. Пусть р—множество порождаемое выборкой А строки S. Если граф OQ(p, t) содержит ориентированный цикл, то в строке S существует повторение размером по крайней мере t.
Доказательство. Пусть ft —» /2 —» •  • -+ fi —► /1 — ориентированный цикл в графе OQ(P t). Рассмотрим интервалы ai....,Oj, такие, что 5[ог] = /г при 1 г Sj I. Мы покажем, что по крайней мерс одна из пар (o,,oi+j), включая (п(,П[), является ложным перекрытием, что, согласно лемме 4.4, подразумевает существование повторения в строке S.
Предположим, что все пары - истинные перекрытия. Тогда вер но сц —> П;+1 при 1 г < I и верном сц —> од. Из этого следует, что /(<>])	1(а2)	l(ai) 1(<*1)- Так что вес 1(сц) равны. Анало-
гичное рассуждение справедливо и для г(пг). Но тогда пт = о2 = • • - = п;, что является невозможным, поскольку в соответствии с гипотезой ребра Д различны. Следовательно, существует по крайней мерс одно ложное перекрытие и теорема доказана.	
Все эти соображения ведут к удовлетворительному решению задачи сборки фрагментов, когда целевая строка S нс содержит повторений.
Теорема 4.5. Пусть S — строка знаков из алфавита {А, С, G, Т}, А — не содержащая подынтервалов связная на уровне t выборка строки S. покрывающая S, и пусть Р = 5’[Д]. Если строка S не содержит никаких повторений размером t или больше, то граф OQ(p, t) имеет единственный Гамильтонов путь Р, a S(P) = S.
Доказательство. Мы показали, что граф OQ(P, t) является ациклическим (теорема 4.4) и что граф OM(p,t) содержит Гамильтонов путь Р, причем S(P) = S.
Для начала заметим, что если строка S не имеет никаких повторений размером t или больше, то OM(p,t) = OQ(P,t). Это следует из отсутствия ложных перекрытий. Ясно, что множества вершин графов OM(p,t) и OQ(p,t) являются эквивалентными. Также ясно, что каждое ребро графа OQ(P, t) принадлежит также графу ОМ(Р, t). Итак, осталось лишь убедиться, что все ребра графа ОМ(Р, t) принадлежат также графу OQ(P, t).
Пусть f g — ребро графа OM(p,t). Тогда w > t. Если это ребро не находится в графе OQ(P,t.), то это происходит из-за существования
200
Глава 4
другого ребра f Л д с весом х > ш. Пусть а и (3 — интервалы выборки Л, где S[ct] = f и S[/3] = д. Так как нет никаких ложных перекрытий, мы должны иметь как а /3, так и а /3, что невозможно. Вес этого ребра однозначно определяется выражением w = r(a) — l(/3) + 1.
Итак, OCfT7,0 — ациклический граф, содержащий Гамильтонов путь. Оказывается, что каждый раз, когда ациклический граф имеет Гамильтонов путь, этот путь единственный. Чтобы показать, почему это утверждение верно, рассмотрим узлы в графе, которые имеют нулевую степень захода (истоки). Поскольку рассматриваемый граф является ациклическим, он должен содержать по крайней мере один исток. Но, включая в себя Гамильтонов путь, он может иметь самое большее один исток — начальную точку этого пути. Все другие вершины имеют по крайней мерс одно входящее ребро. Исходя из этого, мы заключаем, что в таком графе должен быть единственный исток и что этот исток должен быть начальной точкой Гамильтонова пути.
Теперь, если мы удалим этот исток из графа, то оставшийся граф по-прежнему будет ациклическим и содержать Гамильтонов путь, потому что вершина, которую мы удалили, — крайняя точка первоначального Гамильтонова пути. Продолжая действовать по той же схеме, мы видим, что Гамильтонов путь единственный, и мы знаем, как его определить: для этого необходимо последовательно удалять истоки из графа.	
Только что описанный алгоритм широко известен в информатике (см. упражнение 12 главы 2). Его называют топологи ческой сортировкой и в более общем виде используют для поиска упорядочений узлов, совместимых с ациклическим множеством ребер в следующем смысле. Во всех ребрах вида f —у д узел f появляется в упорядочении перед узлом д. Если ациклический граф кроме того содержи'! Гамильтонов путь, то, как мы только что показали, это упорядочение однозначно.
Мы завершаем этот раздел примером, где алгоритм Greedy не работает, но существует ациклический подграф для подходящего порога t, так что алгоритм топологической сортировки найдет правильный путь. Когда мы говорим, что алгоритм Greedy не работает, мьг подразумеваем, что он нс обеспечивает правильную сборку, хотя он дает хорошие результаты поиска кратчайшей общей надстроки. В этом примере фрагменты берутся из целевой последовательности, действительно содержащей повторения размером больше /. Покажем, что отсутствие длинных повторений не является необходимым для получения ациклического графа. Выражаясь математическим языком, оно всего лишь достаточно.
4.3. * АЛГОРИТМЫ
201
Рис. 4.19. Граф перекрытий для данного множества из пяти фрагментов
AGTATTGGCAATC---AATCGATG---- ------------------------------------ATGCAAACCT-------------------------- ------------------------------------TTGGCAATCACT-CCTTTTGG AGTATTGGCAATCACTAATCGATGCAAACCTTTTGG
Рис. 4.20. Плохое решение задачи сборки, с множественным выравниванием, консенсус которого есть кратчайшая общая нале t рока. Это решение имеет длину 36 и генерировано жадным алгоритмом. Однако его слабейшая связь равна нулю
AGTATTGGCAATC-CCTTTTGG--------------- -------------------------------------AATCGATG-----------------------------TTGGCAATCACT -------------------------------------ATGCAAACT- AGTATTGGCAATCGATGCAAACCTTTTGGCAATCACT
Рис. 4.21. Решение, полученное с помощью единственного Гамильтонова пути. Это решение имеет длину 37, но показывает лучшее сцепление. Его слабейшая связь равна трем
Пример 4.6. Рассмотрим следующую целевую строку S и фрагменты w, z, и, х и у:
S=AGTATTGGCAATCGATGCAAACCTTTTGGCAATCACT w=AGTATTGGCAATC z=AATCGATG
U=ATGCAAACCT z=CCTTTTGG у“TTGGCAATCACT
Выбрав порог t = 3, мы получаем граф перекрытий, изображенный на рис. 4.19. Сборка, построенная алгоритмом Greedy, даст кратчайшую общую надстроку, сформированную сцеплением контига wk9 у с конти-
202
Глава 4
гом zk3uk3x в любом порядке, как показано на рис. 4.20 и 4.21. Это решение имеет длину 36, то есть на один знак короче, чем целевая последовательность, хотя оно также является надстрокой. Однако, решение, найденное при помощи Гамильтонова пути, имеет лучшее сцепление.	
4.4.	ЭВРИСТИКИ
Мы видели, что ни одна из формальных моделей, предложенных для сборки фрагментов, не адекватна полностью, так что на практике часто приходится обращаться к эвристическим методам. В этом разделе мы рассмотрим некоторые из них, начиная с указания важных свойств компоновки для хорошей сборки фрагментов.
Сборку фрагментов можно рассматривать как задачу множественного выравнивания с некоторыми дополнительными особенностями. Наиболее поразительная из таких особенностей — это, возможно, тот факт, что каждый фрагмент может участвовать в выравнивании как в прямом виде, так и в виде обратного комплемента. Вторая специфическая особенность — то, что сами последовательности обычно намного короче общего выравнивания. Это побуждает нас по-разному штрафовать внутренние и внешние пропуски во фрагментах гак, чтобы за внутренние пропуски налагался бы более значительный штраф. Если бы мы за оба вида пропусков налагали одинаковый или почти одинаковый штраф, то не было бы никакого стимула оставлять знаки фрагмента вместе, а наоборот, мы бы, в принципе, заставляли их рассеиваться по всей протяженности выравнивания. Более того, тот факт, что фрагменты короче самого выравнивания, вынуждает нас при оценке качества выравнивания учитывать помимо счета некоторые другие критерии. К последним относятся покрытие и сцепление. Критерий сцепления является мерой того, как сильно последовательности связаны, или сцеплены (по степени их перекрытия), как было показано в разделах 4.2.3 и 4.3.5. Обсудим эти критерии подробнее.
Счет: В каждом столбце множественного выравнивания мы имеем некоторое покрытие (определение см. в разделе 4.1.2). Идеальная ситуация возникает тогда, когда все последовательности, покрывающие некоторый столбец, входят в него одинаковым знаком. Обычно в столбце наблюдается хорошая однородность и плохая изменчивость знаков.
Это свойство дает возможность использовать понятие энтропии для измерения качества столбца. Энтропия - величина, определяемая на группе относительных частот, и она низка, когда одна из этих частот значительно выделяется среди других, и высока, когда все частоты более или менее
4.4. ЭВРИСТИКИ
203
равны. Ясно, что при оценке качеова столбца, чем ниже энтропия, тем лучше. Частоты, которые мы используем при оценке качества, — это частоты появления каждого знака, где знак может быть основанием А, С, G и Т или внутренним пробелом.
Предположим, что мы имеем п последовательностей, покрывающих некоторый столбец, и знаем относительные частоты рд, pq, pq, р^ и РПробел появления каждого знака. Тогда энтропия этого распределения определяется как
Е = -£pclogpc.
С
Если для некоторого знака с частота рс = 1, а все остальные частоты равны нулю, то мы имеем (допуская OlogO = U):
Е = 0.
Если, напротив, все частоты равны, то мы получаем рс = 1/5 для всех знаков с и тогда
Е = -5- |log| =log5, О о
что есть возможно максимальное значение для пяти частот.
Вспомним из раздела 3.4, что при анализе множественных выравниваний мы использовали схему счета парных сумм. Эта схема объединяет в одном показателе и покрытие и однородность столбца. Если однородность столбца высока, то чем больше покрытие, тем выше счет парных сумм. Аналогично, при фиксированном покрытии счет парных сумм возрастает вместе с однородностью. Напротив, энтропия независима от покрытия. Она измеряет только однородность. В зависимости от ситуации ученый может использовать комбинированную оценку — счет парных сумм — или покрытие и энтропию по отдельности.
Покрытие: В разделе 4.1.2 мы определили покрытие множества фрагментов относительно цели, из которой они были получены. Здесь мы определяем аналогичное понятие — покрытие компоновки. Фрагмент покрывает столбец г, если он входит в этот столбец либо некоторым принадлежащим ему знаком, либо внутренним пробелом. Пусть 1(f) и г(/) — соответственно, крайняя левая и крайняя правая позиции знака фрагмента f (или его обратного комплемента) в компоновке. Предыдущее определение означает, что фрагмент f покрывает столбец г, если 1(f) г r(f).
Дав определение покрытия отдельных столбцов, мы можем говорить о минимальном, максимальном и среднем покрытии компоновки. Значения
204
Глава 4
этих определений понимаются буквально. Если покрытие достигает нулевого значения в столбце г, то мы нс можем получить сцепленной компоновки. Действительно, никакой образ фрагмента не перекрывает столбец г, так что части компоновки слева и справа от столбца г являются в некотором смысле независимыми. Например, возможно поменять правую и левую части компоновки местами и получить альтернативную компоновку, столь же хорошую, как и первоначальная.
Это означает, что, если мы имеем много столбцов с нулевым покрытием, то любая перестановка промежуточных областей становится приемлема. Каждая из таких областей соответствует тому, что мы называли контигом. Покрытие важно также для определения доверительной оценки согласованной последовательности. Если существует несколько фрагментов, покрывающих столбец, то мы имеем больше информации относительно обращения к каждому отдельному основанию этого столбца. Наконец, в компоновке важно иметь достаточно много фрагментов из обеих нитей.
Сцепление: Кроме счета и покрытия известен другой показатель качества компоновки — сцепление отдельных фрагментов компоновки. Например, рассмотрим компоновку на рис. 4.22. Покрытие очень хорошее, но нег никаких реальных связей между фрагментами. Каждый блок состоит из многих почти точных копий некоторой последовательности, но сами блоки выглядят абсолютно нс сцепленными. Чтобы показать некоторые признаки сцепления, образы фрагментов должны иметь перекрывающиеся концы.
------АСТТТТ------ TCCGAG------------ACGGAC ------------------АСТТТТ------------ TCCGAG------------ACGGAC ------------------АСТТТТ- TCCGAG------------ACGGAC TCCGAGACTTTTACGGAC
Рис. 4.22. Хорошее покрытие, но плохое перекрытие: отсутствует сцепление
Сборка на практике
Хорошая программа сборки должна разумно сочетать эти требования и найти все решения, которые удовлетворяют им достаточно хорошо. Эта задача сама по себе весьма нелегка, и, более того, известно, что никакой
4.4. ЭВРИСТИКИ
205
совершенной формальной модели нс существует; в связи с этим построение алгоритма является очень трудным В результате, на практике часто целую задачу делят на три стадии и для решения каждой последующей стадии используют результаты, полученные на предыдущих. Типичное разделение включает в себя следующие три стадии:
•	Обнаружение перекрытий;
•	Построение компоновки;
•	Вычисление консенсуса.
При таком разделении задача становится более управляемой, потому что каждую стадию можно выполнять как отдельную задачу, более или менее независимо от других Однако при этом становится труднее понять взаимосвязь между начальным входом и конечным выходом задачи. Методы, используемые в этих промежуточных задачах, часто являются эвристическими. и потому нельзя дать никаких ясных гарантий относительно качества решения. Однако многие из существующих алгоритмов показывают на практике хорошие результаты и потому некоторые из используемых в них методов заслуживают нашего внимания.
4.4.1.	ОБНАРУЖЕНИЕ ПЕРЕКРЫТИЙ
Первый шаг в любой про|рамме сборки — обнаружение перекрытий фрагментов. Мы должны перебрать все пары фрагментов и их обратных комплементов и определить такие префиксы фрагментов, которые хорошо совпадают с суффиксами других фрагментов. Как правило, нам понадобятся все такие пары. Кроме того, мы интересуемся фрагментами, полностью содержащимися в других фрагментах. Все эти сравнения проводят в пределах допустимой частоты появления ошибок.
Мы упоминаем здесь способ сравнения двух фрагментов с целью обнаружения таких перекрытий. В практической задаче мы могли бы применить этот метод ко всем парам, включая обратные комплементы, но так поступают редко, иначе потребовалось бы слишком много времени, поскольку этот метод основан на квадратичном алгоритме. И все же это один из наиболее надежных методов оценки перекрытия.
Метод сравнения состоит в применении алгоритма метода динамического программирования, описанного в разделе 3.2.3, а именно, версии основного алгоритма Similarity. Эта версия не штрафует крайние пробелы: ни начальные, ни конечные. На рис. 4.23 представлен результат применения такого алгоритма для обработки двух фрагментов. Система очков, используемая в этом сравнении; 1 для совпадений, 1 для несовпадений
206
Глава 4
AGGAGAAGAATTCACCGCTAT----------
----------ТТССССТ-ТАТТСААТТСТАА
фикс-суффиксных выравниваний или выравниваний целых фрагменюв, пригодных
для сборки
и —2 для пробелов. Следует подчеркнуть, что для того, чтобы можно было найти префикс-суффиксное подобие, этот алгоритм не штрафует пробелы после первой или перед второй последовательностью. Тот же самый алгоритм может быть использован для поиска приближённого подобия целых фрагментов.
4.4.2.	УПОРЯДОЧЕНИЕ ФРАГМЕНТОВ
В эзом разделе мы кратко обсудим один вопрос, связанный с построением компоновки в реальной задаче сборки, а именно, проблему поиска хо
4.4. ЭВРИСТИКИ
207
рошего упорядочения фрагментов в контиге Получив такое упорядочение и зная, что каждый фрагмент перекрывается с последующим, мы можем построить компоновку, прибс1нув к методам, изложенным в следующем разделе. К сожалению, не известны алгоритмы, которые были бы одновременно простыми и достаточно универсальными; такое не под силу даже алгоритмам, опирающимся на различные эвристики. Поэтому, вместо того, чтобы представить такой алгоритм, мы приводим важные соображения, которые должны быть приняты во внимание при попытке построить хорошие упорядочения фрагментов.
В реальной задаче нам приходится иметь дело с обратными комплементами, так что необходимо расширить входное множество У за счет добавления к каждому фрагменту его обратного комплемента. Принимаем
Т = {! | /еЛ
и
VF = FUF-
Кроме того, мы должны учитывать и ошибки, а это означает поиск прибли жённого совпадения Мы будем использовать обозначение f —» д в немного отличном смысле от введенного ранее. Теперь оно означает, что конец фрагмента f приблизительно равен началу фрагмента д. Мы также предполагаем, что всякий раз, когда верно выражение f —» д, верно и выражение д —> f, потому что разумно ожидать, что, независимо от используемого критерия оценки подобия между двумя последовательностями, этот же критерий равносилен и в случае оценки их обратных комплементов.
Это можно показать следующим образом. Если f —» д верно, то f = = uv, д = wx и фрагменты v и w подобны. Это подразумевает, что д = х ш, f = vu и что обратные комплементы w и V тоже подобны, что эквивалентно записи д —» /. Мы будем использовать обозначение f С д, означающее, что фрагмент f является приближённой подстрокой фрагмента д. Рассуждение, аналогичное предыдущему, показывает, что f С д => f Сд.
Тогда граф, который мы будем строить, — граф перекрытий OQt'DF'}, причем его ребра показывают приближённое перекрытие. Кроме того, важно знать, какие фрагменты являются приближёнными подстроками других.
Поиск хорошего упорядочения перекрывающихся фрагментов по существу равносилен поиску ориентированных путей в графе OQ(T>J-). Эти пути порождают контиги. Необходимо помнить, что для любого пути
/1 —»/2 —»•••—> А
208
Глава 4
в этом графе существует соответствующий ему «комплементарный» путь
fk —» fk-1 —» • • • —» fi,
дающий начало контигу с согласованной строкой, которая является обратным комплементом консенсуса. Это означает, что обе нити целевой ДНК расшифровываются одновременно. В идеале мы бы хотели получить такую пару комплементарных путей, чтобы каждый отдельный фрагмент принадлежал точно одному пути в паре. Вложенные фрагменты (то есть покрывающие внутренние участки некоторой области консенсуса и поэтому не дающие никакой информации о сцеплении) могут быть размещены в упорядочении позже, так что их присутствие в путях не существенно. Фактически, их принудительное присутствие может повредить формированию пути (см. упражнение 14). Вложенные фрагменты могут обеспечить важную связь лишь в редких случаях, так что при построении пути мы рассматриваем их в качестве необязательных компонентов.
На пути к идеальной цели построения пары путей, покрывающих все отдельные фрагменты, две проблемы могут стать серьезными препятствиями: неполное покрытие и присутствие повторений. Несвязный граф перекрытий — обычно признак неполного покрытия. Повторения вызывают появление циклов в графе перекрытий, если покрытие хорошее, или же могут проявиться в виде ребер f —+ д и f —> h, хотя фрагменты g и h не сцеплены (д и h не сцеплены, если д -£> h, h, -£> д, д h и h д). Это случается, когда f — фрагмент около конца повторения X, а д и h — фрагменты, идущие от X к различным окружающим это повторение областям цели. Цикл, включающий в себя как сам фрагмент /, так и его обратный комплемент /, свидетельствует о присутствии инвертированного повторения.
Другой признак повторных областей — необычно высокая степень покрытия (см. рис. 4.13). Все фрагменты из всех копий данного повторения размещаются точно друг над другом, приводя к увеличению покрытия до величины, равной произведению приближённого среднего значения и числа копий повторения (если допустить приблизительно равномерное распределение фрагментов по цели).
В завершение приводим четыре правила, которые необходимо учитывать при построении путей. 1. Каждому пути соответствует комплементарный ему путь. 2. Не обязательно (а иногда просто нежелательно) включать в путь вложенные фрагменты. 3. Циклы обычно указывают на присутствие повторений. 4. Пиковые значения покрытия также могут быть вызваны повторениями.
4.4. ЭВРИСТИКИ
209
4.4.3.	ВЫРАВНИВАНИЕ И КОНСЕНСУС
В этом разделе мы кратко обсудим задачу построения компоновки с помощью пути в графе перекрытий. Если перекрытия точные, то это легко, но приближённые перекрытия требуют от нас особого внимания. Мы представляем два метода, относящихся к построению выравниваний. Первый метод помогает в построении хорошей компоновки с помощью пути, возможно содержащего ошибки. Второй призван обеспечить локальное улучшение уже построенной компоновки. Чтобы представить первый метод, мы приводим следующий пример.
Пример 4.7. Предположим, что мы имеем путь f —> д —» Л. где
/=CATAGTC g=TAACTAT h=AGACTATCC
Два оптимальных полуглобальных выравнивания между последовательностями (фрагментами) fug выглядят следующим образом:
CATAGTC-- CATAGTC-----
—ТАА-СТАТ	—ТА-АСТАТ
Мы не имеем никакой причины предпочесть одно из них другому, так как их счет одинаков. Однако, когда в компоновку входит последовательность h. становится ясно, что второе оптимальное выравнивание (где второй знак А фрагмента д сопоставлен с Т во фрагменте /), лучше:
CATAGTC------ —ТА-АСТАТ— -------------AGACTATCC CATAGACTATCC
Согласованная строка S удовлетворяет условиям ds(f, S) = 1, ds(g, S) = = 1 и ds(h, S) = 0. Если бы мы выровняли знак А со знаком G, то голосование в столбце 6 было бы неопределенным, где знаки Т, А и пробел дали бы равенство голосов за счет однократного появления каждого знака В согласованной последовательности любой другой выбор, кроме знака А в этом столбце, привел бы к худшему результату — в том смысле, что сумма ds(f, S) + ds(g, S) + ds(h, S) была бы больше, чем в первом случае. 
210
Глава 4
Чтобы избежать таких проблем, мы используем схематичную структуру, которая представляет выравнивания и проводит различие между основаниями, действительно совпадающими с некоторым другим основанием, и основаниями, которые являются «свободными» (то есть не нашедшими себе пару), как это имеет место у второго основания А последовательности д в вышеупомянутом примере. Эту идею мы можем осуществить следующим образом. Каждую последовательность представляем связным списком оснований. Когда некоторое выравнивание сформировано, совпадающие основания объединяются и становятся одним узлом в общей структуре. Если мы не уверены в совпадении некоторого основания, то мы можем оставить его свободным, как мы сделали на рис. 4.24 для последовательностей fug в примере 4.7. Тогда по мере добавления новых последовательностей некоторые из свободных оснований будут объединяться согласно подходящим выравниваниям. Структура может быть представлена в виде ациклического графа, и его обход в топологическом порядке даст компоновку. Применяя эту методику к примеру 4.7, мы получаем оптимальную компоновку. При добавлении последовательности h будет добавлена стрелка от узла G к узлу А, расположенному сразу под ним, и также добавлены дополни(ельные основания, принадлежашие последовательности h.
Рис. 4.24. Связная сгрукгура для приближённых перекрытии
ACT-GG
ACTTGG
AC-TGG
ACT-GG
AC-TGG
ACTTGG
ACT-GG
ACTTGG
ACT-GG
ACT-GG
ACT-GG
ACT-GG
Рис. 4.25. Дне компоновки для одинаковых миожссзв последовательное гей. Правая компоновка лучше, но вследствие неопределенности попарных выравниваний программа сборки может произвести левую
РЕЗЮМЕ
211
Второй метод применяют для улучшения уже построенной компоновки. Одну из типичных задач, встречающихся на практике, рассмотрим на следующем примере.
Пример 4.8. На рис. 4.25 показаны две компоновки для одного и того же множества последовательностей. В левой компоновке согласованная последовательность содержит два последовательных знака Т в силу голосе вания путем простого большинства, но четыре из пяти последовательностей содержат всего один знак Т. Правая компоновка лучше, поскольку ее консенсус находится в согласии с большинством последовательностей. 
Один из методов решения таких задач заключается в выполнении множественного выравнивания на локальном уровне. Мы выбираем короткий блок последовательных столбцов, который нуждается в исправлении извлекаем из каждого фрагмента его часть, содержащуюся в этих столбцах, и выравниваем эти блоки. При умеренных значениях локального покрытия и длины блоков алгоритм множественного выравнивания, несмотря на свою экспоненциальную сложность, будет затрачивать разумное количество времени. Схема счетов парных сумм кажется здесь адекватной. Если принять p(ci, b) = 1 при а b,p(a.b) = 0 при а Ь,р(а, —) = — 1 ир( —) = 0, то правая компоновка в примере 4.8 максимизирует счет парных сумм.
РЕЗЮМЕ
В этой главе мы рассмотрели задачу сборки фрагментов, решаемую при крупномасштабном секвенировании молекул ДНК. Как правило, эта задача состоит из сборки в правильном порядке и ориентации множества фрагментов, получаемых из неизвестной длинной последовательности ДНК.
Мы начали с обзора биологических основ этой задачи и биологических же факторов, влияющих на ее вход. Затем мы представили варианты математических моделей, формально описывающих эту задачу, было показано, что предложенные модели не способны учитывать все необходимые факторы В частности, трудно обрабатывать фрагменты с повторными областями и учитывать информацию о размере целевой последовательности. Кроме того, все модели основаны на допущении о том, что множество фрагментов свободно от химер и загрязнения генетическим материалом вектора. Также были представлены алгоритмы, построенные на этих моделях.
Сборка фрагментов предполагает построение множественного выравнивания особого вида, называемого компоновкой, в которой мы постоянно должны беспокоиться о правильной ориентации, полном покрытии и на
212
Глава 4
лежком сцеплении фрагментов, но зато при вычислении счета этого выравнивания нам не приходиться штрафовать крайние пробелы.
Из-за трудностей, связанных с поиском точной формулировки задачи сборки фрагментов, на практике часто используют эвристические методы. Задачу обычно разбивают на три стадии: обнаружение перекрытий между фрагментами, построение компоновки и вычисления консенсуса. Программы, основанные на этом подходе, хорошо работают в практических приложениях этой задачи, если последовательности нс содержат повторений Мы представили крат кий обзор таких эвристик.
Новые методы например секвенирования посредством гибридизации могут радикально изменить способ, посредством которого осуществляется крупномасштабное секвенирование молекул ДНК. Если это произойдет, то ученые будут озадачены поиском новых алгоритмов.
УПРАЖНЕНИЯ
1 Предположим, что мы отобрали фрагменты
/1 :ATCCGTTGAAGCCGCGGGC
/2 :TTAACTCGAGG
/з :TTAAGTACTGCCCG
f4 :ATCTGTGTCGGG
/5 :CGACTCCCGACACA
/б:CACAGATCCGTTGAAGCCGCGGG
/7 :CTCGAGTTAAGTA
/8 = CGCGGGCAGTACTT
и знаем, что полная длина целевой молекулы приблизительно равна 55 п. н. Осуществите сборку этих фрагментов и получите согласованную последо-ватетьность. Будьте готовы к возможным ошибкам. Вам, вероятно, придется использовать также обратные комплементы некоторых фрагментов
2.	Каково минимальное, максимальное и среднее покрытие компоновки на странице 106?
3.	Каково наименьшее значение е, при котором ответ на рис. 4.2 является верным согласно модели восстановление?
4.	Повторите упражнение 3, на сей раз для компоновок на рис. 4.3 и 4.4.
5	На основании рис. 4 8 предположите, что существует фрагмент, состоящий из конца области В, копии X и начала области D. Как этот фрагмент повлиял бы на общую сборку?
УПРАЖНЕНИЯ
213
6.	Постройте граф перекрытий для следующего множества фрагментов: Т - {AAA, ТТА, АТА}. Определите кратчайшую общую надстроку этого множества.
7.	Найдите последовательности, которые дают начало следующему графу перекрытий (показаны только ребра с положительными весами). Численные значения весов, которые вы находите, не важны, поскольку известно, что они строго положительны.
8.	Опишите алгоритм поиска наибольшего точного перекрытия между двумя строками длиной т и п; время счета этого алгоритма должно быть равно О{т + п).
★ 9. Изобретите способ поиска приближённых повторений в последовательности ДНК.
10.	Приведите пример последовательности ДНК, которая не может быть однозначно восстановлена из множества собственных 8-меров.
11.	Покажите, что формулировка задачи поиска КОН неприменима для примеров в разделе 4.1. Какова кратчайшая общая надстрока в каждом случае?
12.	Пусть = {АТС, TCG, AACG}. Постройте оптимальную компоновку для этого множества согласно модели восстановление при г = 0.1 и е = 0,25. Убедитесь, что были рассмотрены также и обратные комплементы.
13.	Пусть = {ТСССТАСТТ, AATCCGGTT, GACATCGGT}. С помощью модели мультиконтиг найдите для множества Т оптимальное множество контигов при е = 0,3 и t = 5.
14.	Приведите пример такого множества что кратчайшая надстрока не соответствует пути в графе перекрытий OQ^T')-
15.	Для каждого т > U найдите такое не содержащее подстрок множество чтобы жадный алгоритм возвращал надстроку по крайней мере на т знаков длиннее возможно кратчайшей для Ут.
214
Глава 4
16.	Пусть Л, В, С, D, E,X,Y и Z — блоки в целевой последовательности ДНК. Предположите, что размер этих блоков превышает длину любого фрагмента, который может быть отобран из целевой молекулы. Заполните пропуски в изображенной ниже последовательности буквами А', I' или Z так, чтобы эта последовательность стала существенно неопределенной для сборки.
цель =4 А В ... С Y D ... Е Z
17.	Как бы вы использовали BLAST или другую программу поиска в базах данных, чтобы проверить фрагменты на загрязнение вектором?
18.	Постройте алгоритм с полиномиальным временем счета для решения задачи поиска КОН согласно модели ВОССТА1ЮИ.П Н11Е.
★ 19. Предположим, что некоторая последовательность имеет перекрывающееся повторение S. Покажите, что для некоторых непустых блоков А' и 1 и некоторого к 2 повторение S имеет форму либо А А А, либо X{YX)k.
о 20. Постройте алгоритм, который получает на вход множество последовательностей ДНК и строит общую надстроку длиной нс более чем вдвое превышающей минимально возможную.
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
Задачу поиска КОН исследовали многие специалисты. Тёрнер [187] описал несколько алгоритмов ее решения, включая жадный метод, и представил гарантию точности вычисления суммы перекрытий. Ли [126] дал первую гарантию точности вычисления фактической длины надстроки с верхним пределом O(nlogn), где п — оптимальная длина. Затем Блюм, Цзян, Ли, Тромп и Яинакакис [24] улучшили эту гарантию до Зм и показали, что жадный алгоритм дает надстроки длиной до 4п. Это вызвало целую серию статей, в которых авторы описывали все более и более изощренные методы и, соответственно, все лучшие и лучшие отношения. Работая в этом же направлении, Тен и Яо [185] доказали отношение 2 + 8/9; Чумай, Га-сенсц, Петров и Риттер [41] доказали отношение 2 + 5/6; Косараху, Парк и Штейн [118] доказали отношение 2 + 50/63; и наконец, Армен и Штейн доказали отношения 2 + 3/4 [15] и 2 + 2/3 [16]. Большая часть этих алгоритмов затрачивают па вычисления время O(|S| + п3), где |S| — длина падстроки, ап — число фрагментов (см., например, статью Гасфилда [84]). Используя метод из работы Гасфилда, Ландау и Шибера [86], с помощью суффиксных деревьев можно построить граф перекрытий OG(X) за время О(|| ,А|| +п2).
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
215
Модель восстановление была представлена в статье Пслтолы, Зёдср-лунда, Гарио и Укконена [157]. Диссертационная работа Ксцециоглу [114] и статья Ксцециоглу и Майерса [115], написанная на основании этой диссертации, в основном посвящены этой модели. Этими авторами была разработана также формальная модель МУЛЬТИКОНТИГ. Майерс [144] предложил метод, основанный на распределении конечных точек фрагментов в компоновке, в качестве перспективной формальной модели сборки фрагментов, особенно хорошей в случае присутствия повторений. Майерс также предложил алгоритм, основанный на графе специального вида, отличного от представленных в этой книге. Рис. 4.12 основан на примере из этой статьи.
Несколько групп ученых успешно применяли прикладные программы построения сборки фрагментов ДНК. Ранние системы описаны в [71; 138]. Изыскательские работы по воплощению обоснованного математического формализма в прикладных методах были выполнены Пелтолой, Зёдерлун-дом и Укконеном [158]. Хуан [98] описал хорошую программу сборки фрагментов, позже улучшенную до возможностей обработки повторений, обнаружения химерных фрагментов и автоматического редактирования полученной компоновки [99]. Кецсциоглу и Майерс [115] разделили полный процесс на три стадии, обеспечив точные формальные модели, а также точные и приближенные алгоритмы для каждой стадии. Штадсн [178; 46], начиная с конца 1970-х годов, поддерживает систему обработки последовательностей с неплохими возможностями сборки фрагментов. Очень популярная во многих лабораториях компьютерная система GCG [47] также обеспечивает возможность сборки. Цели проектирования систем сборки фрагментов были в общих чертах перечислены Майерсом [143]. Книга под ред. Адамса, Филдса и Вентсра [1] — приводит хороший общий обзор по автоматизированной обработке ДНК. Подробное описание метода, рассмотренного нами в разделе 4.4.3, можно найти в статье Мсйданиса и Сетубала [137].
Ингл и Бурке [53; 54] описали ряд программных средств для генерации искусственных примеров задачи сборки фрагментов. Сото, Куп и Худ [171] представили данные, полученные в настоящем проекте секвенирования, в качестве испытательного примера для компьютеризированных методов сборки. Уравнения (4.1) и (4.2), формально описывающие метод дробовика, взяты из книги Уотермена [199], раздел 7.1.5. Предшествующая работа на эту тему была проведена Пендером и Уотерменом [120].
Уотсрмсн [199], раздел 7.3, представляет алгоритм СПГ и дает также ссылку на более подробную статью.
Сборка фрагментов была одной из тем прикладного симпозиума (при поддержке «Национального научного фонда США») в «Центре дискретной математики и теоретической информатики» (DIMACS) в 1995 году. Был
216	Глава 4
опубликован сборник избранных тезисов этого симпозиума. Дополнительная информация по симпозиуму находится по адресу
http://dimacs.rutgers.edu/SpecialYears/
19 94_1995/chailenge.html
Глава 5
СОСТАВЛЕНИЕ ФИЗИЧЕСКИХ КАРТ ДНК
Из первой главы мы узнали, что хромосома человека это молекула ДНК, состоящая приблизительно из 108 пар нуклеотидов. Рассмотренные нами методы позволяют секвенировать фрагменты ДНК длиной до десятков тысяч пар нуклеотидов. Это означает, что всякий раз, когда мы секвенируем такой фрагмент, мы расшифровываем чрезвычайно маленькую часть хромосомы. Это как если бы мы рассматривали Землю с Луны посредством телескопа, позволяющего нам видеть особенности рельефа, которые отстоят дру1 от друга на пару дюймов (основание ДНК), но при этом обладающего полем зрения не более мили (фрагмент ДНК длиной 15000 п.н., см. рис. 1.10) Такой телескоп не был бы хорошим инструментом для изучения крупномасштабных структур например горных цепей, континентов и островов. Чтобы обозреть такие структуры целиком, нам понадобился бы другой прибор. Аналогично, молекулярные биологи используют специальные методы секвенирования молекул ДНК, размеры которых сопоставимы с длиной хромосомы. Эти методы позволяют им составлять карты целых хромосом или хотя бы их существенных долей. В этой главе мы исследуем вычислительные методы, которые могут помочь биологам в составлении физических карт ДНК, то есть в картировании1.
5.1.	БИОЛОГИЧЕСКИЕ ОСНОВЫ КАРТИРОВАНИЯ
Физическая карта молекулы ДНК сообщает нам местоположение некоторых маркеров в молекуле. Обычно маркеры представляют собой маленькие, но точно известные последовательности. Такая карта помогает молекулярным биологам глубже исследовать геном. Например, предположим,
1 Иногда в специальной литературе этот процесс называют картированием, хотя составление всеразличных карт и всевозможных картограмм это, конечно же, картографирование. Прим. перев.
218
Глава 5
что некоторая область ДНК была полностью расшифрована и нам известна последовательность ее оснований S. Тогда, если мы знаем к какой именно хромосоме относится область S и если мы имеем физическую карту этой хромосомы то мы могли бы попытаться найти в последовательности S один из маркеров карты. Если нам это удается, то это значит, что мы определили местонахождение области S в хромосоме. См. иллюстрацию на рис. 5.1.
Рис 5.1. Эскиз фтичсской карты. На этом рисунке очень длинная молекула ДНК (например хромосомы) изображена в виде сплошной кривой. Маркеры вдоль молекулы отмечены знаком алмаза «о». Каждый маркер уникален и обозначен соответствующей ему буквой Отрезок S представляет расшифрованный фрагмент ДНК. содержащий, например, некоторый ген С помощью физической карты может быть определено местоположение области S в хромосоме
За вопросом о назначении карт следует естественный вопрос о методах их составления. Первый шаг состоит в получении нескольких копий молекулы ДНК, которую мы хотим картировать, то есть целевой ДНК. Затем каждая копия должна быть разбита на несколько фрагментов с помощью ферментов рестрикции. (Фрагментация ДНК рестриктазами описана в разделе 1.5.2.) Картирование осуществляют путем тщательного сравнения полученных фрагментов между собой — в частности, посредством оценки их перекрытия. Следует подчеркнуть, что каждый такой фрагмент все еще слишком длинная для ссквенированния часть ДНК, так что мы не можем определить перекрытие путем секвенирования и сравнения фрагментов, как это делают при сборке фрагментов (глава 4). Вместо этого информацию о перекрытии мы получаем, анализируя специфические отличительные признаки, или индикаторы фрагментов Индикатор некоторого фрагмента должен описывать часть информации, содержащейся в этом фрагменте, некоторым уникальным способом, подобно тому, как отпечатки пальцев служат для идентификации личности. Два популярных способа получения индикаторов — анализ участков рестрикции и гибризизация.
5.1 БИОЛОГИЧЕСКИЕ ОСНОВЫ КАРТИРОВАНИЯ
219
При составлении рестрикционных карт наша задача состоит в определении местонахождения участков рестрикции данного фермента на целевой ДНК. Таким образом, участки рестрикции являются упомянутыми выше маркерами. Метод, используемый для определения местоположения участков рестрикции, основан на измерении длин фрагментов; в данном случае индикатором является длина фрагмента. При составлении карт гибридизации мы проверяем, связываются ли определенные маленькие последовательности с фрагментами; в результате индикатором некоторого фрагмента становится подмножество таких маленьких последовательностей, которые связываются с ним Кроме того, индикатор фрагмента может быть получен как его гибридизацией, так и измерением его длины, но в этой главе для ясности описания мы рассматриваем каждый способ отдельно. В любом случае, сравнивая индикаторы, мы стараемся определить, перекрываются ли фрагменты, и таким образом определить их относительный порядок (который был потерян в ходе фрагментации молекулы).
Так же, как и в других задачах молекулярной биологии, возможный недостаток информации и присутствие многочисленных экспериментальных ошибок значительно усложняет задачу составления физических карг В частности, может оказаться невозможно получить одну непрерывную фи зическую карту для множества фрагментов. Например, это может случиться потому, что процесс фрагментации не произвел фрагменты, покрывающие некоторые области целевой ДНК. В подобных случаях области физической карты называют контигами (то же самое название используют при сборке фрагментов). Эта особенность свойственна всем процессам составления физических карт. Теперь мы подробнее обсудим каждый из упомянутых выше методов.
5.1.1.	СОСТАВЛЕНИЕ РЕСТРИКЦИОННЫХ КАР!
В этом разделе мы кратко представляем два возможных метода картирования, основанных на измерении длин фрат ментов между участками рестрикции^.
Один из способов получения фрагментов самых разных размеров состоит в том, чтобы для расщепления целевой ДНК использовать не одну а две рсстриктазы Мы объясним этот способ на следующем примере. Пред положим, что мы имеем две рсстриктазы; 4 и В, и каждая специфична к строго определенной последовательности (участку рестрикции). Обрабатывая одну копию целевой ДНК рестриктазой А, мы получаем фрагменты
2Этот раздел представляет интересную математическую задачу, однако на практике теперь уже не используют подобную технику.  Прим. ред.
220
Глава 5
длиной 3, 6, 8 и 10 единиц (например, т. п. н.). Обрабатывая другую копию целевой ДНК рестриктазой В, мы получаем фрагменты длиной 4, 5, 7 и 11 единиц. И наконец, применяя обе рестриктазы к третьей копии целевой ДНК, мы получаем фрагменты длиной 1, 2, 3, 3, 5, 6 и 7 единиц. Теперь необходимо расположить эти фрагменты таким образом, чтобы полученный в третьем случае порядок соответствовал экспериментальным результатам, определенным при действии каждой из рестриктаз в отдельности. Это так называемая задача с двойным перевариванием, потому что процесс расщепления молекулы ферментом называют перевариванием. Решение данного примера задачи показано на рис. 5.2.
1 3 1		8	1 6		1 ю	1	
1 4 1	5	1	11		—7	1
1 3 |1|	5	1 2 |	6	1 3	7	1
Рис. 5.2. Решение задачи с двойным перевариванием
Частичное переваривание3 — вариант способа двойного переваривания. Здесь мы обрабатываем целевую ДНК только одной рестриктазой, но проводим реакции с набором копий ДНК, изменяя время, в течение которого фермент воздействует на каждую копию. Участвуя в реакции более или менее продолжительное время, фермент распознает больше или меньше участков рестрикции, и мы таким образом получаем фрагменты разной длины. В идеале такие реакции должны обеспечить нас по крайней мере одним фрагментом для каждой пары участков рестрикции. Затем, анализируя длины полученных фрагментов, мы пытаемся с очень высокой точностью определить местоположение участков рестрикции. Например, на рис. 5.2 фермент Л распознал три участка рестрикции. Реакция частичного переваривания этим ферментом дала бы фрагменты следующих размеров: 3, 11, 17 и 27 (фрагменты между крайней левой точкой и всеми остальными участками); 8, 14 и 24 (фрагменты между первым участком рестрикции и всеми, стоящими справа от него); 6 и 16 (фрагменты между вторым участком рестрикции и всеми справа от него); и 10 (последний фрагмент).
В ходе реакций переваривания могут появляться ошибки нескольких видов. Во-первых, погрешность измерения длины. Длину фрагментов определяют с помощью электрофореза в агарозном геле (см. раздел 1.5.2), где допустима погрешность измерений до 5 %. Во-вторых, если фрагменты
3На самом деле это совершенно разные техники и характер данных. — Прим. ред.
5 1 БИОЛОГИИ ЕСКИ Е ОСНОВЫ КАРТИ РОВАН ИЯ
221
слишком малы, то измерение их длин становится вообще невозможным. В-трстьих, некоторые фрагменты могут быть потеряны в процессе переваривания, что приводит к появлению зазоров в покрытии молекулы ДНК Как можно ожидать, все эти ошибки вносят осложнения в процесс картирования. Позже мы увидим, что лаже в отсутствие ошибок соответствующие вычислительные задачи оказываются очень трудными.
5.1.2.	СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ
Вспомним, что при составлении карт гибридизации информация о перекрытии между фрагментами основана на данных о составе каждого фрагмента. Прежде чем объяснить, что это за данные, следует отмстить, что в данном контексте фрагменты называют клонами и получают методом так называемого клонирования (см. раздел 1.5.2). После того как все копии целевой ДНК были фрагментированы (различными способами) и после того как каждый полученный фрагмент был клонирован, мы получаем набор из многих тысяч клонов (клонотеку), где каждый клон обычно имеет длину несколько тысяч пар нуклеотидов4.
Информацию о клоне получают в ходе реакций гибридизации. С помощью этих реакций мы пытаемся определить, связывается ли (или гибридизируется) маленькая последовательность (зонд) с клоном. Если связывание происходит, то это означает, что клон содержит в себе последовательность, комплементарную последовательности зонда. Мы можем провести эту реакцию с одним и тем же клоном, используя несколько разных зондов, и тогда набор зондов, которые были успешно гибридизированы клоном, будет индикатором этого клона. При этом весьма вероятно, что два клона, которые гибридизируют некоторую общую часть набора соответствующих им индикаторов, получены из перекрывающихся областей целевой ДНК. Например, если мы знаем, что клон А связывает зонды х, у и z, а клон В связывает зонды х, w и z, то мы имеем серьезное основание полагать, что клоны А и В перекрываются друг с другом, например, как показано на рис. 5.3 (если при этом нет повторений', подробнее об этом будет сказано позже). Здесь следует подчеркнуть, что, располагая подобной информацией, мы, как правило, не сможем определить местоположение зондов в целевой ДНК, а
4Есть несколько масштабов:
1. Клонирование в дрожжевых искусственных хромосомах (ДИХ) и бактериальных искусственных хромосомах (БИХ) сотни тысяч или миллионы п.н.
2. Космиды и фазмиды — десятки тысяч п. н.
3 Плазмиды и фаги от сотен до тысяч пн— Прим, ред
222
Глава 5
вычислим только их относительный порядок. Чуть позже мы возвратимся к этому важному пункту.
Рис. 5.3. Пример ни о, как четыре зонда могут бьпь гибридизированы двумя клонами
Различные ошибки могут появиться также при протекании реакций гибридизации. Во-первых, зонд может нс связаться с клоном там, где он должен; это создает ложное несовпадение. Во-вторых, зонд может связаться с участком, где он не должен связываться; это создает ложное совпадение. Иногда в опытах присутствует субъективная погрешность исследователя неправильное чтение результатов эксперимента, — также приводящая к появлению ложных результатов. Ошибки могут появиться даже до начала гибридизации. В ходе процесса клонирования две отдельные части целевой ДНК могут соединиться и затем реплицироваться, как будто первоначально они были одним клоном. Такие клоны называют химерами, и из-за их присутствия может быть сделан ложный вывод об относительном порядке расположения зондов. Химеры возникают часто и, таким образом, являются одной из самых серьезных проблем в составлении карт гибридизации. По некоторым оценкам, во многих клонотеках от 40 % до 60 % всех клонов химеры. Другой тип ошибок в процессе клонирования удаление, когда внутренняя часть клона теряется, и таким образом снова объединяются два фрагмента, которые не были смежны в целевой ДНК.
И еще две ситуации могут причинить вред в составлении карт гибридизации. Первая возникает, когда зонды не строго специфичны и, следовательно, зонд может быть связан несколькими участками целевой ДНК; такие участки называют повторениями. Методика, называемая меченый участок последовательности (МУП), позволяет избежать этой проблемы за счет производства зондов, которые гибридизируются строго определенными участками целевой ДНК. Вторая проблематичная ситуация — простой недостаток данных, поскольку иногда невозможно осуществить все необ
5.2, МОДЕЛИ
223
ходимые реакции гибридизации. Для решения этой проблемы были разработаны методы с использованием пулов.
5.2.	МОДЕЛИ
Ознакомившись с различными стратегиями картирования, рассмотрим некоторые из соответствующих им математических моделей. Наша цель состоит в том. чтобы оценить вычислительную сложность задач картирования, основанных на этих моделях Как мы увидим, задача картирования оказывается алгоритмически грудной, но ее описание затрагивает также несколько интересных моментов построения алгоритмов, которые мы обсудим в конце этого раздела.
5.2.1.	МОДЕЛИ УЧАСТКА РЕСТРИКЦИИ
Сначала мы рассмотрим модель задачи с двойным перевариванием, которую мы обозначим аббревиатурой ЗДП. В этой модели мы полагаем, что каждый фрагмент будет представлен собственной длиной. Мы сделаем допущение об идеальном процессе переваривания, что означает, что измерения длин фрагментов безошибочны и ни один из фрагментов не может быть потерян Это очевидно нереально, но, как мы увидим вскоре, даже с этими чрезмерными упрощениями конечная вычислительная задача оказывается очень трудной.
Представив результаты эксперимента с помощью математической модели, мы получаем множество длин (положительные целые числа) для каждой реакции. Переваривание целевой ДНК первым ферментом даст нам множество А — {aj.a2,... .ап}. Некоторые из этих фрагментов могут иметь одинаковую длину, что означает, что это множество — фактически мультимножество Точно так же после применения второго фермента мы получаем множество В = {bi .Ъ?,  .  Ь7П}. Наконец, после совместного переваривания ферментами А и В мы получаем мультимножество О — = {oi,o2,...,ok}.
Какую именно информацию мы хотим извлечь из этих мультимножеств? А хотим мы найти перестановку тгд элементов множества А и перестановку тгв элементов множества В, с тем чтобы можно было достичь следующих результатов. Мы отмечаем на линии значения длин элементов множества А согласно порядку, определяемому перестановкой тгд. Точно так же мы отмечаем длины элементов множества В согласно перестановке тгв, но мы делаем это поверх предыдущей схемы. Благодаря перекрытию элементов возможно получить несколько новых подынтервалов. Теперь мы,
224
Глава 5
вероятно, можем установить взаимно однозначное соответствие между каждым полученным подынтервалом и каждым элементом множества О Если это действительно может быть сделано, то мы называем перестановки тгд и тгв решениями ЗДП.
Докажем, что поиск этих перестановок — НП-полная задача. Во-первых, не трудно увидеть, что, зная решение ЗДП, легко проверить, является ли оно истинным. Все, что для этого необходимо сделать, - сортировать множество О и нанесенные на карту подынтервалы и определить, получаем ли мы тождественные результаты Чтобы завершить доказательство, мы обращаем внимание, что, как было отмечено, ЗДП представляет собой простое обобщение задачи о разбиении множества — широко известной НП-полной задачи.
В задаче о разбиении множества мы имеем заданное множество целых чисел X = {а:], х?,..., X/} и хотим знать, можем ли мы разбить множество V на множества А'[ и А'г так, чтобы сумма всех элементов множества Xi была равна сумме элементов множества Х%. Это соответствует задаче с двойным перевариванием, где А = X, В = {А'/2, А/2} и О = А, при А’ =	ДРУГИМИ словами, задача о разбиении множества рав-
носильна ЗДП, в которой один из двух ферментов производит только два фрагмента, причем оба одинаковой длины.
Учитывая, что мы всегда ищем истинное решение ЗДП, с этой задачей связан еще один вопрос, который значительно усложняет этот поиск. Число решений можег быть экспоненциальным. Чтобы показать это, рассмотрим случай, где между двумя участками рестрикции фермента А находятся три участка 61, 62 и 63, расщепляемых только ферментом В. В этом случае мы нс сможем определить порядок фрагментов [61,62] и [62,63]. Как правило, на к участков рестрикции одного фермента мы имеем (к — 1)! решений. Фактически, ситуация еще хуже, чем эта, из-за так называемых совпадении. Совпадение возникает, когда участок рестрикции фермента А расположен очень близко к участку рестрикции фермента В (они не могут совпасть полностью; почему?). Когда мы имеем последовательные совпадения, то соответствующие фрагменты, определенные реакциями переваривания ферментами А и В, окажутся одинаковой длины (из-за погрешности измерений). Поэтому ряд из п последовательных совпадений также даст п! возможных решений. Продолжая подобное рассуждение, можно показать, что число решений возрастает экспоненциально по мере увеличения длины целевой ДНК (см библиографические примечания).
Таким образом, мы видим, что даже очень простая модель двойного переваривания ведет к серьезным вычислительным проблемам. НП-полнота частичного переваривания не была доказана, и, кроме того, эта задача кажет-
5.2. МОДЕЛИ
225
ся легче разрешимой по следующей причине. При картировании способом частичного переваривания определяется п участков рестрикции (включая крайние точки) и в результате реакции мы получаем по крайней мере один фрагмент для каждой пары участков, то есть Q) фрагментов. Будучи измерены, эти фрагменты дают мультимножество расстояний. Задача состоит в определении такого местоположения участков на линии, чтобы множество расстояний между их позициями было эквивалентно множеству длин, полученных реакциями переваривания. Задачу частичного переваривания можно считать более легкой, так как было показано, что максимальное число ее решений сравнительно мало, и, следовательно, с комбинаторной точки зрения эта задача является хорошей альтернативой задачи с двойным перевариванием.
5.2.2.	МОДЕЛЬ В ВИДЕ ИНТЕРВАЛЬНОГО ГРАФА
Мы можем бросить первый взгляд на вычислительную сложность картирования посредством гибридизации (или, в более общем виде, картирования индикаторов), используя простые модели, построенные на графах интервалов, или интервальных графах (см. раздел 2.2). Эти модели далеко отбрасывают многие трудности процесса картирования; и все же, при всей своей простоте, опи также дают начало НП-трудным задачам, как и в случае рассмотренной выше задачи с двойным перевариванием.
В этих моделях мы строим графы, вершины которых представляют клоны, а ребра отражают информацию о перекрытии соответствующих клонов. Если бы мы располагали полной и правильной информацией о перекрытии клонов, то конечный граф был бы графом интервалов; это ключевое свойство таких моделей.
а
b
с d	е
Рис. 5.4. Пример диаграммы перекрьпия клонов
В первой модели мы создаем два графа. Первый граф Gr = (V,Er). Если ребро (i,j) G Ег, то это означает, что мы точно знаем, что клоны г и j перекрываются. Второй граф Gt = (V, Et), где множество Et отражает известную плюс неизвестную информацию о перекрытии клонов (таким
226
Глава 5
образом, Ег С Et). Граф С< не обязательно полный, потому что мы можем знать наверняка, что некоторые пары клонов не перекрываются, и, следовательно, соответствующие им ребра изъяты из множества Et. Тогда задача, которую мы должны решить, может быть сформулирована следующим образом: Существует ли такой интервальный граф Gs (Г'-£?8), что Ег С Еа С Et‘! Заметим, что графы Gr и Gt не всегда являются интервальными (тогда решение было бы тривиально). См. пример на рис. 5.4, 5.5 и 5.6.
и d
Рис. 5.5. Интервальный граф, соответствующий рис. 5.4
-О а
G,
Рис. 5.6. Возможные графы Gr и Gt для примера на рис. 5.4. Ни один из них не является интервальным
Во второй модели мы не допускаем, что известная нам информация о перекрытии фрагментов надежна. Тем не менее, на основании этой информации мы строим граф G — (V, Е). Тогда в решении нашей задачи мы ищем ответ на вопрос, существует ли такой интервальный граф G' = = (V. Е'), что Е' С Е и l-E'l - максимально. Требование Е' С Е означает, что для решения этой задачи нам, возможно, придется отбросить некоторые ребра графа С, которые могут быть интерпретированы как ложные совпадения. Тогда искомое решение — это такая интерпретация графа, в которой присутствует минимальное число ложных совпадений.
5.2. МОДЕЛИ
227
В третьей модели мы используем информацию о перекрытии наряду с информацией об источнике каждого клона следующим образом. Поскольку клоны отбирают из различных копий одной и той же молекулы, разумная идея — пометить каждый клон для идентификации той копии молекулы, из которой он был взят. Допустим, что мы имеем к копий целевой молекулы ДНК и что для расщепления каждой копии был использован отдельный фермент рестрикции. Тогда, на основании известной информации о перекрытии между клонами мы строим граф G = (V, Е). Поскольку клоны помечены, мы можем представить, что соответствующие им вершины графа раскрашены к красками (одна краска для каждой копии молекулы). Построенный граф не будет иметь ребер между вершинами одного цвета, потому что такие вершины соответствуют клонам, взятым из одной и той же копии молекулы, и, следовательно, которые не могут перекрываться. В таком случае мы говорим. что граф имеет правильную раскраску. Теперь мы ломаем голову над вопросом: Существует ли такой интервальный граф G' = (V, Е'), что выражение ЕСЕ1 верно и раскраска графа G правильна также и для графа G'? Другими словами, можем ли мы добавить ребра к графу G и преобразовать его в интервальный граф, не нарушив при этом его раскраску?
Только что мы описали три различные модели картирования посредством гибридизации, причем все из них относительно просты. Однако оказывается, что все три формальные задачи НП-трудныс. Мы нс будем давать доказательств: их можно найти в ссылках, приведенных в конце главы. Опишем модели, разработанные для специальных случаев.
5.2.3.	СВОЙСТВО ПОСЛЕДОВАТЕЛЬНЫХ ЕДИНИЦ
Модели, представленные в предыдущем разделе, предназначены для формального описания картирования посредством гибридизации, но в принципе они могут быть использованы в любой ситуации, где для каждого фрагмента мы можем получить уникальный индикатор какого-либо вида. Здесь мы представим модель, использующую в качестве индикатора клона набор связывающихся с ним зондов. В этой модели мы делаем следующие допущения:
•	Обратный комплемент последовательности каждого зонда появляется в целевой ДНК только один раз («уникальность зондов»).
•	Эксперименты свободны от ошибок.
•	Были проведены все необходимые реакции гибридизации типа «клон х зонд».
228
ГЛАВА 5
Читатель может испугаться, что здесь его подстерегает очередная НП-трудная задача. К счастью, на сей раз дело обстоит не так. Как мы увидим, конечная задача разрешима за полиномиальное время, хотя некоторые из ее обобщений действительно НП-трудные.
Допуская, что в экспериментах участвует п клонов и тп зондов, мы можем построить бинарную матрицу М размером п х т, где элемент А/ц содержит информацию о том, гибридизируется ли зонд j клоном i (MtJ = = 1) или нет (А/у = 0). Составление физической карты на основании этой матрицы представляет собой задачу поиска такой перестановки столбцов (зондов), чтобы все 1-цы в каждой строке (клоне) были последовательными. Говорят, что строки бинарной матрицы, для которой такая перестановка может быть найдена, обладают свойством последовательных единиц (СПЕ). Далее мы мы будем использовать термины перестановка СПЕ и задача СПЕ, значение которых очевидно.
Проверка матрицы на СПЕ и последующий поиск правильной перестановки известная задача, для решения которой существуют полиномиальные алгоритмы. Один из таких алгоритмов мы представляем в разделе 5.3. Ясно, что такая модель слишком проста. Если в экспериментах присутствуют ошибки, то в некоторых строках даже правильной перестановки, возможно, не все единицы будут стоять в последовательных позициях. Но зачем тогда об этом беспокоиться? Проверка матрицы на СПЕ необходима, так как анализ свободного от ошибок случая помогает нам получить информацию, полезную при построении алгоритмов обработки данных с ошибками. В частности, мы можем использовать следующее важное допущение. Во многих лабораториях исследователи стараются минимизировать число ошибок в экспериментах. Если бы эксперименты были совершенны, то конечная матрица гибридизации безусловно обладала бы СПЕ. Это означает, что любой алгоритм поиска истинной или приближённой перестановки столбцов должен дать решения, которые минимизируют число ситуаций, объяснимых погрешностью эксперимента. Следовательно, такие алгоритмы должны быть способны найти перестановку СПЕ, если таковая возможна.
Обратите внимание, что даже если перестановка СПЕ существует, то мы не можем утверждать, что именно она - правильная перестановка. С одной стороны, для одной матрицы входов может существовать несколько таких перестановок. Возможно ли определить, которая из них является правильной? В большинстве случаев нет. Мы можем лишь утверждать, что все перестановки, в которых все 1-цы последовательны, представляют собой возможные варианты правильной перестановки. По этой причине алгоритм для задачи СПЕ должен давать нам не одно, а все возможные решения. Кроме того, учитывая, что ошибки действительно существуют, может
5.2. МОДЕЛИ
229
случиться и так, что лаже если будет найдена только одна перестановка, то перестановка СПЕ не будет искомой правильной перестановкой.
С другой стороны, возникает вопрос: Каким обазом мы можем усовершенствовать модель, с тем чтобы она могла учитывать ошибки? Для этого есть много возможностей. Вместо того, чтобы требовать присутствие строго одного блока последовательных 1-ц в каждой строке, мы можем стараться найти такую перестановку столбцов, чтобы в каждой строке было самое большее к блоков последовательных 1 -ц, где значение к может быть 2 или 3. Или же мы можем пытаться минимизировать общее количество блоков последовательных 1-ц в матрице. В таком случае мы можем ожидать, что большинство строк будет иметь только один блок последовательных 1-ц, тогда как случайная строка могла бы иметь четыре или пять. К сожалению, как мы уже намекнули выше, эти обобщения приводят к НП-трулным задачам (см. упражнение 16). Даже если при полном отсутствии ошибок мы ослабим допущение об обязательной уникальности зондов, задача опять-таки становится НП-трудной (см. библиографические примечания).
5.2,4.	СВОЙСТВА «ИДЕАЛЬНО! О» АЛГОРИТМА КАРТИРОВАНИЯ
Перед описанием алгоритмических методов составления физических карт, мы хотели бы рассмотреть некоторые ограничения, связанные с трудностью данной задачи. Эти соображения представляют в несколько ином свете то, что мы подразумеваем под «решением» задачи с помощью алгоритма, и поэтому должны быть интересны также вне контекста составления физических карт.
Первое соображение заключается в гом, что на самом деле мы пытаемся решить реальную практическую задачу, а нс абстрактный математический формализм. В реальной задаче мы хотим определить истинный порядок клонов в целевой ДНК. В комбинаторной задаче мы пытаемся найти истинное упорядочение из конечного множества возможных
Мы будем стараться найти это истинное упорядочение посредством абстрактных моделей, которые дают начало задачам оптимизации. Сами по себе эти задачи могут быть очень трудными, вопреки тому факту, что они являются абстракциями еще более трудной задачи. Например, оптимизационные варианты всех задач, представленных в разделе 5.2 2, НП-трудные В общем случае мы не сможем найти оптимальные решения этих задач быстро; и даже в том случае, если мы действительно решим одну из них оптимально в пределах разумного времени, мы не получим никакой га
230
Глава 5
рантии того, что найденное решение соответствует истинному. Итак, мы с ужасом понимаем, чго перед нами просто безвыходная ситуация.
Однако картина не столь уж безрадостна, как кажется на первый взгляд. Во-первых, поскольку мы не имеем никакой гарантии, что любое оптимальное решение является истинным, хорошие приближённые решения могут практически полностью отвечать нашим целям. Во-вторых, мы должны помнить, что алгоритмы в молекулярной биологии часто приходится использовать многократно. Ученый получает экспериментальные данные и «скармливает» их алгоритму. Основываясь на одном или нескольких решениях, выданных алгоритмом, ученый может провести большее число экспериментов и получить больше данных, после чего запустить алгоритм снова. На каждом этапе мы можем ожидать, что будут найдены «лучшие» (или «более близкие к истинному») решения.
Эти наблюдения предлагают желательные свойства алгоритма картирования, которые мы перечисляем ниже:
•	Алгоритм должен работать лучше с большим количеством данных, если при этом частота появления ошибок остается неизменной.
•	Алгоритм должен возвращать решение вместе с дополнительной информацией, показывающей, как именно это решение было получено, и выделять «хорошие» части решения (группы клонов, для которых найденное упорядочение может быть обосновано) на фоне «нс столь хороших» частей. Это значительно облегчает дальнейшие эксперименты.
•	Если критериям оптимизации соответствует несколько вариантов решения, то должны быть выданы все из них. Если получено слишком много решений, то это значит, что критерии оптимизации слишком слабы (или входные данные содержат слишком много ошибок). Наоборот, если не было найдено ни одного решения, то, возможно, следует ослабить критерии оптими зации.
Кроме того, мы хотели бы иметь некоторую гарантию того, что истинное решение находится среди найденного алгоритмом множества приближённых (оптимальных) решений. Как правило, это невозможно. Вместо этого мы пытаемся получить несколько различных функций оптимизации и соответствующие им алгоритмы, оптимальные решения которых имеют свойства истинного решения. При этом мы надеемся, что истинное решение с высокой вероятностью будет лежать на пересечении множеств решений, найденных каждым алгоритмом. Пример подобной гарантии мы приводим в разделе 5.4.2.
Интересно отметить, что вместо того, чтобы использовать несколько алгоритмов, как было предложено, мы можем попытаться построить алго
5.3. АЛГОРИТМ ДЛЯ ЗАДАЧИ СПЕ
231
ритм, который может оптимизировать многоцелевые функции. Это очень важная специальная область исследования.
5.3.	АЛГОРИТМ ДЛЯ ЗАДАЧИ СПЕ
В этом разделе мы представляем простой алгоритм, который определяет, обладают ли СПЕ строки бинарной матрицы М размером п х т. Цель алгоритма состоит в отыскании такой перестановки столбцов матрицы, чтобы в каждой сс строке все 1-цы были последовательны. Для простоты мы допустим, что все строки различны (то есть индикаторы всех клонов уникальны) и что никакая строка нс состоит полностью из нулей (то есть каждый клон гибридизировал по крайней мере один зонд).
Объяснение принципа работы алгоритма требует, чтобы мы сначала разобрали способ, которым строки могут взаимно зависеть друг от друга. Для этого, как известно, мы должны дать очередное новое определение.
Определение 5.1. Для каждой строки i матрицы А/, пусть S, - множество столбцов к, где Mlrk — 1-
Тспсрь, на основании этого определения мы способны определить взаимосвязь строк матрицы. Рассматривая две строки i и j, можно представить три возможные ситуации:
1.	StC\Sj = 0.
2.	S, С Sj либо Sj С 8г.
3.	St О S} 0 0, и ни одно из них нс является подмножеством другого.
Ясно, что в первой из этих ситуаций мы можем обрабатывать строки отдельно, так как перестановка столбцов, соответствующих элементам множества строк 8г, нс будет затрагивать элементы множества строк Sj. В таком случае мы можем поместить строки г и j в различные компоненты и обрабатывать каждый компонент отдельно. Но как быть со строками, которые имеют непустое пересечение? (Здесь мы немного злоупотребляем понятиями и говорим о строках вместо соответствующих им множеств S.) Должны ли все они быть в одном компоненте? Рассмотрим этот случай подробнее.
Сначала объединим в один компонент все строки с непустым пересечением. Предположим, что в этом компоненте существует такая строка к, что множество Sk является либо подмножеством множества Si, либо непе-рссскающимся с Si множеством, для всех г 0 к в этом компоненте. Ясно, что во время обработки этого компонента мы можем не учитывать строку к
232
Глава 5
Рис. 5.7. Граф (?с. соответствующий матрице из табл. 5.1. Связные компоненты обозначены греческими буквами
(и любые другие с тем же свойством). Таким образом, строка k будет находиться в своем собственном компоненте, возможно, вместе с некоторыми другими строками. Объясним, что это за «некоторые другие» строки.
Таблица 5.1. Бинарная матрица
	C| C2 C3 C4 C5 C6 c7 C8 Cg
h h 1з «4 ^5 I? <8	110 110 10 1 0 11111111 0 10110101 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1
Руководствуясь только что представленными свойствами матрицы, дадим формальный способ определения принадлежности пары строк к одному компоненту. На элементах матрицы М мы строим граф Gc- Естественно, каждая вершина графа Gc соответствует строке матрицы Л/. Если S2r\Sj 0 0 и если ни одно из них не является подмножеством другого, то в графе Gc существует неориентированное ребро, соединяющее вершины г и j. Компоненты матрицы, которые мы хотим получить, будут представле
5.3. АЛГОРИТМ ДЛЯ ЗАДАЧИ СПЕ
233
ны связными компонентами графа Ge- Например, на рис. 5.7 изображен граф Ge, соответствующий матрице из таблицы 5.1.
Опишем основные шаги алгоритма: 1) разделить строки матрицы на компоненты, 2) переставить столбцы каждого компонента и 3) некоторым образом объединить компоненты. Первый шаг алгоритм выполняет согласно приведенному выше правилу, остальные два сформулируем в виде отдельных подзадач 1) найти правильную перестановку для каждого компонента и 2) объединить компоненты. Сперва произведем перестановку столбцов в компоненте.
Перестановка столбцов в компоненте
Чтобы объяснить эту часть алгоритма, мы используем в качестве примера матрицу из табл. 5.2 (допуская, что это только ссченис некоторой матрицы имеющей более грех строк).
Сначала отдельно рассмотрим строку Ц. Если бы она была единственной строкой в этом компоненте, зо все, что мы должны были бы сделать, переставить столбцы так, чтобы все 1-цы стали последовательными. Обратите внимание, чго, если в этой строке существует к 1 -ц, го мы получим к\/2 возможных перестановок. При этом мы нс учитываем инверсии в качестве отдельных решений, поскольку они дают точно такую же последовательность 1-ц. В случае строки Zi, 1-цы находятся в столбцах 2, 7 и 8. Тогда множество возможных перестановок равно 2, 7, 8, или 7, 2, 8, или же 2, 8, 7. Мы можем кодировать все эти решения, приписывая множество возможных столбцов к каждому элементу данной строки, равному 1-це (мы назовем эти множества множествами столбцов). Для компонента, состоящего только из одной строки, этим множеством столбцов является множество S, определенное выше, и мы описываем конечную конфигурацию следующим образом:
{2,7,8} {2,7,8} {2,7,8}
Zi -» ... О 1	1	1	0 ...
Теперь взглянем на следующую строку, Iz- Поскольку эта строка на ходится в том же компоненте, что и строка Zj, то очевидно, что некоторые
Таблица 5.2. Сечение бинарной матрицы
	С1	С2	сз	с4	с5	св	с?	С8
Z1	0	1	0	0	0	0	1	1
h	0	1	0	0	1	0	1	0
1з	1	0	0	1	0	0	1	1
234
Глава 5
столбцы компонента состоят из двух 1-ц, принадлежащих, соответственно, строкам /1 и I2, а некоторые — из 1-цы одной последовательности и нуля другой. Теперь мы должны расположить строку I2 относительно строки Zi так, чтобы значения столбцов были взаимно согласованными. Мы имеем возможность выбора из двух вариантов такого размещения: поместить 1-цы строки I2 слева либо справа от 1-ц строки Ц. Это означает размещение столбца 5 слева либо справа от столбцов 2 и 7. Предположим, что мы поместили столбец 5 слева. Тогда возможные решения, закодированные множествами над каждым столбцом, принимают вид:
{5} {2,7} {2,7} {8}
Z, — ... О О	1	1	10...
12 -» ... О 1	1	1	0 0...
Если бы строки I] и I2 были единственными двумя строками в этом компоненте, то мы имели бы две возможные перестановки столбцов: 5, 2, 7, 8 и 5, 7, 2, 8. Если бы мы выбрали размещение столбца 5 справа, то мы бы получили инверсию этих двух перестановок. Это означает, что выбор направления для размещения второй строки не имеет значения, и это — важное свойство.
Теперь рассмотрим третью строку, I3. Поскольку она находится в том же компоненте, что и другие две, мы знаем, что в графе G< мы должны найти ребро (Z3, lj), или ребро (Z3,I2), или же оба. В нашем примере присутствуют оба ребра. Найдем расположение строки /3 относительно строки I2. Очевидно, что мы снова можем выбирать между размещением 1-ц строки 1% слева или справа от 1-ц строки I2. Но теперь мы должны учитывать также взаимосвязь между строками /3 и Zj. Это можно сделать, рассматривая число элементов в пересечениях между множествами Si, S2 и S3. Пусть для любых двух множеств х и у равенство х • у = |ST П SjJ верно (скалярное произведение строк х и у). Если Zi -Z3 < min(Zi - Z2, ^2^3), то строка 1з должна быть помещена в компонент в том же направлении, в котором строка I2 была расположена относительно строки 1г. Если Zi -Z3 > inin(Zj -/2, (2^3),то мы должны поместить строку Z3 во встречном направлении тому, в котором мы расположили строку I2 относительно строки Zi (здесь нс должно быть равенства; почему?). В любом случае, если компонент обладает СПЕ, то это значит, что строки Zi и Z3 расположены правильно: и наоборот, сели строки Zi и Z3 расположены неправильно, то компонент не обладает СПЕ. Эта особенность связана с тем, что единственный случай выбора, который мы делали до сих пор, касался расположения строки I2 относительно строки Zb и мы знаем, что обе возможности (левое или правое расположение единиц) дадут тождественные решения, включая инверсии.
5.3. АЛГОРИТМ ДЛЯ ЗАДАЧИ СПЕ
235
Algorithm Place'’
input: и, v и w — вершины графа Gc = (V, Е), где (и, v) & Е и (у, w) G Е.
И вершины v и w могут иметь значение nil output: Возможное расположение строки и if v = nil and w = nil then
Расположить все 1-пы строки и последовательно else if w nil then
Расположить 1-цы строки и слева или справа относительно
1 -ц строки v
Запомнить направление расположения
else
if и  v < min (и  v.v • w) then
Расположить и относительно V, используя то же направление, что и при расположении vотносительно w
Запомнить направление расположения else
Расположить и относительно V, используя встречное направление тому, которое использовалось при расположении v относительно w
Запомнить направление расположения
Проверить множества столбцов на непротиворечивость.
Рис. 5.8. Процедура расположения строки в компоненте по отношению к двум другим строкам
В нашем примере S3 = {1,4,7.8}. Тогда 1-3 = 2, 1-2 = 2и 3-2 = 1, что означает, что мы должны поместить 1-цы строки 13 справа от 1-ц строки I?, как показано ниже:
		{5}	{2} {7}	{8} {1,4} {1,4}
G	—*	... 0	0	1 1	1	0	0	0 ...
<2 —»	... 0	1	1 1	0	0	0	0 ...
h —»	... 0	0	0	1	1	1	1	0 ...
Теперь мы знаем,		ЧТО 1	правильная	перестановка столбцов 2, 5, 7 и 8
равна 5, 2, 7, 8. Перестановки, содержащие также и остальные столбцы, могут быть определены, когда мы рассмотрим больше строк. Но каким образом мы должны располагать последующие строки? Как мы видели, при
Расположение. — Прим, перев.
236
Глава 5
размещении третьей строки мы не имели никакой альтернативы. То же самое верно для всех последующих строк в том же компоненте. Все, что мы должны сделать для новой строки к, — это найти две предварительно помешенные строки г и j, которым в графе Gc соответствуют ребра (к, г) и (i,j), и продолжать действия, как мы делали в компоненте с тремя строками. Интересно отметить, как именно алгоритм сохраняет возможные перестановки компонента во множествах над каждым столбцом. Полагая, что после размещения первых двух строк нет альтернатив размещения последующих, мы видим, что этот алгоритм даст нам все возможные перестановки столбцов компонента, обладающего СПЕ, вплоть до инверсии. Если бы компонент в приведенном выше примере имел только три строки, то две возможные перестановки были бы 5, 2, 7, 8, 1,4 и 5, 2, 7, 8,4, 1. Как мы уже упомянули, отслеживание всех возможных решений — желательная функция алгоритма в случае картирования ДНК.
Реализация вышеописанного алгоритма проста. 11собходимо построить граф Gc и совершить обход его вершин, используя метод поиска в глубину. При посещении каждой вершины вызывать процедуру Place, представленную на рис. 5.8. Чтобы выяснить, нашел ли алгоритм перестановку СПЕ, мы можем проверять множества столбцов на непротиворечивость, когда мы анализируем очередной вариант размещения, как обозначено в последней строке процедуры Place. Если мы пытаемся расположить строку и узнаем, что один из ее столбцов должен идти, скажем, направо, а существующее размещение говорит нам, что он должен идти налево, то компонент и, следовательно. матрица не обладают СПЕ.
Оценим время счета этой процедуры. На построение графа Gc требуется время О(пт). Затем, чтобы проверить множества столбцов на непротиворечивость. мы обрабатываем п строк, затрачивая время О(т) на строку. Таким образом, полное время счета равно О(пт).
Объединение компонентов
Займемся теперь второй частью алгоритма — процедурой объединения компонентов. Организуем информацию о взаимном соответствии компонентов в виде графа Gm. Каждый компонент исходной матрицы Л/ будет соответствовать вершине графа Gm- Соединим вершины а и (3 ориентированным ребром, если множества S, для всех i е (3 содержатся по крайней мере в одном множестве S} компонента а (здесь мы не делаем никакого различия между строкой j и соответствующим ему множеством S}) Граф Gm, соответствующий компонентам матрицы из таблицы 5.1, показан на рис. 5.9.
В начале этого раздела было показано, что соотношения пребываний между множеством компонента В и множествами компонента <т те же самые
5.3. АЛГОРИТМ ДЛЯ ЗАДАЧИ СИЕ
237
Рис 5.9. Граф Сд/. соответствующий компонентам матрицы из таблицы 5.1
для всех множеств компонента fl. Покажем это более ясно. Предположим, что множество 8г, принадлежащее компоненту /?, содержится во множестве Sj, принадлежащем компоненту п. Поскольку строки г и j находятся в различных компонентах, то в компоненте п не существует строки к, такой, что множество S, не содержится во множестве и 5г П Sfc / 0. Другими словами, множество Sz содержится в некоторых множествах компонента и нс пересекается с остальными множествами этого компонента. Мы утверждаем, что точно те же соотношения пребываний и непересекаемости верны для всех множеств компонента В. Предположим обратное и проанализируем одно из таких исключений. Предположим, что г, I G (3, St Pi Si £ 0, j G а и Si С Sj, но Si <£ S3 В этом случае единственная возможность, чтобы строка I нс принадлежала компоненту о — Si CI.S’j = 0. Но это невозможно, поскольку множества S, и Si имеют по крайней мерс один общий элемент и множество Si содержится во множестве Sj. Возможность анализа других случаев мы предоставляем читателю.
Объединение компонентов зависит от соотношений пребываний множеств одних компонентов во множествах других. Ясно, что в первую очередь мы должны обрабатывать компоненты, множества которых нс содержатся где-нибудь еще. Поскольку пребывание множеств определяется направлением соответствующих рсбер, мы должны обрабатывать граф Gm в топологическом порядке (Это возможно только в том случае, если граф Gm является ациклическим. Это действительно так? Да, и это нетрудно доказать.)
Осуществив правильную перестановку столбцов во всех компонентах, мы отбираем из графа Gm все вершины без входящих в них ребер и оконча
238
Глава 5
тельно фиксируем соответствующие им столбцы. Затем мы выбираем следующую в топологическом порядке вершину. Предположим, что мы следуем за ребром Это означает, что мы должны найти в компоненте а так называемый «опорный столбец», который укажет нам, как следует разместить строки компонента /3. Выберем из /3 строку I, которая имеет крайнюю левую 1-цу. и столбец, где находится эта 1-ца, назовем сд. Мы знаем, что множество Si содержится в некоторых множествах St компонента а и нс содержится в других. Найдем все строки из компонента а, которые содержат множество Si, и найдем крайний левый столбец, в который все такие строки входят 1-ми (и назовем этот столбец cQ). Это и есть искомый опорный столбец, так как мы теперь можем объединить столбцы са и ср в один столбец.
Иллюстрируем этот процесс с помощью матрицы из таблицы 5.1 и графа на рис. 5.9 и будем рассматривать его вершины в топологическом порядке. Один возможный порядок — компоненты а, (3, 6 и 7. Переставим столбцы компонента а так, чтобы 1-цы в его строках были последовательны:
	{1}	{2,4,5,7,9}	{3,6,8}
11 —> .	. 1	11111	ООО
h —» .	. 0	11111	1 1 1
Присоединим следующий компонент, [3, состоящий из одной строки: I {2,4.5, 7,9}	|
... L 1 1 1 1
Для этого нам нужно присоединить строку 13 к строкам из компонента а,
без производства каких-либо перестановок:			
	{1} 1	{2,4,5,7,9}	I {3,6,8}
/] —>	... 0	11111	ООО
<2 —>	... 0	11111	111
7з —»	...	0	11111	ООО
Далее следует компонент <5. Вот его строки с последовательными 1-ми:
	 {9,5}	{4}	{7}	{2}
fe —» -.	.00	1	1	0
/7 —» ..	.00	0	1	1
/в —> ..	.. 1 1	1	0	0
Мы можем видеть, что в компоненте <5 именно строка имеет крайнюю левую 1-цу (в столбце 5 или 9) В компоненте а обе строки /1 и /2 содержат
5.3. АЛГОРИТМ ДЛЯ ЗАДАЧИ СПЕ
239
строку 1g, и именно второй столбец (представляющий группу возможных столбцов) состоит исключительно из 1-ц. Поэтому второй столбец должен совпасть со столбцами 9 или 5 компонента <5. Вот результат:
{1} «1 - ... 1 — ... о /з— ••• 0 /6-> --- о h -> ... 0 /8— ... 0	{9, 1 1 1 0 0 1	5} 1 1 1 0 0 1	{4} 1 1 1 1 0 1	{7} 1 1 1 1 1 0	{2} 1 1 1 0 1 0	{3,6,8} 0 0 0 ... 1 1 1 ... 0 0 0 ... 0 0 0 ... 0 0 0 ... 0 0 0 ...
Подключаем компонент 7:						
.. <5 —► . .			{6} 0 1	{3} 1 1	{8} 1 0	
В конечном счете мы получаем матрицу, где все						1 -цы последовательны:
h —»	{1} 1	{9.5} 1 1		{4} 1	{7} 1	{2} 1	{С} 0	{3} 0	{8} 0
ь —»	0	1	1	1	1	1	1	1	L
/з^	0	1	1	1	1	1	0	0	0
—»	0	0	0	1	1	0	0	0	0
1? —»	0	0	0	0	1	1	0	0	0
<8^	0	1	1	1	0	0	0	0	0
	0	0	0	0	0	0	0	1	1
—»	0	0	0	0	0	0	1	1	0
Заметим, что одно		из	множеств		столбцов		; НС	является однозначным,	
что указывает на то, что мы нашли два решения. В этом конкретном случае причина состоит в гом, что столбцы 5 и 9 являются идентичными. Но в общем случае могут быть неоднозначные решения, обусловленные нс только перестановкой идентичных столбцов. Например, 1, 2, 7, 4, 9, 5, 8, 3, 6 альтернативное решение для гой же самой матрицы. Крагныс решения могут существовать, потому что граф Gд/ допускает различные топологические порядки, и эта причина дополняется следующими двумя фактами. Во-первых, каждый компонент может иметь несколько решений; во-вторых, каждое из них может быть использовано двумя способами (найденная перестановка и ее инверсия).
240
Глава 5
Определим время счета алгоритма. Топологическая сортировка графа Gm занимает время О(п 4- т). Возможно предварительно обработать элементы матрицы М таким образом, чтобы запросы, необходимые при обходе вершин графа Gm, занимали фиксированное время. Например, мы можем сохранять для каждой строки столбец, в котором находится ее крайняя левая 1-ца. Такая предварительная обработка расходует самое большее время О(пт). Поэтому данная функция показывает также время, необходимое для объединения компонентов. Полное время обработки каждого компонента, как было показано, также равно O(nni), так что это полное время счета всего алгоритма.
Существует другой алгоритм, который может найти СПЕ за время О(п 4- т 4- г), где г — общее число 1 -ц в матрице. Кроме того, этот алгоритм компактным способом кодирует все возможные решения. Однако этот алгоритм значительно сложнее алгоритма, представленного в этом разделе. Соответствующие ссылки даны в библиографических примечаниях.
5.4.	ПРИБЛИЖЁННОЕ СОСТАВЛЕНИЕ КАРТ
ГИБРИДИЗАЦИИ
В предыдущем разделе мы изучили алгоритм решения задачи СПЕ. Мы увидели, что такая задача — хорошая модель составления карт гибридизации, когда эксперименты свободны от ошибок и когда зонды уникальны. Если ошибки присутствуют, то необходим иной подход, который и составит предмет настоящего раздела
Вначале рассмотрим эффект воздействия ошибок на бинарную матрицу А/ размером п х т. Предположим, что перестановка столбцов матрицы А/ правильна. Тогда, если нет никаких ошибок, то в каждой строке все 1 цы будут последовательными. Если строка соответствует химерному клону, где были соединены два фрагмента, то мы увидим два блока 1-ц, разделенных некоторым числом нулей (если допустить, что в этой строке не присутствуют никакие другие ошибки). Последовательный блок нулей, ограниченный 1-ми, мы будем называть промежутком. Учтите, что этот термин отличается от термина пропуск, употребляемого в других главах этой книги. Таким образом, мы можем сказать, что промежуток в этой строке образован химерным фрагментом. Если в другой строке есть ложное несовпадение, то соответствующий 0 может разделить два блока 1-ц, создавая еще один промежуток, как показано ниже
0 110 11110 0
Т
ложное несовпадение
5.4. ПРИБЛИЖЁННОЕ СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ
241
Этот промежуток не был бы создан, если бы зонд был крайним левым или крайним правым в соответствующем клоне. Наконец, ложное совпадение может расщепить нулевой блок на два, таким образом создавая еще один промежуток. Таким образом, мы видим, что существует тесная взаимосвязь между ошибками во фрагментах и промежутками в матрице. Если принять основное допущение о том, что мы в максимально возможной степени хотим избежать объяснения промежутков погрешностью экспериментов, то разумный подход будет заключаться в том, чтобы стараться найти перестановку с минимальным общим числом промежутков в матрице. Такой подход основан на свойстве, согласно которому если перестановка СПЕ возможна, то именно она будет иметь минимальное число промежутков. Другими словами, минимизацию промежутков можно рассматривать как обобщение задачи с последовательными единицами. В разделе 5.2.3 мы упомянули, что некоторые расширения к задаче СПЕ являются НП-трудными. Это же относится и к только что описанной задаче минимизации промежутков. Однако, как мы покажем далее, для того чтобы получить приближенные решения этой частной НП-трудной задачи, мы можем использовать различные специальные методы, которые, предположительно, дают достаточно хорошее решение.
5.4.1.	ГРАФОВАЯ МОДЕЛЬ
Оказывается, что минимизация промежутков равносильна решению известной задачи из теории графов. Это так называемая задача коммивояжера, описанная в разделе 2.2.
Таблица 5 3 Матрица п х тп с дополнительным столбцом pj
	Pl	Р2	Рз	Р4	Р5	Рб
С1	1	1	1	0	0	0
С-2	0	1	1	1	0	0
сз	1	0	0	1	1	0
С4	1	1	1	1	0	0
Вход этого варианта задачи коммивояжера полный неориентированный взвешенный граф G. Вершины графа G соответствуют столбцам бинарной матрицы М размером п х тп, то есть зондам. По причинам, которые скоро станут ясными, мы также должны ввести в матрицу 1/ дополнительный столбец, заполненный нулями, и соответствующую этому столбцу вершину — в граф G. Вес каждого ребра графа G — число строк, в кото
242
Глава 5
рых два соответствующих столбца отличаются (так называемое Хеммингово расстояние между строками). Например, в таблице 5.3 мы видим пример бинарной матрицы, а на рис. 5.10 — соответствующий ей граф. Покажем, что цикл с минимальным весом в графе G соответствует перестановке столбцов с наименьшим числом промежутков в матрице Л/.
Рис. 5.10. Граф чадачи коммивояжера, соответствующий матрице чгч табл. 5.3
Для этого заметим, что при такой перестановке столбцов промежуток в строке означает, что в некоторой точке мы имеем переход от 1-цы к нулю, и далее — переход от нуля к 1-це. Таким образом, на каждый промежуток мы имеем два перехода, и каждый промежуток вносит точно 2 единицы в вес цикла, соответствующего данной перестановке столбцов. Однако веса ребер могут быть увеличены и за счет экстремальных переходов, то есть переходов между элементами в экстремальных (1 или т) столбцах, и они не соответствуют промежуткам. Чтобы гарантировать, что каждая строка имеет пару экстремальных переходов, мы включаем дополнительный нулевой столбец с индексом т +1. Без такого столбца циклы в графе соответствуют перестановкам, где возможен последовательный переход единиц из строки в строку, чего мы не должны допускать. Тогда взаимосвязь между циклами и перестановками дает следующее выражение
вес цикла - число переходов в промежутках + 2п.
Это ошачасг, что при постоянном п уменьшение веса цикла равносильно уменьшению числа промежутков.
5.4. ПРИБЛИЖЁННОЕ СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ
243
Итак, мы только что показали, как задача минимизации промежутков может быть сведена к задаче коммивояжера6. Как мы знаем, задача коммивояжера является НП-трудной, так что в принципе мы достигли немногого. Однако известно большое множество методов точного или приближённого решения различных вариантов задачи коммивояжера, и эти методы мы можем использовать в нашем случае. Существование таких методов само по себе нс достаточно, чтобы уверить нас в том, чзо решение задач данного класса даст нам истинную перестановку зондов. Мы нуждаемся в гарантии того, что такие решения, в некотором смысле, будут близки к истинному решению. Одну такую гарантию мы покажем в разделе 5.4.2.
Перед этим возвратимся к задаче минимизации промежутков и представим пример идей, очерченных в конце раздела 5.2.4. Выше мы определили функцию, возвращающую общее число промежутков в матрице входов. Далее мы показали, что перестановка с минимальным значением этой функции (или приблизительно минимальным) помогает нам найти истинную перестановку столбцов. Так как мы не имеем гарантии, что истинная перестановка будет среди найденных нами решений, мы должны искать другие функции, которые также могли бы быть полезны. Идея заключается в том, что, тщательно определив несколько таких функций оптимизации и разработав для них алгоритмы, мы увеличим степень правдоподобия достижения истинного решения. В частности, разумно ожидать, что истинное решение будет находиться в пересечении всех множеств решений. Однако эго возможно только в том случае, если каждая функция отражает одно из известных или предполагаемых свойств истинных решений.
Приведем пример другой функции оптимизации. Один возможный недостаток минимизации промежутков состоит в том, что в перестановке с минимальным значением этой функции одна или несколько строк могут содержать много промежутков, а другие — ни одного. Наличие многих промежутков в одной строке нежелательно, так как это означало бы, что один клон был подвергнут намного большему числу экспериментальных ошибок, чем другие клоны, что противоречит лабораторной практике. Полому следует пытаться минимизировать число промежутков в строке. В качестве упражнения 15 мы предоставляем возможность показать, что предыдущая графовая модель может быть использована также и для этой функции оптимизации. Конечная задача на графе известна как задача коммивояжера на v/кие места и является НП-трудной.
6То, что наша задача сводится к НП-полной задаче, — не беда, поскольку это означает, что наша галача не сложнее НП-полной задачи. Хуже, если НП-полная задача сводится к нашей. Н/WK. pt4>.
244
Глава 5
5.4.2.	ГАРАНТИЯ
В этом разделе мы приводим формальное доказательство того, что подход с использованием задачи коммивояжера, очерченный в предыдущем разделе, даст нам, с высокой вероятностью, правильную перестановку. Доказательство, которое мы представляем, опирается на два основных допущения: 1) число зондов достаточно велико; 2) процесс картирования подчиняется некоторой математической модели. Предположительно, эта модель достаточно точно описывает крупные проекты картирования. Опишем эту модель чуть позже.
Сначала мы сделаем допущение, что молекула ДНК, с которой мы имеем дело, настолько длинна, что мы можем думать о ней как об интервале на вещественной оси, простирающемся от 0 до N. Тогда клоны представлены подынтервалами этого длинного интервала, и мы допускаем, что все они имеют одинаковую длину; для удобства примем каждый клон за единицу длины. Чтобы упростить концепцию модели, мы будем говорить о перестановках клонов, а нс о перестановках зондов. Допущение о единице длины, равной клону, делает эти перестановки равносильными. Это означает, что теперь мы будем искать последовательные 1-цы в столбцах, а не в строках, и что каждая вершина в соответствующем графе задачи коммивояжера будет соответствовать клону. Мы используем левую конечную точку каждого клона в качестве его локатора. Мы, конечно, не знаем точного положения каждого клона в молекуле; и поскольку мы имеем дело с гибридизацией, все, что мы сможем определить, — это относительный порядок клонов.
Главная особенность этой модели — распределение клонов вдоль целевой ДНК. Мы сделаем допущение, что позиция каждого клона представлена независимой случайной переменной, что локаторы клона распределены равномерно в интервале [0. N — 1] и что клоны покрывают интервал [0. Л’] (то есть для каждого подынтервала I в интервале [0. ЛГ] всегда существует по крайней мере один клон С, такой, что С П1 ф 0)-
Другой важный параметр модели — распределение зондов. Мы не будем делать допущение об уникальности всех зондов; вместо этого мы допустим, что в целевой ДНК каждый зонд появляется редко. Более формально мы скажем, что появление данного зонда подчиняется распределению Пуассона со степенью Л. К тому же, закон распределения каждого отдельного зонда не зависит от распределения остальных зондов. Эта часть модели позволяет нам немедленно получить выражение для вероятности гибридизации клоном специфичного зонда:
, \к
Рг{данный зонд появляется к раз в данном клоне} = е -уг- (5-1)
5.4. ПРИБЛИЖЁННОЕ СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ
245
Это выражение может быть получено из любой формулы, описывающей распределение Пуассона, так как наши клоны являются интервалами единичной длины.
На этом мы завершаем описание модели. Теперь мы покажем, что для данной бинарной матрицы п х т перестановка строк, найденная решением соответствующего варианта задачи коммивояжера, даст хорошее приближение к правильной перестановке. Это свойство отражено в следующем утверждении: По мере увеличения числа зондов вероятность того, что обе перестановки являются тождественными, стремится к 1-це. Обратите внимание, что для каждого отдельного варианта задачи число зондов фиксировано. Мы лишь утверждаем, что в больших варианзах задачи (размер задачи мы измеряем числом зондов) перестановка в задаче коммивояжера будет с более высокой вероятностью тождественна правильной перестановке.
Чтобы доказать это утверждение, мы должны опираться на веса ребер графа, то есть на расстояния между клонами. Как мы упоминали, вес каждого ребра в графе, соотнесенном с матрицей входов Л/, называют Хем-минговым расстоянием между двумя конечными точками этого ребра (клонами). Обозначим величиной Хеммингово расстояние между клонами г и j. Кроме того, мы можем ввести понятие истинного расстояния между клонами. Обозначив координаты клона буквами I (левая) и г (правая), мы можем определить это расстояние как
= IG - М + lrj ~ = 2IG “	(5.2)
учитывая, что все клоны имеют одинаковый размер.
Предположим теперь, что мы знаем все истинные расстояния. Тогда становится ясно, что наибольшее истинное расстояние дало бы нам клоны, которые являются самыми отдаленными, то есть клоны, которые появляются на противоположных концах интервала [О, 7V], Следующее (в порядке убывания) наибольшее расстояние дает нам другую пару клонов, которые находятся между предыдущими двумя клонами, и так далее. Это означает, что, зная истинное расстояние, мы способны получить правильную перестановку клонов (что не удивительно). Однако на самом деле мы определяем Хсмминговы расстояния а не истинные расстояния (у. Но именно потому, что мы пытаемся получить лишь правильный относительный порядок клонов, будет достаточно, если мы могли бы сказать, что для данных любых четырех клонов г, j, г и я неравенства htj < hrs и ty < tra равносильны. Эго связано с тем, что некоторое понятие порядка расстояний между клонами было всем, чго нам нужно для расположения клонов друг относительно друга на основании истинных расстояний. Если мы докажем, что по мере
246
Глава 5
увеличения числа зондов вероятность htJ < hrS <=> t,j < trs стремится к единице, то мы получим искомый результат.
Рассмотрим некоторую пару клонов г и j и определим вероятность того, что некоторый зонд р вносит вклад в Хемминтово расстояние между клонами этой пары. Это случится, если зонд р гибридизирует клон г и при этом не гибридизирует клон j; или наоборот. Обращаясь к уравнению (5.1), мы видим, что вероятность того, что зонд р не появляется в клоне j, равна е~\ поскольку к = 0. С другой стороны, вероятность появления зонда р по крайней мере однажды в клоне г тождественна дополнительной вероятности того, что зонд р не появляется в той области клона г, которая не перекрывается с клоном j. Если это перекрытие обозначить zy, то мы получаем следующее выражение:
Рг{зонд р гибр. клон i и не гибр. клон j, или наоборот} =
= ру = 2е-А(1 -	(5’3)
По существу это выражение означает, что существует вполне определенная вероятность наступления такого события. Теперь мы можем учитывать все зонды, и каждый из них будет иметь некоторую вероятность гибридизации клонами г и j. Допустим, что мы имеем т зондов и рассмотрим отношение h-^/m. Оно отражает средний вклад каждого зонда в Хеммингово расстояние между клонами i и j (вклад зонда в Хсммингово расстояние всегда равен 0 либо 1). Если число зондов достаточно велико, то мы можем обратиться к закону больших чисел и сказать, что отношение hijlm приближается к вероятности ру. Или, для любого постоянного малого положительного вещественного числа е, что
при т —> оо. Здесь следует подчеркнуть, что так как все клоны имеют единичную длину, истинное расстояние между двумя перекрывающимися клонами i и j с мерой перекрытия zy определяется выражением ty = 2 — — 2zy (см. уравнение (5.2)). Это позволяет нам подставить ty вместо zy в уравнение (5.3) и показать, что фактически tv > trs тогда и только тогда, когда ру > ргв, для пар клонов i,j иг, s. Но если дело обстоит так, то мы можем сказать, что
Pr{|ty - Лу| > е} —» 0.
Это в свою очередь подразумевает hij < hr8 <=>	< tr8, что и требова-
лось доказать.
5.4. ПРИБЛИЖЁННОЕ СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ
247
5.4.3.	ПРАКТИКА ВЫЧИСЛЕНИЙ
В этом разделе мы представляем некоторые важные результаты вычислительных испытаний алгоритмов для решения задачи составления карт гибридизации. Однако прежде чем представить эти результаты мы должны привесги соображения относительно возможного способа интерпретации результатов таких испытаний. Некоторые из этих соображений общезначимы для многих задач вычислительной биологии.
Вначале мы оценим входные данные, используя другой граф. После этой оценки станет более ясно, что мы можем ожидать от любого алгоритма поиска правильной перестановки зондов. Этот граф будет использован также и в следующем разделе.
Граф гибридизации Н мы определим как двудольный граф ((7. V. Е), который строится на основании информации из матрицы гибридизации: клоны — вершины доли U, а зонды — вершины доли V. Если некоторый зонд гибридизирует специфичный ему клон, то между соответствующими вершинами графа существует ребро. На рис. 5.11 изображен двудольный граф Н, который был построен на матрице М из табл. 5.3 за исключением нулевого столбца.
Рис. 5.11. Граф гибридизации Н, соответствующий матрице гибридизации (табл. 5.3) без нулевого столбца
Первое, на что можно обратить внимание, — что даже если все элементы матрицы гибридизации правильны, граф Н может не быть связным Если дело обстоит именно так, то независимо от того, насколько хорош наш алгоритм, мы не сможем определить относительный порядок зондов, принадлежащих различным связным компонентам графа: просто необходимая для этого информация не присутствует в матрице гибридизации. Связный
248
Глава 5
компонент графа может быть очень прост и состоять из одной вершины, — представляя зонд, который не был гибридизирован никаким клоном, либо клон, который не был гибридизирован ни одним зондом.
Второе наблюдение состоит в том, что зонды могут быть избыточными, то есть гибридизировать одно и то же множество клонов. Это может случиться, если различные зонды гибридизируются участками целевой ДНК, расположенными близко друг к другу. Кроме того, это возможно в том случае, если некоторые клоны, соответствующие данной области ДНК, отсутствуют, оставляя некоторые зонды без положительных результатов гибридизации.
Связные компоненты графа Н появляются, когда мы решаем соответствующую задачу с последовательными единицами. Избыточные зонды могут быть легко обнаружены также путем анализа элементов матрицы гибридизации. Это столбцы, которые имеют одинаковую перестановку нулей и единиц. Но если в матрице присутствуют ошибки, то мы можем получить неверную информацию относительно числа и структуры связных компонентов графа Н, а также об избыточности пар зондов. В таком случае мы говорим, что ошибки маскируют эти свойства. Так что в присутствии ошибок возникает довольно трудная ситуация: матрица входов, не содержащая ошибок, может иметь недостаточно информации, необходимой для отыскания правильной перестановки (например, не содержащий ошибок граф Н состоит из нескольких компонентов), и даже в распознавании такого недостатка информации мы можем испытывать большие затруднения (потому что граф Н с ошибками состоит только из одного компонента). Если допустить, что матрица из табл. 5.3 свободна от ошибок, то зонды р? и рз очевидно избыточны, но если бы между клоном сз и зондом рз был ложный признак гибридизации, то мы были бы неспособны распознать их избыточность.
Исходя из возможности возникновения такой ситуации, становится ясно, что оценка алгоритма картирования является трудной задачей (в дополнение к самому картированию!). Взглянем теперь на то, как мы можем оценить такие алгоритмы при допущении, что мы так или иначе знаем правильный ответ на любую задачу картирования. Например, это возможно, если мы используем компьютерную программу, генерирующую искусственные варианты картирования и моделирующую при этом различные ошибки. Если такие задачи правильно описывают реальные задачи, то из предыдущих рассуждений должно быть ясно, что матрица входов может содержать недостаточно информации для того, чтобы алгоритм мог определить правильный порядок зондов. Поэтому мы должны пытаться оценить, насколько решение, найденное алгоритмом данного варианта задачи картирования,
5.4. ПРИБЛИЖЁННОЕ СОСТАВЛЕНИЕ КАРТ ГИБРИДИЗАЦИИ
240
«приближено» к истинному порядку зондов. В связи с этим возникает естественный вопрос: Что мы понимаем под «приближением» в данном случае? В настоящее время не существует четкого определения. Однако, чтобы дать некоторое представление о принципах работы известных алгоритмов картирования на практике, мы приведем в качестве примера одно из недавно появившихся в литературе определений. Это удобное и хорошо обоснованное определение, но даже если оно станет общепринятым, оно всегда может быть дополнено или уточнено в будущем.
Мы будем оценивать алгоритм картирования долей сильных смежностей от общего числа решений. Сильные смежности определяются числом Ь блоков последовательных единиц, присутствующих в матрице гибридизации с данной перестановкой зондов тг = р\ ,р2,... -Рт- Мы анализируем эффект транслокаций, то есть операций, инвертирующих порядок множества последовательных зондов Мы говорим, что два смежных зонда рг и рг+ [ имеют сильную смежность, сели обособление этих зондов при любой транслокации увеличивает число блоков b в каждой строке. Когда такое увеличение имеет место, мы имеем некоторое доказательство (хотя и нс неопровержимое), что зонды рг и 1 должны остаться смежными во всех решениях.
Взяв за основу это понятие, мы можем определить стоимость сильной смежности для данной перестановки. Она определяется формулой
где 5, = 1, если зонды рг и p2+i имеют сильную смежность в правильной перестановке, но при этом не смежны в предложенной перестановке; в противном случае 5г = 0. Обратите внимание, что стоимость определена в процентах. Хорошие перестановки должны иметь низкую стоимость сильной смежности.
Опираясь на это определение, мы, наконец, можем дать читателю представление относительно принципа работы алгоритма. Таблица 5.4 представляет стоимость сильной смежности для двух алгоритмов. Один из них «случаен»: выбирает решение из множества случайных перестановок зондов. Другой основан на решении задачи коммивояжера; принцип его работы следующий. Алгоритм строит цикл в графе задачи коммивояжера, выбирая пары вершин и делая их смежными в пути. Пара (u, v), выбираемая на каждом шаге алгоритма, должна удовлетворять следующим условиям: 1) если обе вершины и и v уже принадлежат некоторым путям и эти пути различны, то эти пути могут быть объединены, только если вершины и и v являются
250
Глава 5
конечными точками соответствующих им путей (то есть каждая из них имеет только одну соседнюю точку); 2) эти вершины должны быть ближайшими среди всех оцениваемых пар вершин. После того как все вершины будут принадлежать одному пути, алгоритм замыкает этот путь, формируя цикл. Затем это решение предоставляется другому алгоритму, который пытается улучшить его, применяя другую эвристику.
Таблица 5.4. Стоимости сильной смежности для двух алгоритмов на матрицах с разным типом ошибок. Частоты появления ошибок показаны над каждым столбцом (в каждом столбце ошибки только одного типа). По-крыше во всех случаях равно 10 (здесь покрытие — отношение между общей длиной всех клонов и длиной целевой ДНК)
	СПЕ 0	Химеризм 0,5	Л. совп. 0,04	Л. несовп. 0,32
Жадн. коммив.	1,9	0,9	16,0	28,3
Случайный	86,4	89,7	94,4	94,9
Из табл. 5.4 мы можем видеть, что алгоритм, основанный на решении задачи коммивояжера (названный «жадным»), имеет довольно хорошие, по сравнению со «случайным», показатели. Статья, из которой были взяты эти данные, представляет характеристики трех других, намного более сложных алгоритмов, и результаты, подобные показанным выше для «жадного коммивояжера». Эти результаты можно рассматривать как очко в пользу алгоритма коммивояжера, но, в некотором смысле, это всего лишь еще один показатель того, насколько трудна задача картирования. Таблица также показывает, что в присутствии ложных несовпадений решение «жадного коммивояжера» оказалось довольно неудовлетворительным. Справедливо допустить, что результаты были бы еще хуже, если бы в одной задаче совместно присутствовали ошибки всех видов. Эти выводы закладывают основу следующего раздела, в котором мы представляем эвристику, оказавшуюся устойчивой в присутствии ложных несовпадений.
5.5.	ЭВРИСТИКИ ДЛЯ СОСТАВЛЕНИЯ КАРТ ГИБРИДИЗАЦИИ
Как было показано в предыдущих разделах, картирование — грудная задача, и никакие универсальные и хорошие алгоритмы для нее не были найдены. Как следствие, на практике исследователи обращаются к различным эвристикам, в надежде найти искомое решение. В этом разделе мы
5.5. ЭВРИСТИКИ ДЛЯ СОСТАВЛЕНИЯ КАРГ ГИБРИДИЗАЦИИ 251
представляем две такие эвристики, показавшие неплохие результаты в про ектах составления карт гибридизации
5.5.1.	ОТСЕВ ХИМЕРНЫХ КЛОНОВ
Как мы о I метили выше, химерные клоны появляются в клопозеках с высокой частотой и их присутствие приносит серьезные проблемы любому алгоритму картирования. В этом разделе мы представляем простую эвристику, призванную расщеплять химерные клоны на отдельные фрагменты. Такая эвристика очень полезна в качестве процедуры отсева, которая может быть использована па этапе предварительной обработки перед применением более сложных методов.
Зонды
Клоны
Рис. 5.12. Над горизонтальной линией мы видим граф гибридизации //, построенный для некоторой матрицы п х т. Слева под этой линией построен граф 11ь для клона Ь. Этот клоп, вероятно, не химерный, поскольку граф Нь связен. Справа показав граф Нс, соответствующий клопу е. Этот клоп, возможно, химерный, поскольку |раф Не несвязен
Идея очень проста: если клон является химерным (сделаем допущение о том, что он состоит только из двух фрагментов), то зонды, которые гибридизируются одним из его фрагментов, не должны быть связаны с зондами, гибридизирующими другой фрагмент этого клона. Ключ здесь — конечно, понятие «связанности» зондов. Поясним его на следующем примере
Возьмем клон i и множество Р, зондов, которые гибридизируют этот клон. Для каждого клона i мы создаем граф Н, =	Мы проводим
252
Глава 5
ребро между двумя зондами из множества Рг, если они гибридизируются каким-либо отличным от г клоном. Если построенный граф связен то мы говорим, что клон г не химерный. Если граф состоит из более чем одного компонента, то мы говорим, что клон г является химерным и заменяем его новыми «искусственными» клонами, где каждый новый клон определяется связным компонентом графа Ht. Этот метод может быть улучшен путем наложения дополнительного требования, которое состоит в том, что между зондами р и q в графе Нг ребро существует только в том случае, если зонды р и q гибридизируют по крайней мере к других клонов, где к — параметр, зависящий от конкретного варианта задачи. См. пример на рис. 5.12.
На практике эта эвристика показала хорошие результаты. С другой стороны, опа может счесть клон химерным, когда фактически он не является таковым. Поэтому, было бы полезно на стадии заключительной обработки применять эвристику, объединяющую два клона, которые на самом деле являются одним клоном, но на предшествующем этапе обработки были ошибочно приняты за химеру и разделены. (См. упражнение 22.)
5.5.2.	ПОЛУЧЕНИЕ ХОРОШЕГО ПОРЯДКА ЗОНДОВ
Представленная здесь эвристика более претенциозна, чем рассмотренная в предыдущем разделе. Эта эвристика по существу стремился именно решит ь задачу, то есть найти правильную перестановку зовдов путем оценки с помощью графа гибридизации Н (см. раздел 5.4.3) числа зондов слева и справа от каждого зонда р. Затем на основании этой оценки мы можем сортировать зонды и таким образом получить одну «хорошую» перестановку.
Выбрав некоторый зонд, мы сможем сосчитать число зондов слева и справа от него, если нам удастся так или иначе расщепить остальные зонды на два отдельных компонента: один левый и один правый компонент. Зонды около концов целевой ДНК не могут расщепить другие зонды пополам; поэтому те зонды, с помощью которых мы можем получить два компонента, будут называться расщепителями. Метод обнаружения расщепителей описан ниже.
Для данного зонда р строят множество вершин Sp (элементы которого — клоны и зонды), включая в Sp зонд р и каждый следующий зонд, имеющий общий клон с зондом р. Во множество Sp включают все клоны, инцидентные любому зонду в Sp. Затем из графа Н удаляют все вершины, принадлежащие множеству Sp. Мы скажем, что зонд р — расщепитель, если итоговый граф состоит точно из двух компонентов. Использующая этот метод эвристика поиска хорошего порядка зондов представлена на рис. 5.13.
5 5 ЭВРИСТИКИ ДЛЯ СОСТАВЛЕНИЯ КАРТ ГИБРИДИЗАЦИИ 253
Algorithm Probe Permutation Heuristic1 input: матрица гибридизации n x m output: «хороший» порядок зондов Распознать расщепителей, как описано в тексте for каждого расщепителя i do Определить компоненты Аг и Bt for каждого зонда р do Инициализировать 1р и гр нулями Выбрать произвольную пару (Л*, Bk) for каждого зонда р do
for каждой пары компонентов (А,,Вг) do
if р € Аг then
if |А, П А*| > |А, П Bk| then
Прирастить 1Р
else
Прирастить rp
else if р € Bt then
if |B, О ^4^1 > |Bt П Bk\ then Прирасзшь lp else
Прирастить rp
Сортировать зонды в порядке убывания разницы lp — гр.
Рис. 5.13. Эвристика «хорошего» упорядочения зондов
Для каждого зонда р алгоритм поддерживает два счетчика 1Р и гр, соответственно, для записи числа левых и правых областей, содержащих зонд р. Эти счетчики инициализируются нулями и приращаются с помощью зондов-расщепителей. Не совсем ясно, каким образом это может быть сделано, потому что, хотя мы знаем два компонента А, и BL расщепителя i, мы не можем сказать, который из них является левым, а который правым компонентом. Чтобы разрешить эту трудность, мы полагаемся на фиксированный произвольный зонд к, который мы используем в качестве опорного. Мы допускаем, что компонент Ад. лежит слева от компонента Вд. Тогда для другого расщепителя i компонент X зонда г (А, либо Вг) будет крайним левым при [X П Afc| > |Х П В*|. Как только мы получаем заключительную оценку, мы сортируем зонды так, чтобы сначала шли зонды с более высоким сдвигом влево, определяемым разницей счетчиков 1р — тр. Простое усовершенствование этой эвристики заключается в выборе расщепителя к. Чем более «центральным» будет этот зонд, тем лучше должны быть результаты.
Как и в случае эвристики из предыдущего раздела, практические испытания свидетельствуют, что данная эвристика имеет высокие показатели
7Эвристика упорядочения зондов. — Прим, перев.
254
Глава 5
точности и эффективности. В частности, она относительно устойчива к ложным несовпадениям. Кроме того, можно предусмотреть использование этой эвристики также в качестве поставщика результатов другим алгоритмам или эвристикам, которые могли бы пытаться улучшить найденное решение.
РЕЗЮМЕ
В этой главе мы изучили два метода, лежащие в основе картирования ДНК: переваривание рсстриктазами и реакции гибридизации. Один из способов использования данных рестрикции заключается в измерении и сравнении соответствующих длин фрагментов. Это ведет к задачам с двойным или частичным перевариванием. Мы показали, что задача с двойным перевариванием НП-трудная. Данные о фрагментах могут быть использованы также для того, чтобы характеризовать индикатор некоторого фрагмента. В этом случае порядок фрагментов может быть восстановлен путем определения перекрытий между фрагментами с помощью индикаторов. Этот способ может быть смоделирован посредством интервальных графов, но большинство моделей можно описать только НП-полными задачами.
При составлении карт гибридизации мы используем в качестве первичных данных матрицу гибридизации размером п х т. Если к этой матрице мы предъявим строгие требования (уникальность зондов и отсутствие ошибок), то конечная задача может быть решена за полиномиальное время. Все, что мы должны сделать, — это определить, обладает ли матрица свойством последовательных единиц. Мы представили один алгоритм решения этой задачи. Когда появляются ошибки, мы вынуждены обращаться к приближениям, и мы показали, как задача составления карт гибридизации может быть сведена к варианту задачи коммивояжера. Это сведение, вкупе с другой моделью процесса гибридизации, обеспечивает гарантию того, что решение задачи коммивояжера будет достаточно хорошо приближено к решению задачи картирования. Алгоритмические трудности картирования побуждают к поиску критериев оценки алгоритма. Мы представили один из таких критериев и показали, что, согласно этому критерию, основанный на задаче коммивояжера алгоритм имеет высокие показатели по сравнению с другими, более сложными алгоритмами. В конце этой главы мы представили две эвристики для отсева ошибок и восстановления хорошего порядка зондов.
УПРАЖНЕНИЯ
1.	Найдите альтернативное решение задачи, показанной на рис. 5.2.
2.	Используя следующие результаты, попытайтесь найти решение задачи с двойным перевариванием:
УПРАЖНЕНИЯ
255
Фермент Л: 4, 5, 7, 8, 12.
Фермент В: 3, 4, 4, 6, 9, 10.
Ферменты А + В'. 1, 2, 3, 3, 4, 4, 4, 4, 5, 6.
3.	На основании следующих результатов попытайтесь найти решение задачи с частичным перевариванием:
2, 3, 7, 8, 9, 10, 11, 12, 17, 18, 19, 21, 26, 29.
4.	Постройте исчерпывающий алгоритм поиска для решения задачи с двойным перевариванием.
5.	Объясните, почему два участка рестрикции двух различных рестрик-таз нс могут совпасть.
* 6. Необходимое условие интсрвальности графа G заключается в гом, чтобы любой цикл в графе G, содержащий четыре и более вершин, имел хорду, то есть ребро соединяющее две непоследовательные вершипы, принадлежащие этому циклу. Докажите, что это условие верно.
7.	Покажите, что условие в упражнении 6 не является достаточным.
8.	Докажите, что интервальный граф, в котором никакой интервал полностью нс содержится в любом другом интервале этого графа, тождествен интервальному графу, в котором все интервалы имеют одинаковую длину.
9.	Выполните алгоритм СПЕ из раздела 5.3 на матрице входов из табл. 5.5 и получите такую перестановку столбцов, чтобы в каждой строке все единицы были последовательными.
Таблица 5.5. Бинарная матрица входов для упражнения 9
	12 3 4	5 6	7 8 9	10
1	0 10 0	0 0	0 0 0	0
2	110 1	0 1	I 1 I	1
3	10 0 0	0 0	0 1 0	0
4	0 10 0	0 I	0 0 1	0
5	0 0 0 1	0 1	I 0 1	0
6	0 10 1	0 1	1 0 1	0
7	10 0 1	1 0	1 1 0	1
8	10 10	1 0	0 0 0	0
9	0 10 1	0 1	1 0 I	0
10	0 10 0	0 0	0 0 1	0
10.	Охарактеризуйте бинарные матрицы, обладающие СПЕ как для строк, гак и для столбцов.
256
Глава 5
**11. Охарактеризуйте интервальные графы, опираясь на СПЕ. То сеть, имея граф G, предложите такую бинарную матрицу М, соответствующую графу G, чтобы граф G был интервальным графом тогда и только тогда, когда матрица М обладает СПЕ.
* 12. Используя ответ к упражнению 11, постройте эффективный алгоритм распознавания интервальных графов.
13.	Докажите, что в алгоритме СПЕ из раздела 5.3 соотношения пребываний между множеством компонента /3 и множествами компонента а остаются теми же самыми для всех множеств компонента /3. Это разовое доказательство; доказательство для одного примера было дано в тексте.
14.	Докажите, что граф Сд/, определенный в разделе 5.3, является ациклическим.
15.	Постройте модель минимизации промежутков в строках, краткое описание которой приведено в конце раздела 5.4.1.
16.	Докажите НП-полноту варианта с принятием решений для задачи получения такой перестановки столбцов в бинарной матрице, при которой общее число блоков последовательных единиц было бы минимальным. Подсказка: Выведите этот вариант из задачи о Гамильтоновом пути.
17.	Для решения задачи на графе, изображенном на рис. 5.10, постройте алгоритм жадного коммивояжера, принцип работы которого кратко изложен в конце раздела 5.4.3.
18.	Теоретические и практические исследования показывают, что задачу коммивояжера решать немного легче, когда расстояния подчиняются ограничениям, приведенным в разделе 3.6.1. Подчиняется ли этим ограничениям Хеммингово расстояние?
о 19. Реакции гибридизации иногда дают неопределенный результат: данный зонд может гибридизироваться либо не гибридизироваться специфичным клоном. Сделайте допущение, что результат каждой реакции представлен вещественным числом между 0 и I, которое показывает степень достоверности положительного результата гибридизации. Предложите алгоритм поиска правильной перестановки зондов, использующий эти данные в качестве входа.
** 20. Предложите алгоритм составления карт гибридизации, основанный на эвристике метода решения задачи коммивояжера путем поиска минимального остовного дерева. Описание этой эвристики см., например, в [152].
21.	Иногда при составлении карт гибридизации мы имеем информацию, что некоторые зонды гибридизируются в концах клонов, и мы знаем
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
257
которых именно Какая матрица следует из этой информации9 Как бы вы переформулировали задачу картирования9 Облегчает ли подобная информация решение этой задачи?
22.	Предложите эвристику для объединения клонов которые были неправильно отделены эвристикой отсева химер, описанной в разделе 5.5.1. Предположим, что вашу эвристику будут использовать на стадии заключительной обработки; то есть на ее вход будет поступать возможный порядок зондов, полученный на предыдущем этапе.
23.	В эвристике поиска хорошего порядка зондов, представленной в разделе 5.5 2, покажите, каким образом выбор плохого центрального расщепителя приводит к помещению другого расщепителя в неправильную позицию в упорядочении.
24.	Сборка фрагментов и составление карт гибридизации — однотипные задачи. Любой ли из методов главы 4 применим к составлению карт гибридизации?
25.	Одна из главных организаций, работающих над составлением физической карты генома человека, — «Уайтхедовский институт биомедицинских исследований» при поддержке «Массачусетского технологического института». Посетите его страницу по веб-адрссу http://www-genonie.wi.niit.edu/ и узнайте о текущем состоянии проекта «Геном человека»8.
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ
Карп [111] приводит хороший краткий обзор проблем картирования. Неплохой обзор составления рестрикционных карт был представлен Лсн-дером [119] В той же статье Лендер описал алгоритмы составления карт сцепления генетических признаков, которые используют данные, основанные на важных генетических маркерах, известных как полиморфизмы длин рестриктов (ПДР); эту тему мы не включили в материал книги.
Помимо других ученых, картирование с двойным перевариванием изучали Голдштейн и Уотермен [73], а также Шмитт и Уотермсн [169]. Доказательство НП-полноты задачи с двойным перевариванием взято из [73]. В [169] показано, что число решений этой задачи может увеличиваться в экспоненциальной зависимости от длины целевой ДНК В этой статье небольшие надежды возлагаются на общую методику, основанную на классах эквивалентности фрагментов, но эта надежда, к сожалению, не оправ
8 Проект завершен. Прим ред.
258
Глава 5
далась в ходе масштабного исследования, проведенного Певзнером [160], который в конечном итоге пришел к выводу, что предпочтение следует отдавать подходу с множественным перевариванием. Задача с частичным перевариванием была изучена Скиеной и Сандарамом [174], предложившими для ее решения алгоритм метода ветвей и границ. Кроме того, авторы приводят многообещающие экспериментальные результаты применения этого алгоритма.
Уотермен и Григгс [200] представляют алгоритм для следующей задачи из класса задач составления рестрикционных карт. Целевую ДНК независимо переваривают двумя ферментами. Затем получают информацию о перекрытии между фрагментами каждого переваривания. Задача состоит в том, чтобы с помощью этой информации определить порядок участков рестрикции.
Анализ вычислительной сложности задач составления физических карт представлен в [72; 59; 75]. На этих статьях основан раздел 5.2.2, и, кроме того, они содержат доказательства НП-полноты, на которые мы ссылаемся в том же разделе. Каплан, Шамир и Тарджан [ 108] представляют алгоритм для следующей задачи, связанной с составлением физических карт. Необходимо преобразовать входной граф в собственный интервальный граф, добавляя в него как можно меньше ребер. Собственный интервальный граф — это граф, в котором никакой интервал полностью не содержит другой (то есть граф, в котором все интервалы имеют равную длину). Авторы представляют алгоритм с линейным временем счета, если максимальное число ребер, которые будут добавлены, фиксировано и равно k.
Алгоритм для задачи с последовательными единицами, представленный в разделе 5.3, взят из работы Фулкерсона и Гросса [67]. Бутом и Лю-эксром [27] был представлен намного более сложный алгоритм. Его время счета равно О(п + т + г) (где г — общее число единиц в матрице) и он компактным способом кодирует все возможные решения. Однако этот алгоритм оказался довольно громоздким и поэтому были сделаны попытки найти лучшие альтернативы. См., например, работы Сю [97], а также Мсй-даниса и Мунуеры [136].
Картирование посредством гибридизации уникальными зондами было изучено Гринбергом и Истрейлом [78; 79], а также Ализаде и corp. [9]. Статья [79] содержит превосходное описание многих вопросов, касающихся этой задачи, и нескольких алгоритмов ее решения. Материал раздела 5.4.3 был взят из этой статьи, и раздел 5.2.4 также во многом основан на ней Множество других методов описано в [9], и эвристики из раздела 5.5 были взяты из этой статьи. Григорьев, Мотт и Лерах [80] также описывают эвристику для обнаружения химерных клонов. Ализаде и сотр. [8] изучал кар
БИБЛИОГРАФИЧЕСКИЕ ПРИМЕЧАНИЯ	259
тирование посредством гибридизации нсуникальными зондами; раздел 5.4 основан главным образом на этой статье. Модель Пуассоновского распределения клонов была взята из статьи Лендера и Уотермена [120]; та же самая модель была представлена в разделе 4.1.2 при описании темы покрытия. Эту модель используют также в проектах картирования для определения числа клонов, необходимого для получения желаемого покрытия.
Зёдерлунд и Бурке [177] описывают пакет программ с развитым графическим интерфейсом, разработанный для составления физических карт, и в той же статье упоминают программное обеспечение для автоматической генерации контрольных задач.
Глава 6
ФИЛОГЕНЕТИЧЕСКИЕ ДЕРЕВЬЯ
В этой главе мы описываем задачу восстановления филогенетических деревьев. Это общая задача биологии. Например, в молекулярной биологии она помогает понять эволюционные связи между белками. Здесь мы представляем модели и алгоритмы для двух основных типов входных данных: признаков и расстояний.
Современная наука показала, что все виды организмов, живущих на земле, подвергаются медленному процессу изменения с течением времени, измеримом в геологических периодах. Мы называем этот процесс эволюцией. Одна из важнейших задач биологии состоит в том, чтобы объяснить эволюционную историю современных видов и, в частности, то, как живущие сегодня виды связаны друг с другом через общих предков. Обычно это делают путем построения деревьев, листья которых представляют современные виды, а внутренние узлы — их гипотетических предков. Такие деревья называют филогенетическими. Пример филогенетического дерева показан на рис. 6.1. Согласно этому дереву человек и шимпанзе генетически ближе друг к другу, чем ко всем остальным приматам, представленным в дереве Это означает, что у них есть общий предок, который нс является предком остальных приматов. Данное дерево показывает подобную родственную связь также между гиббонами и сиамангами (черными гиббонами).
Проблема построения филогенетического дерева заключается в том, что мы, как правило, не располагаем достаточными данными об отдаленных предках современных видов; и даже если бы мы обладали такой информацией, то все равно мы не могли бы быть уверены на 100 %, ч го данная окаменелость принадлежит виду, который действительно является предком двух или более современных видов. Поэтому эволюционную историю современных организмов мы должны вывести посредством умозакчючений и восстановить их филогенетическое дерево, обычно используя в качестве исходных данных сравнения между современными видами. По этой причине дерево, показанное на рис. 6.1, не обязательно истинное филогенетическое дерево приматов, а всего лишь гипотеза.
ФИЛОГЕНЕТИЧЕСКИЕ ДЕРЕВЬЯ
261
Филогенетические деревья, или филогении, были предложены еще в XIX веке для всех чипов групп организмов. Методы, используемые вплоть до 1950-х гг., как правило, были основаны лишь на опыте и интуиции ученых. Постепенно разрабатывались математические модели и их включали в численные методы восстановления филогенетической истории видов. К сегодняшнему дню образовался целый «культурный слой» литературы по математике и теории алгоритмов, описывающей различные методы восстановления филогений. Созданы также пакеты программ, предлагающие ученым различные средства алгоритмического построения филогенетических деревьев.
сиаманг
гиббон орангутанг горилла
человек шимпанзе
Рис. 6.1. Филогенетическое дерево некоторых приматов
Цель этой главы никоим образом не заключается в описании вычислительных методов восстановления филогений; для этого потребовалась бы целая книга. Наша цель, скорее, состоит в изучении некоторых задач из этой области, поддающихся алгоритмическому решению. Читатель должен знать, что это очень узкая и тенденциозная методика, учитывая объем и разнообразие литературы по этой теме. Указатели на более общие труды даны в библиографических примечаниях в конце этой главы.
В эволюционной биологии мы можем строить филогенетические деревья для видов, популяций, родов или других таксономических категорий. (Таксономия «наука о классификации». Термин численная таксономия употребляют при описании совокупности численных методов, используе
262
Глава 6
мых для классификации любого вида. Тему этой главы можно рассматривать как подобласть численной таксономии.) Поскольку нуклеиновые кислоты и белки тоже эволюционируют, мы можем так же строить филогении и для них, что объясняет, почему молекулярные биологи тоже интересуются методами восстановления филогенетических деревьев. Чтобы ограничить представленный здесь материал рамками общего, насколько это возможно, описания, для обозначения молекул или организмов, филогению которых мы восстанавливаем, мы будем употреблять термин объект.
Вспомним определение деревьев из раздела 2.2. Дерево это неориентированный ациклический связный граф. Мы проводим различие между его внешними узлами, или листьями, и внутренними умами. Листья имеют степень один, тогда как степень внутренних узлов всегда больше единицы. К листьям мы приписываем исследуемые объекты и таким образом можем сказать, что лист помечен объектом или множеством объектов.
Ученых интересуют два главных вопроса касательно филогенетических деревьев. Первый вопрос — их топология, то есть структура связей внутренних узлов между собой и с листьями. (Некоторые авторы используют термин схема ветвления.') Другой важный вопрос — расстояние между парами узлов, которое может быть определено путем взвешивания ребер дерева. Это расстояние — оценка эволюционного расстояния между узлами. В зависимости от многих допущений, которые мы нс будем обсуждать, расстояние между внутренним узлом (предковый объект) и листом (современный объект) может быть интерпретировано как оценка времени, потребовавшегося для эволюции объекта-предка в современный объект. Но читатель должен знать, что в общем случае эволюционное расстояние нс эквивалентно времени, затраченному на соответствующее эволюционное событие.
Еще одна важная характеристика филогенетическою дерева наличие или отсутствие корня. Корневое дерево подразумевает родственные связи между внутренними узлами. Однако во многих задачах, которые нам предстоит изучить, входные данные содержат недостаточно информации для определения корня; в подобных случаях восстановленное дерево будет некорневым.
Мы упомянули, что филогении восстанавливают на основании сравнений между современными объектами. Входные данные для восстановления филогений мы можем классифицировать на две основные категории:
1. Дискретные признаки например формы клюва, числа пальцев, присутствия или отсутствия в молекуле участка рестрикции и т. п. Каждый признак может иметь конечное число состояний. Данные относительно этих
6.1. СОСТОЯНИЯ ПРИЗНАКОВ
263
признаков помещают в матрицу размером п х т (где п — объекты, т — признаки), которую мы называем матрицей состояний признаков.
2. Численные данные сравнений, или расстояния между объектами. Полученную матрицу называют матрицей расстояний.
Обе категории данных ведут к различным методам восстановления филогенетических деревьев. Одно существенное различие между этими двумя категориями состоит в том, что матрицы состояний признаков, как правило, не квадратные, так как число объектов не обязательно должно быть равно числу признаков. С другой стороны, матрицы расстояний представляют собой треугольные матрицы, потому что мы учитываем расстояние каждой пары объектов, а эти расстояния являются симметричными. В последующих разделах мы представляем типичные алгоритмы, разработанные для некоторых из этих методов. Известна также третья категория, непрерывных признаков, но ее мы не будем рассматривать.
6.1.	СОСТОЯНИЯ ПРИЗНАКОВ И ЗАДАЧА
О СОВЕРШЕННОЙ ФИЛОГЕНИИ
Мы начинаем этот раздел с некоторых общих замечаний касательно допущений о признаках, а также с объяснения смысла приписывания состояний к внутренним узлам дерева.
Основное допущение относительно признаков — несколько очевидное: мы допускаем что рассматриваемые признаки «значимы» для восстановления филогенетических деревьев. Задача определения значимых признаков и проверки того, что выбранные признаки действительно являются значимыми согласно выбранному критерию, в значительной степени возложена на ученого, или «пользователя) этого дерева. Тем нс менее, мы кратко упоминаем два допущения, которые лежат в основе всех методов восстановления филогенетических деревьев по признакам объектов.
Во-первых, мы допускаем, что признаки могут наследоваться независимо друг от друга; это ключевое допущение для всех алгоритмов, которые мы рассмотрим в этой главе. Во-вторых, мы примем допущение о том, что все наблюдаемые состояния данного признака должны были развиться из одного «дикого состояния» ближайшего общего предка изучаемых объектов. Признаки, которые подчиняются этому допущению, называют гомологичными. Оно так же важно, когда в качестве объектов мы рассматриваем биологические последовательности. В подобных случаях признаком будет позиция в последовательности, а его состояниями, при исследовании ДНК,
264
Глава 6
будут основания А, Т, С и G. Если мы сравниваем позицию, скажем, 132 в последовательности s с позицией 722 в последовательности I, то мы должны удостовериться в том, что эти две позиции наследовали свое теперешнее состояние из той же самой позиции в последовательности предка.
Вспомним, что внутренними узлами дерева представлены гипотетические предковые объекты. Описываемые нами алгоритмы присваивают определенные состояния этим узлам, но множество состояний внутреннего узла не обязательно имеет биологическое значение. Под этим мы подразумеваем, что интерпретация состояний внутренних узлов не должна восприниматься как обратное предсказание особенностей предковых объектов; главная цель всегда состоит в классификации современных объектов на группы, а восстановление предковых объектов — лишь средство, необходимое для достижения этой цели. Тем не менее, присваивая состояния внутренним узлам, мы должны быть внимательны, чтобы получить как можно лучшее приближение к истинному дереву.
Сделав эти вводные замечания, мы переходим к формальному определению матрицы состояний признаков. Матрицу состояний признаков мы определяем как матрицу Men строками (объекты) и т столбцами (признаки). Таким образом, элемент Л/г) обозначает состояние признака j объекта i матрицы. Один признак может иметь самое большее г состояний, и состояния обозначают неотрицательными целыми числами. Строки этой матрицы представляют собой векторы состояний объектов. Поскольку мы будем присваивать состояния также и внутренним узлам дерева, мы скажем также, что внутренним узлам присвоены векторы состояний. Пример матрицы состояний признаков представлен в табл. 6.1.
При попытке восстановить филогению из матрицы состояний признаков мы сталкиваемся с некоторыми трудностями. Первая трудность возникает, когда два или более объектов имеют одинаковое состояние для того же самого признака. Почти все методы восстановления филогений основаны на допущении о том, что объекты, которые имеют некоторое общее состояние,
Таблица 6.1. Матрица состояний признаков
	Признак
Объект	Cl С2 Сз С4 С5
А	110 0 0
В	0 0 10 1
С	110 0 1
D	0 1110
Е	110 0 1
6.1. СОСТОЯНИЯ ПРИЗНАКОВ
265
расположены генетически ближе друг к другу, чем объекты, не обладающие таким свойством. Однако существует возможность того, что два объекта будут иметь общее состояние, не будучи генетически близкими. Пример данного явления — наличие крыльев у летучих мышей и птиц. Такие явления называют схождением (конвергенцией) или параллельной эволюцией. В природе такие случаи весьма редки; поэтому при формулировании задач восстановления филогенетических деревьев это препятствие мы будем обходить следующим образом: будем считать, что события схождения вовсе не должны случиться, или же их число минимально.
Вторая трудность имеет отношение к взаимосвязи различных состояний одного признака. Иллюстрируем эту проблему на примере матрицы из табл. 6.1.11редположим, что объекты А и В эволюционировали от предка X. Какое состояние признака су мы должны присвоить объекту X? Известно, что у объекта A ci = 1, а у объекта В с± = 0. Если мы присваиваем состояние ci = 0 объекту X, то мы говорим, что 0 — унаследованное состояние, а 1 — приобретенное состояние признака. Допустим, что мы сделали такой выбор, и далее предположим, что объекты С и D имеют предковый объект Y 0 X. Далее допустим, что мы приняли состояние признака С] объекта Y равным 1. В этом случае объект D показывает возврат признака С] к дикому состоянию 0. Поскольку в данном случае признаки являются бинарными, мы могли бы интерпретировать эту ситуацию как приобретение и потерю признака. То есть объект А приобрел новый (относительно своего предка X) признак, тогда как объект D погерял признак своего предка Y. Так же, как и схождение, возврат в природе встречается весьма редко. Поэтому проблему возврата мы будем решать таким же образом, как и трудности, связанные с событиями схождения: мы потребуем, чтобы события возврата не происходили или чтобы их число было минимально. Интересно, что иногда заранее не известно, какое состояние является унаследованным, а какое — приобретенным. Если мы не знаем этого, то мы должны будем самостоятельно классифицировать состояния и затем придерживаться этого выбора, чтобы игнорировать или минимизировать события возврата.
В предыдущем примере мы рассматривали бинарные признаки, однако в принципе один признак может иметь г состояний, поэтому отношения между признаками намного сложнее. В зависимости от того, как много нам известно об этих отношениях, признаки могут быть классифицированы на упорядоченные и неупорядоченные. Для неупорядоченного признака мы не делаем никаких допущений о способе изменения его состояний; то есть каждое состояние может перейти в любое другое. В случае упорядоченных признаков известна дополнительная информация. Например, данный признак может иметь следующий линейный порядок взаимного перехода
266
Глава 6
четырех состояний: 3 «-» 1 «-» 4 «-» 2. Это означает, кроме всего прочего, что в восстановленном дереве состояние 3 никоим образом не должно изменяться непосредственно в состояние 4; состояние 1 должно всегда быть промежуточным между ними. Другими словами, если существует узел с состоянием 3 у данного признака, то не должно быть ни одного ребра, связывающего его с другим узлом с состоянием 4. Признаки могут быть также частично упорядоченными, когда известно дерево вывода, которое показывает, каким образом состояния переходят из одного в другое. Обратите внимание, что даже в случае упорядоченных признаков мы ничего не знаем о направлении изменения состояний; признаки, для которых известно направление изменения состояний, называют ориентированными. В литературе можно встретить также термины качественные признаки (неупорядоченные) и кладистические признаки (упорядоченные). Ориентированные признаки называют также полярными. Интуиция подсказывает нам, что ориентированные признаки несут в себе намного больше информации о порядке построения филогении, и эти соображения будут полезны в понимании некоторых выводов о вычислительной сложности приведенных ниже задач.
Если мы хотим избежать как схождения, так и возврата признаков, то, согласно приведенному выше анализу, искомое дерево Т должно обладать следующим свойством: для каждого состояния s каждого признака с множество всех узлов и (листья и внутренние узлы), для которых признак с имеет состояние s, должно формировать поддерево в дереве Т (то есть связный подграф дерева Т). Это означает, что ребро е, ведущее к лому поддереву, однозначно ассоциировано с переходом от некоторого состояния w к состоянию s. Филогения, обладающая этим свойством, есть совершенная филогения. Теперь мы готовы сформулировать основную задачу восстановления филогении по матрицам состояний признаков. Эта задача известна как задача о совершенной филогении'.
Задача: Совершенная филогения
ПРИМЕР: Множество О, содержащее п объектов, множество С из m признаков, где каждый признак имеет самое большее г состояний (п, m и г — положительные целые числа).
ВОПРОС: Допускает ли множество О совершенную филогению?
Если для матрицы из табл. 6.1 принять 0 за унаследованное, а 1 — за приобретенное состояние признаков, то совершенная филогения для них не существует, как будет показано в следующем разделе. Для матрицы из табл. 6.2 совершенная филогения существует и представлена на рис. 6.2. Признак, помечающий ребро дерева, показывает, что переход от состояния 0 к состоянию 1 проходит именно по этому ребру, так что поддерево,
6.1. СОСТОЯНИЯ ПРИЗНАКОВ
267
растущее из этого ребра, содержит все (и никакие другие) объекты, у которых состояние этого признака равно 1.
Таблица 6.2. Матрица состояний признаков
	Признак
Объект	Cl С2 Сз С4 С5 Сб
А	0 0 0 1	10
В	1	10 0 0 0
С	0 0 0 1	1	1
D	10 10 0 0
Е	0 0 0 10 0
Всякий раз, когда множество объектов, определенных матрицей состояний признаков, допускает совершенную филогению, мы говорим, что определяющие признаки совместимы. Позже данное понятие совместимости будет уточнено для частных случаев задачи о совершенной филогении.
Рис. 6.2. Филогения, восстановленная по матрице из табл. 6.2. Ребра, отражающие переходы состояний, помечены соответствующими признаками
268
Глава 6
Сформулировав задачу, мы хотели бы задать следующий вопрос: Имеется ли эффективный алгоритм для ее решения? Через мгновение мы ответим на него, но сначала получим некоторое представление относительно того, сколько различных деревьев мы можем построить для п объектов. Предположим, что мы строим только некорневые бинарные деревья. Вспомним, что листья наших деревьев представляют объекты; следовательно, важно точно знать, который объект соответствует какому листу. Для трех объектов возможно построить только одно дерево, представленное на рис. 6.3. Для четырех объектов существует три возможных дерева, как видно на рис. 6.4. Можно показать (см. упражнение 2), что для п объектов существует И’,' з(2г — 5) возможных деревьев. Эта функция растет быстрее п!, что исключает любой алгоритм, основанный на методе поиска совершенной филогении из множества возможных деревьев. Для этой задачи мы хотели бы построить такой алгоритм, чтобы время его счета было пропорционально многочлену с аргументами п, т и г.
Рис. 6.3. Единственное дерево для трех объектов
Рис. 6.4. Три возможных дерева для четырех объектов
Оказывается, что вычислительная трудность задачи о совершенной филогении зависит от характера самих признаков. Если они неориентированные, то мы имеем плохие новости: задача НП-полная. Но когда признаки
6.2 СОСТОЯНИЯ БИНАРНЫХ ПРИЗНАКОВ
269
упорядочены, эта задача может быть решена эффективно. Опираясь на эти два факта, мы продолжаем изучать, уже подробнее, некоторые частные варианты задачи, которые представляют серию алгоритмических решений, использующих матрицы состояний признаков.
6.2.	СОСТОЯНИЯ БИНАРНЫХ ПРИЗНАКОВ
Сначала мы исследуем частный случай задачи о совершенной филогении, в котором признаки являются бинарными (например, признаки из табл. 6.1 и 6.2). Заметим, что в данном случае различие между упорядоченными и неупорядоченными признаками зависит от того, ориентированы эти признаки или нет. Это означает, что если мы зиаем, что состояние 0 данного признака унаследовано, а 1 - приобретено (или наоборот), то этот признак упорядоченный; в противном случае он неупорядоченный. Как мы увидим, задача о совершенной филогении бинарных признаков (упорядоченных или неупорядоченных) может быть решена эффективно; в этом разделе мы описываем алгоритм, который находит решение за время О(пт)
Упомянутый алгоритм мы представляем в виде двух отдельных частей-стадий. (На практике эти части могут быть объединены, но для большей наглядности такое разделение удобнее.) На первой стадии алгоритм решает, допускает ли матрица входов Л/ совершенную филогению. Если ответ положителен, го на второй стадии алгоритм строит одну возможную филогению.
В представленном здесь алгори1ме мы принимаем состояние 0 за унаследованное, а состояние 1 — за приобретенное. Позже мы увидим, как можно опустить это ограничение Учтите, что поскольку мы имеем дело с ориентированными бинарными признаками, корневое дерево Т, которое является совершенной филогенией для матрицы входов Л/, будет обладать следующим свойством, упомянутым в предыдущем разделе; каждому признаку в матрице входов Л/ соответствует ребро в дереве Т, и это ребро означает переход этого признака из состояния 0 в состояние 1. Такие ребра будут помечены соответствующими им признаками. К корню всегда приписан вектор состояний признаков (0.0,... ,0). Это означает, что когда мы проходим путь от объекта г в некотором листе к корню дерева, метки ребер, пройденных на этом пути, соответствуют признакам, которые у объекта г имеют состояние 1. (См. рис. 6 2)
В рассмотренном нами частном случае есть очень простое необходимое и достаточное условие, которое позволяет нам сказать, допускает ли данная матрица М совершенную филогению. Прежде чем сформулировать это условие, необходимо дать несколько новых определений
270
Глава 6
Каждый столбец j матрицы М - признак. Таким образом, мы используем без каких-либо смысловых различий термины столбец и признак. Каждая строка i матрицы Л/ — объект, так что мы считаем термины строка и объект равнозначными.
Определение 6.1. Для каждого столбца j матрицы Л/, iiycib Oj — множество объектов, у которых состояние признака j равно 1. Пусть Oj — множество объектов, у которых состояние признака j равно 0.
Теперь сформулируем вышеупомянутое «простое условие»:
Лемма 6.1. Бинарная матрица М допускает совершенную филогению тогда и только тогда, когда для каждой пары признаков i и j множества Ог и Oj не пересекаются или одно из них содержит в себе другое.
Доказательство. Допустим, что матрица М допускает совершенную филогению. Поскольку матрица М является бинарной, мы знаем, что с каждым признаком г мы можем однозначно ассоциировать ребро (и, о) в дереве. Болес того, поддерево с корнем v (при допущении, что он глубочайший из узлов пары u,v) содержит все узлы, имеющие состояние 1 у признака г; а все узлы, имеющие состояние 0 у признака г. не принадлежат этому поддереву. Предположим теперь, что существуют такие три объекта А, В и С, что А.В е С Ог и В, С е Oj, А Oj. Это означает, что, судя по признаку г объекты А и В принадлежат одному и тому же поддереву, а объект С ему не принадлежит. Однако, согласно признаку j, объекты В и С принадлежат одному поддереву, что является противоречием.
Теперь предположим, что все пары столбцов матрицы Л/ удовлетворяют условию леммы. Покажем индуктивно, как строить совершенное корневое филогенетическое дерево. Предположим, что мы имеем только один признак, например 1. Этот признак разбивает объекты на два множества: А = О\ и В = 01. Создадим корень дерева и затем узел а для множества А и узел Ь для множества В. Соединим узел а с корнем посредством ребра, помеченного признаком 1. Соединим узел Ь с корнем с помощью ребра без метки. Наконец, в качестве заключительного шага мы расщепляем каждого сына корня на столько листьев, сколько к этому сыну приписано объектов. Ясно, что созданное таким образом дерево представляет собой совершенную филогению; это наш основной случай. Теперь предположим, что мы построили дерево Т для к признаков, но нс выполнили заключительный шаг (то есть на дереве нет листьев; узлы по-прежнему содержат множества объектов) и хотим обработать признак k + 1. Этот признак также индуцирует разбиение множества объектов, благодаря чему мы должны суметь получить дерево Т' из дерева Т. И мы, очевидно, сумеем, поскольку
6.2. СОСТОЯНИЯ БИНАРНЫХ ПРИЗНАКОВ
271
разбиение, индуцированное признаком к + 1, разделяет объекты, принадлежащие одному узлу; в противном случае мы были бы вынуждены пометить два ребра признаком к + 1 и конечная филогения не была бы совершенной. Но такая ситуация невозможна. Предположим обратное: признак к + 1 разделяет объекты, принадлежащие узлам а и Ъ. Поскольку эти узлы различные, то должен существовать некоторый признак г, который развел бы их по разным узлам. Это происходит при О, П Ok+i 0, потому что множеству Ог принадлежат либо объекты узла а, либо объекты узла Ь. Но при этом О, £ O*:+i и Ог, поскольку либо объекты узла а, либо объекты узла Ь не содержатся во множестве О,. Но это противоречило бы нашему индуктивному предположению, и, значит, лемма доказана.	
Из этой леммы легко видеть, почему матрица состояний признаков из табл. 6.1 не допускает совершенную филогению: столбцы (признаки) ci и eg нс удовлетворяют условию леммы. Мы говорим, что такие признаки не совместимы. Здесь понятие совместимости признаков может быть уточнено и оно выражает всего лишь альтернативную формулировку леммы 6 I множество бинарных ориентированных признаков совместимо тогда и только тогда, когда они попарно совместимы. В формулировке леммы попарная совместимость признаков определена взаимосвязью множеств объектов.
Было упомянуто, что мы представим алгоритм для бинарных признаков, разделенный на две стадии. На первой стадии алгоритм решает, допускает ли матрица совершенную филогению, а на второй строит ее, если это возможно Лемма 6.1 уже дает нам алгоритм для стадии решения: нсобходи мо последовательно оценивать каждый столбец матрицы переходов и проверять, совместим ли он со всеми остальными столбцами матрицы. Каждая такая проверка занимает время О(п), а число таких проверок равно О(т2), что даст алгоритм с временем счета О(пт2). Из доказательства леммы также возможно развить алгоритм для стадии построения дерева, с теми же границами времени. Наша цель, однако, состоит в том, чтобы представить алгоритм с временем счета O(nm).
Но как достичь этой цели9 На стадии решения описанный выше алгоритм при проверке каждого нового столбца просматривает все остальные сто