ДНК-компьютер. Новая парадигма вычислений.
Texts in Theoretical Computer Science An EATCS Series
Editors: W. Brauer, ...
214 downloads
268 Views
3MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ДНК-компьютер. Новая парадигма вычислений.
Texts in Theoretical Computer Science An EATCS Series
Editors: W. Brauer, G. Rozenberg, A. Salomaa, G. Paun, G. Rozenberg, A. Salomaa
DNA Computing New Computing Paradigms
With 76 Figures
Berlin • Heidelberg • New York • Bacelona • Budapest • Hong Kong • London • Milan • Paris • Singapore • Tokyo
Г. Паун, Г. Розенберг, А. Саломаа
ДНК-компьютер. Новая парадигма вычислений
Перевод с английского Д. С. Ананичева, И. С. Киселевой, О. Б. Финогеновой, под редакцией М. В. Волкова.
Москва «Мир» 2003
УДК 575 ББК 22.19+28.070 П21 Паун Г., Розенберг Г., Саломаа А. ДНК-компьютер. Новая парадигма вычислений: Пер. с англ. — М.:Мир, 2003.—528с., 76 ил. ISBN 5-03-003480-3 Первая в мировой литературе книга по ДНК-вычислениям, написанная авторитетнейшими европейскими специалистами в области компьютерных наук; последний из авторов знаком читателям по переводам его монографий «Жемчужины теории формальных языков» («Мир», 1986) и «Криптография с открытым ключом» («Мир», 1996). Авторы раскрывают новое перспективное направление на стыке компьютерных наук и молекулярной биологии — двух дисциплин, претендующих на право считаться главной наукой XXI века. В первой части книги на доступном уровне изложены начала генетической инженерии, обсуждены экспериментальные и теоретические основы ДНК-вычислений. Вторая часть книги носит более специальный характер и содержит новые результаты теории формальных языков, связанные с моделированием реальных процессов, происходящих с молекулами ДНК в живых клетках. Для специалистов по дискретной математике и компьютерным наукам, для молекулярных биологов и биохимиков, для аспирантов и студентов университетов. УДК 575 ББК 22.19+28.070
Издание осуществлено при финансовой поддержке Российского фонда фундаментальных исследований по проекту № 01-01-14047 Редакция литературы по математическим наукам Translation from the English language edition: DNA Computing. New Computing Paradigms by Gh. P˘ aun. G. Rozenberg, A. Salomaa c Springer-Verlag Berlin Heidelberg, 1998 Copyright Springer-Verlag is a company in the Bertelsmann Springer publishing group All Rights Reserved c перевод на русский язык, «Мир», 2004 ISBN 5-03-003480-3
ISBN 3-540-64196-3 (англ.)
От редактора перевода Мысль о том, что живая клетка, выполняя свои функции, перерабатывает не только химические вещества, но и информацию, возникла в третьей четверти XX-го века, когда была раскрыта роль ДНК как носителя генетического кода. Человек уже давно использует живые клетки в качестве миниатюрных, но весьма эффективных химических фабрик (вспомним хотя бы о дрожжах). Можно ли создать из клеток столь же эффективные «фабрики вычислений»? Знаменитый опыт Эдлмана, осуществленный в 1994 г., показал, что молекулы ДНК могут решать вычислительные задачи, причем именно те, которые представляют наибольшие трудности для традиционных электронных компьютеров. С этого момента и отсчитывается короткая пока история ДНК-вычислений. Предлагаемая вниманию читателя книга — перевод первой в мировой литературе монографии по ДНК-вычислениям, созданной авторитетнейшими европейскими специалистами в области компьютерных наук: Георгом Пауном, Гжегоржем Розенбергом и Арто Саломаа. (Имя последнего хорошо известно и в нашей стране благодаря переводам двух других его монографий: «Жемчужины теории формальных языков» и «Криптография с открытым ключом».) Написанная «по горячим следам» крупными учеными, внесшими большой личный вклад в развитие теории ДНК-вычислений, книга раскрывает перед читателем совершенно новое многообещающее направление на стыке компьютерных наук и молекулярной биологии — двух дисциплин, каждая из которых не без оснований претендует на право считаться главной наукой XXI века. Книга делится на две части, первая из которых (включающая главы 1 и 2) доступна практически любому заинтересованному читателю, поскольку не предполагает никаких предварительных знаний ни в области биологии, ни в области компьютерных наук. В действительности, глава 1 представляет собой ясный и живо написанный обзор тех методов оперирования с ДНК, которые лежат в основе генетической инженерии вооб-
6
От редактора перевода
ще и ДНК-вычислений в частности. Глава 2 содержит подробное описание и весьма содержательное обсуждение экспериментальных и теоретических основ ДНК-вычислений. Вторая часть книги (главы 3–11) носит более специальный характер и адресована главным образом читателю, интересующемуся таким разделом компьютерных наук, как теория формальных языков. Здесь собрано большое число новых результатов, проясняющих возможности различных моделей ДНКвычислений, инспирированных реальными процессами, происходящими с молекулами ДНК в живых клетках. Эта часть более математизирована, и, хотя авторы приводят в главе 3 все необходимые предварительные сведения из «классической» теории формальных языков, для понимания последующих глав необходима, как минимум, определенная логическая культура. Коллектив, работавший над переводом, признателен авторам книги, проявившим большое внимание к этому проекту и активно сотрудничавшим с нами на протяжении последних трех лет. Благодаря такому сотрудничеству удалось выявить и устранить ряд неточностей, вкравшихся в оригинал. Как правило, эти поправки никак не оговорены в тексте перевода; в наибольшей степени они затрагивают главу 8. Поскольку теория и практика ДНК-вычислений находятся в стадии чрезвычайно быстрого роста, нам показалось целесообразным дополнить список литературы публикациями самых последних лет, развивающими темы, представленные в книге. Такие дополнения (никоим образом не претендующие на полноту) сделаны частью авторами, частью редактором перевода. Отметим, что обширная и постоянно пополняемая аннотированная библиография по ДНК-вычислениям доступна на сайте http://www.liacs.nl/home/pier/dna.html. Глава 1 переведена И. С. Киселевой, ей же составлен глоссарий встречающихся в книге биохимических терминов. Главы 2 и 7–11 переведены О. Б. Финогеновой, главы 3–6 — Д. С. Ананичевым. Верстка книги осуществлена А. А. Финогеновым. М. В. Волков
Предисловие к русскому переводу Перевод нашей книги на русский язык — большая честь и удовольствие для нас, и мы приветствуем наших новых читателей. Мы хотим также поблагодарить профессора М. В. Волкова и его сотрудников за работу над этим переводом. За несколько лет, прошедших после выхода нашей книги, интерес к молекулярным вычислениям и связанной с ними деятельности постоянно рос. Наряду с теоретическими работами развивалась и лабораторная техника, приспособленная к специфическим запросам практики молекулярных вычислений. В Европе, Северной Америке и Японии возникло много новых исследовательских коллективов, работающих в области молекулярных вычислений. Особенно активен Европейский консорциум по молекулярным вычислениям1 , который состоит из групп, работающих в разных странах и регулярно проводящих общие встречи. Появился и японский перевод нашей книги. Несмотря на быстрое развитие области, мы полагаем, что наша книга остается вполне актуальной. Этим она обязана тому обстоятельству, что ее материал составляют главным образом основы теории, на которых базируются дальнейшие исследования. Мы надеемся, что книга будет полезна и интересна нашим новым читателям. Георг Паун, Гжегорж Розенберг, Арто Саломаа Таррагона, Лейден и Турку, август 2001
1
См. http://www.tucs.abo.fi/EMCC
Предисловие Авторы весьма признательны многим своим друзьям и сотрудникам, вклад которых в изучение молекулярных вычислений с позиций теории автоматов и формальных языков отражен в настоящей книге. Их имена представлены в списке литературы, и мы не будем повторять их здесь. Некоторые из этих коллег прочитали предварительные версии ряда глав нашей книги и предложили ряд модификаций, способствовавших ее улучшению. За это мы благодарим Тома Хэда, Хэндрика Яна Хогебума, Винченцо Манка, Александру Матееску, Виктора Митрана, Андрея Пауна и Нике фан Фугта. Отдельной благодарности заслуживают наши друзья-биологи Ханс Кустерс и Паул Савелкоул, просвещавшие нас в ходе многочисленных дискуссий. Ану Хейнимяки нарисовала иллюстрации для введения. Мы с признательностью отмечаем квалифицированную поддержку и оперативность издательства «Шпрингер» и, прежде всего, доктора Ханса Вёсснера. Георг Паун, Гжегорж Розенберг, Арто Саломаа Лейден, июль 1998
Введение: суть молекулярных вычислений От силикона к карбону, т. е. от кремния к углероду, от микрочипов к молекулам ДНК — вот основная идея молекулярных вычислений. Органические молекулы могут перерабатывать информацию, а значит, их можно использовать как альтернативу цифровым микросхемам сегодняшних компьютеров. У современных компьютерных технологий имеются очевидные пределы миниатюризации. Уже давно осознано, что новый решительный прорыв станет возможен только при переходе на молекулярный уровень. В результате могли бы появиться компьютеры, намного меньшие тех, которые производятся по ныне существующим технологиям. Квантовые вычисления и молекулярные вычисления — вот два недавних проявления этой общей идеи. Наша книга посвящена молекулярным вычислениям.
Рис. 1. Современный компьютер.
Компьютеры имеют долгую историю. Механические устройства, предназначенные для упрощения вычислений, существовали в течение многих веков. Наиболее ранним из тех вычислительных инструментов, что сыграли важную роль в развитии цивилизации, был абак, а сегодняшний электронный компьютер (рис. 1) завоевал настолько доминирующие позиции в современном обществе, что многое в нашей теперешней жизни было бы просто невозможно без его помощи.
10
Введение
Рис. 2. Простейший ДНК-компьютер.
Рис. 3. Более сложный ДНК-компьютер.
Однако и у современных компьютеров есть свои «камни преткновения». Ввиду наличия многих непреодолимых для них задач, представляется вероятным, что долгий путь развития не закончится на компьютере, изображенном на рис. 1. В будущем мы, возможно, увидим ДНК-компьютер. В компьютере, изображенном на рис. 2, пользователю приходится выполнять все манипуляции с пробирками вручную. Более продвинутая модель изображена на рис. 3. В ней молекулярные вычисления комбинируются с электронными и большинство операций с пробирками выполняется автоматически, без вмешательства пользователя. Чарльз Беббидж, знаменитый предтеча компьютерной эры, в 1810–1820 гг. спроектировал автоматический калькулятор, «Разностную машину», а затем и более амбициозную «Аналитическую машину». Главным препятствием для реализации этих проектов стало отсутствие аккуратно обработанных дета-
Введение
11
лей, а также механических и электрических устройств, появившихся только в XX веке. Возможно, сегодня мы находимся в сходной ситуации по отношению к ДНК-компьютеру. Биохимической технике пока недостает точности, и направление ее развития не вполне адекватно специфическим запросам молекулярных вычислений. Однако весьма вероятно, что здесь период ожидания будет намного короче, чем в случае Беббиджа. Надежды на успешное будущее молекулярных вычислений основаны на двух фундаментальных феноменах. Это: (a) массированный параллелизм цепочек ДНК, (б) комплементарность Уотсона–Крика. Вкратце обсудим роль этих феноменов. (a) Большинство знаменитых «труднорешаемых» задач может быть решено путем исчерпывающего перебора всех допустимых вариантов. Непреодолимая пока трудность кроется в том, что такой перебор слишком объемен, чтобы его можно было осуществить, используя существующие технологии. Однако благодаря плотности, с которой можно хранить информацию в цепочках ДНК, и простоте, с которой можно размножать эти цепочки, исчерпывающий перебор становится реальным. Типичным примером может служить задача раскрытия шифра: в ней можно одновременно испробовать все ключи. (б) Комплементарность Уотсона–Крика — это свойство, которым природа снабдила нас «бесплатно». Когда (в идеальных условиях) возникает связь между двумя цепочками ДНК, то мы знаем, что противоположные друг другу основания комплементарны. Итак, если известна одна компонента получившейся молекулы, то известна и другая, и это не нуждается в какойлибо дополнительной проверке. Данное обстоятельство приводит к мощному инструменту вычислений, поскольку, как мы увидим позже, комплементарность выводит на сцену вычислительно универсальный язык перетасованных копий. Различным образом кодируя информацию в цепочках ДНК, подлежащих связыванию, мы способны делать далеко идущие выводы, основываясь лишь на факте, что связывание имело место.
12
Введение @ @
А
Т
@ @
А
Ц
Г
Г
Ц
А
Г
@
Т
@
Т
@
Т
Ц
Т
Г Ц Т Т @ @ @
А
Ц
Г
А
Рис. 4. Комплементарность Уотсона–Крика.
Обсудим парадигму комплементарности чуть подробней. ДНК состоит из полимерных нитей, обычно именуемых цепочками. Эти цепочки составлены из нуклеотидов, которые различаются только своими основаниями. Таких оснований четыре: А (аденин), Г (гуанин), Ц (цитозин) и Т (тимин). Хрестоматийная двойная спираль ДНК возникает при связывании двух отдельных цепочек. При образовании двойных цепочек и проявляется феномен, известный как комплементарность Уотсона–Крика. Связывание происходит за счет попарного притяжения оснований: А всегда связывается с T, а Г — с Ц. Комплементарность при образовании двойных цепочек схематически представлена на рис. 4. (В этом сжатом изложении опущены важные детали, такие, как ориентация цепочек.) Рис. 5 и 6 иллюстрируют всю важность комплементарности, показывая, в частности, разительное различие между ситуациями, когда комплементарность есть и когда ее нет. На рис. 5 пользователи ДНК-компьютера сталкиваются с безнадежной задачей отыскания попарно соответствующих цепочек в огромном ворохе одиночных нитей. Если бы ситуация действительно была бы такой, перспективы молекулярных вычислений были бы мрачны, да и теория, излагаемая в этой книге, выглядела бы довольно малопривлекательно. Но ситуация рис. 5 не отве-
Введение
13
Рис. 5. Отсутствие комплементарности.
Рис. 6. Присутствие комплементарности.
чает реальности. На деле пользователь безо всяких усилий, как показано на рис. 6, получает готовый результат после того, как соответствующие цепочки сами находят друг друга. Парадигма комплементарности и некоторые ее обобщения и модификации лежат в основе математической теории, обсуждаемой в главах 3–11 нашей книги. Главы 1 и 2 представляют собой общее введение в молекулярные вычисления, включающее введение (глава 1) в основные понятия молекулярной биологии, необходимые в этой книге. В главе 2 обсуждаются также перспективы лабораторной реализации. Например, наличие ошибок при операциях с цепочками ДНК может привести
14
Введение
к весьма серьезным погрешностям. Поэтому в конечном счете успех идеи молекулярных вычислений существенно зависит от развития адекватной лабораторной техники. Есть много оснований для изучения молекулярных вычислений и помимо надежд использовать ДНК как средство для решения задач большой вычислительной сложности. Вопервых, важно попытаться понять, как «вычисляет» сама природа (вспомним, что невероятная изощренность и эффективность живых организмов достигнута как раз посредством манипуляций с ДНК). Во-вторых, как мы увидим в последующих главах, «вычисления с ДНК» приводят к вычислительным парадигмам, весьма отличным от общепринятых в сегодняшней информатике: к новым структурам данных, к новым операциям как над новыми, так и над классическими структурами данных (строками, языками), к новым моделям вычислимости. Даже если надежда построить ДНК-компьютер не сбудется (например, из-за его чувствительности к ошибкам), возможной альтернативой могло бы стать воплощение новых вычислительных парадигм в рамках силиконовых технологий. В такого рода рассуждениях можно пойти и дальше. Классическая теоретическая информатика основана на операциях переписывания — это так для большинства моделей, базирующихся на автоматах и формальных языках. Как мы увидим, природа производит «вычисления» с молекулами ДНК с помощью операций совсем другого типа: вырезания и вклеивания, подсоединения, вставки, удаления и т. п. Мы покажем, что, используя эти операции, можно построить модели вычислений, равносильные машинам Тьюринга. Таким образом, вся теория вычислимости может быть перестроена на этой новой основе. Вопрос о практическом значении такой перестройки с точки зрения приложений пока, по-видимому, преждевременен.
Глава 1 Как устроена ДНК и как с ней работают Термин генетическая инженерия используют как общее наименование для всевозможных манипуляций с генетическим материалом. В данной книге этот термин обозначает манипуляции с ДНК и родственными ей молекулами вне живой клетки, in vitro. С помощью таких манипуляций можно выполнять различного рода вычисления. В этой главе мы приводим основные сведения о строении молекулы ДНК, а затем описываем тот «набор инструментов» для манипулирования с ДНК, который применяется в молекулярных вычислениях.
1.1
Строение ДНК
Молекула ДНК играет центральную роль в молекулярных вычислениях, а стало быть, и в данной книге. С точки зрения биохимии, где молекулы делятся на большие и малые, на полимеры и мономеры, ДНК — это полимер, составленный из мономеров, называемых дезоксирибонуклеотидами. ДНК — ключевая молекула в живой клетке, in vivo. Ее поразительная структура обеспечивает две важнейшие функции: кодирование образования белков и самоудвоение, при котором точная копия этой молекулы передается дочерним клеткам. Заглянем внутрь молекулы ДНК (ДезоксирибоНуклеиновой Кислоты) с той степенью детализации, которая будет нужна в этой книге. Как уже сказано, мономеры, входящие в ДНК, — это дезоксирибонуклеотиды. Каждый дезоксирибонуклеотид состоит из трех компонентов: сахара, фосфатной группы и азотистого основания. Сахар, входящий в ДНК, называется дезоксирибозой, что и объясняет происхождение приставки «дезоксирибо». Чтобы упростить терминологию, бу-
16
1. Как устроена ДНК и как с ней работают 50 s P 40 s 30 s 20 s 10 s
B Рис. 1.1. Схематическая структура нуклеотида.
дем использовать более короткий термин «нуклеотид» вместо «дезоксирибонуклеотид». В состав дезоксирибозы входят пять атомов углерода. Для удобства ссылок их нумеруют некоторым фиксированным образом. Поскольку углерод встречается и в основании, во избежание путаницы углеродные атомы сахара имеют номера от 10 до 50 (а не от 1 до 5). Фосфатная группа присоединена к 50 му, а основание — к 10 -му атомам углерода. В молекуле сахара имеется гидроксильная группа (ОН), присоединенная к 30 -му атому углерода. Различные нуклеотиды отличаются друг от друга только своими основаниями, которые бывают двух типов: пурины и пиримидины. В нуклеотидах присутствуют два вида пуринов: аденин и гуанин, обозначаемых соответственно А и Г, и два вида пиримидинов: цитозин и тимин, обозначаемых соответственно Ц и Т. Поскольку нуклеотиды однозначно определяются основаниями, говорят о А-, Г-, Ц- и Т-нуклеотидах в зависимости от входящего в них основания. Структура нуклеотида показана (в очень упрощенном виде) на рис. 1.1, где В — одно из четырех возможных оснований (А, Т, Ц, Г), Р — фосфатная группа, а остальное (стержень) — основа сахара (его углеродные атомы пронумерованы от 10 до 50 ).
1.1. Строение ДНК
17 O C "" bb
HN
C
CH3
O CH
CH H "" N O " " " " "
50 O
P O
O
CH2
! Oaa !! a 40 C 10 C " l , l 30 20, C
C
H
H OH
Фосфат
H
Сахар
Основание
Рис. 1.2. Строение нуклеотида с тиминовым основанием.
Для читателей, лучше знакомых с химией, рис. 1.2 дает стандартную (но все же упрощенную) картину химической структуры нуклеотида. РНК (РибоНуклеиновая Кислота) — другой полимер, играющий ключевую роль в функционировании живой клетки. Ее структура весьма близка к структуре ДНК. Мономеры РНК, называемые рибонуклеотидами, отличаются от (дезоксирибо)нуклеотидов только двумя особенностями: (1) Рибонуклеотид содержит другой сахар — рибозу, в котором в отличие от дезоксирибозы ко 20 -му атому углерода присоединена гидроксильная группа (ОН), а не водород (Н). (2) Вместо азотистого основания тимин в рибонуклеотиде встречается основание урацил, обозначаемое У. Следовательно, четыре возможных основания в РНК — это А, У, Ц, Г. Читателя может заинтересовать тот факт, что рибонуклеотид с основанием аденин (и с тремя фосфатными группами — еще одна техническая деталь, которую мы опускаем) есть не
18
1. Как устроена ДНК и как с ней работают 5r0 P
s s
5r0 P
s
s
30 s s
s
s
B
B
Рис. 1.3. Фосфодиэфирная связь.
что иное, как АТФ (аденозинтрифосфорная кислота), являющаяся основным источником энергии в живой клетке. Нуклеотиды могут соединяться двумя способами: (1) 50 -фосфатная группа одного нуклеотида и 30 -гидроксильная группа другого образуют сильную (ковалентную) фосфодиэфирную связь. Такая связь показана на рис. 1.3. Отметим, что в образовавшейся молекуле 50 -фосфатная группа одного нуклеотида и 30 -гидроксильная группа другого доступны для дальнейшего связывания. Тем самым задается направление молекулы; можно говорить о направлениях 50 −30 или 30 −50 . Феномен направленности молекул существен для понимания того, как функционирует ДНК и как с ней можно работать. Не менее важна направленность и тогда, когда, как в данной книге, такие полимерные молекулы моделируются с помощью слов. (2) Основание одного нуклеотида взаимодействует с основанием другого с образованием слабой водородной связи. При этом соблюдается такое ограничение: спариваться могут А с Т и Ц с Г; никакие другие спаривания невозможны. Этот принцип спаривания известен как принцип комплементарности Уотсона–Крика. (Джеймс Д. Уотсон и Фрэнсис Х. К. Крик расшифровали строение знаменитой двойной спирали ДНК в 1953 г. и получили Нобелевскую премию за это открытие.) Принцип комплементарности служит краеугольным камнем для понимания устройства и функционирования ДНК.
1.1. Строение ДНК
19 0
5r ,r , P 30 r r r
B1 B2
либо либо
B1 = T и B2 = A, B1 = C и B 2 = Г
r r r 30 r P r
50
Рис. 1.4. Водородная связь.
Рис. 1.4 иллюстрирует этот принцип: мы изобразили водородную связь тонкой волнистой линией, чтобы подчеркнуть, что она намного слабее фосфодиэфирной связи. В действительности А–Т спаривание приводит к образованию двух водородных связей между нуклеотидами, тогда как при Ц–Г спаривании образуются три водородные связи. Следовательно, Ц–Г спаривание сильнее, чем А–Т спаривание: для расщепления первого требуется больше энергии (например, более высокая температура), чем для расщепления второго. Чтобы отразить это различие, мы могли бы использовать две волнистые линии для пары А–Т и три волнистые линии для пары Ц–Г, но для наших рассмотрений это несущественно. Используя фосфодиэфирные связи, можно образовать одноцепочечную ДНК (рис. 1.5). Следуя стандартному соглашению, мы изображаем одноцепочечную молекулу так, чтобы нуклеотид со свободным 50 -фосфатом оказался слева, а нуклеотид со свободным 30 -гидроксильным концом — справа. Поскольку мы идентифицируем нуклеотиды по их основаниям (А-, Г-, Ц- или Т-нуклеотиды), одинарную цепочку ДНК можно закодировать последовательностью букв (словом)
20
1. Как устроена ДНК и как с ней работают 50
s
s P s
s P s s 30 s
s
s
s
s
s
s
А
Ц
Г
5s P
- 30
0
s
Рис. 1.5. Одноцепочечная ДНК.
при условии, что будет указано направление. Так, одинарная цепочка, изображенная на рис. 1.5, кодируется словом 50 -АЦГ. Используя комплементарность Уотсона–Крика, из одноцепочечной молекулы ДНК, показанной на рис. 1.5, можно образовать двухцепочечную молекулу, изображенную на рис. 1.6. В действительности водородная связь между одиночными нуклеотидами (рис. 1.4) слишком слаба для того, чтобы удержать их вместе. Стабильность связи между длинными цепочками обеспечивается кумулятивным эффектом водородных связей между комплементарными основаниями молекулы ДНК. Рис. 1.6 иллюстрирует общую схему соединения двух одноцепочечных молекул с использованием водородных связей (комплементарность Уотсона–Крика). Направления одинарных цепей в двухцепочечной молекуле противоположны: нуклеотид 50 -конца одной цепи связан с нуклеотидом 30 -конца другой. При изображении двухцепочечной молекулы (называемой также двойной) принято располагать верхнюю цепь слева направо в направлении 50 −30 , а нижнюю — слева направо в направлении 30 −50 . Таким образом, верхняя цепь на рис. 1.6 — это 50 -АЦГ, а нижняя — 30 -ТГЦ. Представление о двухцепочечной ДНК как о двух линейных цепях, связанных в соответствии с комплементарностью Уотсона–Крика, крайне упрощено, ибо в действительности в
1.1. Строение ДНК
21 50 0
5r P
r P r r r
- 30 r r P r 30 r r
r r r r r
А
Ц
Г
Т
Г
Ц
r
r
r
r r30 r P r
r r r P r
r r r P r
50
0
3 50
Рис. 1.6. Образование двойной цепочки.
молекуле ДНК две цепи закручены вокруг друг друга с образованием знаменитой двойной спирали — см. рис. 1.7. Ситуация in vivo еще сложнее, поскольку очень большая молекула ДНК должна уместиться в очень маленькой клетке (в типичной бактерии молекула ДНК в 10 000 раз длиннее самой клетки!). ДНК упакована в клетке весьма изощренным образом; в высокоорганизованных (эукариотических) клетках такая упаковка осуществляется «иерархически», в несколько стадий. Учет реальной формы ДНК имеет существенное значение при рассмотрении процессов, происходящих в живых клетках. Однако в рамках данной книги можно считать, что молекула ДНК устроена как двойная линейная цепочка. Отметим еще, что, например, бактериальная ДНК часто является кольцевой. Для возникновения кольцевой молекулы достаточно установить фосфодиэфирную связь между «первым» и «последним» нуклеотидами.
22
1. Как устроена ДНК и как с ней работают
Рис. 1.7. Двойная спираль.
Манипуляции с ДНК играют центральную роль в генетической инженерии и, в частности, в молекулярных вычислениях. Мы переходим теперь к описанию набора основных методов, используемых в различных манипуляциях такого рода. Начнем с обсуждения того, как измеряют ДНК. Измерение длины молекул ДНК. Длина одноцепочечной молекулы — это число составляющих ее нуклеотидов. Так, если молекула состоит из 12 нуклеотидов, мы говорим, что это — 12-мер (т.е. полимер, состоящий из 12 мономеров). Длина двухцепочечной молекулы (где основание каждого нуклеотида спарено с его «партнером») определяется числом пар оснований. Таким образом, если образовать двухцепочечную ДНК из одноцепочечного 12-мера, то длина двухцепочечной молекулы составляет 12 пар нуклеотидов, сокращенно 12 п.н. Если длина составляет, например, 12 000 пар нуклеотидов, то пишут, что длина равна 12 т.п.н. (где «т» означает «тысяч»). Чтобы измерять длину молекулы ДНК, используют гельэлектрофорез. Техника электрофореза основана на том факте, что молекулы ДНК несут отрицательный заряд. Поэтому если поместить их в электрическое поле, то они станут двигаться к
1.1. Строение ДНК –
отрицательный электрод
23 +
положительный электрод
Рис. 1.8. Гель, приготовленный для электрофореза.
положительному электроду. Отрицательный заряд молекулы ДНК пропорционален ее длине, но и сила, необходимая для движения молекулы, также пропорциональна ее длине. Таким образом, эти два фактора взаимно компенсируют друг друга, и в идеальном растворе все молекулы движутся с одинаковой скоростью. Вот почему для того, чтобы заставить молекулы разной длины двигаться с различной скоростью, нужен гель. Гель-электрофорез производится следующим образом. В раствор добавляют порошок гелеобразующего вещества и подогревают его. Образующийся гель заливают в прямоугольный пластиковый или стеклянный контейнер и дают ему остыть. Получается пластинка геля; в процессе остывания вдоль одной стороны контейнера помещают гребень, так что когда гель застынет и гребень будет убран, на одной стороне пластинки остается ряд мелких лунок (рис. 1.8). Теперь микроскопически малое количество раствора с молекулами ДНК, подлежащими измерению, помещают в лунки, и включают электрическое поле. Молекулы ДНК начинают продвигаться через гель к положительному электроду. Поскольку поры геля действуют как молекулярное сито, маленькие молекулы движутся через гель быстрее, чем большие, и очевидно, что группы молекул одинаковой длины движутся с одинаковой скоростью. Когда первые молекулы достигают (положительного) конца пласта, электрическое поле отключают. Ясно, что за определенный промежуток времени маленькие молекулы пройдут большее расстояние, чем длинные.
24
1. Как устроена ДНК и как с ней работают –
-
6 большие фрагменты
+
6 маленькие фрагменты
Рис. 1.9. Гель-электрофорез.
Поскольку молекулы ДНК бесцветны и, стало быть, невидимы в геле, их следует каким-либо образом пометить перед тем, как внести в гель. Имеются два основных метода для помечивания молекул ДНК: (1) Окрашивание бромистым этидием, флуоресцирующим в ультрафиолетовом свете при связывании с ДНК. Когда гель рассматривают в ультрафиолетовом свете, становятся видны яркие флуоресцирующие полосы групп фрагментов ДНК одинаковой длины (рис. 1.9). Этот метод лучше работает для двухцепочечной ДНК, так как взаимодействие бромистого этидия с молекулой ДНК обусловлено структурой двойной цепочки. (2) Прикрепление к ДНК радиоактивных маркеров. Когда на гель накладывается фотопленка, на ней проявляются полосы, соответствующие разным группам молекул ДНК. Теперь, зная расстояние, пройденное молекулой, можно рассчитать ее длину. Чаще, однако, вместо вычислений в одну из лунок помещают фрагменты, длина которых известна. Затем полосы, видимые на дорожке, идущей из этой лунки, могут быть использованы как калибровочные: разные полосы этой дорожки отвечают различным (известным) значениям длины. Расположение полос на других дорожках можно сравнить с калибровочной дорожкой, и, таким образом, определить длину молекул в этих полосках. На рис. 1.8 и 1.9 изображены несколько лунок (с соответствующими спектрами длин мо-
1.1. Строение ДНК
25
лекул), поскольку часто для сравнения нескольких образцов растворов их разгоняют вместе (при этом обычно один из растворов — калибровочный). Есть два вида геля, чаще всего применяемых при электрофорезе: агарозный и полиакриламидный. Гель-электрофорез в агарозе служит стандартным приемом при разделении крупных фрагментов (длиной более 500 оснований). Разделяющая способность геля напрямую зависит от его пористости, и в этом отношении полиакриламидный гель намного лучше: он позволяет разделять фрагменты ДНК, различающиеся по длине только на одно основание! Этот гель чаще используется при определении длины малых фрагментов ДНК. Молекулы ДНК, остающиеся в геле после электрофореза, при необходимости могут быть извлечены из него. Для этого, например, можно вырезать из геля слой с подлежащей извлечению ДНК и заморозить его (в жидком азоте). Замораживание разрушает структуру геля, так что если раствор (после оттаивания) процентрифугировать через специальный фильтр, сквозь него пройдет только ДНК. «Выуживание» известных молекул. Чтобы выудить из раствора определенные молекулы, строение которых известно (так называемые мишени), можно использовать взаимное сродство комплементарных одинарных цепочек. Если мишени представляют собой двойные, а не одинарные цепочки, то начинают с денатурации двухцепочечных молекул. Допустим, что мы хотим извлечь одноцепочечные молекулы α из раствора S, содержащего их наряду со многими другими одноцепочечными молекулами. Для этого к специальному фильтру присоединяют зонды, т. е. молекулы α, комплементарные молекуле α, и пропускают раствор S через фильтр. При этом молекулы α связываются с молекулами α, тогда как другие молекулы просто проходят через фильтр. Таким образом, мы получаем остающийся на фильтре набор двухцепочечных молекул, образованных за счет соединения α и α, и раствор S 0 , полученный из S удалением молекул α.
26
1. Как устроена ДНК и как с ней работают
Затем фильтр переносят в контейнер, где происходит денатурация двухцепочечной ДНК. Когда фильтр удаляют, остаются только молекулы-мишени. Только что описанный метод фильтрации концептуально очень прост, но сейчас применяется не так часто (поскольку существуют лучшие методы). Можно также присоединить зонды к крохотным стеклянным бусинкам и затем плотно набить этими бусинками стеклянную колонку C. Когда раствор S, содержащий молекулымишени, пропускается через C, молекулы-мишени связываются с зондами и остаются в C. Еще один способ выловить мишени — это присоединить зонды к мелким магнитным бусинкам и поместить эти бусинки в раствор S. Если такую смесь хорошенько встряхнуть, то мишени присоединяются к зондам и, следовательно, к магнитным бусинкам. Поднеся магнит к стенке стеклянного контейнера, в котором вс¨е это происходит, можно собрать все молекулымишени в одном месте, откуда их легко извлечь.
1.2
Операции над ДНК
При описании методов работы с молекулами возможны две крайности: либо похожий на словарь перечень приемов с их краткой характеристикой, либо очень детальное описание каждого приема. Мы выбрали нечто среднее между этими подходами — упрощенное описание, которое позволит ясно понять суть используемого приема. Такой стиль представляется нам наиболее подходящим для читателей данной книги. Разделение и соединение цепочек. Мы уже отмечали, что в молекуле ДНК водородные связи между комплементарными основаниями разных цепочек значительно слабее, чем фосфодиэфирные связи между последовательно расположенными друг за другом нуклеотидами одной цепочки. Это позволяет разделить две цепочки молекулы ДНК, не разрушая каждую отдельную цепочку. Один из способов разделения цепочек — это нагревание раствора ДНК до тех пор, пока ДНК не распла-
1.2. Операции над ДНК
27
вится, что означает, что цепочки ДНК отделяются одна от другой. Этот процесс называется денатурацией. Плавление ДНК происходит в диапазоне температур от 85◦ C до 95◦ C (чуть ниже точки кипения); точкой плавления ДНК называют температуру, при которой разделяется половина молекул. Если нагретый раствор охладить, разделенные цепочки снова соединятся за счет водородных связей. При этом охлаждение должно происходить медленно, чтобы соответствующие комплементарные основания успели найти друг друга. Соединение двух одинарных цепочек ДНК за счет спаривания комплементарных оснований называют ренатурацией или отжигом. Другой применяемый здесь термин — это гибридизация, хотя первоначально такой термин использовался для описания спаривания комплементарных оснований одинарных цепочек различного происхождения (например, ДНК с РНК, или ДНК с радиоактивно меченой ДНК, или цепочек ДНК, выделенных из разных организмов). Такие терминологические вольности для биологии более обычны, чем для математики. Наконец, заметим, что некоторые химикаты ускоряют денатурацию двойных цепочек ДНК. Обычно для этой цели используют формамид — в его присутствии температура плавления значительно снижается. Теперь перейдем к рассмотрению манипуляций с ДНК при помощи ферментов. Ферменты — это белки, катализирующие химические реакции в живых клетках. Они высокоспецифичны — чаще всего фермент ускоряет ровно одну химическую реакцию — и исключительно эффективны (реакции ускоряются в миллиарды раз). Без ферментов химические процессы в клетке протекали бы так медленно, что не могли бы поддерживать жизнь. Поскольку ферменты столь важны для существования клеток, природа создала множество ферментов для разнообразных изменений молекул ДНК. Их активно используют в генетической инженерии. Удлинение ДНК. Ферменты, способные добавлять нуклеотиды к существующей молекуле ДНК, называют полимеразами.
28
1. Как устроена ДНК и как с ней работают 50
30
NNN NNN 30
... ...
OH
NN NNNNNNNN 50
Рис. 1.10. Молекула ДНК с неполной верхней цепочкой.
Для их работы необходимы: (1) одноцепочечная матрица, которая определяет (в соответствии с комплементарностью Уотсона–Крика) цепочку добавляемых нуклеотидов, и (2) праймер, т.е. последовательность со свободным 30 -концом (30 -гидроксилом), присоединенная к части матрицы. Отметим, что полимераза способна наращивать цепочку только в 50 − 30 направлении (рис. 1.10). Здесь и в последующих рисунках мы изображаем ДНК разными способами, отличающимися от применявшихся выше «стерженьковых» схем. Смысл этих рисунков будет самоочевиден. Нет нужды фиксировать какое-то «каноническое» изображение ДНК, и мы всякий раз используем то представление, которое лучше всего подходит к обсуждаемой ситуации. Буква N на рис. 1.10 означает, что любой из 4 возможных нуклеотидов может находиться в позиции, обозначенной N (разумеется, при соблюдении принципа комплементарности). Полимераза последовательно наращивает 30 -конец «короткой цепочки», комплементарно дополняя последовательность нуклеотидов на матрице, при условии, что в растворе, где происходит реакция, имеется достаточное количество необходимых нуклеотидов — см. рис. 1.11. Как обычно для биологии, из этих правил есть исключения. Хотя всем полимеразам для удлинения праймера необходим свободный 30 -конец, существует несколько полимераз, которые удлиняют молекулу ДНК без матрицы. Таковой является терминальная трансфераза. Ее полезно использовать в тех случаях, когда следует добавить одноцепочечный «хвост» к обоим концам двухцепочечной молекулы — рис. 1.12.
1.2. Операции над ДНК 5
0
29 0
3
ЦГ ГA Г ЦЦT T TAЦЦT 30
5
0
50 ?? 30
ЦГ Г AA Г ЦЦT T TAЦЦT 30 50
50 ?? 30
ЦГ Г AAA Г ЦЦT T TAЦЦT 30
50
.. .
??
50
??
30
ЦГ Г AAAT Г Г A Г ЦЦT T TAЦЦT 30
50
Рис. 1.11. Действие полимеразы.
Если нам нужно создать некоторую двухцепочечную молекулу, одна цепочка (матрица) которой уже имеется, то это можно сделать, присоединив к данной цепочке праймер, а затем применив полимеразу для удлинения праймера в соответствии с матрицей. Этот синтез идет в направлении 50 − 30 — природа предпочитает это направление, поскольку и in vivo ферментативный синтез ДНК идет таким образом. Одноцепочечную молекулу с предписанной последовательностью нуклеотидов можно синтезировать химическим путем. По ряду технических причин химический синтез, присоединяющий один нуклеотид за другим к уже построенной цепочке, происходит в 30 − 50 направлении: 30 -конец первого нуклеотида
30
1. Как устроена ДНК и как с ней работают 30
50
α 30
50
терминальная трансфераза
+ Г нуклеотиды ?? 0
30
5
ГГГГГГ
α
ГГГГГГ
Рис. 1.12. Действие трансферазы.
закрепляется на твердом основании, так что на каждом последующем шаге только 50 -конец уже синтезированной цепочки свободен для фосфодиэфирной связи с 30 -концом добавляемого нового нуклеотида. Благодаря своевременному блокированию и разблокированию свободного 50 -конца уже синтезированной цепочки и 30 - и 50 -концов добавляемых нуклеотидов, можно гарантировать, что на каждом шаге синтеза присоединяется только тот или иной специфический нуклеотид. Соответствующие процедуры могут быть автоматизированы, и сейчас имеется много «синтезирующих роботов». Короткие одноцепочечные молекулы, синтезированные химическим путем, называют олигонуклеотидами. Олигонуклеотиды широко используются в генетической инженерии, например, в качестве праймеров. Укорочение ДНК. Ферменты, обрезающие или разрезающие ДНК, называют ДНК нуклеазами. Их делят на экзонуклеазы и эндонуклеазы. Экзонуклеазы укорачивают ДНК за счет последовательного отсечения нуклеотидов по одному с концов молекулы. Они более гибки, чем полимеразы: одни экзонуклеазы удаляют нуклеотиды с 30 -конца, в то время как другие — с 50 -конца. Некоторые экзонуклеазы действуют только на одноцепочечные мо-
1.2. Операции над ДНК
31
50
30
NNNN NNNN
NNNN NNNN
α
30
50
Экзонуклеаза III 50
30
??
NNNN NNN
α
NNN NNNN
30
50
50
30
??
NNNN NN
α
NN NNNN
30
50 ??
50
NNNN N
α
30
N NNNN
30
50
50
??
N NNN
α 0
3
30
NNNN 50
Рис. 1.13. Действие экзонуклеазы III.
лекулы, некоторые — только на двухцепочечные, а некоторые могут укорачивать молекулы обоих типов. Например, экзонуклеаза III — это 30 -нуклеаза, она укорачивает цепочку в 30 − 50 направлении, см. рис. 1.13. В результате образуется молекула с выступающим 50 -концом. Другая экзонуклеаза, Bal31, удаляет нуклеотиды из обеих цепочек двухцепочечной молекулы, см. рис. 1.14.
32
1. Как устроена ДНК и как с ней работают 50
30
NNN NNN
NNN NNN
α
30
50
Bal31 50
30
??
NN NN
NN NN
α
30
50 50
30
??
N N
N N
α
30
50 50
??
30
α 30
50
Рис. 1.14. Действие экзонуклеазы Bal31.
Отметим, что экзонуклеазной активностью обладают и многие полимеразы. Такая активность имеет большое значение для осуществляемого полимеразами процесса репликации ДНК как механизм исправления ошибок. В то время как, наращивая молекулу, полимераза всегда действует в 50 − 30 направлении, в качестве экзонуклеазы она может действовать как в 50 − 30 , так и в 30 − 50 направлении. Разрезание ДНК. Эндонуклеазы разрушают внутренние фосфодиэфирные связи в молекуле ДНК. Они могут быть достаточно специализированы в отношении того, что они разрезают, где они разрезают и как они разрезают.
1.2. Операции над ДНК
33 50
30
NNNNNN 3
0
50
S1 50
30
??
50
NNNN 3
0
5
30
NN 0
0
50
3
Рис. 1.15. Действие эндонуклеазы S 1 (1). 50
30
50
30
NNN NN NNNNNNNN 30
50
S1 50
30
??
NNN NNNNN 30
50
30
NN NNN
50 30
50
Рис. 1.16. Действие эндонуклеазы S 1 (2).
Так, например, эндонуклеаза S 1 разрезает только одиночные цепочки (рис. 1.15) или одноцепочечные фрагменты смешанных молекул ДНК, содержащих как одноцепочечные, так и двухцепочечные участки (рис. 1.16). При этом разрез может произойти по любой фосфодиэфирной связи; говорят, что эндонуклеаза S 1 не является сайт-специфичной. С другой стороны, эндонуклеаза ДНК I разрезает как одноцепочечные, так и двухцепочечные молекулы; она также не является сайт-специфичной. Рестрикционные эндонуклеазы (рестриктазы) гораздо более специфичны: они разрезают только двухцепочечные моле-
34
1. Как устроена ДНК и как с ней работают 50
30 ?
Г AATTЦ ЦTTAA Г
α 30
β 50
6
EcoRI 50
30
α 30
??
Г ЦTTAA 50
50
30
AATTЦ Г 30
β 50
Рис. 1.17. Действие EcoRI.
кулы и только в определенных (для данной рестриктазы) местах. Рестрикционный фермент связывается с ДНК в особом сайте узнавания и затем рассекает связи обычно внутри, но иногда и вне сайта. Рестриктаза разрезает фосфодиэфирную связь между соседними нуклеотидами таким образом, что на 30 -конце одного нуклеотида образуется гидроксильная группа, а на 50 -конце другого нуклеотида — фосфатная группа. Образующийся разрез может проходить прямо через обе цепочки или быть зигзагообразным. Вот несколько примеров. Рестриктаза EcoRI (см. рис. 1.17). Сайтом узнавания для этого фермента служит последовательность 50 -ГААТТЦ. Направление играет здесь важную роль: EcoRI не связывается c 30 -ГААТТЦ. Фермент разрезает молекулу зигзагообразно, что приводит к образованию двух выступающих 50 -концов. Заметим, что сайт узнавания является палиндромом в том смысле, что чтение одной из цепочек молекулы в 50 −30 направлении дает такой же результат (ГААТТЦ), как чтение соответствующего участка другой цепочки в 30 − 50 направлении. Это свойство часто встречается у рестриктаз. Ясно, что если участок ДНК содержит несколько сайтов узнавания, то в принципе все они будут разрезаны, см. рис. 1.18.
1.2. Операции над ДНК
35
50
30
α
Г AAT TЦ ЦT TAA Г
Г AAT TЦ ЦT TAA Г
γ
β
0
50
3
EcoRI 0
5
0
0
3
30
? ?
5
Г AAT TЦ γ α Ц T TAA Г 30
50
50
Г ЦT TAA
30
30
AA T TЦ Г β
50
30
50
Рис. 1.18. Множественные разрезы, осуществляемые EcoRI. 50
30
ЦЦЦ Г Г Г Г Г Г ЦЦЦ 30
50
XmaI 50
? ?
30
Ц Г Г Г ЦЦ 30
50
50
30
ЦЦ Г Г Г Ц 30
50
Рис. 1.19. Действие XmaI.
Для читателя, удивленного загадочными названиями рестриктаз (такими, как EcoRI), поясним правила принятой в молекулярной биологии номенклатуры. Название фермента всегда производится от названия организма, из которого этот фермент был впервые выделен. Берутся первая буква родового названия и две первые буквы видового названия организма, а в случае необходимости добавляется буква, указывающая на штамм. Последний знак — это порядковый номер данного фермента среди ферментов, открытых у данного организма. Таким образом, EcoRI обозначает первую (I) рестриктазу, выделенную из бактерии Escherichia coli, серотип штамма R.
36
1. Как устроена ДНК и как с ней работают 50
30
ЦЦЦ Г Г Г Г Г Г ЦЦЦ 30
50
SmaI ?? 0 3 50
50
ЦЦЦ ГГГ 30
30
ГГГ ЦЦЦ
50
30
50
Рис. 1.20. Действие SmaI. 50
30
ЦT Г ЦA Г Г A Ц Г TЦ 30
50
PstI 0
0
5
3
ЦT Г ЦA Г 30
50
? ?
50
30
Г AЦ Г TЦ 30
50
Рис. 1.21. Действие PstI.
Рестриктаза XmaI, см. рис. 1.19. Сайтом узнавания является последовательность 50 -ЦЦЦГГГ. При зигзагообразном разрезе образуется два выступающих 50 -конца. Рестриктаза SmaI, см. рис. 1.20. Сайт узнавания для этого фермента такой же, как и для XmaI, но разрез прямой. Существуют и такие рестриктазы (например, HpaII и MspI), у которых одинаковы и сайт узнавания, и тип разреза. Рестриктаза PstI, см. рис. 1.21. Сайт узнавания — 50 ЦТГЦАГ. Разрез — зигзагообразный, оставляющий два выступающих 30 -конца.
1.2. Операции над ДНК
37
50
30
Г AЦ Г Ц NNNNNNNNNNN ЦT Г Ц Г NNNNNNNNNNN 30 50
50 30
HgaI ? ?
Г AЦ Г ЦNNNNN ЦT Г Ц Г NNNNNNNNNN 30
50
30
NNNNNN N
50
30
50
Рис. 1.22. Действие HgaI.
Рестриктаза HgaI, см. рис. 1.22. Сайт узнавания — 50 ГАЦГЦ. Разрез — зигзагообразный, оставляющий два выступающих 50 -конца. Отметим, что разрез проходит вне сайта узнавания, а потому HgaI относят к эндонуклеазам типа I, тогда как все другие упомянутые выше рестриктазы принадлежат к типу II (эндонуклеазы, разрезающие молекулу внутри сайта узнавания). Обсуждение различий между эндонуклеазами типов I и II (а также III) выходит за рамки данной главы, но стоит отметить, что в генетической инженерии эндонуклеазы типа I используются редко, поскольку они могут рассекать молекулы в совершенно непредсказуемых местах. Сшивка ДНК. Соединение молекул ДНК, именуемое сшивкой, происходит при посредстве ферментов, называемых лигазами. Есть несколько видов сшивки. Рассмотрим, например, ситуацию, показанную на рис. 1.19. Две молекулы, возникшие под действием рестриктазы XmaI, имеют выступающие концы. Если такие молекулы находятся достаточно близко, то эти концы могут воссоединиться за счет водородных связей между комплементарными основаниями — именно поэтому выступающие концы называют липкими. В ситуации, изображенной на рис. 1.19, комплементарными липкими концами будут 50 -ЦЦГГ и 30 -ГГЦЦ. Водородные связи удерживают комплементарные липкие концы вместе, однако в каждой цепочке имеется щель, назы-
38
1. Как устроена ДНК и как с ней работают 50
OH @
P
Ц Г Г Г ЦЦ 30
30
ЦЦ Г Г Г Ц @ OH
P
50
водородные связи 50
OH @
P
? ? 30
Ц Ц Ц Г Г Г Г Г Г Ц Ц Ц 30
P
@ OH
50
Рис. 1.23. Комплементарное спаривание оснований.
ваемая насечкой. Насечка — это отсутствие фосфодиэфирной связи между последовательно расположенными нуклеотидами. Такая связь может быть восстановлена лигазой при условии, что 30 -конец на одном краю насечки имеет гидроксильную группу (30 -гидроксил), а 50 -конец на другом краю — фосфатную группу (50 -фосфат), см. рис. 1.23. К счастью, когда рестриктаза разрезает фосфодиэфирную связь между соседними нуклеотидами, она как раз образует гидроксильную группу на 30 -конце и фосфат на 50 -конце, как показано на рис. 1.23. На рисунке 1.24 показан результат действия лигазы на молекулу ДНК, получающуюся при спаривании, изображенном на рис. 1.23. Заметим, что в данном случае задача лигазы облегчается тем, что водородные связи удерживают подлежащие сшивке нуклеотиды вблизи друг от друга. В ситуации, проиллюстрированной рисунками 1.19, 1.23 и 1.24, молекула, рассеченная рестриктазой, восстановилась за счет возникших при разрезе липких концов. Однако и фрагменты двух разных молекул, разрезанных одним и тем же ферментом (или разными ферментами, образующими одина-
1.2. Операции над ДНК
39
OH @ @
50
P
30
Ц Ц Ц Г Г Г Г Г Г Ц Ц Ц 30 P
50
@ @ OH
ДНК лигаза 0
5
? ?
30
Ц Ц Ц Г Г Г Г Г Г Ц Ц Ц 30
50 Рис. 1.24. Сшивка.
ковые липкие концы), могут рекомбинировать с образованием гибридных молекул. Это показано на рисунке 1.25. Заметим еще, что при множественных разрезах, проиллюстрированных на рис. 1.18, одна из возникающих молекул имеет два липких конца, которые могут соединиться между собой, а затем сшиться, что приведет к формированию кольцевой двухцепочечной молекулы. При сшивке прямых разрезов лигаза соединяет 30 - и 50 концы одной молекулы с соответственно 50 - и 30 -концами другой. Например, фрагменты, возникающие под действием SmaI (рис. 1.20), могут быть сшиты вместе, как показано на рис. 1.26. Сшивка прямых концов намного менее эффективна, чем сшивка липких концов. Это объясняется тем, что лигаза не может сближать подлежащие сшивке концы, в то время как при сшивке липких концов последние удерживаются вблизи друг от друга водородными связями. Преимущество сшивки прямых концов состоит в том, что при этом молекулы ДНК соединяются независимо от специфики нуклеотидных последовательностей на их концах. Имеется и другой способ сшивки прямых концов. Рассмотрим терминальную трансферазу, наращивающую 30 -конец
40
1. Как устроена ДНК и как с ней работают 50
30
50
α1 ЦЦ Г Г β1
α2 ЦЦ Г Г
Г Г ЦЦ
30
50
α1 30
30
β2
Г Г ЦЦ
50 HpaII ? ? 30 50 30 Ц ЦГ Г Г ГЦ Ц β1 50 30 50
30
50
HpaII ? ? 50 30 50 ЦГ Г α2 Ц Г ГЦ Ц 30 50 30 водородные связи
30
β2 50
+
50
30
α1
ЦЦ Г Г Г Г ЦЦ
30
β2 50
? ? ДНК лигаза 50 α2 ЦЦ Г Г Г Г ЦЦ 0 3
Рис. 1.25. Гибридизация.
OH @ @ 30
50
ЦЦЦ Г Г Г
α
P
P
30
Г Г Г ЦЦЦ
β 50
@ @ OH
ДНК лигаза 5
0
α 30
30
? ?
ЦЦЦГ Г Г Г Г ГЦЦЦ
β 50
Рис. 1.26. Сшивка прямых концов.
30
β1 50
1.2. Операции над ДНК 50
41
30
50
30
α
β
30
50 терминальная трансфераза + ? ?Ц нуклеотиды 50 30
ЦЦЦЦ
30
50
50 терминальная трансфераза + ? ?Г нуклеотиды
ЦЦЦЦ
α
30
50
ГГГГ
β
ГГГГ 30
30
50
ДНК лигаза ? ?
50
ЦЦЦЦ 30
α
ЦЦЦЦ ГГГГ
30
β
ГГГГ 50
Рис. 1.27. Соединение молекул с прямыми концами за счет присоединения гомополимерного конца. (см. рис. 1.12). Действие, показанное на рис. 1.12, по вполне очевидной причине называют присоединением «гомополимерного хвоста». Этот прием можно использовать для сшивки прямых концов способом, изображенным на рис. 1.27. Хотя термин «сшивка» означает закрывание насечки, его часто используют и для описания процесса соединения липких концов с последующим закрыванием насечек. Модификация нуклеотидов ДНК. Для управления различными манипуляциями над ДНК очень полезны ферменты, изменяющие молекулы путем присоединения или удаления некоторых химических компонентов. Эти ферменты называют модифицирующими. Метилазы — это ферменты, которые in vivo работают как партнеры рестрикционных ферментов. Основная роль рестриктаз in vivo — защита организма-хозяина (например, бактерии) от организмов-агрессоров (например, вирусов). Рестрикционные ферменты переваривают ДНК агрессора, разрезая его на
42
1. Как устроена ДНК и как с ней работают P
OH 0
30
@ @5
α 30
50@ @
OH
P
? ? OH 0 @ @5
30
OH
α 30 OH
50@ @ OH
Рис. 1.28. Действие щелочной фосфатазы.
куски, причем чем разнообразнее сайты узнавания рестриктаз, тем большее количество агрессоров может быть разрушено. Однако ДНК хозяина тоже может содержать сайты узнавания некоторых из его рестрикционных ферментов, и если эти сайты не защищены, то организм-хозяин, расщепляя ДНК агрессора, разрушит и свою собственную ДНК. Метилаза, служащая партнером некоторого рестрикционного фермента, имеет тот же сайт узнавания, что данный фермент; когда она связывается с сайтом узнавания, она модифицирует один из нуклеотидов внутри этого сайта, добавляя к нему метильную группу. Обработанный таким образом сайт узнавания уже недоступен для соответствующей рестриктазы, что предохраняет ДНК от разрушения этим ферментом. Щелочная фосфатаза удаляет фосфатную группу с 50 -конца ДНК, оставляя на этом месте 50 -гидроксильную группу — см. рис. 1.28. Ясно, что получающаяся при этом молекула не может сшиваться сама с собой, образуя кольцевую молекулу, так как между ее концами не может образоваться фосфоди-
1.2. Операции над ДНК
43
OH 0 @ @5
OH 30
α 30
50@ @ OH
OH
? ? P
0
30
@ @5
OH
α 30 OH
50@ @
P
Рис. 1.29. Действие полинуклеотидкиназы.
эфирная связь. Это важно, если необходимо сшить молекулы α и β и при этом избежать сшивки α с α или β с β. Полинуклеотидкиназа действует противоположным образом: она переносит фосфатные группы (от молекул АТФ) на 50 -гидроксильные концы, образованные щелочной фосфатазой, как показано на рис. 1.29. Если переносимые фосфатные группы помечены радиоактивным атомом, то полученные при этом молекулы могут быть обнаружены при помощи методов, использующих радиоактивность (см. выше обсуждение гель-электрофореза). Кроме того, восстановление ранее утраченного 50 -фосфатного конца позволяет таким молекулам вновь сшиваться. Размножение ДНК. Одной из центральных проблем генетической инженерии является увеличение количества специфических фрагментов ДНК (например, фрагмента, кодирующего определенный ген). Проблема становится особенно острой, если небольшое количество необходимого фрагмента затеряно среди
44
1. Как устроена ДНК и как с ней работают γ
β
z }| {
z }| {
α: | {z } γ
... ...
| {z } β
Рис. 1.30. Молекула ДНК с известными границами.
огромного числа других фрагментов, как пресловутая иголка в стоге сена. К счастью, существует прием, называемый полимеразной цепной реакцией (ПЦР ), который решает эту проблему. Метод ПЦР, разработанный Кэри Маллисом в 1985 г., произвел настоящую революцию в молекулярной биологии (за свое открытие Маллис был удостоен Нобелевской премии). Этот метод невероятно чувствителен и эффективен: за короткий промежуток времени можно получить миллионы копий желаемой молекулы ДНК, даже если начать всего с одного ее экземпляра. ПЦР находит массу применений в генетической инженерии, судебномедицинской экспертизе, геномном анализе, археологии, палеонтологии и медицинской диагностике. При этом метод очень прост и весьма элегантен. Вот как он работает. Предположим, что нужно размножить молекулы ДНК α с известными границами (концевыми последовательностями) β и γ, см. рис. 1.30. Размножение осуществляется путем многократного повторения основного цикла, включающего три шага: денатурацию, праймирование и удлинение. Для начала готовится раствор, содержащий α, синтетические олигонуклеотиды (праймеры), комплементарные β (βпраймеры) и γ (γ-праймеры), а также устойчивую к нагреванию полимеразу и нуклеотиды. Денатурация. На этой стадии раствор нагревается до высокой температуры (часто почти до температуры кипения), так что водородные связи между двумя цепочками разрушаются и α разделяется на две цепочки α1 и α2 , см. рис. 1.31.
1.2. Операции над ДНК
45 β
z }| {
... ...
α: | {z } γ
нагрев ? ?
...
α1 :
β
z }| {
...
α2 : | {z } γ
Рис. 1.31. Денатурация.
Праймирование. Раствор охлаждают (обычно до примерно 55◦ C), так что праймеры соединяются с комплементарными им краями: β-праймер с β, а γ-праймер с γ, см. рис. 1.32. Удлинение. Раствор вновь нагревают (до 72◦ C), при этом полимераза удлиняет праймер (используя нуклеотиды, находящиеся в растворе), в результате чего образуется две полных цепочки ДНК, идентичных α, см. рис. 1.33. Напомним, что полимераза всегда удлиняет праймер в направлении 50 − 30 . Используемая здесь полимераза должна быть термоустойчивой, поскольку в процессе многократного повторения цикла она должна выдержать очень высокие температуры. К счастью, в природе есть такие полимеразы: они могут быть выделены из термофильных бактерий, живущих в горячих источниках с температурой, близкой к точке кипения. Очевидно, что, повторяя основной цикл n раз, можно получить 2n копий α, по крайней мере, в теории. Таким образом, ПЦР — это очень эффективный молекулярный ксерокс! Для простоты объяснения мы предположили, что нуклеотидная последовательность α — это отдельная молекула. Очевидно, что метод ПЦР будет работать и в том случае, когда α
46
1. Как устроена ДНК и как с ней работают
β
z }| {
... ... | {z } γ
охлаждение β
? ?
z }| {
...
β-праймер γ-праймер
... | {z } γ
Рис. 1.32. Праймирование.
...
α1 :
-
...
α2 :
полимераза γ
? z }| { ?
α: | {z } γ
полимераза γ
β
... ...
z }| {
z }| {
| {z }
| {z }
... ...
α: | {z } β
β
? z }| { ?
γ
Рис. 1.33. Удлинение.
β
1.3. Секвенирование
47
есть лишь часть более длинной молекулы, заключенная между границами β и γ. Здесь описание работы ПЦР выглядит чуть сложнее, но мы думаем, что читатель справится с анализом соответствующей модификации процедуры ПЦР. Прежде чем читатель провозгласит метод ПЦР настоящим чудом, стоит подчеркнуть, что для размножения молекулы ДНК α необходимо знать ее границы β и γ, чтобы синтезировать β- и γ-праймеры.
1.3
Секвенирование
Мы уже знаем, как измеряют длину молекул ДНК, однако в конечном счете большинство процедур генетической инженерии нацелено на расшифровку точной последовательности нуклеотидов, образующих данную молекулу ДНК. Например, цель проекта «Геном человека» — полностью определить нуклеотидную последовательность генома человека, длина которого составляет около 3 · 109 пар нуклеотидов! Наиболее популярный метод секвенирования (т.е. установления точной последовательности нуклеотидов, составляющих данную молекулы ДНК) использует полимеразы, удлиняющие праймированную одноцепочечную матрицу, и аналоги нуклеотидов. Аналог нуклеотида — это нуклеотид, химически модифицированный in vitro. Модифицировать можно сахар и/или фосфатную группу и/или основание нуклеотида. Чаще всего при секвенировании используют модификацию сахара, при которой 30 -гидроксильная группа (30 -OH) сахара заменяется на атом водорода (30 -H). Получающиеся при этом нуклеотиды называют дидезоксинуклеотидами и обозначают ддА, ддТ, ддЦ и ддГ. Метод секвенирования, основанный на применении таких нуклеотидов, называется дидезоксиферментным методом или методом Сэнгера (по имени изобретателя). Суть этого метода такова. Допустим, нужно секвенировать одноцепочечную молекулу α. Удлиним ее на 30 -конце короткой последовательностью γ (скажем, длиной 20), получив, таким образом, молекулу 30 -γα. Например, если α = 30 -AГTAЦГTГAЦГЦ, то получится молекула β = 30 -
48
1. Как устроена ДНК и как с ней работают 30
50
γ γ
A Г T AЦ Г Г Г AЦ Г Ц
30
50 Рис. 1.34. Молекула β 0 .
50 γ γ 30
30 TЦAT Г ЦAЦT Г Ц Г A Г TAЦ Г T Г AЦ Г Ц 50
Рис. 1.35. Полная двойная цепочка.
γAГTAЦГTГAЦГЦ. Благодаря присоединению γ «впереди» α, к β можно добавить комплементарный праймер γ, после чего полимераза может начать удлинение такой молекулы, дополняя матрицу α, см. рис. 1.34. Пусть β 0 — это праймированная молекула β. Обычно праймер γ помечают (радиоактивно или флуоресцентно), чтобы в дальнейшем было легко идентифицировать одиночные цепочки, начинающиеся с γ. Теперь приготовим четыре пробирки (назовем их пробирками А, Т, Ц и Г), каждая из которых содержит молекулы β, праймеры (благодаря которым будут возникать молекулы β 0 ), полимеразу и нуклеотиды А, Т, Г и Ц. Кроме того, в пробирке А содержится небольшое количество ддА, в пробирке Т — небольшое количество ддТ, в пробирке Ц — небольшое количество ддЦ, а в пробирке Г — небольшое количество ддГ. Проанализируем реакцию, происходящую в пробирке А. Полимераза будет наращивать праймер γ молекулы β 0 , используя нуклеотиды, находящиеся в пробирке А. Если всякий раз используются только нуклеотиды А, Т, Ц, Г, то молекула β 0 удлиняется до полной двойной цепочки (рис. 1.35). Однако время от времени полимераза будет использовать вместо нуклеотида А его аналог ддА. Как только это случится, дополнение матрицы прекратится, поскольку как у ддА нет 30 -ОН конца, необходимого для фосфодиэфирной связи. Следовательно, кроме полных двухцепочечных молекул, мы получим и молекулы, показанные на рис. 1.36.
1.3. Секвенирование 50
49 30
γ γ
TЦA A Г TAЦ Г T Г AЦ Г Ц
30
50
50
30
γ γ
TЦAT Г ЦA A Г TAЦ Г T Г AЦ Г Ц
30
50
Рис. 1.36. Неполные молекулы в пробирке А.
Таким образом, в пробирке А полимераза синтезирует (в соответствии с матрицей β) следующие 50 − 30 фрагменты: 50 − γТЦАТГЦАЦТГЦГ, 50 − γТЦА, 50 − γТЦАТГЦА. Их легко отделить путем денатурации двойных цепочек и отбора только тех одинарных цепочек, которые начинаются с праймера γ (напомним,что для этой цели мы пометили γ). Такое же рассуждение показывает, что в пробирке Т полимераза синтезирует следующие 50 − 30 фрагменты: 50 − γТЦАТГЦАЦТГЦГ, 50 − γТ, 50 − γТЦАТ, 50 − γТЦАТГЦАЦТ. В пробирке Ц получаем: 50 − γТЦАТГЦАЦТГЦГ, 50 − γТЦ, 50 − γТЦАТГЦ, 50 − γТЦАТГЦАЦ, 50 − γТЦАТГЦАЦТГЦ. В пробирке Г получаем: 50 − γTЦATГЦAЦTГЦГ,
50
–
1. Как устроена ДНК и как с ней работают -
+
A Ц Г T Г Ц Г T Ц A Ц Г T A Ц T Рис. 1.37. Лестница фрагментов.
50 − γTЦATГ, 50 − γTЦATГЦAЦTГ. Теперь проведем электрофорез в полиакриламидном геле, используя четыре лунки (по одной на каждую пробирку), и получим распределение фрагментов по размерам, показанное на рис. 1.37 (мы игнорируем приставку γ , так как она одинакова для всех фрагментов). Заметим, что фрагменты распределяются как перекладины лестницы, в которой перекладина r непосредственно предшествует перекладине r0 , если r0 длиннее r на один нуклеотид. Ясно, что читать полосы (перекладины лестницы) следует справа налево, поднимаясь по лестнице, поскольку длины молекул в полосах увеличиваются справа налево. На рис. 1.37 под каждой полосой мы указали нуклеотид, находящийся на 30 конце молекул этой полосу. Сами молекулы, находящиеся в полосах и расположенные в порядке возрастания их длин справа налево (рис. 1.37), суть: T, TЦ, TЦA, TЦAT, TЦATГ,
1.4. Комментарии к библиографии
51
TЦATГЦ, TЦATГЦA, TЦATГЦAЦ, TЦATГЦAЦT, TЦATГЦAЦTГ, TЦATГЦAЦTГЦ, TЦATГЦAЦTГЦГ. Значит, исходная молекула α есть 30 -АГТАЦГТГАЦГЦ. Еще раз подчеркнем, что наше описания весьма упрощены. Например, в процедуре секвенирования, описанной выше, есть много деликатных моментов. Так, используемая полимераза не должна иметь эндонуклеазной активности — в противном случае она могла бы отрезать дидезоксинуклеотиды, останавливающие комплементарный синтез на матрице. Обычно здесь применяют так называемый Кленов-фрагмент ДНК полимеразы I. Далее, количество дидезоксинуклеотидов в пробирках А, Т, Ц, Г должно выбираться весьма аккуратно. Если их будет слишком много, то полимераза может прекратить работу еще внутри собственной приставки секвенируемой молекулы, так как вероятность дойти до конца матрицы уменьшается с ростом концентрации дидезоксинуклеотидов. Наконец, через гель можно прогонять только не слишком длинные молекулы. Однако длинную молекулу можно разбить на перекрывающиеся фрагментов меньшей длины. Зная нуклеотидную последовательность каждого из этих фрагментов и то, как они перекрываются, можно восстановить нуклеотидную последовательность всей молекулы.
1.4
Комментарии к библиографии
Имеется очень много хороших книг по молекулярной биологии и генетической инженерии, ориентированных на читателей с различным уровнем подготовки. Книга Дрлика [76] — прекрасное введение в молекулярную биологию и генетическую инженерию. Она не требует от чи-
52
1. Как устроена ДНК и как с ней работают
тателя никакой подготовки ни в биохимии, ни в биологии (наше «стерженьковое» изображение нуклеотидов заимствовано из этой книги). Изящным и простым введением в генетическую инженерию является также книга [316], хотя кое-что в ней уже устарело. Книга [70], также написанная для неподготовленного читателя, дает более эскизную картину, но удобна, когда нужно быстро получить какую-либо справку. Книга Албертса и соавторов [8] — стандартный учебник молекулярной биологии, который может быть использован и как обстоятельный справочник. Книга Уокера и Рэпли [330] следует новой концепции в учебной литературе, согласно которой читатель получает возможность самостоятельно определять последовательность изучения интересующих его тем. Это — прекрасное справочное издание. Мы особо рекомендуем эту книгу тем читателям, которые, прочитав ряд более популярных книг по молекулярной биологии и генетической инженерии, хотели бы как-то упорядочить полученную ими информацию.
Глава 2 Начала молекулярных вычислений 2.1
Опыт Эдлмана
«Нам видна только ближайшая перспектива, но и там мы видим много задач, требующих решения». Эти слова Тьюринга [324], которые, конечно, приложимы к любой развивающейся науке, удачно характеризуют основополагающие принципы исследовательских программ в области компьютерных наук. Прорывы в компьютерных науках часто проявляются и запоминаются благодаря неожиданным демонстрациям, а не решающим экспериментам, как то бывает в физике. Как отмечает Хартманис [127], роль таких демонстраций состоит в том, что они показывают принципиальную или практическую осуществимость того, что ранее представлялось невозможным или практически нереализуемым. Зачастую идеи и понятия, рожденные и испытанные в этих демонстрациях, определяют «повестку дня» в компьютерных науках или, по меньшей мере, существенно влияют на нее. Опыт Эдлмана [2] как раз и представляет собой такого рода демонстрацию. Данная книга посвящена той ближайшей перспективе, которая нам видна, и той теории, которая уже развита применительно к различным аспектам молекулярных вычислений. К чему в конце концов приведет идея «ДНК-компьютера», пока еще неясно; мы продолжим обсуждение возможных перспектив в разделе 2.4. Еще тогда, когда было принято именовать компьютер «гигантским мозгом» и когда только нечто, не уступающее размерами по меньшей мере комнате, могло соответствовать визуальному образу мощной вычислительной машины, был сделан ряд пророческих замечаний о возможной в будущем миниатюризации. Часто цитируется предвидение Фейнмана [89], описавшего еще в 1959 г. возможность построения «суб-микро-
54
2. Начала молекулярных вычислений
4
H * HH B H H B j H B 1 3 1 B > C CO B C B C C C B CC B C B C 6 0 CC B CC B CW C BBN = 2 5 Рис. 2.1. Граф в опыте Эдлмана.
скопических» компьютеров. С тех пор в миниатюризации компьютеров был достигнут замечательный прогресс, но до субмикроскопического уровня пока еще далеко. Были предложены и широко обсуждаются два направления дальнейшего продвижения: квантовые и молекулярные вычисления. Опыт Эдлмана, к описанию которого мы приступаем, послужил выразительной демонстрацией возможностей молекулярного подхода. Чтобы оставаться на почве реальности, мы разберем здесь именно пример, приведенный в [2]. В опыте Эдлмана решалась задача о гамильтоновом пути для данного ориентированного графа. Мы рассмотрим эту задачу в следующей формулировке. Пусть G — ориентированный граф с выделенными начальной и конечной вершинами vin и vout . Путь из vin в vout называется гамильтоновым, если он проходит через каждую вершину в точности один раз. (Это, в частности, влечет, что vin 6= vout , поскольку в противном случае вершина vin = vout встретилась бы в пути дважды.) Например, у графа, изображенного на рис. 2.1, выделены начальная вершина 0 и конечная вершина 6. Путь, состоящий из направленных ребер 0 −→ 1, 1 −→ 2, 2 −→ 3, 3 −→ 4, 4 −→ 5, 5 −→ 6, является гамильтоновым.
2.1. Опыт Эдлмана
55
Мы пронумеровали вершины так, что гамильтонов путь проходит через них по порядку. Разумеется, если найден гамильтонов путь, то такую нумерацию всегда можно выбрать. В нашем частном примере оказывается, что вышеупомянутый путь является единственным гамильтоновым путем. Действительно, нетрудно перебрать все имеющиеся возможности. Первый шаг 0 −→ 3 приводит к путям 0 −→ 3, 3 −→ 2, 2 −→ 1; 0 −→ 3, 3 −→ 4, 4 −→ 1, 1 −→ 2 и 0 −→ 3, 3 −→ 4, 4 −→ 5, 5 −→ 2, 2 −→ 1, которые уже нельзя продолжить, не повторив какую-либо вершину, и к пути 0 −→ 3, 3 −→ 4, 4 −→ 5, 5 −→ 6. Точно так же сразу видно, что и первые шаги 0 −→ 1, 1 −→ 3 и 0 −→ 6 не приводят к успеху. Этот аргумент показывает также, что если удалить любое из ребер пути 0 −→ 1, 1 −→ 2, 2 −→ 3, 3 −→ 4, 4 −→ 5, 5 −→ 6, то у остающегося графа нет гамильтоновых путей. Ясно и то, что если взять в качестве начальной какую-либо вершину, кроме 0, или в качестве конечной какую-либо вершину, кроме 6, то получающийся граф (с теми же ребрами) не имеет гамильтонова пути. Это следует из того, что ни одно ребро не заходит в вершину 0 и не выходит из вершины 6. В общем случае задача о гамильтоновом пути, ЗГП, заключается в определении того, обладает ли произвольно заданный граф гамильтоновым путем. Очевидно, что ЗГП может быть решена путем полного перебора. Для решения ЗГП были развиты различные алгоритмы. Хотя эти алгоритмы успешно работают для некоторых специальных классов графов, все они, будучи применены к общим ориентированным графам, дают экспоненциальную сложность в наихудшем случае. Это значит, что в общем случае все известные алгоритмы так или иначе сводятся к исчерпывающему перебору. В действительности известно, что задача о гамильтоновом пути NP-полна, что означает, что для нее вряд ли существует эффективный (т. е. дающий ответ за полиномиальное время) алгоритм. ЗГП труднорешаема в том смысле, что нахождение ответа для графа умеренных размеров может потребовать нереального количества компьютерного времени. В своем опыте Эдлман решил
56
2. Начала молекулярных вычислений
ЗГП для вышеприведенного примера, в котором граф мал с любой точки зрения. Однако его подход применим, по крайней мере в принципе, и к б´ольшим графам. Ключами к решению служат массированный параллелизм и комплементарность. Подход Эдлмана основан на следующем недетерминированном алгоритме для решения ЗГП. Вход. Ориентированный граф G с n вершинами, среди которых выделены вершины vin и vout . Шаг 1. Породить большое количество случайных путей в G. Шаг 2. Отбросить пути, которые не начинаются с vin или не кончаются в vout . Шаг 3. Отбросить пути, которые не содержат точно n вершин. Шаг 4. Для каждой из n вершин v отбросить пути, которые не содержат v. Выход. «Да», если останется хоть один путь, «Нет» в противном случае. По существу этот алгоритм несет в себе полный перебор. В подходе Эдлмана нежелательный недетерминизм обходится за счет массированного параллелизма цепочек ДНК. Комплементарность Уотсона–Крика используется, чтобы обеспечить построение таких последовательностей ребер, которые действительно являются путями в графе G. Рассмотрим теперь опыт Эдлмана более детально. Каждой вершине i графа сопоставляется выбранная случайным образом цепочка ДНК из 20 нуклеотидов, обозначаемая через si , 0 6 i 6 6. Например, для i = 2, 3, 4 Эдлман использовал следующие олигонуклеотиды длины 20: s2 = TATЦГГATЦГГTATATЦЦГA, s3 = ГЦTATTЦГAГЦTTAAAГЦTA, s4 = ГГЦTAГГTAЦЦAГЦATГЦTT. Что касается ориентации, то все эти нуклеотиды записаны в направлении от 50 к 30 .
2.1. Опыт Эдлмана
57
Удобно использовать функцию h, отображающую каждое из оснований ДНК на его дополнение по Уотсону–Крику: h(A) = T, h(T) = A, h(Ц) = Г, h(Г) = Ц. На цепочки ДНК h действует побуквенно: h(ЦATTAГ) = ГTAATЦ. Таким образом, h дает дополнение по Уотсону–Крику для исходной цепочки. При этом h изменяет ориентацию следующим образом: если исходная цепочка была записана в направлении от 50 к 30 , то ее дополнение по Уотсону–Крику будет записано в направлении от 30 к 50 . В терминологии теории формальных языков (подробно описанной в главе 3) отображение h является морфизмом. Мы будем называть его морфизмом Уотсона– Крика. Например, h(s2 ) = ATAГЦЦTAГЦЦATATAГГЦT, h(s3 ) = ЦГATAAГЦTЦГAATTTЦГAT. Разложим теперь каждую цепочку si , 0 6 i 6 6, на две цепочки длины 10: si = s0i s00i . Таким образом, на s0i (соответственно на s00i ) можно смотреть как на первую (соответственно вторую) половину цепочки si . Ребро, идущее из вершины i в вершину j (в случае, если таковое имеется в графе G), кодируется цепочкой h(s00i s0j ). Итак, ребро также кодируется 20-мером, который возникает как дополнение по Уотсону–Крику второй и первой половин олигонуклеотидов, кодирующих смежные с этим ребром вершины. Вот коды трех конкретных ребер: e2→3 = ЦATATAГГЦTЦГATAAГЦTЦ, e3→2 = ГAATTTЦГATATAГЦЦTAГЦ, e3→4 = ГAATTTЦГATЦЦГATЦЦATГ. Заметим, что эта конструкция сохраняет ориентацию ребер: олигонуклеотиды e2→3 и e3→2 совершенно различны. Мы готовы описать главную фазу опыта Эдлмана. Для каждой вершины i и для каждого ребра i −→ j исходного графа были взяты большие количества олигонуклеотидов si и ei→j , которые затем были смешаны вместе и участвовали в
58
2. Начала молекулярных вычислений
одной реакции сшивки. Олигонуклеотиды si служили скрепками, благодаря которым могли сшиваться олигонуклеотиды, соответствующие смежным ребрам. Следовательно, реакция сшивки приводила к образованию таких молекул ДНК, которые можно считать кодами случайных путей в исходном графе. (Эдлман использовал также определенные лигазы и выдерживал всю смесь 4 часа при комнатной температуре. Для читателей, знакомых со статьей Эдлмана [2], упомянем небольшие различия в наших обозначениях. Мы поместили в «бульон» олигонуклеотиды si , в то время как Эдлман помещал туда олигонуклеотиды h(si ). Соответствующие изменения касаются и олигонуклеотидов ei→j .) Объем реакции сшивки в опыте Эдлмана намного превосходил тот, что был необходим для графа такого размера. Действительно, для каждого ребра в бульоне присутствовало порядка 1013 копий кодирующего олигонуклеотида. Это значит, что, по всей вероятности, возникало много молекул ДНК, кодирующих гамильтонов путь, хотя уже наличие одной-единственной такой молекулы доказывало бы существование гамильтонова пути. Другими словами, весьма вероятно, что достаточным было бы существенно меньшее количество олигонуклеотидов, чем то, что использовал Эдлман, или что с помощью использованного им количества олигонуклеотидов могли бы быть исследованы намного б´ольшие графы. Для иллюстрации мы изобразили на рис. 2.2 некоторые цепочки ДНК, которые могли возникать в ходе опыта. Мы используем введенные выше обозначения si и ei→j . Отметим, что эти двойные цепочки имеют открытые концы. Вернемся к недетерминированному алгоритму, состоящему из четырех описанных выше шагов. Мы уже объяснили, как можно осуществить Шаг 1. Остающиеся шаги, так же, как и заключение на выходе, суть процедуры фильтрации или скрининга, в которых участвуют биохимические технологии, выходящие за рамки данной книги. (Заинтересованный читатель может найти детали в [2]. Например, Шаг 2 может быть реализован с помощью применения к продукту, полученному на
2.1. Опыт Эдлмана
59
s1 s3 s4 s1 s2 s3 s4 s5 s2 e1→3 e3→4 e4→1 e1→2 e2→3 e3→4 e4→5 e5→2 e2→3 s0 s3 s2 s1 e0→3 e3→2 e2→1 e1→3 s0 s6 e0→6
s0 s3 s4 s5 s6 e0→3 e3→4 e4→5 e5→6
Рис. 2.2. Примеры путей в графе Эдлмана.
Шаге 1, полимеразной цепной реакции (ПЦР) с праймерами h(s0 ) и s6 . Это означает, что будут размножены лишь молекулы, кодирующие пути с началом в вершине 0 и концом в 6.) С нашей точки зрения следующие рассмотрения важнее, чем описания процедур фильтрации, основанных на биохимических технологиях. Опыт Эдлмана занял примерно 7 лабораторных дней. Больше всего времени ушло на процедуру фильтрации на Шаге 4. Не следует, однако, спешить с негативными выводами из того, что с таким маленьким примером пришлось провозиться так долго. Молекулярный алгоритм, использованный в опыте, был весьма примитивным и малоэффективным. Как и для традиционных компьютеров, оптимизация алгоритмов может расширить область применимости метода. В частности, с точки зрения теории графов далеко не оптимальной идеей представляется использование всех олигонуклеотидов в равном количестве. Это приводит, например, к образованию большого числа молекул, кодирующих пути, которые либо не начинаются в вершине 0, либо не оканчиваются в вершине 6. Следует сперва подсчитать поток через граф и использовать полученные результаты, чтобы определить, в каком количестве потребуется каждый олигонуклеотид. В общем случае определить или даже оценить оптимальное количество каждого нуклеотида довольно сложно. Здесь
60
2. Начала молекулярных вычислений
возникают весьма трудные задачи теории графов. Интуитивно ясно, что количество каждого нуклеотида должно быть достаточным, чтобы обеспечить высокую вероятность возникновения молекулы, кодирующей гамильтонов путь (при условии, что таковой существует). Отсюда следует, что это количество должно расти экспоненциально с ростом числа вершин. Еще одна возможность для оптимизации кроется в выборе длины олигонуклеотидов, используемых для кодирования. Эдлман выбрал 6 случайных 20-меров из общего числа 420 . Такой случайный выбор снизил вероятность того, что у олигонуклеотидов, соответствующих различным вершинам, окажутся длинные общие подпоследовательности, которые могли бы вызвать «нежелательные» соединения в процессе сшивки. Выбор 20-меров гарантировал, что при образовании двойных цепочек из олигонуклеотидов, кодирующих вершины и ребра, задействованы 10 нуклеотидных пар, благодаря чему связь была устойчивой при комнатной температуре. Для б´ольших графов, возможно, понадобятся более длинные олигонуклеотиды. Как уже отмечалось, весьма вероятно, что в опыте Эдлмана возникало много молекул ДНК, кодирующих гамильтонов путь. Процедуру скрининга на выходе алгоритма можно модифицировать таким образом [2], чтобы она возвращала явное описание гамильтонова пути (или одного из таких путей в случае, когда их несколько). Ясно, что подход Эдлмана обладает большим потенциалом для дальнейшего развития и модификаций. Рассмотрим, например, хорошо известную задачу коммивояжера. Она состоит в нахождении кратчайшего гамильтонова пути в ориентированном графе, ребрам которого приписаны длины. Соответствующая модификация могла бы состоять в кодировании информации о длине путей с помощью использования олигонуклеотидов различной длины. Заключительный скрининг должен тогда обнаруживать кратчайший результат (соответствующий кратчайшему гамильтонову пути). В завершение раздела мы дадим абстрактную формулировку ключевых моментов опыта Эдлмана. Эта абстрактная фор-
2.1. Опыт Эдлмана
61
мулировка, позволяющая использовать своего рода «язык программирования», понадобится и в следующем разделе. По определению, пробирка — это мультимножество слов (конечных строк) над алфавитом {А, Ц, Г, Т}. (С интуитивной точки зрения пробирка — это вместилище одинарных цепочек ДНК. Цепочки присутствуют в пробирке с некоторыми кратностями, т. е. там может содержаться несколько копий одной и той же цепочки). Следующие основные операции были первоначально определены для пробирок, т. е. мультимножеств одинарных цепочек ДНК [4]. Однако их подходящие модификации будут применяться и к двойным цепочкам. Слить. Образовать объединение N1 ∪N2 (в смысле мультимножеств) двух данных пробирок N1 и N2 . Размножить. Изготовить две копии данной пробирки N . (Заметим, что такая операция имеет смысл только для мультимножеств.) Обнаружить. Возвратить значение истина, если данная пробирка N содержит по крайней мере одну цепочку ДНК, в противном случае возвратить значение ложь. Разделить (или Извлечь). По данным пробирке N и слову w над алфавитом {А, Ц, Г, Т} изготовить две пробирки +(N, w) и −(N, w) такие, что +(N, w) состоит из всех цепочек в N , содержащих w в качестве (последовательной) подстроки, а −(N, w) состоит из всех цепочек в N , которые не содержат w в качестве подстроки. Четыре операции слить, размножить, обнаружить и разделить позволяют составлять программы, отвечающие на простые вопросы о наличии или отсутствии определенных подслов. Например, программа (1) (2) (3) (4)
ввести(N ) N ← +(N, A) N ← +(N, Г) обнаружить(N )
62
2. Начала молекулярных вычислений
распознает, содержит ли данная пробирка цепочку, в которой встречаются оба пурина A и Г. Следующая программа извлекает из данной пробирки все цепочки, содержащие по крайней мере один из пуринов A и Г, сохраняя кратности этих цепочек: (1) (2) (3) (4) (5)
ввести(N ) размножить(N ) на N1 и N2 NA ← +(N1 , А) NГ ← +(N2 , Г) 0 NГ ← −(NГ , А)
0 (6) слить(NA , NГ )
Повторение операции размножить приводит к экспоненциальному (по отношению к числу итераций) росту числа цепочек в данной пробирке. Кроме четырех операций, перечисленных выше и в [4], в опыте Эдлмана используются комплементарность Уотсона– Крика и два следующих варианта операции разделить: Разделить по длине. По данным пробирке N и целому числу n, изготовить пробирку (N, 6 n), состоящую из всех цепочек из N длины не больше n. Разделить по префиксу (суффиксу). По данным пробирке N и слову w, изготовить пробирку B(N, w) (соответственно E(N, w)), состоящую из всех цепочек в N , начало (соответственно конец) которых совпадает со словом w. На данном этапе мы не вводим никакого формализма для комплементарности Уотсона–Крика, поскольку несколько таких формализмов будет рассмотрено позднее. Возвращаясь к опыту Эдлмана, мы опишем процедуру фильтрации с помощью введенных выше операций. Итак, мы начинаем с пробирки N , содержащей результаты основного шага — реакции сшивки. Так как двойные цепочки могут быть расплавлены на одинарные путем подогрева раствора, можно считать, что N состоит из одинарных цепочек, т.е. строк, составленных из олигонуклеотидов si , 0 6 i 6 6. (Мы пренебрегаем здесь хрупкостью одинарных цепочек, которую определенно следует учиты-
2.2. Решение задачи о выполнимости и взлом DES
63
вать при анализе б´ольших графов.) Тогда стадия фильтрации в опыте Эдлмана может быть описана следующей программой. Напомним, что каждый из олигонуклеотидов si , 0 6 i 6 6, имеет длину 20. (1) (2) (3) (4) (5) (6)
ввести(N ) N ← B(N, s0 ) N ← E(N, s6 ) N ← (N, 6 140) для i от 1 до 5 выполнить N ← +(N, si ) обнаружить(N ).
Ниже в этой главе мы обсудим вопрос о том, насколько реализуемы указанные операции.
2.2
Как решить задачу о выполнимости и взломать криптосистему DES?
Теперь мы сделаем существенный шаг вперед, представив предложенное Липтоном [184] решение одной весьма общей задачи посредством молекулярных вычислений. Речь идет о задаче выполнимости пропозициональных формул. Здесь приводится лишь краткое описание этой задачи; обсуждение ее значимости см. в [293] и [305]. Мы рассматриваем (правильно построенные) формулы α, составленные из пропозициональных переменных x1 , x2 , . . . с помощью связок ∼, ∨, ∧ (отрицание, дизъюнкция, конъюнкция). Вот пример такой формулы: α = (x1 ∨ ∼ x2 ∨ x3 ) ∧ (x2 ∨ x3 ) ∧ (∼ x1 ∨ x3 )∧ ∼ x3 . Интерпретация для подобной формулы α — это отображение f множества переменных, входящих в α, во множество {0, 1}. Здесь 0 и 1 обозначают соответственно значения «ложь» и «истина». Таким образом, интерпретация есть присвоение каждой переменной некоторого значения истинности. Значение истинности, принимаемое формулой α при данной интерпрета-
64
2. Начала молекулярных вычислений
ции f , может быть вычислено с помощью таблиц истинности связок: ∧ 0 1 ∨ 0 1 x 0 1 0 0 1 0 0 0 ∼x 1 0 1 1 1 1 0 1 Формула α выполнима, если она принимает значение 1 хотя бы при одной интерпретации. Ясно, что α невыполнима в точности тогда, когда ее отрицание ∼ α является тавтологией, т. е. принимает значение 1 при всех интерпретациях. Следующее простое рассуждение показывает, что выписанная выше формула α невыполнима. Предположим противное: пусть α принимает значение 1 при некоторой интерпретации f . Тогда каждый из четырех компонентов (в последующем именуемых дизъюнктами) принимает значение 1 при f . В частности, f (∼ x3 ) = 1, что влечет f (x3 ) = 0. Из третьего дизъюнкта мы видим, что тогда f (x1 ) = 0, а из второго — что f (x2 ) = 1. Но при такой интерпретации первый дизъюнкт принимает значение 0, что приводит к противоречию. Иногда, как в только что разобранном случае, для решения задачи о выполнимости для данной пропозициональной формулы удается применить тот или иной приспособленный к специфике случая метод. В общем случае, однако, неизвестен никакой метод, существенно лучший, чем полный перебор, при котором для формулы с k переменными перебираются все 2k возможных интерпретаций. Такой перебор вычислительно труден и уже при, скажем, 200 переменных практически неосуществим. Известно, что задача о выполнимости NP-полна. С интуитивной точки зрения это, вероятно, самая основная NPполная задача в том смысле, что от нее удобное всего отправляться при исследовании NP-полных задач и что во многих случаях NP-полные задачи весьма естественно сводятся к задаче о выполнимости. Предложенное Липтоном [184] «молекулярное» решение задачи о выполнимости использует некоторые из основных операций, описанных в разделе 2.1 выше. В действительности оно сводится к полному перебору, который становится вычисли-
2.2. Решение задачи о выполнимости и взлом DES
65
0 as 0k−1 sa01 sa02 sa03 s ak @ @ @ @ @ @ @ @ R sv @ R sv @ R svk−1 @ R sv @ ... vin s 1 2 out @ @ @ @ @ @ @ @ Rs @ Rs @ Rs @ Rs 1 @ s1 1 1 1
a1
a2
a3
ak−1
ak
Рис. 2.3. Граф интерпретаций.
тельно осуществимым благодаря массированному параллелизму цепочек ДНК. Начнем с описания интерпретаций на языке графов. Предположим, что мы имеем дело с пропозициональной формулой, содержащей k переменных. Рассмотрим ориентированный граф на рис. 2.3. Из вершины vin в вершину vout проходит в точности 2k путей (ни один из которых не будет гамильтоновым). Действительно, для каждой из вершин vin , v1 , . . . , vk−1 существует ровно два варианта продолжения пути, и эти варианты не зависят друг от друга. Более того, между множеством путей и множеством интерпретаций переменных x1 , x2 , . . . , xk существует естественное взаимнооднозначное соответствие. Например, путь vin a01 v1 a02 v2 . . . vk−1 a0k vout соответствует интерпретации, при которой все переменные принимают значение 0. В общем случае, путь vin ai11 v1 ai22 v2 . . . vk−1 aikk vout соответствует интерпретации, при которой xj принимает значение ij (j = 1, . . . , k). Поступим теперь с этим графом в точности так, как в опыте Эдлмана. Каждую вершину закодируем случайным олигонуклеотидом, скажем, длины 20. Рассмотрим коды si и sj двух вершин таких, что из первой во вторую идет ребро ei,j . Запишем si как si = s0i s00i , где s0i и s00i — цепочки равной длины, и аналогично запишем sj = s0j s00j . Тогда ребро ei,j кодируется олигонуклеотидом h(s00i s0j ), где h — морфизм Уотсона–Крика. Далее процесс продолжается так же, как и в опыте Эдлмана. Для каждой вершины и каждого ребра данного графа берется большое количество кодирующих их олигонуклеотидов; эти нуклеотиды смешиваются вместе и вступают в реакцию
66
2. Начала молекулярных вычислений
сшивки. Снова олигонуклеотиды si служат скрепками, благодаря которым сшиваются олигонуклеотиды, соответствующие смежным ребрам. «Конец» вершины (т.е. конец кодирующего ее олигонуклеотида) и «начало» ребра могут соединиться, поскольку являются комплементарными по Уотсону–Крику. Аналогично, «конец» ребра может соединиться с «началом» следующей вершины. Поскольку кодирующие олигонуклеотиды выбираются случайным образом и достаточно длинны (заметим, что с увеличением числа переменных k длина 20 возможно не будет достаточной), возникновение «нечаянных» путей маловероятно. Это означает, что по завершении сшивки «бульон» будет содержать двойные цепочки ДНК, кодирующие произвольные пути в данном графе. Как мы пояснили выше, тем самым кодируются и всевозможные интерпретации k переменных. Так как наш граф весьма симметричен, нет никаких причин полагать, что появление одних путей более вероятно, нежели появление других. Мы подошли теперь к интересному и существенному различию между опытом Эдлмана и решением Липтона задачи о выполнимости; это различие касается основной реакции сшивки. В последнем случае граф всегда одинаков, так как при фиксированном числе переменных он не зависит от исходной пропозициональной формулы. Таким образом, можно всегда начинать решение с одной и той же пробирки, в которой закодированы всевозможные интерпретации. Взяв несколько копий этой пробирки, можно одновременно работать с несколькими пропозициональными формулами. В опыте Эдлмана ситуация иная — поскольку там граф служит исходным данным задачи, начальная пробирка меняется в зависимости от задачи. В дальнейшем, обсуждая решение задачи о выполнимости, мы будем пользоваться термином начальная пробирка. Она создается указанным выше способом и содержит коды всех возможных интерпретаций. К ней и будут применяться операции, описанные в предыдущем разделе. Следуя Липтону (см. [184], с. 544), мы предполагаем, что начальная пробирка содержит одинарные цепочки. (Дело молекулярной биологии — устано-
2.2. Решение задачи о выполнимости и взлом DES
vin
67
sa01 s a02 @ @ @ @ R sv @ R sv @ s 1 out @ @ @ @ Rs @ Rs @
a11
a12
Рис. 2.4. Граф, связанный с формулой β.
вить, выгодно ли на деле денатурировать двойные цепочки, возникающие при создании начальной пробирки, или же просто следует понимать наши операции как действия над одной половиной двойной цепочки.) Мы будем использовать операции разделить, слить и обнаружить. Для начала мы обсудим пример, предложенный в [184]. Рассмотрим пропозициональную формулу β = (x1 ∨ x2 ) ∧ (∼ x1 ∨ ∼ x2 ). Здесь две переменные, и соответствующий граф показан на рис. 2.4. Каждому из 4 путей из vin в vout в этом графе соответствует одна из 4 интерпретаций переменных x1 и x2 . Исходная пробирка N0 , созданная, как указано выше, содержит цепочки для каждого из этих путей и, следовательно, для каждой интерпретации. С учетом длины олигонуклеотидов, кодирующих вершины aij , эти олигонуклеотиды легко отличить друг от друга даже в случае гораздо большего числа переменных. Это значит, что, например, олигонуклеотид, кодирующий вершину a11 , не появится нигде, кроме предназначенной для него позиции. Если мы, применив операцию разделить, создадим пробирку +(N0 , a11 ), то мы выделим те интерпретации, в которых переменная x1 принимает значение 1 (истина). (Напомним, что пробирка +(N0 , a11 ) состоит из таких цепочек из N0 , в которых олигонуклеотид a11 появляется в качестве подстроки.) Это простое наблюдение лежит в основе всей процедуры. Мы пользуемся естественными обозначениями интерпретаций с помощью последовательностей из двух бит. Так, 01 обо-
68
2. Начала молекулярных вычислений
значает интерпретацию x1 = 0, x2 = 1. Подобное обозначение используется и в случае, когда переменных больше двух. Аналогичным образом обозначаются цепочки ДНК, соответствующие путям из vin в vout в графах интерпретаций. Так, цепочка vin a01 v1 a12 vout обозначается через 01. Ясно, что такое обозначение однозначно характеризует эту цепочку среди всех цепочек, отвечающих путям в графе на рис. 2.4. Наконец, если пробирка N состоит из цепочек указанного типа, записанных битовыми последовательностями, то через S(N, i, j) мы обозначаем пробирку из тех цепочек из N , в которых i-й бит равен j, (j = 0, 1). Согласно сделанному выше простому наблюдению, пробирка S(N, i, j) получается из N с помощью операции разделить: S(N, i, j) = +(N, aji ). Мы рассматриваем также пробирку, состоящую из тех цепочек из N , в которых i-й бит равен 1 − j: S − (N, i, j) = −(N, aji ). Следующая программа решает задачу о выполнимости для пропозициональной формулы β: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
ввести(N0 ) N1 = S(N0 , 1, 1) N10 = S − (N0 , 1, 1) N2 = S(N10 , 2, 1) слить(N1 , N2 ) = N3 N4 = S(N3 , 1, 0) N40 = S − (N3 , 1, 0) N5 = S(N40 , 2, 0) слить(N4 , N5 ) = N6 обнаружить(N6 )
Заметим, что на каждом из шагов (2), (4), (6) и (8) операция разделить применяется в смысле +(N, w), тогда как на шагах (3) и (7) она применяются в смысле −(N, w). Следующая
2.2. Решение задачи о выполнимости и взлом DES
69
таблица показывает содержимое пробирок на различных шагах программы. Шаг Пробирка Шаг Пробирка
1 00,01,10,11 6 01
2 10,11 7 10,11
3 00,01 8 10
4 01 9 01,10
5 10,11,01
Таким образом, на шаге (10) команда обнаружить возвращает значение истина. Данная программа основана на полном переборе. На шаге (1) в исходной пробирке содержатся всевозможные интерпретации. На шаге (5) в пробирку попадают в точности те интерпретации, при которых истинен первый дизъюнкт пропозициональной формулы β. (Для этого либо x1 , либо x2 должны принимать значение 1. На шаге (2) мы отделяем те интерпретации, при которых x1 = 1. На шаге (4) из оставшихся интерпретаций выбираются такие, для которых x2 = 1.) Далее интерпретации в пробирке N3 фильтруются так, чтобы на шаге (9) отобрать те из них, которые обращают в 1 и второй дизъюнкт пропозициональной формулы β. Метод, проиллюстрированный на этом простом примере, непосредственно применим в общем случае. Мы будем рассматривать пропозициональные формулы в конъюнктивной нормальной форме. Это означает, что формулы выглядят как формулы α и β выше: они суть конъюнкции ( . . . ) ∧ ( . . . ) ∧ . . . ∧ ( . . . ), где каждое из выражений в скобках есть дизъюнкция термов, а каждый терм — это либо переменная, либо ее отрицание. Известны быстрые алгоритмы для перевода произвольной пропозициональной формулы в конъюнктивную нормальную форму. Рассмотрим пропозициональную формулу γ = C1 ∧ C2 ∧ · · · ∧ Cm , где каждый из m дизъюнктов Ci есть дизъюнкция переменных и их отрицаний. Предположим, что в записи γ участвует в общей сложности k переменных x1 , x2 , . . . , xk . Тогда мы приходим
70
2. Начала молекулярных вычислений
к ориентированному графу, изображенному на рис. 2.3 выше, и к начальной пробирке N0 , содержащей все k-битные последовательности (при условии, что цепочки из N0 обозначаются описанным выше образом). Начав с N0 , мы пройдем через все дизъюнкты формулы γ, выбрасывая из N0 ненужные цепочки, пока, пройдя через Cm , не оставим лишь цепочки, отвечающие интерпретациям, при которых γ принимает значение «истина». Рассуждая по индукции, опишем в явном виде индуктивный переход. Допустим, что каждая интерпретация, отвечающая цепочкам из Ni , 0 6 i < m, обращает в истину подформулу γi = C1 ∧ · · · ∧ Ci , а Ci+1 = y1 ∨ · · · ∨ yl , где yj — переменная или ее отрицание. На начальном шаге мы имеем пробирку N0 со всеми возможными интерпретациями значений истинности и пустую формулу γ0 . Используя операции разделить и слить, превратим Ni в Ni+1 с помощью точно такой же процедуры, как и в примере выше. Рассмотрим терм y1 . Построим S(Ni , n, 1), если y1 = xn , и S(Ni , n, 0), если y1 =∼ xn , 1 6 n 6 k. Таким образом, мы извлечем из Ni подпробирку S(Ni , n, j), обращающую терм y1 в 1. То, что осталось от Ni , т. е. S − (Ni , n, j), исследуем по отношению к терму y2 и ее «положительную» часть (т. е. цепочки, обращающие y2 в 1) сольем с S(Ni , n, j). «Отрицательную» часть подвергнем исследованию по отношению к терму y3 , и т. д., пока не исчерпаем весь дизъюнкт, исследовав yl . Когда указанным образом будет построена пробирка Nm , для решения задачи достаточно одного применения операции обнаружить. Как и в опыте Эдлмана, этот заключительный шаг можно модифицировать так, чтобы в том случае, когда решение существует, найти его явный вид. Вычислительная сложность описанного нами процесса невелика: требуется m шагов, каждый из которых состоит из нескольких применений операций разделить и слить. Число таких применений не превышает числа переменных в дизъюнкте. Другое дело, что при этом предполагается, что все операции выполняются без ошибок. Это — далеко не очевидное предположение, анализ которого требует изучения микробио-
2.2. Решение задачи о выполнимости и взлом DES
71
логических основ указанных операций. Можно принять и другую точку зрения, не апеллирующую к безошибочным операциям. Если начальная пробирка содержит много копий каждой интерпретации, то хотя некоторые из них могут быть потеряны, вероятность все же получить правильный ответ будет достаточно велика. В качестве еще одного примера рассмотрим пропозициональную формулу δ. Формула β, рассмотренная выше, не показательна по двум причинам. Во-первых, все переменные появляются во всех дизъюнктах. Во-вторых, β имеет слишком мало дизъюнктов даже по отношению к малому числу переменных. (Формула с малым числом дизъюнктов выполнима независимо от самих дизъюнктов; несложно указать соответствующие нижние границы.) Хотя формула δ все еще не слишком велика и ее выполнимость может быть обнаружена без особых трудностей, она лишена этих двух недостатков. Формула δ имеет 5 переменных и 11 дизъюнктов: δ = (∼ x1 ∨ ∼ x2 ∨ ∼ x3 ) ∧ (x1 ∨ x2 ∨ ∼ x4 ) ∧ (∼ x1 ∨ x2 ∨ x4 ) ∧(x1 ∨ x2 ∨ ∼ x5 ) ∧ (x1 ∨ ∼ x2 ∨ ∼ x5 ) ∧ (x1 ∨ x3 ∨ x4 ) ∧(∼ x1 ∨ x3 ∨ ∼ x5 ) ∧ (x1 ∨ ∼ x4 ∨ x5 ) ∧ (x2 ∨ ∼ x3 ∨ x4 ) ∧(x3 ∨ x4 ∨ x5 ) ∧ (x3 ∨ ∼ x4 ∨ x5 ). Начальная пробирка N0 содержит все 32 возможные интерпретации: 00000, 00001, . . . , 11111. Следующая таблица описывает содержимое пробирок N0 , N1 , . . . , N11 в ходе описанного выше процесса. Каждая пробирка Ni , i = 1, 2, . . . , 11, характеризуется списком исключаемых из Ni−1 цепочек. Таким образом, в конечной пробирке N11 останутся цепочки, кодирующие интерпретации 01100, 10110 и 10111, и завершающая операция обнаружить возвратит значение истина. Изложенный выше метод нетрудно приспособить для работы с произвольными пропозициональными формулами, не обязательно приведенными к конъюнктивной нормальной форме [184]. Каждая такая формула получается применением к переменным унарной операции отрицания и бинарных операций конъюнкции и дизъюнкции. (Можно рассматривать и дру-
72
2. Начала молекулярных вычислений
Пробирка N0 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11
Исключенные цепочки ни одна не исключена 11100, 11101, 11110, 11111 00010, 00011, 00110, 00111 10000, 10001, 10100, 10101 00001, 00101 01001, 01011, 01101, 01111 00000, 01000 10011, 11001, 11011 01010, 01110 00100 11000 10010, 11010
гие пропозициональные связки, но для наших обсуждений это несущественно.) Вычислительная сложность описанного процесса определяется числом m бинарных операций, в то время как количество отрицаний и переменных не имеет значения. После m + 1 разделений и m слияний получаются две пробирки, первая из которых содержит молекулы, представляющие (т. е. кодирующие) интерпретации, при которых формула выполняется, в то время как вторая содержит молекулы, представляющие все прочие интерпретации. Таким образом, задача о выполнимости решается однократным применением к первой пробирке операции обнаружить. При анализе физических препятствий на пути к созданию практически пригодного молекулярного компьютера следует сконцентрировать внимание на возможных реализациях различных операций. С помощью операций, рассмотренных нами, легко писать программы, но вопрос о том, насколько легко их реализовать на практике, относится к сфере микробиологических технологий. Сколько-нибудь детальное обсуждение таких технологий выходит за рамки данной книги, и мы ограничимся несколькими общими замечаниями. Естественный способ реализовать операцию слить — влить содержимое одной пробирки в другую. Интуитивно кажется,
2.2. Решение задачи о выполнимости и взлом DES
73
что такая операция выполнима быстрее и с меньшей вероятностью ошибки, чем операция разделить, которая несомненно требует гораздо более тонких методов. Последнее верно и по отношению к операции обнаружить, однако, представляется, что в стандартных программах операция обнаружить производится редко. Следовательно, то, как реализуется эта операция, не слишком сильно влияет на вычислительную сложность процесса, хотя величина ее погрешности, конечно, очень важна. Реализация операции разделить может приводить как к ошибкам включения, так и к ошибкам исключения. В первом случае цепочка, которая должна попасть в пробирку +(N, w), в действительности оказывается не там, а возможно, даже в −(N, w). Аналогично, при ошибке исключения цепочка, которая должна оказаться в пробирке −(N, w), туда не попадает. Было бы полезным изучить различия в вероятностях ошибок этих двух типов. В разделе 2.4 мы обсудим еще ряд вопросов, связанных с осуществимостью операций и погрешностями при их выполнении. В оставшейся части этого раздела мы рассмотрим модель молекулярных вычислений, которая была введена в [291] и названа там стикерной моделью. Мы также обсудим основанный на этой модели метод взлома широко используемой криптосистемы DES (Data Encryption Standard), см. [6]. Стикерная модель базируется на парадигме комплементарности Уотсона– Крика, благодаря которой цепочки ДНК можно использовать как физический носитель информации. По существу, стикерная модель есть память с произвольным доступом, причем не требующая удлинения цепочек и допускающая, по крайней мере теоретически, многократное использование. Прежде всего, опишем основанный на комплементарности метод представления информации цепочками ДНК. В этом методе используется два основных типа одноцепочечных молекул ДНК: запоминающие цепочки и цепочки-наклейки или стикеры. Запоминающая цепочка длиной n нуклеотидов содержит k неперекрывающихся подцепочек, каждая из которых имеет длину m нуклеотидов. Таким образом, должно
74
2. Начала молекулярных вычислений
... Г А Г А Г Т Т Т Т ЦА А А А А ЦЦЦЦЦ ... запоминающая цепочка ТТТТТ
ЦТЦТЦ
ГГГГГ
ААААГ наклейки
Рис. 2.5. Пример стикерной памяти.
выполняться неравенство n > mk. На последующих иллюстрациях подцепочки изображаются вплотную примыкающими друг к другу, хотя в действительности такое ограничение и не является необходимым. В ходе вычисления каждая подцепочка представляет одну фиксированную булеву переменную (или, что эквивалентно, один бит). Подцепочки должны существенно отличаться одна от другой: в любых двух из них по крайней мере на нескольких позициях должны стоять разные нуклеотиды. Это нужно для того, чтобы каждый бит мог быть с уверенностью идентифицирован. Каждый стикер имеет длину m нуклеотидов и комплементарен в точности одной из k подцепочек запоминающей цепочки. Каждая подцепочка запоминающей цепочки может быть либо включена, либо выключена. Говорят, что подцепочка включена, если к ней присоединен соответствующий ей стикер. В противном случае, если к подцепочке не присоединен стикер, говорят, что она выключена. Термин запоминающий комплекс будет использоваться для запоминающих цепочек, в которых включены некоторые подцепочки. Запоминающие комплексы представляют числа в двоичной записи: включенные (соответственно выключенные) подцепочки представляют цифру 1 (соответственно 0). Итак, запоминающие комплексы — это частично сдвоенные цепочки ДНК. На рис. 2.5 изображена запоминающая цепочка длины n = 20, разделенная на k = 4 участков длиной m = 5. Комплек-
2.2. Решение задачи о выполнимости и взлом DES
75
... Г А Г А Г Т Т Т Т ЦА А А А АЦ Ц Ц Ц Ц ... ... Г А Г А Г Т Т Т Т ЦА А А А АЦ Ц Ц Ц Ц ... ААААГ
... Г А Г А Г Т Т Т Т ЦА А А А АЦ Ц Ц Ц Ц ... ЦТЦТЦ
Г ГГГ Г
... Г А Г А Г Т Т Т Т ЦА А А А АЦ Ц Ц Ц Ц ... Т Т Т Т Т Г ГГГ Г Рис. 2.6. Пример запоминающего комплекса.
сы, получаемые из этой цепочки, можно интерпретировать как вместилища для четырех битов информации. Рассмотрим, например, четыре запоминающих комплекса на рис. 2.6. В первом из них все подцепочки выключены, а в четвертом включены две последних подцепочки. Двоичные числа, представленные этими четырьмя запоминающими комплексами, суть соответственно 0000, 0100, 1001 и 0011. В запоминающей цепочке, приведенной на рис. 2.5, участки, отвечающие нечетным (соответственно четным) битам состоят целиком из пуринов (соответственно пиримидинов). Такой выбор имеет то преимущество, что между кодирующими подцепочками создаются естественные границы. Другими словами, стикер не может присоединиться к участку, перекрывающемуся с двумя выбранными подцепочками. (Такое присоединение привело бы к ошибке при выполнении описываемых ниже операций.) В действительности, для любого серьезного применения стикерной модели важно тщательное изучение наиболее подходящего кодирования с целью так скомбинировать микробиологическую реализуемость и теоретические преимущества, чтобы достичь оптимального компромисса между ними. Полезно также сравнить основные структуры данных в опыте Эдлмана и в стикерных системах и, в частности, идею
76
2. Начала молекулярных вычислений
конструирования двойных цепочек. В обоих случаях срабатывает парадигма комплементарности. В стикерных системах начинают с длинной одинарной цепочки, к которой присоединяются короткие стикеры, создавая запоминающий комплекс, т. е. частично сдвоенную цепочку. В опыте же Эдлмана (как и в решении Липтона задачи о выполнимости) начинают не с длинной цепочки, а с коротких одинарных цепочек, которые соединяются шаг за шагом так, что после каждого шага остаются липкие концы. Получающиеся при этом двойные цепочки не должны иметь одноцепочечных промежутков. Можно считать, что плотность информации в обоих случаях (в стикерных системах и опыте Эдлмана) одинакова и составляет 1/m бит на нуклеотид. Хотя теоретический максимум плотности в представлении информации с помощью ДНК равен двум битам на нуклеотид, при столь большой плотности любой молекулярный компьютер, основанный на разделении молекул, был бы слишком чувствителен к ошибкам. Теперь мы готовы ввести операции, используемые в стикерных системах. Как и те операции, которые мы рассмотрели выше, они просты, но достаточно гибки для реализации весьма общих алгоритмов. Как и ранее, пробирка — это мультимножество, элементами которого теперь служат запоминающие комплексы. (То, какими двумерными структурами данных в действительности представляются запоминающие комплексы, несущественно для наших обсуждений.) Мы рассматриваем операции слить, разделить, включить и очистить. Операция слить имеет прежний смысл: две пробирки объединяются в одну. При этом запоминающие комплексы из двух пробирок на входе без изменений присоединенных к ним стикеров переходят в новое мультимножество, являющееся объединением двух данных. Операция разделить создает по данной пробирке N и целому числу i, 1 6 i 6 k, две новых пробирки +(N, i) и −(N, i). Пробирка +(N, i) (соответственно −(N, i)) состоит из всех запоминающих комплексов исходной пробирки N , в которых включена (соответственно выключена) i-я подцепочка.
2.2. Решение задачи о выполнимости и взлом DES
77
Для данной пробирки N и целого i, 1 6 i 6 k, операция включить создает новую пробирку включить(N, i), в которой у каждого запоминающего комплекса из N включена i-я подцепочка. Это означает, что подходящий стикер присоединяется к запоминающему комплексу, если i-я подцепочка этого комплекса была выключена, но если i-я подцепочка уже была включена, то комплекс не изменяется. Наконец, для данной пробирки N и целого i, 1 6 i 6 k, операция очистить создает новую пробирку очистить(N, i), в которой у каждого запоминающего комплекса из N выключена i-я подцепочка. Это означает, что соответствующие стикеры удаляются из тех комплексов, где они имелись. Вычисление в стикерной модели есть последовательность операций слить, разделить, включить и очистить. Входом и выходом вычисления являются пробирки. Чтение выхода состоит в выделении из итоговой пробирки одного запоминающего комплекса и определении присоединенных к нему стикеров, либо в сообщении, что в этой пробирке нет ни одного запоминающего комплекса. Вход или начальная пробирка является библиотекой запоминающих комплексов. Более строго, (k, l)-библиотека, где 1 6 l 6 k, состоит из запоминающих комплексов с k подцепочками, последние k − l из которых выключены, тогда как первые l включены или выключены всеми возможными способами. Таким образом, (k, l)-библиотека, рассматриваемая как мультимножество, содержит 2l различных типов запоминающих комплексов. Их можно представить бинарными последовательностями вида w0k−l , где w — произвольная бинарная последовательность длины l. В начальной пробирке первые l подцепочек запоминающих комплексов используются для входных данных, а остальные k − l подцепочек — для хранения промежуточных данных и результатов. Вычислительная парадигма, ассоциированная со стикерной моделью, состоит в решении трудных задач путем полного перебора всех входов длины l. Все возможные 2l вариантов об-
78
2. Начала молекулярных вычислений
рабатываются параллельно. Можно сказать, что эта парадигма составляет суть молекулярных вычислений вообще. Как и в [291], мы проиллюстрируем стикерную модель на примере решения задачи о минимальном покрытии, ЗМП. Она может быть сформулирована следующим образом. По данному конечному множеству S = {1, 2, . . . , p} и конечному набору {C1 , . . . , Cq } подмножеств множества S нужно найти наименьшее подмножество I ⊆ {1, 2, . . . , q} такое, что ∪i∈I Ci = S. Конечно, полный перебор всех 2q подмножеств I решает эту задачу. Опишем решение, использующее стикерную модель. Запоминающие цепочки состоят из k = p + q подцепочек. Исходная пробирка N0 есть (p + q, q)-библиотека. (Следует подчеркнуть, что широкое применение стикерной модели возможно только при условии, что уже имеются библиотеки определенных размеров. Построение же запоминающих цепочек с k подцепочками с ростом k становится все более сложным.) Обозначим через card(X) мощность множества X, т. е. число элементов в X. Элементы множества Ci , 1 6 i 6 q обозначаются cji , 1 6 j 6 card(Ci ). Таким образом, каждый элемент cji — это целое число от 1 до p. Запоминающие комплексы в исходной пробирке N0 соответствуют всевозможным подмножествам I множества {1, 2, . . . , q}. А именно, первые q участков комплекса, будучи включены или выключены, показывают, какие из чисел 1, 2, . . . , q, принадлежат множеству I, отвечающему данному комплексу. Последние p участков каждого запоминающего комплекса M первоначально выключены, а по завершении вычисления подцепочка с номером q + j, 1 6 j 6 p, оказывается включенной в том и только в том случае, когда число j принадлежит множеству Ci для некоторого i из множества индексов I, отвечающего комплексу M . Для этого с M проделываются следующие операции. Мы просматриваем первые q подцепочек в M . Всякий раз, когда мы встречаем включенную подцепочку (пусть она имеет номер i; включенные и выключенные подцепочки различаются с помощью операции
2.2. Решение задачи о выполнимости и взлом DES
79
разделить), мы включаем те из последних p участков, которые отвечают числам из Ci . Просмотрев таким образом все первые q подцепочек комплекса M , мы проверяем, все ли из последних p подцепочек включены. Это снова может быть проделано с помощью операции разделить. Включенность последних p подцепочек означает, что множество индексов I, соответствующее комплексу M , действительно является покрытием множества S = {1, 2, . . . , p}. Таким образом, мы можем отбросить запоминающие комплексы, не удовлетворяющие этому условию, а среди оставшихся найти минимальное покрывающее множество. Очевидно, что описанная процедура приводит к решению задачи. Однако при стандартной последовательной реализации вычислений такое решение требует громадных затрат времени: при q = 100, мы должны применить процедуру для каждого из 2100 запоминающих комплексов. Положение меняется при использовании ДНК-вычислений и стикерной модели, поскольку при таком подходе одновременно обрабатываются все запоминающие комплексы из исходной пробирки N0 , в которых включена первая подцепочка (и значит, C1 — одно из множеств в предполагаемом покрытии множества S). Результат используется на следующем шаге, где в процесс вовлекаются запоминающие комплексы, в которых включена вторая подцепочка, и т. д. Таким образом, весь процесс будет состоять не из 2q , а только из q шагов. Напомним обозначения +(N, i), −(N, i) и включить(N, i), связанные с операциями разделить и включить. Следующая простая программа, в которой исходная пробирка N0 является (p + q, q)-библиотекой, формализует описанную выше идею: (1) для i от 1 до q разделить + (N0 , i) − (N0 , i) для j от 1 до card(Ci ) включить(+(N0 , i), q + cji ) N0 ← слить(+(N0 , i), −(N0 , i))
80
2. Начала молекулярных вычислений
(2) для i от q + 1 до q + p N0 ← +(N0 , i) На выходе этой программы получается пробирка N0 , содержащая только те запоминающие комплексы, в которых включены все последние p подцепочек. Для того, чтобы решить ЗМП, следует еще выбрать из N0 запоминающий комплекс, у которого среди первых q подцепочек наименьшее число включенных. В следующей программе по завершении внешнего цикла на шаге (3) в пробирке Ni , i > 1 будут находиться все те запоминающие комплексы, в которых из первых q подцепочек включены ровно i. Таким образом, на выходе программы получится решение ЗМП. (3) для i от 0 до q − 1 для j от i до 0 разделить + (Nj , i + 1) и − (Nj , i + 1) Nj+1 ← слить(+(Nj , i + 1), Nj+1 ) Nj ← −(Nj , i + 1) (4) обнаружить N1 ; если N1 пуста обнаружить N2 ; если N2 пуста обнаружить N3 ; ............ При желании читатель может «прокрутить» двойной цикл в шаге (3) на простом примере. Пусть q = 4 и C3 покрывает множество S вместе с любым другим множеством Ci , в то время как C1 , C2 , C4 даже вместе не покрывают S. Это означает, что в пробирку N0 к шагу (3) попадут запоминающие комплексы, представляющие покрытия (1, 3), (2, 3), (3, 4), и все покрытия, их содержащие. В таблице 2.1 описывается состояние пробирок после каждого шага внешнего цикла. Заметим, что приведенная процедура не использует операцию очистить. Еще одно, более важное наблюдение состоит в том, что описанный алгоритм в принципе может быть исполнен
(3,4)
пусто
пусто
пусто
(3,4)
(1,3),(1,2,3), (1,3,4), (1,2,3,4) (1,3),(1,3,4), (2,3),(2,3,4)
N1 пусто
(1,3),(2,3), (1,3,4), (2,3,4) (1,3),(2,3), (3,4)
(1,2,3), (1,2,3,4)
пусто
N2 пусто
(1,2,3), (1,3,4), (2,3,4)
(1,2,3), (1,2,3,4)
пусто
пусто
N3 пусто
Таблица 2.1. Отбор минимального покрывающего множества.
i = 0, разделить по 1 i = 1, разделить по 2 i = 2, разделить по 3 i = 3, разделить по 4
исходное состояние
N0 (1,3),(2,3), (3,4),(1,2,3), (1,3,4),(2,3,4), (1,2,3,4) (2,3),(3,4), (2,3,4)
(1,2,3,4)
пусто
пусто
пусто
N4 пусто
2.2. Решение задачи о выполнимости и взлом DES 81
82
2. Начала молекулярных вычислений
роботом, автоматически производящим действия, из которых складываются вычислительные операции. Для этого необходимо, чтобы эти действия можно было выполнять «вслепую», т.е. без считывания информации с ДНК в ходе вычисления — подобное считывание при сегодняшних технологиях, по-видимому, еще невозможно. Обсуждавшиеся выше операции (слить, разделить, включить, очистить) могут быть исполнены роботом, см. [291]. В [6] представлено самое эффектное из возможных приложений стикерной модели — атака на криптосистему DES (Data Encryption Standard, подробное описание этой криптосистемы можно найти в [308]). Анализ, проведенный в [6], показывает, что такую атаку можно осуществить с помощью ДНК-вычислений, выполняемых роботом настольных размеров. Для вычислений потребуется приблизительно один грамм ДНК. Весьма важно то, что шансы на успех достаточно велики даже в том случае, когда при вычислениях допускается большое число ошибок. Благодаря этому обстоятельству применение ДНКвычислений в задачах криптоанализа представляется особенно перспективным. В таких задачах никогда не приходится рассчитывать на стопроцентный успех, но криптоаналитическая атака с использованием ДНК-вычислений может удаться с приемлемой вероятностью, даже если отдельные операции над ДНК выполняются с ошибками. Криптосистема DES преобразует 64-битные блоки текста в 64-битные блоки криптотекста. Шифрование происходит с помощью 56-битного ключа, который используется и для дешифрования. (DES — классическая симметричная криптосистема с закрытым ключом в противоположность распространенным сейчас односторонним криптосистемам и криптосистемам с открытым ключом.) Рассмотрим криптоаналитическую атаку «известный текст» [308]. Такая атака означает, что криптоаналитику известны несколько пар, состоящих из текста и соответствующего криптотекста, и на основе этой информации криптоаналитик должен за разумное время определить ключ. Высказывались предположения, что в случае DES это может
2.2. Решение задачи о выполнимости и взлом DES
83
быть проделано с помощью специализированных электронных устройств или суперкомпьютера, использующего массированный параллелизм, однако пока что успеха добиться не удалось1 . Возможно, что подход, основанный на стикерной модели, будет более успешным, хотя в конечном счете только лабораторные эксперименты решат, насколько он реализуем. Очевидным подходом к данной задаче является исчерпывающий перебор всех 256 ключей. (Свидетельством надежности криптосистемы DES служит то, что до сих пор не известен никакой существенно лучший подход.) Именно этот основанный на «грубой силе» путь вполне годится для ДНК-вычислений. Опишем криптоаналитическую атаку, предложенную в [6]. Используется стикерная модель; исходная пробирка является (579,56)-библиотекой. Подцепочками запоминающих комплексов служат олигонуклеотиды длины 20. Таким образом, длина запоминающей цепочки составляет 11580 нуклеотидов. Такая длина еще допустима, хотя для олигонуклеотидов с длиной более 15000 оснований есть опасность разрыва при переливании и перемешивании содержимого пробирок. В запоминающих комплексах область из 56 подцепочек отводится для хранения 56-битного ключа. В другой области из 64 подцепочек после вычислений будет записан соответствующий криптотекст. Оставшиеся 459 подцепочек нужны для хранения промежуточных результатов по ходу вычислений. Известная пара из текста и криптотекста не записывается в запоминающих комплексах и всегда остается неизменной. Каждый ключ применяется к данному тексту, а получающийся криптотекст сравнивается с известным криптотекстом. Таким образом, вся процедура состоит из следующих трех шагов. 1. Построить исходную (579,56)-библиотеку, представляющую все 256 ключей. 1 Примечание авторов к русскому переводу. Криптоанализ развивается очень быстро, и ситуация несколько изменилась с тех пор, как были написаны эти строки. Исходная версия криптосистемы DES оказалась ненадежной, и сейчас используются различные ее модификации, см. [173]. Однако и к ним в равной степени приложимы изложенные здесь идеи о возможном использовании ДНК-вычислений в криптоанализе.
84
2. Начала молекулярных вычислений
2. Для каждого запоминающего комплекса вычислить криптотекст, полученный шифрованием данного текста с ключом, представленным этим запоминающим комплексом. 3. Выбрать запоминающий комплекс, для которого криптотекст совпадает с известным криптотекстом, и прочитать его ключ. Основная часть работы приходится на шаг (2). «Стикерную машину», исполняющую алгоритм, можно мыслить себе как виде параллельный роботизированный комплекс. В его состав входят стеллаж с пробирками (для данных, для стикеров и для выполнения операций), роботы (манипуляторы, насосы, нагреватели и охладители), а также микропроцессор, управляющий роботами. Роботы предназначены для выполнения четырех операций, обсуждавшихся выше в связи со стикерной моделью: слить, разделить, включить и очистить. При этом роботы должны осуществлять указанные операции параллельно над 64 пробирками. А именно, роботы могут слить ДНК из 64 пробирок с данными в одну. Они одновременно могут разделить 32 пробирок с ДНК на две пробирки каждую, используя 32 вспомогательные пробирки. Роботы могут включить iю подцепочку во всех запоминающих комплексах в 64 пробирках. Для этого они используют пробирку со стикерами для i-й подцепочки и вспомогательную пробирку. Аналогично, роботы могут очистить определенные подцепочки. Дальнейшие детали относительно реализации операций и алгоритм для шага (2) читатель может найти в [6]. Мы заканчиваем этот раздел объяснением того, как создается исходная библиотека на шаге (1). Как можно создать все 256 возможных ключей? Применяемая здесь техника представляет интерес для ДНК-вычислений вообще. В начале берут приблизительно 256 одинаковых запоминающих цепочек нужной длины, которые делят поровну на две пробирки N1 и N2 . В пробирку N1 добавляют большое количество каждого из 56 стикеров с тем, чтобы в результате реакции сшивки включились все 56 подцепочек. Неиспользованные стикеры вымывают из N1 , после чего N1 и N2 сливают в одну
2.3. Переосмысление парадигмы вычислений
85
пробирку N . Наконец, пробирку N подогревают и остужают с тем, чтобы стикеры сперва отклеились, а потом вновь приклеились случайным образом. После такого процесса образуются запоминающие комплексы, представляющие примерно 63% ключей. Если же начать с утроенного количества ДНК, то доля представленных ключей увеличится до 95%.
2.3
Переосмысление парадигмы вычислений
Приведет ли полномасштабная реализация идеи молекулярного компьютера к полной замене или к значительному изменению парадигмы вычислений? Именно эта тема обсуждается в данном разделе. Мы используем здесь ставший в последнее время весьма употребительным термин «парадигма» в значении «совокупность убеждений и мнений, принятых некоторым научным сообществом». При обсуждении «парадигмы вычислений» мы естественно считаем, что соответствующее научное сообщество состоит из специалистов в области компьютерных наук в самом широком смысле этого словосочетания. Не подлежит сомнению тот факт, что на протяжении уже примерно полувека воплощением парадигмы вычислений является машина Тьюринга. Обратимся к основополагающей статье Тьюринга [323] и посмотрим, какими аргументами он обосновывает, что под его определение «вычислимых» чисел действительно подпадают все числа, которые могут считаться вычислимыми с точки зрения здравого смысла. В современной терминологии, это — аргументы в защиту тезиса Черча– Тьюринга, т. е. аргументы, объясняющие, почему машина Тьюринга действительно вычисляет все вычислимое. В [323] Тьюринг использует аргументы трех типов: (1) Прямое обращение к интуиции. (2) Доказательство эквивалентности двух моделей. (3) Предъявление обширных классов вычислимых чисел и демонстрация устойчивости вычислимости относительно различных операций.
86
2. Начала молекулярных вычислений
Аргументы типа (2) и (3) не имеют прямого отношения к нашей теме, а вот напомнить, что Тьюринг говорит по поводу (1), важно, поскольку мы хотим противопоставить его представление о компьютере как о прилежном клерке идее компьютера как множества цепочек ДНК. Последние никоим образом не превосходят прилежного клерка в интеллектуальности — скорее, дело обстоит как раз наоборот. Однако их массированный, теоретически не ограниченный параллелелизм меняет парадигму, по крайней мере, в некоторых отношениях. Тьюринг открывает аргумент (1) следующим образом. ,,Вычисления обычно выполняют, записывая некие символы на бумаге. Мы можем предположить, что эта бумага поделена на клетки, как в школьной тетради. В элементарной арифметике иногда используют двухмерность бумаги, но такое использование всегда устранимо, и, я думаю, можно согласиться с тем, что двухмерность бумаги несущественна для вычислений. Итак, я предполагаю, что вычисление выполняется на одномерной бумаге, т. е. на ленте, разделенной на квадраты. Я буду также предполагать, что число символов, которые могут быть напечатаны на ленте, конечно. Если бы мы допустили бесконечность числа символов, то столкнулись бы с символами, произвольно мало отличающимися друг от друга. Эффект от ограничения на количество символов не слишком серьезен: всегда можно использовать последовательности символов вместо одиночных символов. . . . Поведение вычислителя в каждый момент времени определяется символами, которые он обозревает, и его «состоянием ума» в этот момент. Мы можем предполагать, что имеется ограничение на количество символов или клеток, которые вычислитель может обозревать за один момент времени. Если он хочет увидеть больше символов, он должен будет осуществить ряд последовательных наблюдений. Мы будем также предполагать, что и число состояний ума, которые следует принимать во внимание, конечно. Причина этого — та же, что и в случае с числом символов. Если мы допустим бесконечность числа состояний ума, то некоторые из них будут «сколь угодно близки» и могут быть
2.3. Переосмысление парадигмы вычислений
87
перепутаны. Опять-таки, это ограничение не из тех, что серьезно влияют на процесс вычисления, поскольку использования более сложных состояний ума можно избежать, записывая больше символов на ленте. Представим операции, выполняемые вычислителем, разделенными на «простые операции», которые элементарны настолько, что нелегко представить их еще более разделенными. Каждая такая операция состоит в некотором изменении физической системы, состоящей из вычислителя и его ленты. Мы знаем состояние этой системы, если мы знаем последовательность символов на ленте, знаем, какие из них (и в каком порядке) обозреваются вычислителем, и знаем состояние ума вычислителя.” Анализ продолжается в том же духе. Не будет существенным ограничением, если предположить, что изменяются только наблюдаемые клетки, а простая операция переписывает не более одного символа. Так как новые наблюдаемые клетки должны немедленно распознаваться вычислителем, их расстояние до клеток, наблюдавшихся на предыдущем шаге, не должно превышать некоторую фиксированную величину. Применяя требование элементарности каждой индивидуальной операции, приводящее к необходимости заменять более сложные операции последовательностью простых, можно заключить, что общий вид индивидуальной операции — это либо изменение наблюдаемого символа вкупе с возможным изменением состояния ума, либо переход к наблюдению другой клетки опять же вместе с возможным изменением состояния ума. Таким образом, этот интуитивный анализ подводит к стандартному описанию машины Тьюринга, которое будет строго обсуждаться в главе 3. Действия Тьюрингова вычислителя, прилежного клерка, существенным образом последовательны. Он1 работает шаг за шагом, всегда имея дело лишь с некоторой частью потенциально огромного набора данных. Ничего не происходит парал1
К слову отметим, что во времена Тьюринга в математической литературе не было никаких переживаний по поводу употребления местоимений «он» и «она». Тьюринг всегда говорит о своем клерке «он».
88
2. Начала молекулярных вычислений
лельно. Конечно, Тьюринг мог бы представить себе и команду клерков, работающих одновременно, но тогда, очевидно, его идея состояла бы в том, чтобы воспроизвести их действия с помощью одного клерка, последовательно выполняющего все индивидуальные задания. При этом возросло бы (и, возможно, чрезвычайно) время, необходимое для вычисления, но все рассмотрения, связанные со сложностью вычислений, не имеют отношения к Тьюрингову клерку. Такие понятия, как «доступность» или «реализуемость», не говоря уже о «практической осуществимости», Тьюринг не обсуждает. То, что сказано о команде клерков, применимо также и к наборам цепочек ДНК. Мы всегда можем тем или иным способом имитировать массированный параллелизм молекул ДНК, производя последовательно все действия, которые ДНК выполняет параллельно. Поэтому ясно, что ДНК-компьютеры не смогут опровергнуть тезис Черча–Тьюринга. Что бы не вычислил ДНК-компьютер, мы можем призвать Тьюрингова клерка и поручить ему произвести то же вычисление. Понятие вычислимости или, в терминологии Тьюринга, множество вычислимых чисел, не изменяется при вычислениях с помощью ДНК. Парадигма вычислений, связанная с апостериорным понятием вычислимости, представляется весьма устойчивой относительно различных вычислительных моделей. Ситуация меняется, когда парадигма вычислений рассматривается в априорном смысле и, в частности, когда учитывается феномен сложности. Мы сталкиваемся с некоторой проблемой и априори оцениваем свои возможности решить ее. Здесь мы можем придти к разным заключениям в зависимости от того, что имеется в нашем распоряжении — клерк Тьюринга или пробирка с цепочками ДНК. В случае успеха ДНКкомпьютеров парадигма вычислений, рассматриваемая в таком смысле, несомненно изменится. Это отражается и в теоретических изысканиях, касающихся классов сложности. Среди ранних примеров — генетические машины Тьюринга, введенные в [275]. В этой модели класс задач, решаемых за полиномиальное время (и в силу этого состоящий из вычислительно доступ-
2.3. Переосмысление парадигмы вычислений
89
ных задач), совпадает с классом PSPACE (который включает в себя класс NP и вместе с ним очень много задач, традиционно считающихся вычислительно неприступными). Ниже будут приведены и другие примеры. Во второй части этой книги мы задаемся вопросом, возможно ли построить универсальную вычислительную машину из биологических макромолекулярных компонентов и выполнять произвольные вычисления биологическими методами, и в связи с этим исследуем различные математические модели. Итог наших рассмотрений поразителен: оказывается, что (по крайней мере, в теории) есть много различных подходов к построению универсальных компьютеров, основанных на ДНК. Мы постараемся сейчас объяснить, какая математическая первопричина стоит за этим обобщающим наблюдением. Мы утверждаем, что именно комплементарность Уотсона–Крика обеспечивает универсальность в любой модели ДНК-компьютера, обладающей достаточными возможностями для управления вводом/выводом. Такое мнение впервые была высказано и обосновано в [294]. Комплементарность Уотсона– Крика тесно связана с языком перетасованных копий [84, 307]. В своем основном варианте такой язык использует две буквы 0 и 1, а также комплементарные им буквы ¯0 и ¯1. (Формальное определение языка перетасованных копий и математические детали, обеспечивающие универсальность, приведены в разделе 3.2, см., в частности, следствие 3.4 и теорему 3.18.) Его слова вполне аналогичны молекулам ДНК, собранным из четырех нуклеотидов, которые подразделяются на две комплементарные пары: (А, Т) и (Ц, Г). Две буквы 0 и 1 используются для кодирования информации, в то время как их комплементарные версии ¯0 и ¯1 обеспечивают структуру, требуемую для описания произвольных вычислений в терминах слов, взятых из языка перетасованных копий. Именно в этом обстоятельстве заключена суть вычислительной универсальности; на него можно также смотреть как на математическое объяснение того, что число нуклеотидов в ДНК равно четырем. Трех нуклеотидов было бы недостаточно для языка перетасованных копий, в то
90
2. Начала молекулярных вычислений
же время как при пяти в слишком многих ситуациях возникала бы избыточность — ведь уже и сам язык перетасованных копий до некоторой степени избыточен. Как уже говорилось, мы займемся формальными деталями ниже, в разделе 3.2. Тем не менее, мы хотим уже сейчас дать некоторое представление о взаимосвязях между комплементарностью Уотсона–Крика и языком перетасованных копий, поскольку именно они играют центральную роль в теории вычислений, основанных на ДНК. Мы обозначим язык перетасованных копий в его основном варианте (над четырехбуквенным алфавитом {0, 1, ¯0, ¯1}) через T S. Рассмотрим слово w над алфавитом {0, 1}, т. е. строку, состоящую из нулей и единиц. Пусть w — комплементарная строка, построенная из ¯0 и ¯1. Например, если w = 00101, то w = ¯0¯0¯1¯0¯1. Мы обозначим через shuffle(w, w) множество всех слов, получаемых с помощью перетасовки слов w и w, т. е. произвольной вставки букв слова w между буквами слова w без изменения порядка следования букв внутри этих словах. Например, каждое из слов 0¯00¯01¯10¯0¯11, ¯0¯0¯1¯0¯100101, 00¯010¯0¯1¯0¯11 принадлежит множеству shuffle(w, w), в то время как слово 0¯00¯01¯10¯1¯01 там не содержится. По определению, язык T S состоит из всех слов из shuffle(w, w), где w пробегает множество всех слов над {0, 1}. Следующий простой прием позволяет определить, принадлежит ли данное слово x, построенное из четырех букв 0, 1, ¯0, ¯1, языку T S. Сначала сотрем в x все буквы ¯0 и ¯1 и обозначим оставшееся слово через x0 . Затем сотрем в x все буквы 0 и 1, а также все черточки над остающимися буквами и обозначим получившееся слово через x00 . Тогда исходное слово x принадлежит языку T S в том и только в том случае, когда x0 = x00 . Читатель при желании может испытать этот прием на примерах, приведенных выше. Свяжем теперь «алфавит ДНК» и четырехбуквенный алфавит {0, 1, ¯0, ¯1} следующим образом: ¯ Ц = 1. ¯ А = 0, Г = 1, Т = 0,
2.3. Переосмысление парадигмы вычислений
91
Если считать комплементарными буквы в парах (0, ¯0) и (1, ¯1), то при таком соответствии эта комплементарность есть в точности комплементарность Уотсона–Крика. Теперь видна следующая взаимосвязь между языком перетасованных копий T S и двойными цепочками ДНК. Рассмотрим некоторую двойную цепочку, скажем, ТАГЦАТЦАТ АТЦГТАГТА Сначала мы перепишем буквы согласно указанному выше соответствию: ¯001¯10¯0¯10¯0 0¯0¯11¯001¯00 Взяв буквы по очереди из обеих цепочек, мы получим строку ¯000¯01¯1¯110¯0¯00¯110¯0¯00, принадлежащую T S. Это верно и в общем случае: для произвольных двойной цепочки ДНК этот метод дает слово из T S. То, что при этом получаются не все слова из T S, несущественно, поскольку это зависит лишь от нашей договоренности выбирать буквы из обеих цепочек по очереди. С точки зрения математики вычислений интересно следующее наблюдение. На вывод об универсальности ДНК-вычислений не повлияло бы, если бы одна из цепочек ДНК состояла, скажем, целиком из пуринов, а другая — целиком из пиримидинов. В нашей расширенной двоичной записи это означало бы, что буквы с чертой и без черты всегда оказывались бы в различных цепочках. То, что природа в действительности поступает иначе, несомненно обеспечивает б´ольшую свободу действий и б´ольшую эффективность вычислений. Другой способ «считывать» слова из T S с нуклеотидов молекул ДНК основан на следующем кодировании: верхняя цепочка А, Т
0
нижняя цепочка ¯0
Ц, Г
1
¯1
Другими словами, нуклеотиды А и Т отождествляются с 0 при появлении в верхней цепочке и с ¯0 при появлении в нижней цепочке; нуклеотиды Ц и Г отождествляются с 1 в верхней це-
92
2. Начала молекулярных вычислений
почке и с ¯1 в нижней. Теперь, читая обе цепочки данной двухцепочечной молекулы ДНК слева направо так, что скорость чтения каждой из цепочек недетерминирована и не зависит от скорости чтения другой цепочки, мы получаем строку из T S. Читатель может попробовать проделать это с молекулой, приведенной выше. Обратно, мы можем получить все слова из T S, рассмотрев все молекулы (полные двухцепочечные последовательности) и все варианты их прочтения указанным способом. Тот же результат получится, если начать с молекул, содержащих в верхней цепочке только нуклеотиды любой из пар (А, Ц), (А, Г), (Т, Ц), (Т, Г). Опишем вкратце, в каком смысле универсален язык T S. Согласно общепринятому тезису Черча–Тьюринга, любое вычисление может быть осуществлено машиной Тьюринга и, таким образом, вычисления характеризуются языками L0 , принимаемыми машинами Тьюринга. С другой стороны, каждый такой язык L0 может быть представлен в виде L0 = f (T S), где f — так называемое ОПМ-отображение, зависящее от языка L0 . (Аббревиатура «ОПМ» происходит от слов «Обобщенная Последовательная Машина».) Таким образом, язык T S раз и навсегда фиксирован, в то время как отображение f меняется в зависимости от специфики языка L0 . Можно рассматривать отображение f как своего рода устройство ввода/вывода. Для вычислений, основанных на ДНК, ситуация вполне аналогична. Комплементарность Уотсона–Крика раз и навсегда фиксирована и обеспечивает универсальность в том же смысле, что и T S. Ключевая проблема при разработке компьютеров, основанных на ДНК, состоит в том, чтобы найти наиболее приспособленные для ДНК-вычислений типы вычислительных методов или, на языке теории, типы ОПМ-отображений. Мы вернемся к математическим деталям в главе 3, в особенности в разделе 3.2. Результат о представлении L0 = f (T S) носит фундаментальный характер, и основная идея его доказательства весьма примечательна. Возможно, это отражает простоту первичной структуры ДНК.
2.3. Переосмысление парадигмы вычислений
93
Читателю уже ясно, что в теоретических исследованиях по ДНК-вычислениям должны использоваться следующие два преимущества, проистекающие из устройства молекул ДНК: (1) комплементарность Уотсона–Крика, которая предоставляет в наше распоряжение всю силу языка перетасованных копий, и (2) множественность молекул ДНК, которая обеспечивает массированный параллелизм в ходе вычисления. Мы уже обсуждали как (2) влияет на парадигму вычислений. Что касается (1), общая парадигма комплементарности может быть сформулирована одним из следующих двух способов. (a) Цепочка порождает комплементарную ей либо случайным образом, либо под управлением некоторого устройства. (б) Комплементарность двух цепочек приводит к такому явлению, как связывание. И обратно, наличие связи между двумя цепочками обеспечивает, что эти цепочки действительно комплементарны. Мы дали здесь весьма абстрактную формулировку парадигмы комплементарности. Алфавит, над которым рассматриваются цепочки, может быть б´ольшим, чем четырехбуквенный алфавит цепочек ДНК, мы лишь предполагаем, что между буквами имеется комплементарность. Математическая теория таких более общих алфавитов будет рассмотрена во второй части этой книги. Формулировка (б) есть абстракция идеи, присутствовавшей уже в опыте Эдлмана. То, что мы «бесплатно» получаем язык перетасованных копий, приводящий к универсальности во многих моделях ДНК-вычислений, также может быть объяснено при помощи (б): связывание гарантирует комплементарность вовлекаемых в него нуклеотидов, а это, как отмечалось выше, ведет к слову из языка перетасованных копий. С другой стороны, формулировка (а) парадигмы комплементарности представляет комплементарность как операцию: от данной строки (цепочки) мы переходим к комплементарной ей. Такая операция может оказаться важной по крайней мере в определенных фазах ДНК-вычислений. Она представляет несомненный теоретический интерес. Иногда, дополняя клас-
94
2. Начала молекулярных вычислений
сическую структуру операцией комплементарности, мы неожиданно получаем нечто новое. Так, например, происходит, когда комплементарность добавляется в систему Линденмайера [221].
2.4
ДНК-вычисления: надежды и предостережения
«Если рассуждать о долгосрочных перспективах молекулярных вычислений, то представляется вероятным, что одна-единственная молекула ДНК может быть использована для кодирования мгновенного описания машины Тьюринга и что доступные в настоящее время протоколы и ферменты могут (по крайней мере, в идеализированных условиях) быть использованы для выполнения последовательности модификаций, которые соответствовали бы исполнению программы этой машины. В будущем исследования в молекулярной биологии могут обеспечить нас улучшенными технологиями для манипуляций с макромолекулами. Исследования в химии могут сделать возможным появление синтетических ферментов с заданными свойствами. В конечном счете можно вообразить появление компьютера общего назначения, состоящего только из однойединственной макромолекулы, сопряженной с рибосомоподобным набором воздействующих на нее ферментов.» Эти слова Эдлмана [2] в сжатом виде описывают большие ожидания, связанные с ДНК-вычислениями. Даже в этих оптимистических словах ясно выражена потребность в дополнительных исследованиях в молекулярной биологии и химии. На самом деле, вопрос о том, воплотятся ли ДНК-вычисления в реальность или останутся лишь сноской в книгах по истории компьютерных наук, еще далек от какого-либо окончательного решения. В этом разделе мы обсудим позитивные и негативные перспективы ДНК-вычислений. В частности, мы вернемся к обсуждению реализуемости некоторых важных для ДНК-вычислений простых операций, рассматривавшихся в разделах 2.1 и 2.2. Уже на этом этапе важно отметить, что некоторые разделы математической теории из второй части нашей книги выходят далеко за пределы этих простых наблюдений. Некоторые
2.4. ДНК-вычисления: надежды и предостережения
95
из более сильных результатов этой теории могут быть применены на практике, только когда будут развиты новые методы в молекулярной биологии. Однако многое можно сделать, используя только простые операции, обсужденные в разделах 2.1 и 2.2. Рассмотрим сначала весьма специфическую задачу, а именно, взлом криптосистемы DES. Соответствующая техника из [6] была описана в разделе 2.2; в [6] содержится также детальный анализ реализуемости предлагаемой процедуры. Этот анализ имеет важное значение для общей оценки перспектив ДНКвычислений. Он показывает, что «реальные задачи» (а взлом наиболее широко применяемой криптосистемы несомненно является реальной задачей!) могут быть решены с помощью небольших машин, которые не нуждаются в огромных количествах ДНК и используют разве лишь несколько ферментов. В настоящее время криптографические задачи кажутся наиболее подходящем полем приложения ДНК-вычислений, поскольку здесь приемлем более высокий уровень погрешности, чем тот, что обычно требуется от электронных компьютеров. Время, требуемое для взлома DES, оценивается в пять дней. Эта оценка получена в предположении, что каждая отдельная операция (выполняемая роботизированным комплексом) занимает одну минуту. Если каждую операцию будет выполнять студент-старшекурсник, то она может занять день, и тогда все вычисление займет 18 лет. При скорости одна операция в час общая продолжительность составит 9 месяцев. Насколько громоздким будет оборудование и какова вероятность успеха? Некоторые из операций приводят к ошибкам чаще, чем другие. Для каждой операции ее погрешность — это доля молекул, над которыми операция выполняется ошибочно. Говоря, что общая погрешность есть E, мы имеем в виду, что E — это погрешность наихудшей операции, т. е. что все операции, задействованные в вычислении, имеют погрешность, не превосходящую E. Если E — погрешность, то 1 − E обычно называется выходом. Так, погрешности 10−4 соответствует выход 99,99%.
96
2. Начала молекулярных вычислений
В постановке криптоаналитической задачи о взломе DES, рассматривавшейся в разделе 2.2, криптоаналитик знает пару, состоящую из открытого текста и соответствующего криптотекста, и должен определить ключ. Все ключи, отображающие данный открытый текст в данный криптотекст, называются выигрышными. Возможно, что существуют несколько выигрышных ключей, хотя для DES их число вряд ли будет большим. В идеальных условиях алгоритм возвращает «финальную пробирку», содержащую для каждого выигрышного ключа по меньшей мере одну кодирующую его молекулу. Более того, финальная пробирка не должна содержать пустышек, т. е. молекул, которые не кодируют выигрышный ключ и попадают в финальную пробирку по ошибке. Если выигрышный ключ отсутствует в финальной пробирке, то это означает, что либо он не был создан в процессе инициализации, либо он был создан, но был по ошибке исключен в процессе вычисления. В [6] представлены очень интересные численные результаты, относящиеся к этой постановке. Они касаются необходимого количества ДНК и числа пустышек в финальной пробирке. Необходимое количество ДНК определялось из условия, чтобы должен быть обеспечен «разумный шанс» — 63% или больше — для попадания по крайней мере одного выигрышного ключа в финальную пробирку. (Величина 63% появляется из пуассоновского распределения, связанного с методом создания ключей в ходе инициализации.) Если достижима погрешность 10−4 , то потребуется лишь немногим более одного грамма ДНК; вычисление дает величину 1,4 г. Более того, при погрешности 10−4 , вероятность присутствия пустышки в финальной пробирке составляет только 8%. Положение разительно меняется, если достижима только погрешность 10−2 . Результаты весьма ясно показывают, где проходит граница реализуемости для ДНК-вычислений, по крайней мере для таких задач, как криптоаналитические, особенно подходящих для решения с помощью ДНК. При погрешности 10−2 , не говоря уже о более высокой погрешно-
2.4. ДНК-вычисления: надежды и предостережения
97
сти, ДНК-вычисления определенно нереализуемы. Для того, чтобы выигрышный ключ оказался в финальной пробирке с вероятностью 63%, потребовалась бы ДНК в количестве, приблизительно равном 23 массам Земли, и при этом пришлось бы выделять выигрышный ключ из колоссального числа пустышек. При погрешности 10−3 требуется менее килограмма ДНК, что могло бы еще считаться реализуемым. Размер оборудования диктуется количеством используемого ДНК. Роботы должны оперировать с набором пробирок, а именно с 96 пробирками параллельно. Оценки, приведенные в [6], позволяют заключить, что при погрешности 10−4 все оборудование могло бы разместиться на столе. Весьма специфическая задача взлома криптосистемы DES достаточно ясно демонстрирует границы реализуемости для ДНК-вычислений. Существенным является успешное, т. е. с малой погрешностью, выполнение операций. Предполагая, что малая погрешность достижима, можно изучать сложность различных задач. Тогда в силу массированного параллелизма ДНК экспоненциальные оценки сложности при последовательных вычислениях, такие, как для некоторых хорошо известных NP-полных задач, заменяются на линейные. Это так для двух из задач, обсуждавшихся в разделах 2.1 и 2.2, — задачи о гамильтоновом пути и задачи о выполнимости. В то же время число цепочек ДНК, которые могут появиться в пробирке в ходе выполнения алгоритма, стремится к экспоненциальному; так, для задачи о гамильтоновом пути оно имеет порядок n!. В [28] читатель может ознакомиться с оценками сложности различных задач в терминах двух параметров: числа (биологических) шагов, выполняемых алгоритмом, и числа используемых цепочек ДНК. Такого рода оценки сложности уже рассматривались ранее в теории параллельных алгоритмов. В этих рассмотрениях был важен компромисс между числом шагов и числом параллельных процессоров. Как мы видели, при ДНК вычислениях число шагов может быть радикально сокращено за счет экспоненци-
98
2. Начала молекулярных вычислений
ального роста числа процессоров. Поскольку процессоры — это цепочки ДНК, такое положение дел остается приемлемым. Длина цепочек ДНК также должна приниматься во внимание. В большинстве случаев длина не вызывает никаких проблем, поскольку она линейно зависит от размеров задачи. Сведем теперь воедино все операции, обсуждавшиеся выше в этой главе. Как мы отмечали, эти операции лежат в основе многих алгоритмов для ДНК-вычислений и, следовательно, дальнейшие лабораторные исследования их надежности, эффективности и погрешности весьма существенны. (Сюда не включена операция сплетения; она будет изучаться параллельно с соответствующей математической теорией во второй части книги.) Мы также напомним читателю основные современные биологические методы для выполнения этих операций; эти методы описаны в главе 1. Плавление. Двухцепочечные ДНК разделяют на одинарные цепочки, нагревая раствор до определенной температуры. При этом разрываются водородные связи между комплементарными цепочками. Отжиг. Эта операция обратна к операции плавления. Раствор одинарных цепочек охлаждают, в результате чего комплементарные по Уотсону-Крику цепочки могут соединяться. Слить. Содержимое двух пробирок переливают в одну. Разделить (или Извлечь). Напомним, что эта операция по данным пробирке N и цепочке w производит новую пробирку +(N, w), состоящую из всех цепочек в N , содержащих w в качестве подцепочки. Для разделения посредством гибридизации используется большое число цепочек, комплементарных к w и закрепленных на матрице. К ним и присоединяются цепочки из N , содержащие w. Размножить. Эта операция — применение полимеразной цепной реакции, ПЦР. На каждом шаге число цепочек удваивается, что приводит к экспоненциальному росту. Обнаружить и Разделить по длине. В обеих операциях используется метод гель-электрофореза.
2.4. ДНК-вычисления: надежды и предостережения
99
Наконец, различные функции, включая восстановление ДНК и образование комплементарных цепочек, выполняются ДНК-полимеразами. С их помощью можно синтезировать специфические олигонуклеотиды. Тем не менее, вопрос об определении оптимальных (как в смысле длины, так и в смысле строения) олигонуклеотидов для ДНК-вычислений в значительной степени остается открытым. Итак, мы полагаем, что уже имеются основания утверждать, что на данном этапе биомолекулярные технологии достаточно развиты для того, чтобы приспособить их к решению основных программистских задач, возникающих при ДНК-вычислениях. Это — хорошая новость. Тем не менее, остается еще много «подводных камней». (См., например, переписку в журнале Science.) Поскольку данная книга главным образом посвящена математической теории ДНК-вычислений, мы не обсуждаем здесь все возможные источники проблем, возникающих при лабораторной реализации алгоритмов. Например, присоединение цепочек к приблизительно парным им цепочкам, а не в точности парным, может повести все вычисление по ложному пути. Такие проблемы определенно должны быть разрешены, прежде чем ДНК-вычисления смогут стать реальностью. Возможно, наиболее конструктивный подход в данный момент состоит в том, чтобы рассматривать будущие ДНК-компьютеры как дополнение современных компьютеров в некоторых важных аспектах, а не замену их. Некоторые классы задач кажутся особенно подходящими для ДНК-вычислений. Особенностями, характерными для таких задач, являются, во-первых, то, что наилучшим из известных методов их решения является полный перебор, а во-вторых, то, что достижение успеха с высокой вероятностью почти так же хорошо, как получение определенного ответа. Именно так ставятся типичные криптоаналитические задачи. Успехи робототехники могут открыть также новые перспективы для создания компьютеров, сочетающих как молекулярные, так и электронные компоненты.
100
2. Начала молекулярных вычислений
2.5
Комментарии к библиографии1
За время, прошедшее с момента выхода в свет оригинала настоящей книги, достигнут значительный прогресс в развитии как теории, так и практики молекулярных вычислений. Представляется уместным хотя бы кратко рассказать о некоторых заметных достижениях на пути к реализации идеи ДНК-компьютера, полученных в последние годы. По согласованию с авторами такой рассказ помещен именно здесь, в конце «общедоступной» части книги; он опирается на несколько публикаций, добавленных к библиографии редактором перевода. Обсудим прежде всего некоторые экспериментальные результаты. Выше описан только один реальный эксперимент — основополагающий опыт Эдлмана. Конечно, экспериментальная база ДНК-вычислений отнюдь не сводится к одному этому опыту. Среди многочисленных публикаций (см., к примеру, [13, 24, 25, 31, 85, 122, 165, 179, 186, 225, 295, 300, 340, 354]), сообщающих об успешном испытании того или иного прототипа молекулярного компьютера, читателю можно рекомендовать статью [31], в которой подробно описан эксперимент, осуществленный коллективом под руководством все того же Эдлмана. Для понимания биохимической сути этого эксперимента вполне достаточны те минимальные сведения о методах генетической инженерии, которые приведены в главе 1 настоящей книги; с математической же точки зрения речь идет о реализации детально изложенной в разделе 2.2 схемы Липтона [184] решения задачи о выполнимости пропозициональных формул. Однако ДНК-компьютер, сконструированный авторами [31], существенно отличается от громоздкой «пробирочной» модели, представленной в разделах 2.1 и 2.2. В этом компьютере весь процесс фильтрации происходит в тонкой стеклянной трубке (длина 35 см, внутренний диаметр 0,3 см), заполненной гелем, и осуществляется с помощью гель-электрофореза. В гель заранее встроены участки, к которым прикреплены молекулы-зонды, соответствующие дизъюнктам исследуемой фор1
Составлены редактором перевода.
2.4. ДНК-вычисления: надежды и предостережения
101
мулы. (Здесь ярко проявляется, как прогресс биохимических технологий — в данном случае, недавно разработанный метод закрепления цепочек ДНК на гелеобразующем полимере — воздействует на практику молекулярных вычислений.) Цепочки ДНК, кодирующие интерпретации переменных, перемещаются от одного такого участка к следующему под действием тока. «Гелевый» ДНК-компьютер компактен и допускает автоматическое управление процессом фильтрации. Еще более существенным его преимуществом является то, что фильтрация происходит быстрее и с гораздо более высокой точностью. В конкретном опыте, описанном в [31], формула имела 6 переменных и 11 дизъюнктов и принимала значение 1 лишь при одной из 64 возможных интерпретаций. Таким образом, среди 1 исходных цепочек ДНК лишь 64 часть соответствовала искомой интерпретации. После прохождения всех 11 фильтров доля «правильных» цепочек возросла в 100 миллионов раз и вероятность того, что выбранная из профильтрованного раствора цепочка кодирует искомую интерпретацию, составила 99,99994%. Ряд заслуживающих внимания экспериментальных работ основан на моделях молекулярных вычислений, не представленных в настоящей книге. Так, в [85] возможные альтернативы кодируются цепочками РНК, а место фильтрации занимает разрушение «неправильных» цепочек с помощью фермента рибонуклеаза H. В «ДНК-автоматах» из [24, 25] внутренние состояния и программа суть цепочки ДНК, а исполнение программы обеспечивает эндонуклеаза Fok I. Отметим, что и эти работы будут понятны читателю, освоившему главу 1. Весьма важны для теории и практики ДНК-вычислений вероятностные алгоритмы, см. [43, 74, 148, 227, 354]. Дело в том, что имеются принципиальные ограничения на возможности молекулярных алгоритмов, реализующих исчерпывающий перебор. Например, в опыте, описанном в [31], исходный набор молекул ДНК состоял из 3 ·1014 цепочек. (При длине цепочки в 90 оснований масса такого количества ДНК составляет примерно 0,014 миллиграмма.) Если с тем же количеством молекул проверять методом Липтона выполнимость пропозицио-
102
2. Начала молекулярных вычислений
нальной формулы с n переменными, то условие, чтобы каждая из 2n возможных интерпретаций была представлена хотя бы одной цепочкой, приводит к неравенству n < 50. Чтобы перешагнутьй этот барьер, и нужны алгоритмы, которые перебирают не все возможные конфигурации, а лишь наиболее вероятные. Например, алгоритм решения задачи о выполнимости, предложенный в [227], использует только порядка 20,4n цепочек ДНК; иными словами, того же количества цепочек, что и в [31], ему хватало бы для анализа формул со 120 переменными. В самое последнее время внимание информатиков привлекают вычислительные процессы в живых клетках (см., например, статьи [15, 78] и монографию [79]). Так, с вычислительной точки зрения чрезвычайно интересна процедура сборки генов при половом размножении одноклеточных класса ресничных (к нему принадлежит знакомая по школьным урокам зоологии инфузория-туфелька). Удивительно, но хранение генетической информации в так называемом генеративном ядре инфузории организовано по тому же принципу, по которому размещаются файлы на жестком диске современного компьютера! При этом сложный процесс извлечения фрагментов гена из ДНК ядра с последующим соединением их в нужном порядке происходит на несколько порядков быстрее, точнее и энергетически выгоднее, чем гораздо более примитивные операции в опытах по ДНК-вычислениям in vitro. Такие факты убеждают, что путь к созданию по-настоящему эффективных ДНК-компьютеров лежит через осознание того, как вычисляет мать-природа. В заключение упомянем многочисленные публикации [21, 40, 135, 136, 138, 147, 166, 177, 178, 183, 187, 189, 192, 193, 195, 196, 207, 218, 226, 227, 277, 283, 286, 298, 299, 301, 310, 320, 325, 326, 327, 329, 331, 332, 333, 337, 344, 345, 346, 347, 351, 353], в которых предлагаются новые модели молекулярных вычислений и/или новые молекулярные алгоритмы, отличающиеся от изложенных в настоящей книге по биохимическим основам, по архитектуре, по набору допустимых операций и т. п. Многие из этих моделей и алгоритмов весьма остроумны, но о степени их практической значимости судить пока трудно.
Глава 3 Введение в теорию формальных языков Математическая теория молекулярных вычислений, представленная во второй части данной книги, развивается в рамках теории формальных языков. Как мы видели в главе 1, молекулы ДНК естественно представлять в виде «удвоенных» строк, удовлетворяющих некоторым условиям (комплементарность Уотсона–Крика и противонаправленность). При этом различные ферментные манипуляции с молекулами ДНК естественно представляются как операции над такими строками. Следовательно, использование молекул ДНК для молекулярных вычислений удобно и естественно описывать посредством (удвоенных) строк и операций над ними. Поэтому теория формальных языков — естественный аппарат для формализации и исследования молекулярных вычислений. Эта глава является введением в теорию формальных языков в необходимом для данной книги объеме. За дополнительной информацией читатель может обратится к монографиям в этой области, например, к [7, 51, 66, 69, 145, 302, 304, 305]. Исчерпывающим источником является [HFL]. Читатель, уже знакомый с теорией формальных языков, может обращаться к главе 3 только при необходимости.
3.1
Основные понятия: грамматики, автоматы, грамматические системы
Основные обозначения. Множество всех подмножеств данного множества X обозначим через P(X); если X — бесконечное множество, то через Pf (X) обозначим множество всех его конечных подмножеств. Мощность множества X обозначается через card(X). Множество натуральных чисел {0, 1, 2, . . . } обозначим через N, а пустое множество — через ∅.
104
3. Введение в теорию языков
Алфавит — это конечное непустое множество абстрактных символов. Через V ∗ обозначим множество всех строк символов из алфавита V . Пустую строку обозначим через λ. В математических терминах V ∗ — это свободный моноид, порожденный V относительно операции приписывания. (Единицей этого моноида является λ.) Множество непустых строк над V , т. е. V ∗ −{λ}, обозначим через V + . Каждое подмножество в V ∗ называется языком над V . Говорят, что язык λ-свободен, если он не содержит пустую строку (т. е. является подмножеством в V + ). Если x = x1 x2 , для некоторых x1 , x2 ∈ V ∗ , то x1 называется префиксом строки x, а x2 — ее суффиксом; если x = x1 x2 x3 для некоторых x1 , x2 , x3 ∈ V ∗ , то x2 называется подстрокой в x. Множества всех префиксов, суффиксов и подстрок строки x обозначаются через Pref(x), Suf(x) и Sub(x), соответственно. Длина строки x ∈ V ∗ (число вхождений символов в x) обозначается через |x|. Число вхождений данного символа a ∈ V в x ∈ V ∗ обозначается через |x|a . Если x ∈ V ∗ , U ⊆ V, то через |x|U обозначим длину строки, полученной из x вычеркиванием всех символов, не лежащих в U , т. е. X |x|U = |x|a . a∈U ∗
Для L ⊆ V множество length(L) = {|x| | x ∈ L} называется множеством длин языка L. Множество символов, встречающихся в строке x, обозначается через alph(x). Для языка L ⊆ V ∗ мы обозначим через alph(L) множество ∪x∈L alph(x). Заметим, что alph(L) может быть собственным подмножеством V . Вектор Париха, связанный со строкой x ∈ V ∗ относительно алфавита V = {a1 , . . . , an }, — это ΨV (x) = (|x|a1 , |x|a2 , . . . , |x|an ). Для L ⊆ V ∗ мы определим ΨV (L) = {ΨV (x) | x ∈ L}. Говорят, что множество M векторов из Nn линейно, если можно найти такие vi ∈ Nn , 0 6 i 6 m, что M = {v0 +
m X i=1
αi vi | α1 , . . . , αm ∈ N}.
3.1. Основные понятия
105
Конечное объединение линейных множеств называется полулинейным. Язык L ⊆ V ∗ называется полулинейным, если ΨV (L) — полулинейное множество. Операции над строками и языками. Булевы операции над языками обозначаются обычным образом: ∪ — объединение, ∩ — пересечение, C — дополнение. Произведение L1 и L2 — это L1 L2 = {xy | x ∈ L1 , y ∈ L2 }. Далее мы определяем: L0 = {λ}, Li+1 = LLi , i > 0, i L∗ = ∪∞ i=0 L (∗-итерация Клини), i L+ = ∪∞ i=1 L (+-итерация Клини).
Отображение s : V −→ P(U ∗ ), продолжаемое на V ∗ по правилам s(λ) = {λ} и s(x1 x2 ) = s(x1 )s(x2 ) для x1 , x2 ∈ V ∗ , называется подстановкой. Для языка L ⊆ V ∗ мы полагаем s(L) = ∪x∈L s(x). Вообще, любую n-местную операцию со строками g : V ∗ × · · · × V ∗ −→ P(U ∗ ), мы распространяем на языки над V таким образом: [ g(L1 , . . . , Ln ) = g(x1 , . . . , xn ). xi ∈ Li , 1 6 i 6 n Если подстановка s : V −→ P(U ∗ ) такова, что множество s(a) конечно для каждого a ∈ V, то s называется конечной подстановкой; если card s(a) = 1 для a ∈ V, то s называется морфизмом. Если λ ∈ / s(a) для каждого a ∈ V , то s — нестирающая подстановка (нестирающий морфизм). Морфизм h : V ∗ −→ U ∗ называется кодированием, если h(a) ∈ U для каждого a ∈ V , и слабым кодированием, если h(a) ∈ U ∪ {λ} для всех a ∈ V . Если V1 ∩ V2 = ∅, то морфизм h : (V1 ∪ V2 )∗ −→ V1∗ , определяемый правилом h(a) = a для a ∈ V1 и h(a) = λ в противном случае, мы будем называть проекцией (на V1 ) и обозначать через prV1 . Для морфизма h : V ∗ −→ U ∗ мы определим отображение h−1 : U ∗ −→ P(V ∗ )
106
3. Введение в теорию языков
(которое назовем обратным морфизмом) по правилу h−1 (w) = {x ∈ V ∗ | h(x) = w}. Пусть L ⊆ V ∗ и k > 1. Морфизм h : V ∗ −→ U ∗ со свойством h(x) 6= λ для всех x ∈ Sub(L) таких, что |x| = k, будем называть k-ограниченным на L. Если V — некоторый алфавит и мы рассматриваем некоторые фиксированные видоизменения g(a) символов a ∈ V (например, штрихование, подчеркивание и т.п.), то мы полагаем V g = {g(a) | a ∈ V } и для любого w ∈ V ∗ пишем wg вместо g(w). (В частности, в случае штрихования символов имеем V 0 = {a0 | a ∈ V } и для w = a1 · · · ak ∈ V ∗ , где ai ∈ V, 1 6 i 6 k, имеем w0 = a01 · · · a0k .) Для x, y ∈ V ∗ определим их перетасовку как x⊥ t y = {x1 y1 · · · xn yn | x = x1 · · · xn , y = y1 · · · yn , xi , yi ∈ V ∗ , 1 6 i 6 n, n > 1}. Зеркальным отражением строки x = a1 a2 · · · an , где ai ∈ V, 1 6 i 6 n, назовем строку mi(x) = an · · · a2 a1 . Как обычно, mi(L) = {mi(x) | x ∈ L}. Левое частное языка L1 ⊆ V ∗ при делении на язык L2 ⊆ V ∗ — это L2 \L1 = {w ∈ V ∗ | существует строка x ∈ L2 такая, что xw ∈ L1 }. Левая производная языка L ⊆ V ∗ по строке x ∈ V ∗ — это ∂xl (L) = {w ∈ V ∗ | xw ∈ L}. Правое частное и правая производная определяются симметричным образом: L1 /L2 = {w ∈ V ∗ | существует строка x ∈ L2 такая, что wx ∈ L1 }, ∂xr (L) = {w ∈ V ∗ | wx ∈ L}. Семейство языков F L замкнуто относительно n-местной операции g, если для любого набора языков L1 , . . . , Ln из F L язык g(L1 , . . . , Ln ) также лежит в F L. Язык, который может быть получен из букв алфавита V и λ с помощью конечного числа операций объединения, произведения и ∗-итерации Клини, называется регулярным; кроме того, регулярным считается и пустой язык. Семейство языков нетривиально, если оно содержит по крайней мере один язык, отличающийся от ∅ и {λ}. (Мы
3.1. Основные понятия
107
используем здесь слово «семейство» как синоним слов «множество» или «набор».) Трио — это нетривиальное семейство языков, замкнутое относительно нестирающих морфизмов, обратных морфизмов и пересечений с регулярными языками. Трио, замкнутое относительно объединения, называется полуAFL (аббревиатура AFL происходит от Abstract Language Family, т. е. абстрактное семейство языков). Полу-AFL, замкнутое относительно произведения и +-итерации Клини, называется AFL. Говорят, что трио/полу-AFL/AFL полное, если оно замкнуто относительно произвольных морфизмов (и ∗итерации Клини в случае AFL). Семейство языков, не замкнутое относительно ни одной из шести упомянутых операций, называется анти-AFL. Следующие свойства определенных выше операций бывают полезны при исследовании семейств языков на замкнутость относительно этих операций (например, для того чтобы доказать, что семейство языков является AFL, нет нужды проверять его замкнутость относительно всех шести операций): 1. Семейство всех регулярных языков есть наименьшее полное трио. 2. Каждое (полное) полу-AFL, замкнутое относительно +-итерации Клини, есть (полное) AFL. 3. Если семейство λ-свободных языков F L замкнуто относительно произведения, нестирающих морфизмов и обратных морфизмов, то F L замкнуто и относительно пересечения с регулярными языками и объединения, а следовательно, F L — полу-AFL. Если, кроме того, семейство F L замкнуто относительно +-итерации Клини, то оно будет AFL. 4. Если семейство языков F L замкнуто относительно пересечения с регулярными языками, объединения с регулярными языками и подстановки регулярных языков, то F L замкнуто относительно обратных морфизмов. 5. Каждое полу-AFL замкнуто относительно подстановки λсвободных регулярных языков. Каждое полное полу-AFL замкнуто относительно подстановки произвольных регу-
108
3. Введение в теорию языков
лярных языков и относительно левых и правых частных при делении на регулярные языки. 6. Семейство λ-свободных языков является AFL, если оно замкнуто относительно произведения, нестирающих морфизмов, обратных морфизмов и +-итерации Клини. 7. Если семейство языков F L замкнуто относительно пересечения с регулярными языками, объединения с регулярными языками и подстановки λ-свободных регулярных языков и ограниченных морфизмов, то оно замкнуто относительно обратных морфизмов. Грамматики Хомского. Вообще говоря, грамматика — это (конечное) устройство, порождающее строки языка по точно определенному правилу (и тем самым задающее множество всех синтаксически корректных строк). Многие типы грамматик являются частными случаями переписывающих систем. Переписывающая система — это пара γ = (V, P ), в которой V — алфавит, а P — конечное подмножество в V ∗ ×V ∗ ; элементы (u, v) из P записываются в виде u → v и называются переписывающими правилами/продукциями (или просто правилами или продукциями). Для x, y ∈ V ∗ мы пишем x =⇒γ y, если x = x1 ux2 , y = x1 vx2 для некоторых u → v ∈ P и x1 , x2 ∈ V ∗ . Если понятно, о какой переписывающей системе γ идет речь, то будем писать =⇒ вместо =⇒γ . Рефлексивное и транзитивное замыкание отношения =⇒ обозначается через =⇒∗ . Если к переписывающей системе такой, что во всех правилах u → v строка u непуста, добавить аксиому, то получится понятие чистой грамматики. Для чистой грамматики G = (V, w, P ) с аксиомой w ∈ V ∗ определим язык, порожденный G, как L(G) = {x ∈ V ∗ | w =⇒∗ x}. Грамматика Хомского — это четверка G = (N, T, S, P ), в которой N, T — непересекающиеся алфавиты, S ∈ N и P — конечное подмножество в (N ∪ T )∗ N (N ∪ T )∗ × (N ∪ T )∗ . Алфавит N называется нетерминальным, а T — терминальным, S — аксиома, а P — множество правил вывода грам-
3.1. Основные понятия
109
матики G. Правила (или продукции) (u, v) из P записываются в виде u → v. Заметим, что |u|N > 1. Для x, y ∈ (N ∪ T )∗ мы пишем x =⇒G y тогда и только тогда, когда x = x1 ux2 , y = x1 vx2 , для некоторых x1 , x2 ∈ (N ∪ T )∗ и u → v ∈ P . Говорят, что y непосредственно выводимо из x (в грамматике G). Каждая строка w ∈ (N ∪ T )∗ такая, что S =⇒∗G w, называется сентенциальной формой. Язык, порожденный G, обозначается L(G) и определяется так: L(G) = {x ∈ T ∗ | S =⇒∗ x}. Две грамматики G1 , G2 называются эквивалентными, если L(G1 ) − {λ} = L(G2 ) − {λ} (два языка совпадают с точностью до пустой строки). Вообще, в данной книге мы считаем два порождающих механизма эквивалентными, если они порождают один и тот же язык, за исключением, быть может, пустой строки. Если в непосредственном выводе x =⇒ y, описанном выше, x1 ∈ T ∗ , то вывод назовем левосторонним и будем писать x =⇒lef t y. Левосторонний язык Llef t (G), порожденный грамматикой G, получается при выводах, все шаги которых левосторонние. В соответствии с видом правил вывода грамматики Хомского классифицируются следующим образом. Грамматика G = (N, T, S, P ) называется: Монотонной или неукорачивающей, если для всех u → v ∈ P выполняется |u| 6 |v|. Контекстной, если каждое правило u → v ∈ P устроено так: u = u1 Au2 , v = u1 xu2 для u1 , u2 ∈ (N ∪ T )∗ , A ∈ N и x ∈ (N ∪ T )+ . (В монотонных и контекстных грамматиках правило S → λ допустимо при условии, что S не встречается в правых частях правил из P .) Контекстно-свободной, если u ∈ N для всех u → v ∈ P . Линейной, если u ∈ N, v ∈ T ∗ ∪ T ∗ N T ∗ для всех u → v ∈ P .
110
3. Введение в теорию языков
Праволинейной, если u ∈ N, v ∈ T ∗ ∪ T ∗ N для всех u → v ∈ P . Леволинейной, если u ∈ N, v ∈ T ∗ ∪ N T ∗ для всех u → v ∈ P . Регулярной, если u ∈ N, v ∈ T ∪ T N ∪ {λ} для всех u → v ∈ P . Говорят также, что произвольная, монотонная, контекстно-свободная и регулярная грамматики — это соответственно грамматики типа 0, типа 1, типа 2 и типа 3. Семейство языков, порожденных монотонными грамматиками, равно семейству языков, порожденных контекстными грамматиками; семейства языков, порожденных право- и леволинейными грамматиками, совпадают и равны семейству языков, порожденных регулярными грамматиками, или, что то же самое, семейству регулярных языков. Мы обозначаем через RE, CS, CF , LIN и REG семейства языков, порожденных соответственно произвольными, контекстными, контекстно-свободными, линейными и регулярными грамматиками (аббревиатура RE происходит от Recursively Enumerable, т. е. рекурсивно перечислимый). Через F IN мы обозначим семейство конечных языков. Выполняются следующие строгие включения: F IN ⊂ REG ⊂ LIN ⊂ CF ⊂ CS ⊂ RE. Это иерархия Хомского, на которую нам придется постоянно ссылаться в следующих главах. Известные результаты о замкнутости вышеперечисленных семейств относительно различных операций отражены в таблице 3.1. Из нее видно, что RE, CF, REG — полные AFL, CS — неполное AFL, а LIN является полным полу-AFL. Контекстно-свободная грамматика G = (N, T, S, P ) называется приведенной, если для каждого A ∈ N существует вывод S =⇒∗ xAy =⇒∗ xwy, где x, w, y ∈ T ∗ (т. е. каждый нетерминальный символ достижим из аксиомы и может быть заменен на строку терминальных символов). Для каждой контекстносвободной грамматики можно найти эквивалентную ей приведенную контекстно-свободную грамматику.
3.1. Основные понятия Объединение Пересечение Дополнение Произведение ∗-итерация Клини Пересечение с регулярными языками Подстановка Нестирающая подстановка Морфизмы Нестирающие морфизмы Обратные морфизмы Левое/правое частное Левое/правое частное при делении на регулярные языки Левая/правая производная Перетасовка Зеркальное отражение
111 RE Да Да Нет Да Да
CS Да Да Да Да Да
CF Да Нет Нет Да Да
LIN Да Нет Нет Нет Нет
REG Да Да Да Да Да
Да Да
Да Нет
Да Да
Да Нет
Да Да
Да Да Да Да Да
Да Нет Да Да Нет
Да Да Да Да Нет
Нет Да Да Да Нет
Да Да Да Да Да
Да
Нет
Да
Да
Да
Да Да Да
Да Да Да
Да Нет Да
Да Нет Да
Да Да Да
Таблица 3.1. Замкнутость семейств из иерархии Хомского.
Говорят, что линейная грамматика G = (N, T, S, P ) минимальна, если N = {S} (т. е. в ней только один нетерминальный символ). Нормальные формы. Часто бывает полезным приведение грамматик к какому-нибудь специальному виду без уменьшения класса порождаемых ими языков. Известен ряд результатов о существовании таких нормальных форм. Мы упомянем только пять из них, которые будут полезны ниже. Теорема 3.1 (форма Хомского). По каждой контекстно-свободной грамматике G эффективно строится эквивалентная грамматика G0 = (N, T, S, P ), все правила которой имеют вид A → a или A → BC, где A, B, C ∈ N и a ∈ T .
112
3. Введение в теорию языков
Теорема 3.2 (сильная форма Хомского). По каждой контекстно-свободной грамматике G эффективно строится эквивалентная грамматика G0 = (N, T, S, P ), все правила которой имеют вид A → a или A → BC, где A, B, C ∈ N и a ∈ T , причем выполняются следующие ограничения: если A → BC — правило из P , то B 6= C; если A → BC — правило из P , то для каждого правила A → DE из P выполняется E 6= B и D 6= C. Если нужно порождать и пустую строку, то в приведенных выше теоремах следует допустить еще правило S → λ. Теорема 3.3 (форма Куроды). По каждой грамматике G типа 0 эффективно строится эквивалентная грамматика G0 = (N, T, S, P ), все правила которой имеют вид A → BC, A → a, A → λ или AB → CD, где A, B, C, D ∈ N и a ∈ T . Теорема 3.4 (форма Пенттонена). По каждой грамматике G типа 0 эффективно строится эквивалентная грамматика G0 = (N, T, S, P ), все правила которой имеют вид A → x, где x ∈ (N ∪ T )∗ , |x| 6 2 или AB → AC, где A, B, C ∈ N . Сходные результаты верны и для неукорачивающих грамматик; нужно лишь исключить правила вида A → λ, оставив только правило S → λ, если нужно, чтобы порождаемый язык содержал пустую строку. Теорема 3.5 (формы Гефферта). (1) Каждый рекурсивно перечислимый язык порождается грамматикой G = (N, T, S, P ) с N = {S, A, B, C}, правилами вида S → uSv, S → x, где u, v, x ∈ (T ∪ {A, B, C})∗ , и единственным не контекстно-свободного правилом ABC → λ. (2) Каждый рекурсивно перечислимый язык порождается грамматикой G = (N, T, S, P ) с N = {S, A, B, C, D}, правилами вида S → uSv, S → x, где u, v, x ∈ (T ∪ {A, B, C})∗ , и ровно двумя не контекстно-свободными правилами AB → λ и CD → λ. Другими словами, каждый рекурсивно перечислимый язык получается из некоторого минимального линейного языка при-
3.1. Основные понятия
113
менением либо одного правила сокращения ABC → λ, либо пары правил сокращения AB → λ, CD → λ. Необходимые условия. Для языка L ⊆ V ∗ мы определим отношение эквивалентности ∼L на V ∗ , полагая x ∼L y тогда и только тогда, когда (uxv ∈ L ⇔ uyv ∈ L) для всех u, v ∈ V ∗ . Легко проверить, что ∼L является конгруэнцией свободного моноида V ∗ . Фактор V ∗ / ∼L называется синтаксическим моноидом языка L. Теорема 3.6 (Майхилл–Нероуд). Язык L ⊆ V ∗ регулярен тогда и только тогда, когда моноид V ∗ / ∼L конечен. Теорема 3.7 (о накачке для контекстно-свободных языков). Если L ∈ CF, L ⊆ V ∗ , то найдутся такие числа p, q ∈ N, что каждую строку z ∈ L с |z| > p можно записать в виде z = uvwxy, где u, v, w, x, y ∈ V ∗ , |vwx| 6 q, vx 6= λ и uv i wxi y ∈ L для всех i > 0. Теорема 3.8 (о накачке для линейных языков). Если L ∈ LIN , L ⊆ V ∗ , то найдутся такие числа p, q ∈ N, что каждую строку z ∈ L с |z| > p можно записать в виде z = uvwxy, где u, v, w, x, y ∈ V ∗ , |uvxy| 6 q, vx 6= λ и uv i wxi y ∈ L для всех i > 0. Теорема 3.9 (о накачке для регулярных языков). Если L ∈ REG, L ⊆ V ∗ , то найдутся такие числа p, q ∈ N, что каждую строку z ∈ L с |z| > p можно записать в виде z = uvw, где u, v, w ∈ V ∗ , |uv| 6 q, v 6= λ и uv i w ∈ L для всех i > 0. Теорема 3.10 (Парих). Любой контекстно-свободный язык является полулинейным. Следствие 3.1. (i) Каждый контекстно-свободный язык над однобуквенным алфавитом регулярен. (ii) Множество длин контекстно-свободного языка есть объединение конечного числа арифметических прогрессий. Условия теорем 3.7–3.10 необходимы, но не достаточны для того, чтобы язык лежал в соответствующем семействе.
114
3. Введение в теорию языков
Пользуясь этими необходимыми условиями, можно доказать следующие включения: L1 = {an bn | n > 1} ∈ LIN − REG, L2 = L1 L1 ∈ CF − LIN, L3 = {an bn cn | n > 1} ∈ CS − CF, L4 = {xcx | x ∈ {a, b}∗ } ∈ CS − CF, n
L5 = {a2 | n > 1} ∈ CS − CF, L6 = {an bm cn dm | n, m > 1} ∈ CS − CF, L7 = {an bm | n > 1, 1 6 m 6 2n } ∈ CS − CF, L8 = {an bm cp | 1 6 n 6 m 6 p} ∈ CS − CF, L9 = {x ∈ {a, b}∗ | |x|a = |x|b } ∈ CF − LIN, L10 = {x ∈ {a, b, c}∗ | |x|a = |x|b = |x|c } ∈ CS − CF. Язык Дика Dn над Tn = {a1 , a01 , . . . , an , a0n }, n > 1, — это контекстно-свободный язык, порожденный грамматикой G = ({S}, Tn , S, {S → λ, S → SS} ∪ {S → ai Sa0i | 1 6 i 6 n}, S). Для наглядности пары (ai , a0i ), 1 6 i 6 n, можно интерпретировать как левые и правые скобки различных видов. Тогда язык Dn состоит из всех строк правильно расставленных скобок. Теорема 3.11 (Хомский–Шютценберже). Любой контекстносвободный язык L представим в виде L = h(Dn ∩ R), где h — морфизм, Dn — язык Дика, а R — регулярный язык. Системы Линденмайера. Как и механизмы порождения строк, вводимые в последующих разделах, системы Линденмайера или L-системы, которые мы время от времени будем упоминать, возникли из биологических соображений. Здесь мы приведем основные определения. В общих чертах, 0L-система (система Линденмайера с нулевым взаимодействием) — это контекстно-свободная чистая грамматика с параллельным выводом: G = (V, w, P ), где V — алфавит, w ∈ V ∗ (аксиома), и P — конечное множество правил вида a → v, где a ∈ V , v ∈ V ∗ , причем для каждой буквы a ∈ V в P найдется по крайней мере одно правило
3.1. Основные понятия
115
a → v (мы будем говорить, что P полно). Для w1 , w2 ∈ V ∗ мы пишем w1 =⇒ w2 , если w1 = a1 · · · an , w2 = v1 · · · vn и ai → vi ∈ P для каждого i = 1, . . . , n. Язык, порожденный G — это L(G) = {x ∈ V ∗ | w =⇒∗ x}. Если v 6= λ в каждом правиле a → v ∈ P , то будем говорить, что G — размножающая (нестирающая) система; если для каждого a ∈ V существует ровно одно правило a → v в P , то говорят, что G — детерминированная система. Если выделено подмножество T в V и язык L(G) определен как L(G) = {x ∈ T ∗ | w =⇒∗ x}, то G называют расширенной системой. Семейство языков, порожденных 0L-системами, обозначают через 0L; если речь идет о размножающей, детерминированной или расширенной 0L-системе, то перед 0L добавляется буква P, D или соответственно Е. Табличной 0L-системой, сокращенно T0L, называется такая система G = (V, w, P1 , . . . , Pn ), что каждая тройка (V, w, Pi ), 1 6 i 6 n, является 0L-системой, при этом каждое множество правил Pi называется таблицей. Язык, порожденный G, определяется следующим образом: L(G) = {x ∈ V ∗ | w =⇒Pj1 w1 =⇒Pj2 . . . =⇒Pjm wm = x, m > 0, 1 6 ji 6 n, 1 6 i 6 m}. (Каждый шаг вывода выполняется с помощью правил ровно одной таблицы.) T0L-система детерминирована, если детерминирована каждая из ее таблиц. Аналогичным образом определяются размножающие и расширенные T0L-системы. Семейство языков, порожденное T0L системами, обозначим через T 0L; через ET 0L, EDT 0L и т. е. обозначим семейства языков, получаемые по аналогии с E0L, ED0L и т. д. Семейство D0L несравнимо с FIN, REG, LIN, CF, в то время как E0L строго содержит семейство CF ; ET 0L является наибольшим семейством языков Линденмайера с нулевым взаимодействием, оно строго содержится в CS и является полным AFL. Идея нулевого взаимодействия соответствует контекст-
116
3. Введение в теорию языков
ной независимости: каждая буква развивается независимо от своих соседей. Интересной чертой D0L-системы G = (V, w, P ) является то, что она порождает свой язык в виде последовательности, L(G) = {w = w0 , w1 , w2 , . . . } такой, что w0 =⇒ w1 =⇒ w1 =⇒ . . . . Таким образом, для G можно определить функцию роста growthG : N −→ N с помощью равенства growthG (n) = |wn |, n > 0. Дескриптивная сложность. Один и тот же язык может быть порожден многими (и часто даже бесконечно многими) грамматиками. Естественно искать среди них наиболее простые, для чего и нужны меры сложности грамматик. Для класса грамматик X мера дескриптивной (или синтаксической) сложности есть отображение K : X −→ N, которое равенством K(L) = min{K(G) | L = L(G), G ∈ X} распространяется на языки, порождаемые грамматиками из X. Если нужно указать на используемый класс грамматик, мы будем писать KX (L). Следующие три меры являются основными для контекстносвободных языков. Для контекстно-свободной грамматики G = (N, T, S, P ) определим Var(G) = card(N ), Prod(G) = card(P ), X Symb(G) = Symb(r), где Symb(r : A → x) = |x| + 2. r∈P
Мера сложности K называется нетривиальной, если для каждого n найдется такая грамматика Gn , что K L(Gn ) > n; говорят, что мера K связная, если существует такое n0 , что для каждого n > n0 найдется грамматика Gn со свойством K L(Gn ) = n. Все три меры Var, Prod, Symb связные (даже по отношению к семейству регулярных языков). В общем случае две меры синтаксической сложности не могут быть одновременно улуч-
3.1. Основные понятия
117
шены: чаще всего грамматика, оказавшаяся проще по отношению к одной мере, будет сложнее с точки зрения другой меры. Важной мерой сложности является индекс. Пусть G = (N, T, S, P ) — грамматика любого типа. Для вывода D : S = w0 =⇒ w1 =⇒ . . . =⇒ wn = x ∈ T ∗ положим Ind(D) = max{|wi |N | 0 6 i 6 n}. Для каждого x ∈ L(G) определим Ind(x, G) = min{Ind(D) | D : S =⇒∗ x ∈ G}. Затем введем Ind(G) = sup{Ind(x, G) | x ∈ L(G)}. И, наконец, для языка L положим Ind(L) = min{Ind(G) | L = L(G)}. Ясно, что Ind(L) = 1 для каждого линейного языка L. Известно, что Ind(Dn ) = ∞, n > 1, и что Ind — связная мера по отношению к семейству контекстно-свободных языков. Более того, семейство CFf in = {L ∈ CF | IndCF (L) < ∞} является полным AFL. Автоматы и преобразователи. Автоматы — это устройства, определяющие языки способом, противоположным тому, каким их определяют грамматики. Автомат получает строки над данным алфавитом и анализирует (говорят также распознает) их, сообщая, лежит ли та или иная строка в интересующем нас языке. Пять основных семейств языков в иерархии Хомского, REG, LIN, CF, CS, RE, могут быть охарактеризованы и в терминах распознающих автоматов. Соответствующие автоматы суть конечные автоматы, однопроходные магазинные автоматы, магазинные автоматы, линейно ограниченные автоматы и машины Тьюринга. Мы опишем здесь только основные вариан-
118
3. Введение в теорию языков
ты этих устройств; описания многих других их разновидностей см. в [145, 223, 302, 305]. Конечный (недетерминированный) автомат — это пятерка M = (K, V, s0 , F, δ), где K и V — непересекающиеся алфавиты, s0 ∈ K, F ⊆ K, δ : K × V −→ P(K). Здесь K — множество состояний, V — алфавит автомата, s0 — начальное состояние, F — множество заключительных состояний, δ — функция переходов. Если card δ(s, a) 6 1 для всех s ∈ K, a ∈ V , то говорят, что автомат детерминированный. Отношение ` на множестве K × V ∗ определяется так: для s, s0 ∈ K, a ∈ V , x ∈ V ∗ мы пишем (s, ax) ` (s0 , x), если s0 ∈ δ(s, a), и, кроме того, (s, λ) ` (s, λ). Если `∗ — рефлексивное и транзитивное замыкание отношения `, то язык, распознаваемый автоматом M , есть L(M ) = {x ∈ V ∗ | (s0 , x) `∗ (s, λ), s ∈ F }. Известно, что детерминированные и недетерминированные конечные автоматы характеризуют одно и то же семейство языков, а именно REG. Выразительная сила конечных автоматов не увеличится, если допустить λ-переходы, т. е. определять δ на множестве K × (V ∪ {λ}) (тогда автомат может изменить состояние без чтения символа), или если допустить, что автомат может сканировать входную строку в двух направлениях, двигаясь вдоль нее вправо и влево, но не меняя ее символов. Родственно понятию конечного автомата важное понятие последовательного преобразователя или ОПМ (от «Обобщенная Последовательная Машина»). Такое устройство есть шестерка g = (K, V1 , V2 , s0 , F, δ), где K, s0 , F те же, что и в определении конечного автомата, V1 , V2 — входной и выходной алфавиты, а δ : K × V1 −→ Pf (V2∗ × K). Если δ(s, a) ⊆ V2+ × K для всех s ∈ K, a ∈ V1 , то ОПМ g называется λ-свободной. Если card δ(s, a) 6 1 для всех s ∈ K, a ∈ V1 , то говорят, что g детерминирована. Для s, s0 ∈ K, a ∈ V1 , y ∈ V1∗ , x, z ∈ V2∗ полагаем (x, s, ay) ` (xz, s0 , y), если (z, s0 ) ∈ δ(s, a). Тогда для
3.1. Основные понятия
119
6
s Рис. 3.1. Конечный автомат.
w ∈ V1∗ определим g(w) = {z ∈ V2∗ | (λ, s0 , w) `∗ (z, s, λ), s ∈ F }. Отображение g можно естественным образом распространить на языки в алфавите V1 . На ОПМ можно смотреть как на конечный автомат с выходом. Легко видеть, что каждое замкнутое относительно ОПМотображений семейство языков будет замкнуто относительно конечных подстановок (а, значит, и относительно морфизмов) и операций Sub, Pref, Suf. Конечный автомат можно мыслить себе как устройство, изображенное на рис. 3.1, где показаны входная лента, в клетках которой записаны символы входного алфавита, читающая головка, просматривающая ленту слева направо, и память, которая способна хранить состояние из некоторого конечного множества. Аналогично, ОПМ — это устройство, изображенное на рис. 3.2, где есть еще выходная лента, на которой пишущая головка может записывать строку, получающуюся в результате переработки входной строки. Иногда бывает полезно представлять функцию перехода конечного автомата и ОПМ как множество переписывающих правил. В таком случае мы пишем sa → as0 вместо s0 ∈ δ(s, a) в случае конечных автоматов и sa → zs0 вместо (z, s0 ) ∈ δ(s, a) в случае ОПМ. Тогда отношения `, `∗ в точности совпадают с =⇒, =⇒∗ в соответствующей переписывающей системе. Для ОПМ g и языка L ∈ V1∗ имеем g(L) = {z ∈ V2∗ | s0 w =⇒∗ zs, w ∈ L, s ∈ F }.
120
3. Введение в теорию языков
6
s
?
Рис. 3.2. Последовательный преобразователь.
В частном случае конечного автомата имеем L(M ) = {x ∈ V ∗ | s0 x =⇒∗ xs, s ∈ F }. Магазинным автоматом называется семерка M = (K, V, U, s0 , Z0 , F, δ), где K, V , U — алфавиты (состояний, входных символов и магазинных символов), K не пересекается ни с V , ни с U , s0 ∈ K — начальное состояние, Z0 ∈ U — символ, отмечающий дно магазина, F ⊆ K — множество заключительных состояний, а δ : K × (V ∪ {λ}) × U −→ Pf (K × U ∗ ) — функция переходов. Конфигурация магазинного автомата M — это тройка (s, w, z), где s ∈ K — текущее состояние, w ∈ V ∗ — еще не просмотренная часть входной строки, z ∈ U ∗ — содержимое магазина. Для пары конфигураций (s, w, z), (s0 , w0 , z 0 ) определим отношение (s, w, z) ` (s0 , w0 , z 0 ) следующей совокупностью условий: w = aw0 ,
где a ∈ V ∪ {λ}, 0
z = αz1 , z = z2 z1 ,
где α ∈ U, z1 , z2 ∈ U ∗ , (s0 , z2 ) ∈ δ(s, a, α).
При этом говорят, что автомат, находясь в состоянии s, считывает крайний левый символ a строки w и переходит в состояние s0 , зависящее как от a и s, так и от верхнего символа α в магазине, который одновременно заменяется на слово z2 . Отметим, что символ a может быть и пустым. В случае, когда z2 = λ, говорят, что α выталкивается из магазина.
3.1. Основные понятия
121
6 -
s
Рис. 3.3. Магазинный автомат.
Рефлексивное и транзитивное замыкание `∗ отношения ` определяется обычным образом. Язык L(M ), распознаваемый магазинным автоматом M , есть {x ∈ V ∗ | (s0 , x, Z0 ) `∗ (s, λ, z) для некоторых s ∈ F, z ∈ U ∗ }. (Работа начинается в начальном состоянии s0 при единственном символе Z0 в магазине и заканчивается после просмотра всей входной строки. При этом нет ограничений на содержимое магазина в конце работы.) Магазинный автомат изображен на рис. 3.3, где показаны входная лента, магазин, память и две головки: головка, сканирующая входную ленту, и читающая/пишущая головка, постоянно позиционированная напротив верхней клетки магазина. Недетерминированные магазинные автоматы распознают в точности контекстно-свободные языки. У детерминированного магазинного автомата поведение однозначно определяется конфигурацией. Известно, что семейство языков, распознаваемых детерминированными магазинными автоматами, строго содержится в CF . Машиной Тьюринга называется семерка M = (K, V, T, B, s0 , F, δ), где K и V — непересекающиеся алфавиты (множество состояний и алфавит ленты), T ⊆ V — входной алфавит, B ∈ V −T — символ пробела, s0 ∈ K — начальное состояние, F ⊆ K — множество заключительных состояний, и δ — частичная функ-
122
3. Введение в теорию языков
ция из K × V в P(K × V × {L, R}) (функция переходов). Если (s0 , b, d) ∈ δ(s, a) для s, s0 ∈ K, a, b ∈ V, и d ∈ {L, R}, то машина, прочитав символ a в состоянии s, переходит в состояние s0 , заменяя при этом a на b и сдвигая читающую/пишущую головку влево, если d = L, и вправо, если d = R. Если card δ(s, a) 6 1 для всех s ∈ K и a ∈ V , то говорят, что M детерминирована. Мгновенным описанием определенной выше машины Тьюринга называется строка xsy, где x ∈ V ∗ , y ∈ V ∗ (V −{B})∪{λ} и s ∈ K. По нему однозначно устанавливается и содержимое ленты, и состояние, и положение головки: она читает первый символ строки y. Отметим, что символ пробела может появляться в x и в y, но не в последней позиции y. И x, и y могут быть пустыми. Множество всех мгновенных описаний машины M обозначается через IDM . На множестве IDM определим отношение непосредственного следования `M таким образом: xsay `M xbs0 y, если и только если (s0 , b, R) ∈ δ(s, a), xs `M xbs,0 если и только если (s0 , b, R) ∈ δ(s, B), xcsay `M xs0 cby, если и только если (s0 , b, L) ∈ δ(s, a), xcs `M xs0 cb, если и только если (s0 , b, L) ∈ δ(s, B), где x, y ∈ V ∗ , a, b, c ∈ V , s, s0 ∈ K. Язык L(M ), распознаваемый машиной Тьюринга M , есть {w ∈ T ∗ | s0 w `∗M xsy для некоторых s ∈ F, x, y ∈ V ∗ }. (Это множество всех таких строк, что машина, стартуя в начальном состоянии с первого символа входной строки, достигнет заключительного состояния.) При другом подходе язык, принимаемый машиной Тьюринга, определяется как множество всех таких строк w ∈ T ∗ , что машина, стартующая из конфигурации s0 w, достигает такой конфигурации, в которой дальнейшее движение невозможно (иначе говоря, машина останавливается). Эти два способа определения языка L(M ) эквивалентны и приводят к одному и тому же семейству языков, а именно RE.
3.1. Основные понятия
123
Графическое представление машины Тьюринга такое же, как у конечного автомата (рис. 3.1). Различие между ними проявляется только в процессе работы: головка машины Тьюринга может перемещаться в обоих направлениях и переписывать прочитанный символ (или стирать его, заменяя пробелом). И детерминированные, и недетерминированные машины Тьюринга характеризуют семейство рекурсивно перечислимых языков. Машину Тьюринга можно использовать для задания как языков, так и отображений. Рассмотрим машину Тьюринга M = (K, V, T, B, s0 , F, δ). Если β = x1 sax2 ∈ IDM и δ(s, a) = ∅, т. е. в конфигурации β машина останавливается, мы пишем β ↓. Определим отображение FM : IDM −→ P(IDM ) правилом FM (α) = {β ∈ IDM | α `∗M β и β ↓}. Если машина M детерминирована, то FM является отображением из IDM в IDM . Говорят, что отображение f : U1∗ −→ U2∗ , где U1 , U2 — произвольные алфавиты, вычислимо на машине Тьюринга M , если существуют рекурсивные отображения C и D (называемые кодированием и декодированием), C : U1∗ −→ IDM , D : IDM −→ U2∗ такие, что D FM C(x) = f (x). В следующем разделе, обсуждая универсальные машины Тьюринга, мы используем именно эту интерпретацию машин Тьюринга (а также договоренность об окончании вычислений по остановке, без использования заключительных состояний). Работая с входной строкой, машина Тьюринга может использовать настолько длинную ленту, насколько это необходимо. Заметим, что конечные и магазинные автоматы используют только те клетки ленты, в которых записана входная строка и только в режиме чтения. В дополнение к этому, у магазинного автомата есть неограниченная магазинная лента. Если рабочее пространство на ленте, которое может использовать машина Тьюринга, ограничено линейной функцией от длины входной строки, то такая машина называется линейно ограниченным автоматом. Эти машины характеризуют семейство CS.
124
3. Введение в теорию языков
Регулируемое переписывание. Выразительная сила контекстно-свободных грамматик недостаточна для того, чтобы покрыть многие важные синтаксические конструкции в естественных и искусственных языках, а контекстные грамматики наоборот слишком сильны (так, для семейства CS многие свойства оказываются неразрешимыми, и вывод в грамматиках, не являющихся контекстно-свободными, не может быть описан в терминах деревьев). Поэтому заслуживает внимания идея усилить выразительные возможности контекстно-свободных грамматик, контролируя применение их правил вывода. Она приводит к рассмотрению регулируемых контекстно-свободных грамматик, несколько разновидностей которых будут полезны для наших построений. Контекстно-свободной матричной грамматикой назовем четверку G = (N, T, S, M ), где N и T — непересекающиеся алфавиты нетерминальных и соответственно терминальных символов, S ∈ N — аксиома, M — конечное множество матриц, т. е. последовательностей вида (A1 → z1 , . . . , An → zn ), n > 1, состоящих из контекстно-свободных правил в алфавите N ∪ T . Действие элемента m = (r1 , . . . , rn ) на строку x состоит в последовательном применении правил r1 , . . . , rn в том порядке, в котором они записаны. Получающаяся строка y называется непосредственно выводимой из x, пишут x =⇒ y. Далее обычным образом определяется язык, порождаемый G. Семейство языков, порождаемых контекстно-свободными матричными грамматиками обозначается через M AT λ (верхний индекс показывает, что при выводе допустимы и λ-правила). Если используются только λ-свободные правила, то соответствующее семейство обозначается через M AT . Контекстно-свободной программируемой грамматикой назовем четверку G = (N, T, S, M ), где, как и выше, N , T и S суть множества нетерминальных и терминальных символов и начальный символ, а P — конечное множество продукций вида (b : A → z, E, F ), где b — метка, A → z — контекстно-свободное правило над N ∪ T , а E, F — два множества меток для продукций из G. Множество E называют полем успеха, а множество
3.1. Основные понятия
125
F полем провала для соответствующей продукции. Продукция из G применяется следующим образом: если контекстно-свободная часть может быть успешно выполнена, то она применяется, а следующая выполняемая продукция выбирается среди помеченных элементами из E, в противном случае, мы выбираем продукцию, помеченную каким-нибудь элементом из F , и пытаемся применить ее. Программируемые грамматики такого типа называются грамматиками с явной проверкой, если же у продукций не задаются поля провала, то получается программируемая грамматика без явной проверки. Иногда бывает полезно записывать программируемую грамматику в виде G = (N, T, S, P, σ, ϕ), где N, T, S имеют прежний смысл, P — множество обычных контекстно-свободных правил, а σ, ϕ суть отображения из P в P(P ); для правила p ∈ P множество σ(p) — поле успеха (некоторое правило из σ(p) должно использоваться после успешного применения правила p), а множество ϕ(p) — поле провала (некоторое правило из ϕ(p) должно использоваться в случае, когда правило p неприменимо). Контекстно-свободной упорядоченной грамматикой назовем систему G = (N, T, S, P, >), где N , T , S имеют тот же смысл, что и в предыдущих определениях, P — конечное множество контекстно-свободных продукций, а > — частичный порядок на P . Продукцию p можно применить к сентенциальной форме x только в том случае, когда она применима к x как контекстно-свободное правило и никакая продукция r ∈ P со свойством r > p не применима к x. Контроль над применением правил вывода может основываться и на проверке контекстных условий. Обобщенной полукондициональной грамматикой назовем четверку G = (N, T, S, P ), в которой N , T , S имеют тот же смысл, что и в предыдущих определениях, P — конечное множество троек вида p = (A → w; E, F ), где A → w — контекстно-свободная продукция над N ∪ T , а E, F — конечные подмножества в (N ∪ T )+ . Правило p применимо к строке x ∈ (N ∪ T )∗ , содержащей подстроку A, только при условии,
126
3. Введение в теорию языков
что каждый элемент из E также является подстрокой в x, а ни один элемент из F подстрокой в x не является. (Если какое-то из множеств E и F пусто, то нет и соответствующего ограничения.) При этом E называют множеством разрешающих контекстных условий тройки p, а F — множеством запрещающих контекстных условий. Если card(E) 6 1 и card(F ) 6 1 для всех p ∈ P , то G = (N, T, S, P ) называется полукондициональной грамматикой. Если E, F ⊆ N , то говорят, что грамматика случайно контекстная. Два других хорошо известных типа грамматик с контекстными условиями — это кондициональные и слабо кондициональные грамматики. Кондициональная грамматика — это четверка G = (N, T, S, P ), в которой P — конечное множество продукций вида p = (A → w; Rp ), где Rp — регулярный язык над N ∪ T . Правило p можно применить к строке x, содержащей подстроку A, только при условии, что x ∈ Rp . Если имеется такой регулярный язык R, что R = Rp для каждого p ∈ P , то говорят о слабо кондициональной грамматике. Кондициональные, слабо кондициональные и полукондициональные грамматики обладают одинаковой порождающей силой. Они порождают либо все рекурсивно перечислимые, либо все контекстные языки в зависимости от того, разрешается ли использовать λ-правила. Наконец, рассмотрим понятие простой матричной грамматики. Такая грамматика (степени n > 1) представляет собой систему G = (N1 , . . . , Nn , T, S, M ), в которой N S1n, . . . , Nn , T — попарно непересекающиеся алфавиты, S ∈ / T ∪ i=1 Ni , а M — множество матриц следующего вида: (S → w1 w2 . . . wn ), wi ∈ (T ∪ Ni )∗ , 1 6 i 6 n, причем |wi |Ni = |wj |Nj , 1 6 i, j 6 n; (A1 → w1 , . . . , An → wn ), Ai ∈ Ni , wi ∈ (T ∪ Ni )∗ , 1 6 i 6 n, причем |wi |Ni = |wj |Nj , 1 6 i, j 6 n.
3.1. Основные понятия
127
При этом для каждой матрицы из M рассматривается левосторонний вывод (каждое правило Ai → wi применяется к крайнему слева вхождению символа из Ni в данную строку). Простые матричные грамматики порождают семейство полулинейных языков, лежащее строго между CF и CS. Идея контроля над применением контекстно-свободных правил с целью повышения порождающей силы контекстносвободных грамматик будет полезна в дальнейшем. Грамматические системы. Еще один весьма плодотворный подход к повышению порождающей силы контекстно свободных (а в определенных случаях, и регулярных) грамматик) состоит в рассмотрении распределенных порождающих устройств, т. е. агрегатов, собранных из нескольких грамматик, работающих вместе в соответствии с точно определенным протоколом. Это приводит к идее грамматических систем. Исследовались два основных класса таких систем: последовательные (введенные в [50] под названием кооперирующиеся распределенные системы) и параллельные взаимодействующие системы, введенные в [263]. Для дальнейшего полезнее второй класс, поэтому мы приведем только его определение. Параллельная взаимодействующая система степени n, n > 1, — это агрегат Γ = N, T, K, (S1 , P1 ), . . . , (Sn , Pn ) , в котором N , T , K — попарно непересекающиеся алфавиты, K = {Q1 , . . . , Qn }, Si ∈ N , Pi — конечные множества переписывающих правил над N ∪ T ∪ K, 1 6 i 6 n. Элементы N и T называются соответственно нетерминальными и терминальными символами, а элементы K — символами запроса. Пары (Si , Pi ) — это компоненты системы (часто компонентами называют и множества Pi ). Заметим, что символы запроса взаимно однозначно соответствуют компонентам и что когда речь идет о типе компонент как грамматик Хомского, то символы запроса рассматриваются как нетерминальные. Назовем конфигурацией произвольную n-ку (x1 , . . . , xn ), где xi ∈ (N ∪ T ∪ K)∗ , 1 6 i 6 n. Пусть (x1 , . . . , xn ) и
128
3. Введение в теорию языков
(y1 , . . . , yn ) — две таких конфигурации, причем x1 ∈ / T ∗ . Мы пишем (x1 , . . . , xn ) =⇒r (y1 , . . . , yn ), если выполняется одно из двух следующих условий. (i) Если |xi |K = 0 для всех 1 6 i 6 n, то либо xi =⇒Pi yi , либо xi = yi ∈ T ∗ , 1 6 i 6 n. (ii) Если |xi |K > 0 для некоторого i, 1 6 i 6 n, то представим эту строку xi как xi = z1 Qi1 z2 Qi2 . . . zt Qit zt+1 , где t > 1, zj ∈ (N ∪ T )∗ , 1 6 j 6 t + 1. Каждый символ Qij трактуется как запрос о координате xij текущей конфигурации (x1 , . . . , xn ). Если |xij |K = 0 для всех 1 6 j 6 t, то полагаем yi = z1 xi1 z2 xi2 . . . zt xit zt+1 [и yij = Sij для всех 1 6 j 6 t], иначе yi = xi . Для всех прочих индексов j полагаем yj = xj . Пункт (i) определяет шаг переписывания. Переписывание происходит покоординатно, синхронно и использует по одному правилу из каждой компоненты, которой соответствует нетерминальная строка. Пункт (ii) определяет шаг взаимодействия, состоящий в том, что в строке xi все символы запроса Qij заменяются на соответствующие им строки xij при условии, что сами эти строки не содержат символов запроса. Взаимодействие имеет приоритет перед переписыванием, т. е. переписывание разрешено лишь тогда, когда во всей текущей конфигурации нет символов запроса. Работа системы блокируется как при «зацикливании» запросов, так и в случае, когда запросов нет, но правило (i) неприменимо, поскольку некоторая компонента не может переписать соответствующую ей сентенциальную форму, хотя последняя еще является нетерминальной строкой. Определенное выше отношение =⇒r выполняется в возвратном режиме: после взаимодействия каждая компонента, к которой посылался запрос, возобновляет работу со своей аксиомы. Если в приведенном определении опустить часть, взятую в квадратные скобки [и yij = Sij для всех 1 6 i 6 t], то получится невозвратный режим вывода: после взаимодействия
3.1. Основные понятия
129
компоненты, к которым посылались запросы, продолжают обработку текущих строк. Получаемое таким образом отношение обозначается через =⇒nr . Язык, порожденный системой Γ, есть по определению язык, порожденный ее первой компонентой при условии, что процесс вывода начинается с конфигурации (S1 , . . . , Sn ): Lf (Γ) = {w ∈ T ∗ | (S1 , . . . , Sn ) =⇒∗f (w, α2 , . . . , αn ), где αi ∈ (N ∪ T ∪ K)∗ , 2 6 i 6 n}, f ∈ {r, nr}. Тем самым, значения координат 2, . . . , n в заключительной конфигурации вывода не принимаются во внимание; более того, предполагается, что система Γ останавливается, как только первая компонента выведет терминальную строку. Описанные системы взаимодействуют по запросу. Класс параллельных грамматических систем, взаимодействующих по приказу, рассмотрен в [55]. В таких системах с каждой компонентой ассоциирован некоторый регулярный язык. На каждом шаге компонента посылает свою текущую сентенциальную форму всем прочим компонентам, но посланная строка принимается, только при условии, что она принадлежит регулярному языку, ассоциированному с компонентой-получателем. Таким образом, регулярные языки действуют как фильтры, контролируя взаимодействие методом, сходным со способом контроля за выводом в кондициональных грамматиках. Здесь мы дадим формальное описание только одного специального класса таких систем. Мы рассмотрим системы, работающие с максимальными выводами в качестве шагов переписывания, взаимодействующие без расщепления строк, заменяющие строку принимающей компоненты произведением полученных сообщений в порядке, соответствующем порядку компонент, и возвращающиеся к аксиомам после взаимодействия. Порожденным языком будет считаться язык первой компоненты — хозяина системы. Фильтрами будут регулярные языки. Итак, мы имеем агрегат Γ = N, T, (S1 , P1 , R1 ), . . . , (Sn , Pn , Rn ) ,
130
3. Введение в теорию языков
в котором N и T — непересекающиеся алфавиты (нетерминальный и терминальный), Si ∈ N , Pi — конечные множества контекстно-свободных правил над N ∪ T , Ri — регулярные языки над N ∪ T , 1 6 i 6 n. Шаг переписывания для системы Γ определим так: (x1 , . . . , xn ) =⇒ (y1 , . . . , yn ) тогда и только тогда, когда xi =⇒∗ yi в Pi и нет такого zi ∈ (N ∪ T )∗ , что yi =⇒ zi в Pi . Шаг взаимодействия, обозначаемый через (x1 , . . . , xn ) ` (y1 , . . . , yn ) определим следующим образом. Пусть ( λ, если xi ∈ / Rj или i = j, δi (xi , j) = xi , если xi ∈ Rj и i 6= j, где 1 6 i, j 6 n, ∆(j) = δ(x1 , j)δ(x2 , j) · · · δ(xn , j), где 1 6 j 6 n, («сводное сообщение», принимаемое j-й компонентой), и δ(i) = δ(xi , 1)δ(xi , 2) · · · δ(xi , n), где 1 6 ı 6 n, («сводное сообщение», посылаемое i-й компонентой, т. е. степень строки xi , показатель которой равен числу адресатов этого сообщения). Далее, для 1 6 i 6 n определим ∆(i), если ∆(i) 6= λ, yi = xi , если ∆(i) = λ и δ(i) = λ, Si , если ∆(i) = λ и δ(i) 6= λ. Таким образом, yi есть либо произведение полученных сообщений, если таковые имеются, либо предыдущая строка, если i-я компонента не участвует во взаимодействии, либо Si , если i-я компонента посылает, но не получает сообщения. Отметим, что компонента не может посылать сообщение самой себе. Порожденный язык определяется следующим образом: (1)
(1)
(1) L(Γ) = {w ∈ T ∗ | (S1 , . . . , Sn ) =⇒ (x1 , . . . , x(1) n ) ` (y1 , . . . , yn )
3.1. Основные понятия
131 (2)
(2)
(2) =⇒ (x1 , . . . , x(2) n ) ` (y1 , . . . , yn ) =⇒ (s)
. . . =⇒ (x1 , . . . , x(s) n ), (s)
для некоторого s > 1 такого, что w = x1 }. Приведем пример. Пусть Γ = (N, T, (S1 , P1 , R1 ), (S2 , P2 , R2 ), (S3 , P3 , R3 )), N = {S1 , S2 , S20 , S3 , S30 , X},
T = {a, b, c},
P1 = {S1 → aS1 , S1 → bS1 , S1 → X},
R1 = {a, b}∗ c,
P2 = {S2 → S20 , X → c},
R2 = {a, b}∗ X,
P3 = {S3 → S30 , X → c},
R3 = {a, b}∗ X.
Начинаем с тройки (S1 , S2 , S3 ). Максимальный покомпонентный вывод имеет вид (S1 , S2 , S3 ) =⇒ (xX, S20 , S30 ) для некоторой строки x ∈ {a, b}∗ . Строка xX будет послана второй и третьей компонентам, откуда получаем (xX, S20 , S30 ) ` (S1 , xX, xX) =⇒ (yX, xc, xc) ` ` (xcxc, yX, yX) =⇒ (xcxc, yc, yc), для некоторой строки y ∈ {a, b}∗ . Строка xcxc терминальная, откуда L(Γ) = {xcxc | x ∈ {a, b}∗ }. Итак, очень простая система Γ всего лишь с тремя праволинейными компонентами породила неконтекстно-свободный язык. Отметим, что каждый вывод в системе Γ содержит ровно два шага взаимодействия (и три шага переписывания, последний из которых нужен только ради соответствия приведенному выше определению языка L(Γ), в котором предполагается, что вывод всегда оканчивается шагом переписывания). Мы не обсуждаем здесь порождающую силу таких грамматических систем. Как и в случае регулируемых переписываний, для нас более важны лежащие в их основе идеи распределения, кооперации, взаимодействия и параллелизма.
132
3.2
3. Введение в теорию языков
Характеризации рекурсивно перечислимых языков
Неизменными ориентирами наших исследований в последующих главах будут две следующие границы вычислимости. Наинизший представляющий интерес уровень вычислимости задается конечными автоматами, а наивысший возможный уровень в соответствии с тезисом Черча–Тьюринга определяется машинами Тьюринга. Конечным автоматам соответствуют регулярные, а машинам Тьюринга — рекурсивно перечислимые языки. Доказательство того, что устройства из некоторого данного класса способны породить все регулярные языки, обычно несложно: начав с конечного автомата или регулярной грамматики, нужно промоделировать его или ее работу устройством желаемого типа. Иногда сходный прием срабатывает и при характеризации рекурсивно перечислимых языков. (В этом смысле весьма полезны нормальные формы, обсуждавшиеся в предыдущем разделе.) Однако зачастую прямое моделирование затруднительно, и тогда на помощь приходят теоремы о представлениях рекурсивно перечислимых языков. Среди них есть и парадоксальные с интуитивной точки зрения, что делает их следствия особенно интересными. Поскольку некоторые результаты последующих глав существенным образом опираются на теоремы о представлениях, мы приведем здесь доказательства ряда таких теорем. Первая из них очень проста. Теорема 3.12. Для любого языка L ⊆ T ∗ из RE найдутся такие L0 ∈ CS и c1 , c2 ∈ / T , что L0 ⊆ L{c1 }{c2 }∗ и для каждой строки w ∈ L есть такое i > 0, что wc1 ci2 ∈ L0 . (Итак, L и L0 равны по модулю «хвоста» вида c1 ci2 , i > 0.) Доказательство. По грамматике G = (N, T, S, P ) типа 0 построим грамматику G0 = (N ∪ {S 0 , X}, T ∪ {c1 , c2 }, S 0 , P 0 ), в которой P 0 = {S 0 → Sc1 } ∪ {u → v | u → v ∈ P, |u| 6 |v|} ∪ {u → vX n | u → v ∈ P, |u| > |v|, n = |u| − |v|}
3.2. Характеризации рекурсивно перечислимых языков
133
∪ {Xα → αX | α ∈ N ∪ T } ∪ {Xc1 → c1 c2 }. Легко видеть, что G0 моделирует выводы в G с той лишь разницей, что вместо сокращающих длину слова правил из P используются правила, вводящие символ X. Этот символ можно сдвинуть вправо и заменить на терминальный символ c2 справа от c1 . Тогда, если L = L(G), то язык L0 = L(G0 ) удовлетворяет заключению теоремы. Следствие 3.2. (i) Любой рекурсивно перечислимый язык является проекцией некоторого контекстного языка. (ii) Для любого L ∈ RE существуют такие языки L1 ∈ CS и L2 ∈ REG, что L = L1 /L2 . Доказательство. Первое утверждение получится, если взять проекцию, стирающую введенные выше символы c1 , c2 . Второе утверждение получится, если рассмотреть регулярный язык L2 = c1 c∗2 . (В обоих случаях контекстный язык — это язык L0 из теоремы 3.12.) Разумеется, приведенные выше утверждения верны и в «зеркальной» версии, т. е. для L0 ⊆ {c2 }∗ {c1 }L в теореме 3.12, и для левого деления в пункте (ii) следствия 3.2. Эти результаты показывают, что семейства RE и CS «почти равны»: строки из языков этих семейств различаются лишь хвостом, который, имея вид c1 ci2 , i > 1, не несет никакой информации, кроме своей длины. Следовательно с синтаксической точки зрения языки L и L0 в теореме 3.12 можно считать неразличимыми. Приводимые ниже результаты имеют другую природу: в них рекурсивно перечислимые языки строятся, исходя из «маленьких» подсемейств семейства RE, но при этом используются сильные операции (такие, как пересечение, деление и т.п.). Теорема 3.13. Любой рекурсивно перечислимый язык есть частное двух линейных языков. Доказательство. Пусть L ∈ RE, L ⊆ T ∗ . Рассмотрим грамматику G = (N, T, S, P ) типа 0, порождающую язык mi(L) и добавим к P правило S → S. (После этого можно считать, что
134
3. Введение в теорию языков
каждый вывод в G состоит по крайней мере из двух шагов.) Возьмем символ c 6∈ N ∪ T и построим языки L1 = {xn un yn cxn−1 un−1 yn−1 c · · · cx1 u1 y1 cc mi(y1 ) mi(v1 ) mi(x1 )c mi(y2 ) mi(v2 ) mi(x2 )c · · · c mi(yn−1 ) mi(vn−1 ) mi(xn−1 )ccc mi(yn ) mi(vn ) mi(xn ) | n > 2, xi , yi ∈ (N ∪ T )∗ , ui → vi ∈ P , 1 6 i 6 n и xn vn yn ∈ T ∗ }, L2 = {wn cwn−1 c · · · cw1 cScc mi(w1 )c mi(w2 )c · · · c mi(wn )ccc | n > 1, wi ∈ (N ∪ T )∗ , 1 6 i 6 n}. Оба они линейные. Вот грамматика для L1 : G = ({X0 , X1 , X2 , X3 }, N ∪ T ∪ {c}, X0 , P1 ), P1 = {X0 → aX0 a | a ∈ T } ∪ {X0 → uX1 mi(v) | u → v ∈ P, v ∈ T ∗ } ∪ {X1 → aX1 a | a ∈ T } ∪ {X1 → cX2 ccc} ∪ {X2 → aX2 a | a ∈ N ∪ T } ∪ {X2 → uX3 mi(v) | u → v ∈ P } ∪ {X3 → aX3 a | a ∈ N ∪ T } ∪ {X3 → cX2 c, X3 → cc}. Покажем, что L = L2 \L1 . Действительно, каждая строка из L1 имеет вид 0 w = wn cwn−1 c · · · cw1 ccw10 cw20 c · · · cwn−1 cccwn0 ,
где n > 2, wi =⇒ mi(wi0 ), 1 6 i 6 n, в грамматике G, и wn0 ∈ T ∗ . Каждая строка из L2 имеет вид z = zm czm−1 c · · · cz1 cScc mi(z1 )c · · · c mi(zm )ccc, где m > 1, zi ∈ (N ∪ T )∗ , 1 6 i 6 m. Следовательно, w = zz 0 тогда и только тогда, когда n = m + 1, S = w1 , zi = wi+1 для 1 6 i 6 m, wi0 = mi(zi ), 1 6 i 6 m, и z 0 = wn0 . Это означает, что wi0 = mi(zi ) = mi(wi+1 ), 1 6 i 6 n, т. е. S = w1 =⇒ w2 =⇒ . . . =⇒ wn =⇒ mi(z 0 ) в грамматике G. Таким образом, mi(z 0 ) ∈ L(G), откуда имеем L2 \L1 = mi L(G) = L, что и завершает доказательство.
3.2. Характеризации рекурсивно перечислимых языков
135
Следствие 3.3. Любой язык из RE есть образ пересечения двух линейных языков при слабом кодировании. Доказательство. Видоизменим приведенную выше конструкцию языка L1 , считая, что в записи блока xn vn yn из его определения участвуют штрихованные версии символов из T . Пусть T 0 — множество всех таких штрихованных символов. Вместо L2 возьмем язык L2 T 0∗ . Обозначим получившиеся языки через L01 и соответственно L02 . Они, очевидно, линейны, и x ∈ L01 ∩ L02 в том и только в том случае, когда x = x1 cccx02 , где x1 ∈ (N ∪ T ∪ {c})∗ , x02 ∈ T 0∗ и притом x2 ∈ L2 \L1 . Если определить слабое кодирование h правилами h(a) = λ для 0 ) = a для a ∈ T , то очевидно, что a ∈ N ∪ T ∪ {c} и h(a h(L01 ∩ L02 ) = mi L(G) = L. Для ОПМ g = (K, V1 , V2 , s0 , F, P ), в которой V1 = V2 , можно определить отображение g ∗ : V1∗ −→ P(V1∗ ) правилом g ∗ (w) = {z ∈ V1∗ | найдутся такие w1 , . . . , wn ∈ V1∗ , n > 2, что wi ∈ g(wi−1 ), 2 6 i 6 n, w = w1 , z = wn } ∪ {w}. Можно сказать, что g ∗ есть итерация ОПМ-отображения g. Теорема 3.14. Каждый язык L ∈ RE, L ⊆ T ∗ представим в виде L = g ∗ (a0 )∩T ∗ , где g = (K, V, V, s0 , F, P ) — ОПМ и a0 ∈ V . Доказательство. Возьмем грамматику G = (N, T, S, P ) типа 0. Без ограничения общности можно предполагать, что S не появляется в правых частях правил из P . Построим ОПМ g = (K, N ∪ T, N ∪ T, s0 , F, P ), K = {s0 , s1 } ∪ {[x] | x ∈ Pref(u) − {λ}, u → v ∈ P }, F = {s1 }, P = {s0 a → as0 | a ∈ N ∪ T } ∪ {s0 a1 → [a1 ] | u → v ∈ P, u = a1 u0 , a1 ∈ N ∪ T, u0 ∈ (N ∪ T )∗ } ∪ {[x]a → [xa] | xa ∈ Pref(u) − {u}, u → v ∈ P, a ∈ N ∪ T, x ∈ (N ∪ T )∗ } ∪ {[x]a → vs1 | xa = u, u → v ∈ P, a ∈ N ∪ T, x ∈ (N ∪ T )∗ }
136
3. Введение в теорию языков
∪ {s0 a → vs1 | a → v ∈ P, a ∈ N } ∪ {s1 a → as1 | a ∈ N ∪ T }. Ясно, что каждый шаг работы ОПМ g моделирует применение некоторого правила из P . Отсюда g ∗ (S) ∩ T ∗ = L(G). Перейдем теперь к рассмотрению ряда сильных (и полезных для некоторых из последующих глав) результатов о представлении рекурсивно перечислимых языков, использующих множества совпадений морфизмов. Для пары морфизмов h1 , h2 : V ∗ −→ U ∗ их множество совпадений есть EQ(h1 , h2 ) = {w ∈ V ∗ | h1 (w) = h2 (w)}. Теорема 3.15. Любой рекурсивно перечислимый язык L ⊆ T ∗ представим в виде L = prT (EQ(h1 , h2 ) ∩ R), где h1 , h2 — морфизмы, R — регулярный язык, prT — проекция на алфавит T . Доказательство. Рассмотрим грамматику G = (N, T, S, P ) типа 0 и допустим, что продукции из P взаимно однозначным образом помечены элементами множества Lab. Рассмотрим алфавиты V1 = N ∪ T ∪ {c}, V2 = N ∪ T ∪ Lab ∪ T 0 ∪ {B, F, c}, где T 0 = {a0 | a ∈ T }. Определим морфизмы h1 , h2 : V2∗ −→ V1∗ правилами: h1 (B) = Sc, h1 (c) = c, h1 (p) = v, h1 (A) = A, h1 (a0 ) = a, h1 (a) = λ, h1 (F ) = λ,
h2 (B) = λ, h2 (c) = c, h2 (p) = u h2 (A) = A h2 (a0 ) = a h2 (a) = a h2 (F ) = c.
для для для для
p : u → v ∈ P, A ∈ N, a ∈ T, a ∈ T,
Наконец, рассмотрим регулярный язык R = {B}((N ∪ T 0 )∗ Lab(N ∪ T 0 )∗ {c})+ T ∗ {F }. Идея конструкции состоит в следующем. Каждая строка из L(G) появляется как заключительная строка некоторого выво-
3.2. Характеризации рекурсивно перечислимых языков
137
да D по правилам грамматики G. На строке w(D), кодирующей вывод D, морфизмы h1 , h2 совпадают: h1 w(D) = h2 w(D) . Однако морфизм h1 «обгоняет» h2 на префиксах строки w(D), и h2 «догоняет» h1 только в самом конце. Проекция prT , определяемая правилами h(a) = a при a ∈ T и h(α) = λ при α ∈ V1 − T , стирает все, кроме конечного результата. Язык R используется для отбора строк правильной формы. Используя эти пояснения, читатель может убедиться, что L(G) = prT (EQ(h1 , h2 ) ∩ R). (Детали доказательства можно найти в [307].) Следующий вариант этой теоремы используется в главе 4. Теорема 3.16. Для любого рекурсивно перечислимого языка L ⊆ T ∗ существуют два λ-свободных морфизма h1 , h2 , регулярный язык R и проекция prT такие, что L = prT h1 EQ(h1 , h2 ) ∩ R . Доказательство. Рассмотрим грамматику G = (N, T, S, P ) типа 0, продукции которой взаимно однозначным образом помечены элементами множества Lab. Без ограничения общности можно предположить, что v 6= λ в каждой продукции p : u → v из P , кроме продукции S → λ в случае, когда λ ∈ L(G). Пусть T 0 = {a0 |a ∈ T }, T 00 = {a00 |a ∈ T }, Lab0 = {p0 |p ∈ Lab}. Удобно ввести еще морфизм d : (N ∪ T )∗ −→ (N ∪ T 0 )∗ такой, что d(A) = A при A ∈ N и d(a) = a0 при a ∈ T . Заметим, что d является биекцией, а, значит, существует обратное к d отображение d−1 . Пусть V1 = N ∪ T ∪ T 0 ∪ {B, F, c}, V2 = N ∪ T ∪ T 00 ∪ Lab ∪ Lab0 ∪ {B, F, c, c0 },
138
3. Введение в теорию языков
где B, F, c, и c0 — новые символы. Зависящие от G морфизмы h1 , h2 : V2∗ −→ V1∗ определяются следующим образом: h1 (B) = BSc, h1 (c) = c, h1 (p) = d(v), h1 (p0 ) = v, h1 (A) = A, h1 (a0 ) = a0 , h1 (a00 ) = a, h1 (a) = F, h1 (c0 ) = F, h1 (F ) = F,
h2 (B) = B, h2 (c) = c, h2 (p) = d(u) h2 (p0 ) = d(u) h2 (A) = A h2 (a0 ) = a0 h2 (a00 ) = a0 h2 (a) = a, h2 (c0 ) = c, h2 (F ) = F F.
для для для для для для
p : u → v ∈ P, p : u → v ∈ P, A ∈ N, a0 ∈ T 0 , a00 ∈ T 00 , a ∈ T,
Кроме того, рассмотрим регулярный язык R = {BS}({c}(N ∪ T 0 )∗ )∗ {c}T ∗ {F }+ . Заметим, что u, v 6= λ во всех правилах u → v ∈ P . Таким образом, и h1 , и h2 — λ-свободные морфизмы. Если λ ∈ L, добавим еще один символ e в V2 и положим h1 (e) = h2 (e) = BScF. Легко видеть, что при этом мы не добавляем новых слов к h1 EQ(h1 , h2 ) ∩ R. Следовательно, в дальнейших рассуждениях можно считать, что λ 6∈ L. Доказательство того, что L(G) ⊆ prT h1 EQ(h1 , h2 ) ∩ R сходно с обоснованием аналогичного включения втеореме 3.15. Обратно, пусть w ∈ prT h1 EQ(h1 , h2 ) ∩ R , т. е. w есть prT (y) для некоторой строки y ∈ h1 EQ(h1 , h2 ) ∩ R. Тогда по определению языка R эта строка имеет вид y = BScy1 cy2 c · · · cyt F l , где y1 , . . . , yt−1 ∈ (N ∪ T 0 )∗ , yt ∈ T ∗ , l > 0. Пусть y = h1 (x) для некоторой строки x ∈ EQ(h1 , h2 ). Тогда x = Bx1 cx2 c · · · cxt c0 xt+1 F m , причем h2 (x1 ) = S, h1 (xi ) = h2 (xi+1 ) = yi для 1 6 i 6 t, l = 2m, h1 (xt+1 ) = F m−1 . Заметим, что если xj = xj+1 при некотором
3.2. Характеризации рекурсивно перечислимых языков
139
j, 1 6 j < t, то, вычеркнув xj c из x, получим такую строку x0 , что prT (h1 (x0 ) ∩ R) = prT (h1 (x) ∩ R) = w. Таким образом, без ограничения общности можно предполагать, что xj 6= xj+1 для всех j, 1 6 j < t. (Ясно, что xt 6= xt+1 .) Следующие утверждения очевидны: (1) (2) (3) (4) (5)
x1 = p (или x1 = p0 при t = 1) для некоторого p : S → z ∈ P , xi ∈ (N ∪ T 0 ∪ Lab)∗ Lab(N ∪ T 0 ∪ Lab)∗ для 2 6 i < t, xt ∈ (N ∪ T 0 ∪ Lab0 )∗ , xt+1 ∈ T ∗ , h1 (xi ) = yi и h2 (xi ) = yi−1 для 1 6 i 6 t (здесь y0 = S).
Из (2) и (5) и определения морфизмов h1 и h2 следует, что −1 d−1 (yi−1 ) =⇒+ G d (yi )
при 2 6 i 6 t − 1. Кроме того, заметим, что S =⇒G d−1 (y1 ) + и d−1 (yt−1 ) =⇒+ G yt . Следовательно, S =⇒G yt , т. е. yt ∈ L(G). Поскольку w = prT (y) = yt , мы доказали, что w ∈ L. Отметим различие между представлениями в теоремах 3.15 и 3.16: в первом случае язык L получается как проекция пересечения множества совпадений с регулярным языком, тогда как во втором случае L является проекцией пересечения регулярного языка с образом множества совпадений относительно одного из определяющих его морфизмов. Очень полезно такое следствие теоремы 3.15. Рассмотрим алфавит V вместе с его копией V = {¯ a | a ∈ V }. Язык [ T SV = (x ⊥ tx ¯) x∈V ∗
называется языком перетасованных копий над V . (Через x ¯ обо∗ значается строка, полученная из строки x ∈ V заменой каждого символа на его копию с чертой.) Если определить морфизм h : (V ∪ V )∗ −→ V ∗ правилами h(a) = λ при a ∈ V, h(¯ a) = a, при a ∈ V,
140
3. Введение в теорию языков
то легко видеть, что T SV = EQ(h, prV ). Это делает правдоподобным следующий результат. Теорема 3.17. Любой рекурсивно перечислимый язык L ⊆ T ∗ представим в виде L = prT (T SV ∩ R0 ) для подходящих алфавита V и регулярного языка R0 . Доказательство. В доказательстве теоремы 3.15 можно предполагать, что алфавит V1 области значения морфизмов h1 , h2 не пересекается с алфавитом V2 области их определения. (Этого всегда можно добиться переименованием букв алфавита V1 .) Определим морфизм g : V2∗ → (V1 ∪ V 1 )∗ правилом g(a) = ah1 (a)h2 (a) для каждого a ∈ V2 , а регулярный язык R0 ⊆ (V1 ∪ V 1 ∪ V 2 )∗ — равенством ∗
R0 = g(R) ⊥ t V 2. Рассмотрим теперь алфавит V = V1 ∪V2 . Из приведенных определений непосредственно следует равенство prT (T SV ∩ R0 ) = prT (EQ(h1 , h2 ) ∩ R), и потому доказываемое представление вытекает из представления, указанного в теореме 3.15. Отметим сходство данного представления рекурсивно перечислимых языков с представлением Хомского–Шютценберже для контекстно-свободных языков (теорема 3.11); роль языков Дика играют теперь языки перетасованных копий. В указанном представлении язык T SV зависит от языка L. Этого можно избежать следующим образом. Возьмем какое-нибудь кодирование f : V −→ {0, 1}∗ , например, f (ai ) = 01i 0, где ai — это i-й символ алфавита V при некотором фиксированном упорядочении. Язык f (R0 ) регулярен. ОПМ может моделировать пересечение с регулярным языком, проекцию prT , а также декодирование элементов из f (T SV ). Итак, мы получаем Следствие 3.4. Для любого рекурсивно перечислимого языка L существует такая ОПМ gL , что L = gL (T S{0,1} ). Следовательно, каждый рекурсивно перечислимый язык может быть получен с помощью последовательного преоб-
3.2. Характеризации рекурсивно перечислимых языков
141
разователя исходя из единственного языка T S{0,1} . Можно показать, что этот преобразователь может быть выбран детерминированным. Любопытно, что приведенный выше результат справедлив и для «зеркального» варианта языка перетасованных копий. Для данного алфавита V язык [ RT SV = x⊥ t mi(¯ x) x∈V ∗
называется языком перетасованных отражений над V . Теорема 3.18. Для любого языка L ∈ RE существует такая детерминированная ОПМ gL , что L = gL (RT S{0,1} ). Доказательство. Поскольку множество детерминированных ОПМ замкнуто относительно композиции, достаточно найти такую детерминированную ОПМ g, что g(RT S{0,1} ) = T S{0,1} . Искомая ОПМ будет определена для строк из D = {01, 10, ¯0¯1, ¯1¯0}∗ 00¯0¯0{01¯0¯1, 10¯1¯0}∗ . Каждую строку w ∈ D можно представить как w = h(u)00¯0¯0v, где u, v ∈ {0, 1, ¯0, ¯1}∗ , а h — морфизм, определяемый правилами h(0) = 01, h(1) = 10, h(¯0) = ¯0¯1, h(¯1) = ¯1¯0. Тогда зададим отображение g правилом g(w) = u. Легко видеть, что g — детерминированное ОПМ-отображение. Остается показать, что g(RT S{0,1} ) = T S{0,1} . Рассмотрим w = h(u)00¯0¯0v ∈ RT S{0,1} ∩ D. Из равенства pr{¯0,¯1} (w) = mi(pr{0,1} (w)) и наличия у w «маркера» 000¯0¯ посередине следует, что pr{¯0,¯1} h(u) = mi(pr{0,1} (v)) и pr{¯0,¯1} (v) = mi(pr{0,1} (h(u))). Ввиду того, что v ∈ {01¯0¯1, 10¯1¯0}∗ , имеем pr{¯0,¯1} (v) = pr{0,1} (v), откуда вытекает, что pr{¯0,¯1} h(u) = pr{0,1} h(u) . Значит, h pr{¯0,¯1} (u) = h(pr{0,1} (u)), и поскольку морфизм h инъективен, pr{¯0,¯1} (u) = pr{0,1} (u), т. е. g(w) = u ∈ T S{0,1} . Тем самым, мы показали, что g(RT S{0,1} ) ⊆ T S{0,1} .
142
3. Введение в теорию языков
¯ ¯1}∗ обладает свойством Обратно, пусть слово u ∈ {0, 1, 0, pr{¯0,¯1} (u) = pr{0,1} (u). Рассмотрим строку w = h(u)00¯0¯0v, в которой v — единственный элемент из {01¯0¯1, 10¯1¯0}∗ такой, что pr{0,1} (v) = mi pr{0,1} h(u) . Тогда w ∈ D ∩ RT S{0,1} и g(w) = u, что и завершает доказательство. Результаты, аналогичные следствию 3.4 и теореме 3.18, имеют место и для других вариантов языка перетасованных копий. Рассмотрим кодирование c : {0, 1}∗ −→ {¯0, 1}∗ по правилу c(0) = ¯0 и c(1) = 1. Язык ST S{0,1} перетасованных полукопий над {0, 1} определяется формулой [ ST S{0,1} = x⊥ t c(x) . x∈{0,1}∗
Теорема 3.19. Для любого рекурсивно перечислимого языка L существует такая ОПМ gL , что L = gL (ST S{0,1} ). Доказательство. С учетом следствия 3.4, достаточно подобрать такую ОПМ g, что T S{0,1} = g(ST S{0,1} ). Определим морфизм h : {0, 1, ¯0, ¯1}∗ −→ {0, 1, ¯0}∗ по правилу h(0) = 00, h(1) = 01, h(¯0) = ¯0¯0, h(¯1) = ¯01 и введем регулярный язык R = {00, 01, ¯0¯0, ¯01}∗ . Убедимся, что тогда T S{0,1} = h−1 (ST S{0,1} ∩ R). Рассмотрим строку y ∈ T S{0,1} . Тогда y ∈ x ⊥ tx ¯ для некоторой строки x ∈ {0, 1}∗ . Ясно, что h(y) ∈ h(x) ⊥ t h(¯ x) = h(x) ⊥ t c h(x) . Следовательно, h(y) ∈ ST S{0,1} . Очевидно, что h(y) ∈ R, значит, выполняется включение T S{0,1} ⊆ h−1 (ST S{0,1} ∩ R). Обратно, возьмем строку z ∈ ST S{0,1} ∩ R и найдем h−1 (z). В силу инъективности h множество h−1 (z) одноэлементно (оно непусто для всех z ∈ R). По определению языка ST S{0,1} имеем z ∈x⊥ t c(x) для некоторой строки x ∈ {0, 1}∗ . Так как z ∈ R, имеем x ∈ {00, 01}∗ , т. е. c(x) ∈ {¯0¯0, ¯01}∗ . Рассмотрим теперь строки y = h−1 (x) и y¯. Имеем y¯ = h−1 (x) = h−1 c(x) , откуда
3.3. Универсальные машины Тьюринга
h−1 (z) ∈ h−1
143
x⊥ t c(x) = h−1 (x) ⊥ t h−1 c(x) = = h−1 (x) ⊥ t h−1 (x) ⊆ T S{0,1} .
Тем самым, доказано и включение h−1 (ST S{0,1} ∩ R) ⊆ T S{0,1} . Осталось заметить, что и пересечение с регулярным языком, и обратный морфизм могут быть одновременно вычислены с помощью подходящей ОПМ. Можно получить и соответствующий аналог теоремы 3.18. Язык RST S{0,1} перетасованных полуотражений над {0, 1} определяется как [ RST S{0,1} = x⊥ t c mi(x) . x∈{0,1}∗
Следующий результат доказывается так же, как теорема 3.19: Следствие 3.5. Для любого рекурсивно перечислимого языка L существует такая ОПМ gL , что L = gL (RST S{0,1} ).
3.3
Универсальные машины Тьюринга и грамматики типа 0
Компьютер — это программируемая машина, способная выполнить любую загруженную в нее программу. Соответствующим теоретическим понятием служит универсальная машина Тьюринга, и вообще, машина, универсальная в данном классе машин. Рассмотрим машину Тьюринга M = (K, V, T, B, s0 , F, δ) с входным алфавитом T . Как обсуждалось раньше, M начинает работу со строки w, записанной на ее ленте, и в зависимости от того, лежит ли w в L(M ) или нет, либо достигает заключительного состояния (и останавливается), либо нет. Саму машину Тьюринга также можно закодировать строкой символов в подходящем алфавите. Обозначим такую строку через code(M ). Теперь представим себе машину Тьюринга Mu , которая начинает работу со строки, содержащей и w ∈ T ∗ , и code(M ) для данной машины Тьюринга M , и останавливается в заключительном состоянии тогда и только тогда, когда w ∈ L(M ).
144
3. Введение в теорию языков
В принципе, конструкция такой машины Mu проста. От Mu требуется лишь моделировать работу произвольной машины Тьюринга, и ясно, как это можно делать: в соответствии с отображением δ ищем переход, определяемый текущим состоянием и текущим положением читающей/пишущей головки (эта информация содержится в мгновенных описаниях конкретной моделируемой машины); когда переход возможен несколькими способами, делаем копии текущего мгновенного описания и разветвляем эволюцию машины; при появлении двух копий одного и того же мгновенного описания стираем одну из них; если хотя бы один из вариантов эволюции приводит к принимаемой конфигурации, то останавливаемся и считаем входную строку принятой, а в противном случае продолжаем процесс. Такая машина Mu называется универсальной. Она может моделировать любую наперед заданную машину Тьюринга при условии, что код данной машины записан на ленте универсальной машины вместе со входной строкой. Ясна аналогия с привычным нам компьютером: код машины Тьюринга — это программа, строки, которые нужно распознать, — это исходные данные, а универсальная машина Тьюринга — это и есть собственно компьютер. Мы хотим подчеркнуть важное различие между вычислительной полнотой и универсальностью. Класс C вычислительных устройств называется вычислительно полным, если вычислительная сила устройств из C такая же, как у машин Тьюринга (или эквивалентных им устройств другого типа). Это означает, что по данной машине Тьюринга M можно найти эквивалентное ей устройство из C. Таким образом, полнота есть способность вычислить всё вычислимое (или, в грамматических терминах, породить все рекурсивно перечислимые языки). Универсальность же является внутренним свойством класса C и означает наличие в нем такого элемента, который может моделировать любой другой элемент из C методом, описанным выше применительно к машинам Тьюринга. Разумеется, можно определить и относительную полноту, имея в виду не весь класс машин Тьюринга, а некоторый
3.3. Универсальные машины Тьюринга
145
его подкласс. В этом смысле можно говорить, например, о контекстно-свободной полноте (способности породить все контекстно-свободные языки). Аналогично, можно искать и универсальные элементы в классах вычислительных устройств, полных относительно собственных подсемейств семейства рекурсивно перечислимых языков. Однако для любой теории, цель которой — предложить общие модели вычислений, важны полнота и универсальность по отношению ко всем машинам Тьюринга, и именно в таком смысле эти понятия будут рассматриваться в данной книге. Идея универсальной машины была высказана самим Тьюрингом, построившим и первый пример такой машины [323]. Сейчас в литературе имеется много примеров универсальных машин Тьюринга, среди которых есть простые (или даже минимальные) с различных точек зрения. Ниже мы воспроизводим некоторые такие примеры, в которых машина Тьюринга рассматривается как устройство, вычисляющее отображения (см. раздел 3.1). При данном подходе машина Тьюринга универсальна, если она вычисляет универсальную частично рекурсивную функцию (по модулю упомянутого в разделе 3.1 «интерфейса» кодирования-декодирования). По аналогии с этим скажем, что машина M1 моделирует машину M2 , если найдутся такие отображения кодирования и декодирования C : IDM2 −→ IDM1 , D : IDM1 −→ IDM2 , что для каждого α ∈ IDM2 выполняется соотношение D FM1 C(α) = FM2 (α). Сложность машины Тьюринга можно измерять разными параметрами: количеством состояний, количеством символов ленты (включая пробел), количеством переходов (т. е. пятерок (s, a, b, d, s0 ) таких, что (s0 , b, d) ∈ δ(s, a)). Обозначим через U T M (m, n) класс универсальных детерминированных машин Тьюринга с m состояниями и n символами ленты (тогда число переходов не может превосходить m · n − 1, поскольку должны быть конфигурации, в которых машина останавливается).
146
3. Введение в теорию языков
s0 s1 s2 s3 s4 s5 s6
B BLs0 1Rs1 1Ls3 1Ls6 bLs3 BRs4 BRs2
1 BLs0 BLs0 1Rs2 1Ls3 1Rs4 BRs5 –
a bRs1 bRs1 bRs2 bLs3 bRs4 aRs5 aLs5
b aLs0 1Rs4 aRs2 aLs3 aRs4 BRs0 –
Таблица 3.2. Машина Тьюринга из U T M (7, 4).
s0 s1 s2 s3 s4
B bRs0 0Ls3 BRs4 bLs2 –
0 1Rs0 0Rs1 aLs3 1Ls3 –
1 0Ls0 0Rs1 0Rs2 0Rs1 1Rs4
a 0Rs1 aRs1 aRs2 aLs3 1Rs0
b BLs0 bRs1 bRs2 bLs3 BRs4
Таблица 3.3. Машина Тьюринга из U T M (5, 5).
Малые универсальные машины Тьюринга были построены уже в [313] (машина с двумя состояниями) и в [223] (машина с семью состояниями и четырьмя символами). Сводка результатов в этой области дана в [284]: Теорема 3.20. (i) Классы U T M (2, 3), U T M (3, 2) пусты. (ii) Следующие классы не пусты: U T M (24, 2), U T M (10, 3), U T M (7, 4), U T M (5, 5), U T M (4, 6), U T M (3, 10), U T M (2, 18). Таким образом, проблема остается открытой для 51 класса U T M (m, n).1 Напомним три примера универсальных машин Тьюринга из классов U T M (7, 4), U T M (5, 5), U T M (4, 6) [284] (см. табл. 3.2 – 3.4); последний из них имеет наименьшее количество переходов. Поскольку машины детерминированные, представим их в виде таблиц: для каждой пятерки (s, a, b, d, s0 ), запишем bds0 1 Примечание переводчика. Недавно построены машины в классах U T M (19, 2) [19] и U T M (3, 9) [172], в силу чего число классов U T M (m, n) с открытой проблемой пустоты сократилось до 45.
3.3. Универсальные машины Тьюринга
s0 s1 s2 s3
B
1
b00 Ls0
b00 Ls0
1Ls1 aRs0 aLs1
BRs1 1Rs2 0Rs3
a 0Rs3 bRs1 1Rs0 bRs3
147
b b0 Rs0 b0 Ls2 b00 Rs3 aLs1
b0 bLs0 b00 Rs1 bRs2 b00 Rs3
b00 0Rs0 b0 Ls1 – –
Таблица 3.4. Машина Тьюринга из U T M (4, 6).
на пересечении строки, помеченной s, и столбца, помеченного a. Состояния обозначены через s0 , s1 , . . . , sm , а символ пробела через B. (Мы не приводим здесь отображения кодирования и декодирования C, D; читатель может найти детали в [284].) Видно, что число переходов у этих машин — соответственно 26, 23 и 22. Это лучшие из известных результатов (см. [284]). Большинство конструкций, на которых основаны доказательства в следующих главах, отправляются от грамматик Хомского типа 0. По данной машине Тьюринга M эффективно строится такая грамматика G типа 0, что L(M ) = L(G). (Аналогично можно построить и такую грамматику G типа 0, которая вычисляет, используя подходящие отображения кодирования и декодирования, то же отображение FM , что и M . Поэтому грамматику можно рассматривать не только как механизм, порождающий язык, но и как устройство, вычисляющее функцию.) Идея построения очень проста. Возьмем машину Тьюринга M = (K, V, T, B, s0 , F, δ) и построим неограниченную грамматику Хомского G, работающую так: начиная со своей аксиомы, G недетерминировано порождает строку w над алфавитом V , затем делает копию w (конечно, две копии строки w разделяются подходящим маркером; маркеры и другие вспомогательные символы вполне допустимы, потому что их можно стереть, когда необходимость в них отпадет). На одной из копий строки w грамматика G может моделировать работу машины M , недетерминировано выбирая вычисление в соответствии с функцией δ; если достигнуто заключительное состояние, то эта копия сохраняется, а все остальное стирается. Ради полноты изложения, приведем детали такой конструкции. Рассмотрим детерминированную машину Тьюринга M =
148
3. Введение в теорию языков
(K, V, T, B, s0 , F, δ) и построим грамматику G = (N, T, S, P ), в которой N = {[a, b] | a ∈ T ∪ {λ}, b ∈ V } ∪ {S, X, Y } ∪ K, а P содержит следующие правила вывода: 1) S → s0 X, 2) X → [a, a]X для a ∈ T, 3) X → Y, 4) Y → [λ, B]Y, 5) Y → λ, 6) s[a, α] → [a, β]s0 для таких a ∈ T ∪ {λ}, s, s0 ∈ K, α, β ∈ V, что δ(s, α) = (s0 , β, R), 7) [b, γ]s[a, α] → s0 [b, γ][a, β] для таких α, β, γ ∈ V, a, b ∈ T ∪ {λ}, s, s0 ∈ K, что δ(s, α) = (s0 , β, L), 8) [a, α]s → sas, s[a, α] → sas, s → λ для a ∈ T ∪ {λ}, α ∈ V, s ∈ F. Легко убедиться, что L(G) = L(M ). Применяя эту конструкцию к универсальной машине Тьюринга Mu , получим универсальную грамматику Хомского типа 0. Эта грамматика универсальна в следующем смысле: порождаемый ею язык состоит из строк вида w# code(M ) таких, что w ∈ L(M ). (Язык {w# code(M ) | w ∈ L(M )} можно назвать универсальным, и любая грамматика, порождающая этот язык, будет универсальной.) Однако нас интересует «более грамматическое» понятие универсальности, которое приводит к следующему определению. Тройка G = (N, T, P ), компоненты N, T, P которой имеют тот же смысл, что и в обычной грамматике Хомского, называется грамматической схемой. Для строки w ∈ (N ∪ T )∗ определим язык L(G, w) = {x ∈ T ∗ | w =⇒∗ x}, где вывод производится в соответствии с продукциями из P . Универсальная грамматика типа 0 — это грамматическая схема Gu = (Nu , Tu , Pu ), где Nu , Tu — непересекающиеся алфавиты, а Pu — конечное множество переписывающих правил
3.3. Универсальные машины Тьюринга
149
над Nu ∪ Tu , которая обладает таким свойством: для каждой грамматики G = (N, Tu , S, P ) типа 0 существует такая строка w(G), что L Gu , w(G) = L(G). Итак, универсальная грамматика моделирует любую наперед заданную грамматику G при условии, что код w(G) последней берется в качестве аксиомы универсальной грамматики. Универсальные грамматики типа 0 в описанном выше смысле существуют. Так как это утверждение лежит в основе последующих рассмотрений, приведем его полное доказательство. Пусть G = (N, T, S, P ) — грамматика типа 0. Без ограничения общности можно предполагать, что нетерминальных символов всего три, N = {S, A, B}. (Если их больше, скажем N = {S, X1 , X2 , . . . , Xn }, где n > 3, то заменим каждое вхождение Xi в правила из P на AB i A, 1 6 i 6 n, для каких-то новых символов A, B. Очевидно, что полученная грамматика будет эквивалентна исходной.) Построим грамматическую схему Gu = (Nu , T, Pu ), в которой Nu = {A, B, C, D, E, F, H, R, Q, S, X, Y } ∪ {[a, i] | a ∈ T, 1 6 i 6 9}, а множество Pu состоит из следующих правил: (I) (II)
(III)
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10)
C → BQ, Qα → αQ для α ∈ N ∪ T ∪ {D, E}, QDα → [α, 2]D[α, 1] для α ∈ N ∪ T , α[β, 2] → [β, 2]α для α ∈ N ∪ T ∪ {D, E}, β ∈ N ∪ T , B[α, 2] → [α, 3]B для α ∈ N ∪ T , α[β, 3] → [β, 3]α для α, β ∈ N ∪ T , α[α, 3] → [α, 4] для α ∈ N ∪ T , [α, 1]β → [β, 5][α, 1][β, 1] для α, β ∈ N ∪ T , α[β, 5] → [β, 5]α для α ∈ N ∪ T ∪ {D, E}, β ∈ N ∪ T , B[α, 5] → [α, 6]B для α ∈ N ∪ T ,
150
3. Введение в теорию языков
(11) (12) (IV) (13) (14) (15) (16) (17) (18) (19) (V) (20) (VI) (21) (22) (23) (24) (25) (VII) (26) (27) (28) (29)
α[β, 6] → [β, 6]α для α, β ∈ N ∪ T , [α, 4]β[β, 6] → [α, 4] для α, β ∈ N ∪ T , [α, 1]Eβ → [α, 7]E[β, 9] для α, β ∈ N ∪ T, [α, 1][β, 7] → [α, 7]β для α, β ∈ N ∪ T, D[α, 7] → Dα для α ∈ N ∪ T, [α, 9]β → [β, 8][α, 9][β, 9] для α, β ∈ N ∪ T, α[β, 8] → [β]α для α ∈ N ∪ T ∪ {B, D, E}, β ∈ N ∪ T , [α, 9][β, 8] → [β, 8][α, 9] для α, β ∈ N ∪ T, [α, 4][β, 8] → β[α, 4] для α, β ∈ N ∪ T, [α, 1]ED → [α, 7]RED для α ∈ N ∪ T, [α, 9]D → RαD для α ∈ N ∪ T, [α, 9]R → Rα для α ∈ N ∪ T, αR → Rα для α ∈ N ∪ T ∪ {D, E}, BR → RC, [α, 4]R → λ для α ∈ N ∪ T Aα → αA для α ∈ T, AC → H, Hα → H для α ∈ N ∪ T ∪ {D, E}, HF → λ.
Допустим, что P = {ui → vi | 1 6 i 6 k}, и рассмотрим code(G) = ASCDu1 Ev1 Du2 Ev2 D · · · Duk Evk DF. Сперва проверим, как грамматическая схема Gu действует на строках вида AwCDu1 Ev1 D · · · Duk Evk DF . Группа правил (I) вводит нетерминальный символ Q, который выбирает правило вывода ui → vi , расположенное справа от нетерминального символа D (по правилу (3)). По второй группе правил первый символ α слова ui преобразуется в [α, 1] и нетерминальный символ [α, 2], который движется влево, пока не окажется слева от B, где он превращается в [α, 3]. Если в w есть вхождение α, то по правилу (7) вводится нетерминальный символ [α, 4] для того, чтобы закодировать эту информацию.
3.3. Универсальные машины Тьюринга
151
Правила третьей группы заменяют все символы β в слове ui на [β, 1], а затем каждый такой символ β справа от [α, 4] стирается, если это возможно сделать с соблюдением порядка. Тем самым, обнаруживается вхождение слова ui в слово w. По правилам группы (IV) каждый символ β из vi 6= λ преобразуется в [β, 9] и [β, 8]. Последний символ сдвигается влево, пока не окажется слева от B. Когда [β, 8] достигнет [α, 4], вводится символ β. Тем самым, стертая правилами группы (III) строка ui заменяется на vi . Если vi = λ, то вместо правил группы (IV) используется правило (20). Таким образом, получаем шаг вывода w =⇒ w0 , использующий правило ui → vi . Эта процедура может повторяться благодаря правилам группы (VI). Если w0 содержит вспомогательные символы, то по правилам группы (VII) все их можно стереть, оставив лишь терминальные. Следовательно, L(G) ⊆ L Gu , code(G) . Для того чтобы доказать обратное включение, заметим, что удалить нетерминальный символ A можно лишь в том случае, когда между A и C стоит терминальная строка. Каждый шаг вывода обязан начинаться с введения символа Q. Стирание этого символа влечет появление нетерминального символа [α, 1], который в свою очередь может пропасть лишь при замене его на [α, 9]. Эти операции возможны тогда и только тогда, когда подстрока ui удаляется из w. Удаление [α, 9] возможно лишь после записи строки vi на месте стертой ui . Появляющийся при этих действиях символ R можно удалить, только когда строка приобретет вид Aw0 CDu1 Ev1 D . . . Duk Evk DF . Тем самым моделируется шаг вывода, использующий правило ui → vi . Все выводы другого вида заблокированы в Gu . Таким образом, получено включение L Gu , code(G) ⊆ L(G), что завершает до казательство равенства L Gu , code(G) = L(G). Заметим, что построенная выше универсальная грамматика Gu кодирует то, как используется грамматика G в процессе вывода: выбор правила, удаление вхождения его левого члена, запись на это место правого члена правила, проверка того, состоит ли полученная строка лишь из терминальных символов.
152
3. Введение в теорию языков
Здесь возникает естественный вопрос, важный и для молекулярных вычислений: справедливы ли результаты об универсальности также и для других классов автоматов и грамматик, отличных от машин Тьюринга и грамматик типа 0, в частности, для конечных автоматов. Если понимать этот вопрос в строгом смысле, то ответ на него отрицателен: нет конечного автомата, универсального для класса всех конечных автоматов. Тому есть две причины. Вопервых, невозможно закодировать с помощью конечного автомата то, как конечный автомат обрабатывает входную строку (пришлось бы запоминать символы входной строки, не помечая их, а этого невозможно добиться, имея лишь конечное множество состояний). Во-вторых, невозможно закодировать состояния произвольного данного конечного автомата так, чтобы оперировать с ним, исходя из конечного множества состояний универсального автомата (сколь угодно большое множество состояний приводит к кодам сколь угодно большой длины, так что информация, содержащаяся в них, опять-таки не вмещается в фиксированное конечное множество состояний). Однако для наших целей достаточно построить универсальный автомат в следующем ослабленном смысле. Рассмотрим класс конечных автоматов, у которых множество состояний и входной алфавит являются подмножествами конечных множеств K и V , соответственно. Для этого класса уже можно сконструировать универсальный конечный автомат. Рассмотрим следующий конечный автомат Mu = (Ku , V ∪ K ∪ {c1 , c2 }, q0,u , Fu , Pu ), в котором 0 00 Ku = {q0,u , q0,u , q0,u , qf } 0
00
000
∪ {[s], (s), (s)0 , (s)00 , (s), (s) , (s) , (s) | s ∈ K} ∪ {[sa], [sas0 ], [sas0 ]0 , [sas0 ]00 , [sas0 ]000 , [sas0 ]iv | s, s0 ∈ K, a ∈ V }, Fu = {qf },
3.3. Универсальные машины Тьюринга
а Pu содержит следующие правила перехода: 0 1. q0,u s → sq0,u , s ∈ K, 0 00 q0,u a → aq0,u , a ∈ V, 00 q0,u s → sq0,u , s ∈ K,
2. q0,u s0 → s0 [s0 ], [s0 ]a → a[s0 a], a ∈ V, [s0 a]s → s[s0 as], s ∈ K, a ∈ V, 3. [sas0 ]s00 → s00 [sas0 ]0 , s, s0 , s00 ∈ K, a ∈ V, [sas0 ]0 b → b[sas0 ]00 , s, s0 ∈ K, a, b ∈ V, [sas0 ]00 s00 → s00 [sas0 ], s, s0 , s00 ∈ K, a ∈ V, [sas0 ]c1 → c1 [sas0 ]000 , s, s0 ∈ K, a ∈ V, [sas0 ]000 s00 → s00 [sas0 ]000 , s, s0 , s00 ∈ K, a ∈ V, [sas0 ]000 c2 → c2 [sas0 ]iv , s, s0 ∈ K, a ∈ V, 4. [sas0 ]iv a → a(s0 ), s, s0 ∈ K, a ∈ V, 5. (s)s0 → s0 (s)0 , s, s0 ∈ K, (s)0 a → a(s)00 , s ∈ K, a ∈ V, (s)00 s0 → s0 (s), s, s0 ∈ K, 6. (s)s → s[s], s ∈ K, [s]a → a[sa], s ∈ K, a ∈ V, [sa]s0 → s0 [sas0 ], s, s0 ∈ K, a ∈ V, 0
7. (s)s0 → s0 (s) , s, s0 ∈ K, 0
(s)s0 → s0 (s) , s, s0 ∈ K, 0
00
(s) a → a(s) , s ∈ K, a ∈ V, 00
(s) s0 → s0 (s), s, s0 ∈ K, 000
(s)c1 → c1 (s) , s ∈ K, 000
000
(s) s0 → s0 (s) , s, s0 ∈ K, s 6= s0 , 000
(s) s → sqf , s ∈ F, qf s → sqf , s ∈ K, qf c2 → c2 qf .
153
154
3. Введение в теорию языков
Для конечного автомата M = (K, V, s0 , F, P ) рассмотрим строку code(M ) = s1 a1 s01 s2 a2 s02 · · · sn an s0n c1 sf 1 sf 2 · · · sf m c2 , где si ai → ai s0i ∈ P , 1 6 i 6 n, каждая строка si ai s0i встречается лишь однажды, {sf 1 , . . . , sf m } = F , а c1 , c2 — новые символы. Для пары строк z, x ∈ V ∗ , где x = a1 a2 . . . ap , ai ∈ V , 1 6 i 6 p, определим операцию блочной перетасовки равенством bls(z, x) = za1 za2 . . . zap z. Автомат Mu является универсальным для класса конечных автоматов вида M = (K 0 , V 0 , s0 , F, P ), где K 0 ⊆ K, V 0 ⊆ V , в следующем смысле: bls(code(M ), x) ∈ L(Mu ), тогда и только тогда, когда x ∈ L(M ). Действительно, автомат Mu работает так: когда он находится в начальном состоянии q0,u или в состоянии вида (s), он просматривает code(M ), пропуская несколько блоков вида si ai s0i ; затем запоминает один блок такого типа, переходя в состояние [si ai s0i ] (если цикл начат с q0,u , то si = s0 ); далее автомат пропускает оставшиеся блоки sj aj s0j и проходит через c1 sf1 · · · sfm c2 (переходя при этом в состояние [si ai s0i ]iv ); правило si ai → ai s0i автомата M моделируется правилом типа 4, которое переводит автомат Mu в состояние вида (s); цикл повторяется |x| раз; правила группы 7 обеспечивают то, что в состояние qf автомат Mu перейдет лишь тогда, когда промоделирует обработку слова x автоматом M , завершающуюся в состоянии из F . Мы закончим двумя наблюдениями, касающимися универсального автомата Mu . Во-первых, описанную выше конструкцию можно рассматривать и для бесконечных множеств K и V . Такой автомат Mu можно считать универсальным для всех конечных автоматов. При этой модификации Mu , разумеется, уже не будет конечным автоматом, хотя его схематическое определение очень просто. (Такие обобщения конечных автоматов часто обсуждались на заре развития теории автоматов.) Во-вторых, в нашей конструкции описание конкретного моделируемого автомата, code(M ), нужно записывать во входной строке автомата Mu несколько раз. Этого можно избежать, ес-
3.3. Универсальные машины Тьюринга
155
ли снабдить Mu двумя лентами и позволить читающей головке передвигаться в обоих направлениях. Подробности такой модификации мы опускаем.
3.4
Комментарии к библиографии
Некоторые из книг по теории формальных языков упомянуты в разделе 3.1; ряд других можно найти в списке литературы. Мы не указываем здесь источники для результатов раздела 3.1. Теорема 3.12 является классической, она содержится в большинстве монографий по теории формальных языков. Теорема 3.13 появилась в [174]; следствие 3.3 установлено в [20] как усиление более раннего результата о том, что каждый рекурсивно перечислимый язык является образом пересечения двух контекстно-свободных языков при некотором морфизме. Результаты типа теоремы 3.14 имеются в [235, 290, 338]. Характеризации рекурсивно перечислимых языков, основанные на множествах совпадений морфизмов получены в [306, 58]; конструкция в теореме 3.15 взята из [307], где можно найти все подробности. Вариант теоремы 3.15, приведенный в теореме 3.16, был доказан в [159]. Теорема 3.17 и ее следствие 3.4 доказаны в [84]. Теорема 3.18 взята из [83]. Сходные (но несколько более слабые) результаты появлялись также и в [32]. Языки перетасованных полукопий рассматривались в [213], откуда заимствованы теорема 3.19 и следствие 3.5. Конструкции универсальных машин Тьюринга имеются в [223, 313] и (в большом числе) в [284]. Конструкция универсальной грамматики типа 0 в разделе 3.3 взята из [35]; она имеется также и в [34].
Глава 4 Системы со склейкой Основными структурами данных в теории формальных языков являются слова, т. е. строки элементов, букв. Идея «строки» состоит в том, чтобы наделить элементы линейным порядком. Двойная спираль ДНК, рассматриваемая, как мы это делали выше, в виде двумерного объекта, представляет собой структуру данных нового типа: двойную цепочку. Хотя обе составляющие ее одинарные цепочки по-прежнему остаются линейно упорядоченными строками элементов, двойная цепочка обладает важным дополнительным свойством: спаренные элементы цепочек комплементарны относительно некоторого фиксированного симметричного отношения. Мы уже обсуждали взаимосвязи между комплементарностью Уотсона–Крика и языком перетасованных копий и обращали внимание на вычислительный потенциал последнего. В данной и следующей главах мы постоянно будем пользоваться этими наблюдениями. При этом полученные выше характеризации рекурсивно перечислимых языков, основанные на множествах совпадений и языках перетасованных копий, найдут весьма естественные приложения.
4.1
Операция склеивания
Начнем с формализации основной операции, с помощью которой двойные цепочки строятся из «ДНК-домино», т. е. из последовательностей с липкими концами с одной или с обеих сторон или из одинарных цепочек, присоединяющихся друг к другу при ренатурации и сшивке. Рассмотрим алфавит V и симметричное отношение комплементарности ρ ⊆ V × V на V . Заметим, что хотя свойство симметрии не используется в дальнейшем, мы все же предполагаем симметричность отношения ρ, поскольку комплемен-
4.1. Операция склеивания
157
тарность Уотсона–Крика симметрична (и вообще, интуитивная идея комплементарности подразумевает симметричность). Свяжем с алфавитом V , помимо моноида V ∗ , состоящего из строк над V , моноид пар строк V ∗ × V ∗ . Согласно способу представления молекул ДНК, при котором две цепочки распо∗ ∗ лагаются одна над другой, запишем элементы (x1 ,x2) ∈ V ×V в виде xx12 . Тогда произведением двух пар xx12 , yy12 будет x1 y 1 ∗ × V ∗ будем писать V ∗ . Еди. Кроме того, вместо V x2 y 2 V∗ ∗ ничный элемент λλ из VV ∗ часто отождествляется с λ и опускается, если он несуществен в данном контексте. Обозначим также ∗ hai V V ={ | a, b ∈ V, (a, b) ∈ ρ}, WKρ (V ) = . V ρ b V ρ Множество WKρ (V ) называется областью Уотсона–Крика, ассоциированной сhалфавитом ih i hV иi отношением комплементарa1 a2 ности ρ. Элемент b1 b2 · · · abnn ∈ WKρ (V ) можно записыh i 1 вать в виде w w2 , где w1 = a1 a2 · · · an , w2 = b1 b2 · · · bn . Назовем h i 1 такие элементы w w2 ∈ WKρ (V ) двойными цепочками правильной формы или просто двойными цепочками (или молекулами, напоминая, что ими моделируется). Две компоненты молекулы также называются цепочками: w1 — верхней, а w2 — нижней. h i λ По определению WKρ (V ) элемент λ тоже является молекулой, хотя для него и нет никакого биохимического представления. Таким двух его h образом, i h i WKρ (V ) — моноид. Для h любых i элементов xx12 и yy12 , последовательность xx12 yy12 имеет правильную форму, а, значит, лежит в WKρ (V ). h i Отметим существенное различие между xy и xy : xy является лишь другим обозначением пары (x, y), что не предполагает связиhмежду соответствующими символами строк x и i x y, тогда как y представляет собой молекулу с предписанной связью между соответствующими символами ее цепочек. Эта
158
4. Системы со склеиванием
связь определяется отношением комплементарности ρ на алфавите V , поэтому для полного описания всех этих деталей hмыi h i x обычно будем писать y ∈ WKρ (V ), хотя и сама запись xy уже говорит нам, что рассматривается молекула. Особо h i подчеркнем два свойства, характеризующих элемен1 ты w w2 из WKρ (V ), поскольку они важны для моделей, рассматриваемых в этой и следующей главах: 1. длины нитей w1 и w2 одинаковы, 2. соответствующие символы нитей комплементарны в смысле отношения ρ. Это довольно сильные свойства. Мы увидим, что используя элементы из WKρ (V ), легко получить характеризации RE . В действительности, пересечение «встроено» в определение области Уотсона–Крика. Отметим, однако, что молекулы ДНК обеспечивают эти свойства «даром»: они на самом деле суть двойные цепочки правильной формы, корректность которых проверяется самой природой. Ниже мы будем использовать и «неполные молекулы», т. е. элементы множества Wρ (V ) = Lρ (V ) ∪ Rρ (V ) ∪ LRρ (V ), где ∗ ∗ λ V V , Lρ (V ) = ( ∪ ) V∗ λ V ρ ∗ ∗ V λ V Rρ (V ) = ( ∪ ), ∗ V ρ V λ ∗ + ∗ λ V V λ V LRρ (V ) = ( ∪ ) ( ∪ ). ∗ ∗ V λ V λ V ρ h i Здесь, когда мы пишем, например, λu xy , подразумевается лишь выражение, полученное сцеплением двух символов hxi u ux λ и y . Его нельзя заменить, скажем, на y , поскольку пропадет информация об отношении комплементарности меж ux ду символами из x и y. Обозначение y применимо к любой
4.1. Операция склеивания
y
159
y
x
x
Lρ (V ): y
x
y
x
Rρ (V ):
LRρ (V ):
y
x
z
y
x
z
y
x
z
y
x
z
Рис. 4.1. Возможные формы «домино».
h i паре строк, тогда как xy обозначает молекулу. Если u 6= λ, то h i выражение ux просто не определено. y Возможные формы элементов из Wρ (V ) изображены на рис. 4.1. Во всех случаях можно увидеть двойную цепочку x правильной формы и отростки y, z по одну или по обе стороны от x. Эти отростки (липкие концы) могут располагаться в верхней или в нижней цепочках. Отметим, что в элементах множеств Lρ (V ) и Rρ (V ) блок x может быть пустым, но в h i+ элементах из LRρ (V ) выполняется условие x ∈ VV , т. е. ρ в x должен быть по крайней мере один такой элемент ab , что (a, b) ∈ ρ. И наконец, отростки могут отсутствовать, тогда получится элемент из WKρ (V ), следовательно WKρ (V ) содержится в каждом из множеств Lρ (V ), Rρ (V ), LRρ (V ). Элемент множества Wρ (V ), у которого по крайней мере в одной позиции стоит ab , a 6= λ, b 6= λ, называется двойной цепочкой с правильной основой. Разумеется, в нем все вхождения «столбиков» ab , где (a, b) ∈ ρ, располагаются подряд. Произвольный элемент из Wρ (V ) называют домино (более точным термином было бы полимино).
160
4. Системы со склеиванием
На множестве Wρ (V ) определим частичную операцию, моделирующую операцию сшивки. К молекуле с правильной основой можно слева или справа присоединить домино, если их липкие концы сочетаются, т. е. на соответствующих позициях стоят комплементарные символы. Результатом такой операции всегда будет молекула с правильной основой, т. е. без пустых мест, окруженных символами из V . Более подробно, рассмотрим молекулу с правильной основой x ∈ Wρ (V ) и домино y ∈ Wρ (V ). Молекулу x можно (очевидно, единственнымhспособом) представить i ∗ в виде x = x1 x2 x3 , λ V λ где x2 ∈ WKρ (V ) − { λ } и x1 , x3 ∈ λ ∪ V ∗ . Склейка x и y, обозначаемая µ(x, y), определена в следующих случаях: (1) x3 = λu , y = λv y 0 для таких u, v ∈ V ∗ , что u u 0 0 ρ (V ) и y ∈ Rρ (V ); тогда µ(x, y) = x1 x2 v y ; v ∈WK (2) x3 = λv , y = λu y 0 для таких u, v ∈ V ∗ , что u u 0 0 ρ (V ) и y ∈ Rρ (V ); тогда µ(x, y) = x1 x2 v y ; v ∈ WK (3) x3 = uλ1 , y = uλ2 для u1 , u2 ∈ V ∗ ; тогда µ(x, y) = x1 x2 u1λu2 ; (4) x3 = u1λu2 , y = λv для таких u1 , u2 , v ∈ V ∗ , что u1 WKρ (V ); тогда µ(x, y) = x1 x2 uv1 uλ2 ; v ∈ h i (5) y = v1λv2 для таких u, v1 , v2 ∈ V ∗ , что vu1 ∈ WKρ (V ); h i λ тогда µ(x, y) = x1 x2 vu1 v2 ; (6) x3 = vλ1 , y = vλ2 для v1 , v2 ∈ V ∗ ; тогда µ(x, y) = x1 x2 v1λv2 , (7) x3 = v1λv2 , y = λu для таких u, v1 , v2 ∈ V ∗ , что h i h i u u λ ∈ WK (V ); тогда µ(x, y) = x x ρ 1 2 v1 v1 v2 ; (8) x3 = λv , y = u1λu2 для таких u1 , u2 , v ∈ V ∗ , что u1 u1 u2 ∈ WK (V ); тогда µ(x, y) = x x ρ 1 2 v v λ
4.1. Операция склеивания
x
161
y
x
(2) y
(3) (6)
x
x
(4) x
y
x
(1)
y
(5) x
(7)
y
y
x
y
y
(8)
Рис. 4.2. Операция склейки.
Эти восемь случаев изображены на рис. 4.2. Симметрично можно определить µ(y, x), присоединяя к молекуле с правильной основой x последовательность y слева. Отметим, что нет нужды по-разному обозначать «левую» и «правую» склейки. В обоих случаях по крайней мере один из термов операции должен быть молекулой с правильной основой, а результат (тоже молекула с правильной основой) целиком зависит от порядка последовательностей и их липких концов. Отметим, что во всех случаях допустимы соединения и «прямыми» концами, т. е. концами без отростков. При этом всегда получается двойная цепочка с правильной основой (ее подпоследовательность из WKρ (V ) не обязательно длиннее, чем подпоследовательность x2 ∈ WKρ (V ) из x). В случаях 3 и 6 не используется ренатурация, а, значит, и отношение комплементарности. Операцию, которая получится, если исключить эти случаи из определения µ(x, y), мы обозначим через µ0 (x, y) и назовем ограниченной склейкой. Максимальную длину отростка в цепочке z ∈ Wρ (V ) называют задержкой для z и обозначают через d(z). (Видно, что в случаях 1, 2 на рис. 4.2, т. е. если y тоже является двойной цепочкой с правильной основой, «правая задержка» для x и «левая задержка» для y должны совпадать.) Подобно тому как переписывание лежит в основе грамматик Хомского, склейка служит основной операцией в системах со склейкой, исследуемых в следующих разделах.
162
4.2
4. Системы со склейкой
Системы со склейкой: классификация
Здесь мы определим системы со склейкой в наиболее общем виде: когда молекулы строятся, исходя из цепочки с правильной основой, которая удлиняется в обоих направлениях с использованием домино произвольных форм и операции µ. Ниже мы увидим, что системы более специфических типов равносильны системам общего вида по модулю таких сжимающих механизмов, как слабое кодирование и детерминированное ОПМотображение. Система со склейкой — это четверка γ = (V, ρ, A, D), в которой V — алфавит, ρ ⊆ V ×V — симметричное отношение, A — конечное подмножество множества LRρ (V ), D — конечное подмножество множества Wρ (V ) × Wρ (V ). Отношение ρ — это отношение комплементарности на множестве V , элементы из A называются аксиомами. Начав с аксиом и используя пары (u, v) домино из D, при помощи операции склейки µ получают некоторое множество двойных цепочек из WKρ (V ), т. е. «полных» молекул. Формально, для данной системы γ = (V, ρ, A, D) и двух последовательностей x, y ∈ LRρ (V ) запишем x =⇒ y тогда и только тогда, когда y = µ u, µ(x, v) для некоторого (u, v) ∈ D. Очевидно, что µ u, µ(x, v) = µ µ(u, x), v , поскольку удлинение влево не зависит от удлинения вправо. Последовательность x1 =⇒ x2 =⇒ . . . =⇒ xk , где x1 ∈ A, называется вычислением в γ. Вычисление σ : x1 =⇒∗ xk является завершенным, если xk ∈ WKρ (V ) (у заключительной цепочки нет липких концов, а значит, нет и пробелов). Множество всех молекул над V , получившихся в конце всех завершенных вычислений в γ, обозначается через LMn (γ). Здесь LM — аббревиатура от слов «Language of Molecules» (язык молекул), а индекс n произведен от слова «non-restricted» (неограниченный): вычисления не ограничены
4.2. Системы со склейкой: классификация
163
ничем, кроме того, что они должны быть завершенными. Итак, LMn (γ) = {w ∈ WKρ (V ) | x =⇒∗ w, x ∈ A}. В дальнейшем системы со склейкой рассматриваются как генераторы языков строк. Для этого свяжем с LMn (γ) язык n hwi o 0 ∗ Ln (γ) = w ∈ V ∗ | ∈ LM (γ) для некоторого w ∈ V . n w0 Будем говорить, что язык Ln (γ) порожден γ. Интересны и некоторые типы ограниченных вычислений. Говорят, что завершенное вычисление x1 =⇒ x2 =⇒ . . . =⇒ xk : примитивно, если ни для какого i, 1 6 i < k, не выполняется включение xi ∈ WKρ (V ), т. е. xk — первая полная молекула в этом вычислении); имеет задержку d, если d(xi ) 6 d для каждого 1 6 i 6 k. Обозначим через Lp (γ) и Ld (γ), d > 1, языки, порождаемые γ в результате примитивных вычислений и соответственно вычислений с задержкой d. Как и Ln (γ), языки Lp (γ), Ld (γ) состоят из строк, расположенных в верхних цепочках молекул, порождаемых γ, но мы не вдаемся в детали соотношений между языками Lα (γ) и LMα (γ), где α ∈ {n, p, d}, поскольку здесь мы вообще не исследуем языки молекул. В действительности, соотношение между Lα (γ) и LMα (γ) зависит от ρ. Например, если ρ — инъективное отображение, то язык молекул LMα (γ) однозначно определяется языком строк Lα (γ), а если ρ — произвольное симметричное отношение, то Lα (γ) есть образ LMα (γ) при кодировании, а LMα (γ) — образ Lα (γ) при обратном кодировании. Ясно, что выполняются следующие включения: Lp (γ) ⊆ Ln (γ), Ld1 (γ) ⊆ Ld2 (γ), если 1 6 d1 6 d2 , Ld (γ) ⊆ Ln (γ)
для всех d > 0.
Говорят, что система γ имеет ограниченную задержку, если существует такое d > 1, что Ld (γ) = Ln (γ).
164
4. Системы со склейкой
Представляют интерес и некоторые частные типы систем со склейкой. Говорят, что система γ = (V, ρ, A, D): односторонняя, если u = λ или v = λ в каждой паре (u, v) ∈ D; регулярная, если u = λ в каждой паре (u, v) ∈ D; ∗ простая, если для всех пар (u, v) ∈ D либо u, v ∈ Vλ , либо u, v ∈ Vλ∗ . В односторонних системах удлинения влево и вправо независимы. В регулярных системах допустимы лишь удлинения последовательностей вправо (следовательно, аксиомы должны V∗ иметь вид x1 x2 , где x1 ∈ WKρ (V ) и x2 ∈ λ ∪ Vλ∗ ). При вычислениях в простой системе символы добавляются только к одной из компонент двойной цепочки. Обозначим через ASL(α) семейство языков вида Lα (γ), где α ∈ {n, p}, а γ — система общего вида. Здесь SL — аббревиатура слов «Sticker Language» (язык наклеек), а A (от слова «Arbitrary» — произвольный) показывает, что речь идет о системе общего вида. Семейство языков, порождаемых системами с ограниченной задержкой, обозначается через ASL(b). Если используются только односторонние, или только регулярные, или только простые, или только простые и односторонние, или только простые и регулярные системы, то заменим символ A перед SL(α) на O, R, S, SO, SR соответственно. Подчеркнем, что все эти семейства состоят из языков строк, а не молекул, поэтому можно безо всяких оговорок обсуждать их соотношения с семействами из иерархии Хомского. Это не совсем так для семейств языков вида LMα (γ), поскольку при работе с ними приходится учитывать отношение комплементарности ρ. Как отмечено выше, при инъективном ρ язык LMα (γ) изоморфен Lα (γ), но если ρ не инъективно, то нужно принимать во внимание кодирование, связывающее LMα (γ) и Lα (γ). Из определений следует: Лемма 4.1. Для каждого α ∈ {n, p, b} выполняются соотношения, изображенные на рис. 4.3, на котором стрелки означают не обязательно строгие включения.
4.2. Системы со склейкой: классификация
165
ASL(α) I @ @ @
OSL(α)
SSL(α) @ I @
@
SOSL(α)
@ I @ @
RSL(α)
@ I @
@
SRSL(α) Рис. 4.3. Соотношения между семействами языков, порождаемых склеивающими системами (предварительные результаты). Лемма 4.2. Для каждого X ∈ {A, O, R, S, SO, SR} выполняется включение XSL(b) ⊆ XSL(n). В силу отсутствия стирающих операций непосредственно получается следующий результат. Лемма 4.3. XSL(α) ⊆ CS для всех вышеописанных X и α. Перед тем, как приступить к исследованию размеров семейств XSL(α), рассмотрим два примера. Первый из них — пример простой склеивающей системы: γ1 = (V, ρ, A, D), V = {a, b, c}, ρ = {(a, a), (b, b), (c, c)}, hai A={ }, a c λ b b D = {( , ), ( , ), λ λ λ λ λ λ λ λ ( , ), ( , )}. b λ c b
166
4. Системы со склейкой
Здесь
h i h i ∗ a b c WKρ (V ) = , , , a b c но в силу структуры пар множества D могут h iпорождаться a h b im c ∗ b лишь цепочки вида x a b , где x ∈ { b , c } . Более того, h i цепочка x должна содержать ровно m вхождений bb и ров но m вхождений cc . Следовательно, язык Ln (γ1 ) не является контекстно-свободным: h c i+ b + h a i b + LMn (γ1 ) ∩ c b a b h i m h i m c m b a b = |m>1 , c b a b Ln (γ1 ) ∩ c+ b+ ab+ = {cm bm abm | m > 1}. Работая с верхней цепочкой, т. е. используя пары сначала λ b c b ( λ , λ ), ( λ , λ ), а только затем с нижней, можно получить каждую цепочку из LMn (γ1 ) с помощью примитивных вычислений, откуда Lp (γ1 ) = Ln (γ1 ). Это не так для вычислений с ограниченной задержкой. Дей c m h b im a h b im ствительно, цепочку вида c невозможно соb a b здать с задержкой чем m/2, поскольку меньше нельзя испольλ λ λ зовать пару ( c , b ) до того, как пара ( b , λλ ) будет использована m раз, но к этому моменту h iq будет q уже выработаλ b a b на последовательность вида bp для p + q = m, b a λ т. е. задержка будет не меньше, чем m/2. Итак, Ld (γ1 ) ⊂ Ln (γ1 ) для всех d > 1. Все языки Ld (γ1 ) линейны. Мы не будем это доказывать для системы γ1 , поскольку это следует из одного общего результата следующего раздела. Рассмотрим еще одну систему (уже не простую): γ2 = (V, ρ, A, D), V = U ∪ U ∪ U 0 для некоторого алфавита U, ρ = {(a, a), (¯ a, a ¯), (a0 , a0 ) | a ∈ U },
4.3. Выразительная сила систем со склейкой
167
0 a A = { 00 } для некоторого фиксированного a0 ∈ U, a 0 0 h i h i a a λ a ¯ D = {( , ), ( 0 , ) | a ∈ U }. λ a a a ¯ h 0i a Начинаем со столбика a00 для фиксированного a0 ∈ U и стро0 им молекулу, добавляя справа от него столбики aa , aa¯¯ ; одновременно слева от него появляются символы a0 , причем появление такого символа в верхней цепочке соответствует добавa лению справа столбика a , а в нижней цепочке — столбика a¯ . Это означает, что и надчеркиваний) a ¯ h iпо (модулюh штрихов i цепочка столбиков
a0 a0
a0
слева от a00 идентична развернутой h 0 0i a цепочке столбиков aa справа от a00 и в то же время идентич0 h 0i a на развернутой последовательности aa¯¯ справа от a00 . Итак, 0 0 0 h i x a0 w LMn (γ2 ) = { 0 | x ∈ U ∗ , mi(w) ∈ x ⊥ tx ¯}, x a00 w Ln (γ2 ) = {x0 a00 w | x ∈ U ∗ , mi(w) ∈ x ⊥ tx ¯}, где x0 , x ¯ — штрихованная и надчеркнутая копии буквы x ∈ U ∗ . h 0i a Следовательно, справа от a00 в обеих цепочках возникает 0 язык перетасованных h 0 i копий над алфавитом U , а одновременно a с этим слева от a00 представлены (в штрихованной версии) те 0 строки, над которыми производилось тасование. (Поскольку mi(U ∗ ) = U ∗ , можно не учитывать операцию отражения.) С помощью теоремы 3.17 отсюда можно извлечь представление рекурсивно перечислимых языков в качестве образов языков из семейства ASL(n) при ОПМ-отображениях. В разделе 4.5 этот результат будет усилен.
4.3
Выразительная сила систем со склейкой
В этом разделе мы изучаем соотношения между семействами XSL(α) для различных X ∈ {A, O, R, S, SO, SR}, α ∈ {n, p, b},
168
4. Системы со склейкой
а также соотношения между ними и семействами из иерархии Хомского. Начнем с некоторых оценок сверху. Теорема 4.1. OSL(n) ⊆ REG . Доказательство. Рассмотрим одностороннюю систему γ = (V, ρ, A, D). Обозначим через d длину самого длинного липкого конца или самой длинной одинарной цепочки среди элементов A или среди пар из D. Построим контекстно свободную грамматику G = (N, T, S, P ), в которой u u λ λ N = {h il , h ir , h il , h ir λ λ u u | u ∈ V ∗ , 0 6 |u| 6 d} ∪ {S}, h i T = VV , а P содержит следующие правила: ρ h i h i x1 v1 1. S → h uu12 il xx12 h vv12 ir для uu12 ∈ A, где ∗ h x2 i v 2 u1 v1 λ V и xx12 ∈ WKρ (V ). u2 , v 2 ∈ V ∗ ∪ λ 0 ∗ 0 h i u u u1 1 , где , u10 ∈ Vλ∗ ∪ Vλ , 2. h uu12 il → h u10 il w w u 2 2 2 2 h i w1 ∈ WK (V ) и существует пара из D вида ρ ∗ w2 0 h i u x1 y1 λ y1 V ( u10 ∪ Vλ∗ y2 , λ ) с такими y2 ∈ λ h 2 i x2 h i h i 1 и xx12 ∈ WKρ (V ), что xx12 yy12 uu12 = w w2 . (Применяя это правило, мы удлиняем цепочку влево так же, как при использовании пары с пустым правым членом, т. е. в соответствии с ее левым липким концом. Клейкий конец запоминается с помощью нетерминального символа h uu12 il , в котором индекс l означает «левый». Отметим, h i h i λ 1 что w может равняться w2 λ .)
4.3. Выразительная сила систем со склейкой
169
h i 0 0 ∗ u1 u1 u1 λ V 1 3. h uu12 ir → w , w2 h u02 ir , где u2 , u02 ∈ V ∗ ∪ λ h i w1 ∈ WKρ (V ) и существует пара из D вида w2 h i 0 ∗ u1 y1 x1 ( λλ , xx12 ) с такими ∈ Vλ ∪ Vλ∗ 0 y2 u2 h i h i hx2 i 1 и yy12 ∈ WKρ (V ), что uu12 xx12 yy12 = w w2 . (Аналогичная идея для случая удлинения вправо.) 4. h λλ il → λ, h λλ ir → λ. (Вывод завершается при отсутствии липких концов.) Легко видеть, что L(G) = LMn (γ) = LMd (γ). В самом деле, поскольку для построения цепочки используются только односторонние пары, операции, удлиняющие цепочку влево и вправо, не зависят всегда можно применить друг от друга. Поэтому z1 λ λ z1 пару ( z2 , λ ) или ( λ , z2 ) из D так, что она приклеится к растущей цепочке с помощью ограниченной склейки, а значит, длина отростков на каждом шаге вывода не превысит максимум длин отростков в элементах из A и из D. Итак, нетерминальные символы из N управляют процессом вывода так же, как это делают липкие концы. В грамматике G нет выводов вида X =⇒∗ uXv, где и u, и v — непустые строки. Следовательно, язык L(G) регулярен, см. [115]. Поскольку L(G) = LMn (γ) и Ln (γ) есть образ LMn (γ) при кодировании, имеем Ln (γ) ∈ REG. Следствие 4.1. OSL(p) ⊆ REG. Доказательство. Если в приведенном выше доказательстве заменить число d из определения N на 2d (т. е. расширить возможность запоминания липких концов в нетерминальных символах до удвоенного максимума длин липких концов элементов u1 из A и из D) и считать, что в посылках h u2 il , h uu12 ir правил групп 2 и 3 u1 u2 6= λ, получится такая грамматика G0 , что L(G0 ) = LMp (γ). Действительно, грамматика G0 уже не может удлинять последовательность в соответствующем направлении после образования прямого конца, откуда L(G0 ) ⊆ LMp (γ). Обратно, для каждого примитивного вычисления в γ легко стро-
170
4. Системы со склейкой
ится примитивное вычисление той же молекулы с задержкой не более 2d. Такое вычисление можно промоделировать выводом в G0 , так как в силу примитивности не придется применять те правила групп 2 и 3, которые мы исключили. Из первого из примеров, указанных в разделе 4.2, вытекает Теорема 4.2. Семейства SSL(n), SSL(p) содержат не контекстно-свободные языки. Следствие 4.2. Включения SOSL(α) ⊂ SSL(α), α ∈ {n, p}, являются строгими. В случае двусторонних систем, даже простых, нельзя добиться ограниченности задержки по образцу доказательства теоремы 4.1. Точнее, верен следующий результат. Теорема 4.3. ASL(b) ⊆ LIN . Доказательство. Рассмотрим систему γ = (V, ρ, A, D) общего вида, и пусть Ld (γ) = Ln (γ) для некоторого целого числа d. Построим линейную грамматику G = (N, T, S, P ), в которой ∗ u1 v1 u1 v1 λ V N = {h , i| , ∈ ∪ , u2 v2 u2 v2 V∗ λ |u1 |, |u2 |, |v1 |, |v2 | 6 d} ∪ {S}, h i T = VV , а P содержит следующие правила: ρ h i h i u1 v1 z1 1 1. S → w w2 h u2 , v2 i z2 , для w1 z1 , ∈ WKρ (V ), w2 z2 u1 v1 h , i∈N u2 v2 w1 u1 v1 z1 и( , ) ∈ D. w2 u2 v2 z2 (Выводы в G воспроизводят вычисления в γ, сделанные в обратном порядке, т. е. от последней примененной пары из D к «центру» последовательности, где используется аксиома из A.)
4.3. Выразительная сила систем со склейкой
171
h i 0 0 h i u1 v1 z1 1 2. h uu12 , vv12 i → w w2 h u02 , v20 i z2 для таких w1 z1 , ∈ WKρ (V ), w2 z2 0 0 u1 v1 u v h , i, h 10 , 10 i ∈ N, u2 v2 u v 0 0 0 2 20 x1 x1 u1 v y1 y1 и( , 10 ) ∈ D, 0 0 x2 x2 u2 v2 y20 y2 h i h i h 0 i h i u x x0 y1 y1 v 1 z1 1 что u1 x1 x01 = w w2 , y2 y20 v2 = z2 . (При движении к «цен2 2 2 тру» последовательности слева и справа присоединяются блоки, взятые из пар множества D, а нетерминальные символы обеспечивают правильность соединений. Для этой цели будет достаточно запасенных нетерминальных символов, поскольку γ обладает свойством ограниченной задержки.) h ih ih i x1 z1 1 3. h uu12 , vv12 i → w w2 x2 z2 , если
w1 x1 z1 , , ∈ WKρ (V ), w2 x2 z2 x1 λ 6= , x2 λ u1 v1 h , i ∈ N, u2 v2 0 h i 0 w z1 x1 ∈ A, что и найдется такая аксиома w10 x2 z20 2 0 0 ∗ w1 z λ V , 10 ∈ ∪ 0 ∗ w2 z2 V λ h i h i h i h 0 i 0 u1 w 1 z1 v 1 z1 1 и w w2 = u2 w20 , z2 = z20 v2 . (Вывод можно завершить, когда оба липких конца какойлибо аксиомы из A подходят к липким концам, которые хранит в себе единственный в последовательности элемент из N .) h i h i w1 1 4. S → w , для w2 w2 ∈ A.
172
4. Системы со склейкой
Из предыдущих объяснений легко понять, что L(G) = LMd (γ). Поскольку Ld (γ) является кодированием LMd (γ), получаем Ld (γ) ∈ LIN . Следствие 4.3. Для каждой склеивающей системы γ и каждого целого d выполняется Ld (γ) ∈ LIN . Доказательство. Это прямое следствие предыдущего доказательства. Поскольку в склеивающих системах не используются вспомогательные символы, довольно удивительно, что верны и обратные приведенным в теоремах 4.1 и 4.3 включения, даже в усиленном виде. Приведем сначала доказательство для регулярного случая. Оно проще и подготовит читателя к более сложному доказательству в линейном случае. Теорема 4.4. REG ⊆ RSL(b) ∩ RSL(p). Доказательство. Рассмотрим конечный автомат M = (K, V, s0 , F, δ), где K = {s0 , s1 , . . . , sk }, n > 0. Построим регулярную склеивающую систему γ = (V, ρ, A, D), в которой 1. ρ = {(a, a) | a ∈ V }, x u 2. A = xx | x ∈ L(M ), |x| 6 k + 2 ∪ x λ | |xu| = k + 2, ∗ |x| > 1, |u| = i, для таких 1 6 i 6 k + 1, что s0 xu =⇒ xusi−1 , 3. D = {( λλ , λv xx λu ) | 1 6 |v| 6 k + 1, |xu| = k + 2, |x| > 1, |u| = i, для 1 6 i 6 k+1, что sj xu =⇒∗ xusi−1 , таких и j = |v| − 1} ∪ {( λλ , λv xx ) | 1 6 |v| 6 k + 1, 1 6 |x| 6 k, и sj x =⇒∗ xsf , sf ∈ F , где j = |v| − 1}. Эта система начинает работу с домино такого вида как на рис. 4.4a, затем использует несколько раз домино такого вида как на рис. 4.4b, и заканчивает вычисление на домино такого вида как на рис. 4.4c. Состояния автомата M кодируются длиной отростков. Каждая не попавшая в WKρ (V ) аксиома из A имеет правый
4.3. Выразительная сила систем со склейкой
a
b
173
c
Рис. 4.4. Домино, используемые в доказательстве теоремы 4.4.
отросток длины i, 1 6 i 6 k + 1, этим она определяет состояние si−1 . Тем же свойством обладают и правые члены пар из D, соответствующие по виду домино, изображенной на рис. 4.4b. Автомат M окажется в состоянии si−1 после прочтения строки, которая записана в верхней нити молекулы с правильной основой, склеенной из домино. Все домино видов 4.4b и 4.4c имеют непустой левый отросток, следовательно, молекула из WKρ (V ) не может удлиняться. То есть после использования домино типа c) вычисление останавливается. Поскольку задержка системы γ не превосходит k + 1, получаем Ln (γ) = Lp (γ) = Lk+1 (γ) = L(M ), что и завершает доказательство. Следствие 4.4. RSL(α) = OSL(α) = REG, α ∈ {n, p, b}. Доказательство. OSL(n) ⊆ REG по теореме 4.1. Следствие 4.1 дает включение OSL(p) ⊆ REG. Включение OSL(b) ⊆ OSL(n) ⊆ REG отмечено в лемме 4.2, а включение RSL(α) ⊆ OSL(α), α ∈ {n, p, b} — в лемме 4.1. В предыдущей теореме доказаны включения REG ⊆ RSL(b) и REG ⊆ RSL(p). Вместе с RSL(b) ⊆ RSL(n) (лемма 4.2), получаем REG ⊆ RSL(n). Теорема 4.5. LIN ⊆ ASL(b) ∩ ASL(p). Доказательство. Рассмотрим линейную грамматику G = (N, T, S, P ). Существует такая эквивалентная ей грамматика G0 = (N 0 , T, S, P 0 ), что P 0 содержат лишь правила вида X → aY, X → Y a, X → a, для X, Y ∈ N 0 , a ∈ T . Предположим, что N 0 = {X1 , X2 , . . . , Xk }, k > 1. Построим склеивающую систему γ = (T, ρ, A, D), в которой (A) ρ = {(a, a) | a ∈ T }, (B) A = xx | x ∈ L(G), |x| 6 3k + 1 ∪{ λu xx | |ux| 6 3k+1, |x| > 1, |u| = i, для таких 1 6 i 6 k, что Xi =⇒∗ ux} ∪
174
4. Системы со склейкой
{ xx λu | |xu| 6 3k +1, |x| > 1, |u| = i, для таких 1 6 i 6 k, что Xi =⇒∗ xu}, (C) D содержит следующие группы пар домино: 1) ( λu xx λv , zz ) для 1 6 |u| 6 k, 1 6 |v| 6 k, |ux| = k + 1, 0 6 |z| 6 k, и X|u| =⇒∗ uxX|v| z, 2) ( xx λv , zz λu ) для 1 6 |v| 6 k, 1 6 |u| 6 k, 1 6 |x| 6 k, |zu| = k + 1, и X|u| =⇒∗ xX|v| zu, 3) ( xx λv , zz ), для 1 6 |v| 6 k, |x| > 1, |xz| 6 2k + 1, |z| > 0, и S =⇒∗ xX|v| z, 4) ( zz , λv xx λu ), для 1 6 |v| 6 k, 1 6 |u| 6 k, |xu| = k + 1, 0 6 |z| 6 k, и X|u| =⇒∗ zX|v| xu, 5) ( λu zz , λv xx ), для 1 6 |u| 6 k, 1 6 |v| 6 k, 1 6 |x| 6 k, |uz| = k + 1, и X|u| =⇒∗ uzX|v| x, 6) ( zz , λv xx ), для 1 6 |v| 6 k, |x| > 1, |xz| 6 2k + 1, |z| > 0, и S =⇒∗ zX|v| x. Идея этой конструкции в следующем. Мы намерены моделировать выводы в G0 в обратном порядке вычислениями в γ, которые начинаются с блока в центре строки и продолжаются добавлением блоков к обоим концам строки. Нетерминальный символ из N 0 вновь шифруется длиной отростка на одном из концов строящейся последовательности, тогда как второй конец последовательности прямой. Разбиение пар на группы соответствует перемещению отростка по концам строящейся строки. Домино пар из группы 1 оставляют левый конец липким, т. е. и до и после приклеивания такой пары информация о нетерминальном символе находится на левом конце последовательности. Группа 2 перемещает липкий конец слева направо. Пары из группы 3 завершают построение молекулы. Пары из групп 4, 5 и 6 действуют симметрично парам из групп 1, 2 и 3 соответственно. Последовательность с двумя прямыми концами не может быть продолжена,
4.3. Выразительная сила систем со склейкой
175
поскольку у каждой пары из D есть не пустой липкий конец с «внутренней стороны» домино пары. Таким образом, ясно, что завершенные вычисления в γ соответствуют выводам в G0 . Обратно, каждый вывод в G можно смоделировать каким-либо завершенным вычислением в γ. В самом деле, рассмотрим вывод δ : S =⇒∗ w в G. Если w |w| 6 3k + 1, то w ∈ A. Предположим, что |w| > 3k + 1. Поскольку каждое правило из P 0 вносит ровно один терминальный символ, можно так разложить вывод δ на отрезки S =⇒∗ u1 Xi1 v1 =⇒∗ u1 u2 Xi2 v2 v1 =⇒∗ . . . =⇒∗ u1 . . . ur Xir vr . . . v1 =⇒∗ u1 . . . ur yvr . . . v1 , что 1. |uj | = k + 1 и 0 6 |vj | 6 k, или 0 6 |uj | 6 k и |vj | = k + 1, для каждого j = 1, 2, . . . , r, 2. k + 1 6 |y| 6 3k + 1, 3. r > 1. После этого для каждой пары (uj , vj ) со свойством |uj | = k + 1 можно подобрать пару домино вида 1 или 5, кодирующую Xij−1 в левом конце отростком длины ij−1 , для каждой пары (uj , vj ) со свойством |vj | = k + 1 можно подобрать пару домино вида 2 или 4, кодирующую Xij−1 в правом конце отростком длины ij−1 . Ясно, что для y можно подобрать аксиому, кодирующую Xir в одном из концов. Также и для (u1 , v1 ) можно подобрать пару домино вида 3 или 6, делающую оба конца прямыми. Следовательно, получаем L(G) ⊆ Ln (γ). Очевидно, что Ln (γ) = Lp (γ) и задержка γ не превосходит k, значит, Ln (γ) = Lk (γ), что и завершает доказательство. Следствие 4.5. LIN = ASL(b). Доказательство. Нужно объединить теоремы 4.3 и 4.5. В доказательстве теоремы 4.1 мы отметили, что если γ = (V, ρ, A, D) — односторонняя склеивающая система, то Ln (γ) = Ld (γ) для некоторого целого d, зависящего от A и D (максимальная длина липкого конца домино из A или из D). Очевид-
176
4. Системы со склейкой
CS 6
ASL(n)
@ I @ @
ASL(b) = LIN
SSL(n)
@ I @
@ I @ @
@ @
OSL(b) = RSL(b) = SSL(b) OSL(n) = RSL(n) = REG
@ I @ @ @
SOSL(b) = SOSL(n) 6
SRSL(b) = SRSL(n) Рис. 4.5. Соотношения между семействами языков, порожденных склеивающими системами. но, что это также верно для простых и для простых регулярных систем, тем самым мы получили следующий результат. Теорема 4.6. SOSL(n) = SOSL(b), SRSL(n) = SRSL(b). Доказательство. Включение ⊆ обсуждено выше, а обратное включение — в лемме 4.2. Суммируя предыдущие результаты для семейств XSL(b), XSL(n), мы получим диаграмму, изображенную на рис. 4.5; как обычно, стрелками обозначены нестрогие включения. Теорема 4.7. REG − SOSL(α) 6= ∅, α ∈ {n, b}. Доказательство. Рассмотрим регулярный язык L = ba+ b и предположим, что L = Ln (γ) для некоторой простой односторонней склеивающей системы γ = (V, ρ, A, D). Поскольку A — конечное множество (молекул с правильной основой), а L — бесконечный язык, в D найдутся две пары одного из следующих видов:
4.4. Представления регулярных языков
1. 2. 3. 4.
177
0 ( λλ , yλ2 ) и ( λλ , yλ1 ), где y2 ∈ V + , y10 ∈ a+ , ( λλ , yλ1 ) и ( λλ , yλ0 ), где y1 ∈ a+ , y20 ∈ V + , 0 2 λ λ ( x2 , λ ) и ( xλ1 , λλ ), где x2 ∈ V + , x01 ∈ a+ , ( xλ1 , λλ ) и ( xλ0 ), λλ ), где x1 ∈ a+ , x02 ∈ V + , 2
которые используются сколь угодно много раз при порождении достаточно длинных строк из L. Все четыре случая можно трактовать одинаково. Предположим, что мы имеем дело с первым случаем, тогда 0 λ λ λ y1 ( , ) ∈ D, ( , ) ∈ D. λ y2 λ λ Ясно, что y10 = ai для некоторого i > 1 и строка y2 составлена из таких символов c, что (a, c) ∈ ρ. Предположим, что |y2 | = j, j > 1. Завершенное вычисление x1 y1 z1 ∗ w1 =⇒ x2 y2 z2 w2 для ∗ x1 y1 z1 x1 z1 V λ ∈ A, , ∈ ∪ x2 y2 z2 x2 z2 λ V∗ h i h i n 1 и yy12 , w w2 ∈ WKρ (V ), w1 = ba b, можно продолжить следующим образом: " # 0j w y x1 y1 z1 w 1 1 1 =⇒∗ =⇒∗ . x2 y2 z2 w2 w2 y2i Это завершенное вычисление, создающее строку w1 y10 j = ban baij , которая не лежит в L. Противоречие. Следствие 4.6. Включение SOSL(n) ⊆ OSL(n) строгое.
4.4
Представления регулярных и линейных языков
Мы установили, что включение SOSL(n) ⊂ REG является строгим, и предполагаем, что строгим будет и включение
178
4. Системы со склейкой
SSL(b) ⊆ LIN . Поэтому было бы интересно дополнить склеивающие системы сжимающим механизмом с тем, чтобы попытаться получить представления регулярных и линейных языков, отправляясь от языков из семейств SOSL(n) и соответственно SSL(b). Этого можно добиться даже при использовании таких слабых сжимающих механизмов, как кодирование и слабое кодирование. Теорема 4.8. Каждый регулярный язык является кодированием языка из семейства SRSL(α) для любого α ∈ {n, b, p}. Доказательство. Рассмотрим регулярную грамматику G = (N, T, S, P ) и построим склеивающую систему γ = (V, ρ, A, D), в которой 1) V = {[X, a]i | X ∈ N, a ∈ T, i = 1, 2}, 2) ρ = {([X, a]1 , [X, a]1 ), ([X, a]2 , [X, a]2 ) | X ∈ N, a ∈ T }, nh i [S,a]1 λ 3) A = [X,b]2 | S → aX ∈ P и либо X → bY ∈ P , [S,a]1 o либо X → b ∈ P , a, b ∈ T , X, Y ∈ N nh i o [S,a]1 ∪ | S → a ∈ P , a ∈ T , [S,a]1 n 4) D = ( λλ , [X,a]1λ[Y,b]2 ) | X → aY ∈ P и либо o Y → bY 0 ∈ P , либо Y → b ∈ P , для a, b ∈ T и X, Y, Y 0 ∈ N n o λ ∪ ( λλ , [X,a] ) | X → a ∈ P , X ∈ N , a ∈ T 1 n [X,a]2 [Y,b]1 λ ∪ ( λ , ) | X → aY ∈ P и либо Y → bY 0 , либо λ o Y → b ∈ P , для a, b ∈ T и X, Y, Y 0 ∈ N n o 2 ∪ ( λλ , [X,a] ) | X → a ∈ P , X ∈ N , a ∈ T . λ Каждый вывод в G вида =⇒ a1 X1 =⇒ a1 a2 X2 =⇒ . . . =⇒ a1 a2 . . . ak Xk =⇒ a1 a2 . . . ak ak+1 , k > 1, соответствует вычислению в γ вида
4.4. Представления регулярных языков
[S, a1 ]1 [S, a1 ]1
λ [X1 , a2 ]2
179
=⇒ [S, a1 ]1 [X1 , a2 ]2 [X2 , a3 ]1 =⇒ . . . [S, a1 ]1 [X1 , a2 ]2 λ с чередованием липких концов [X2i ,aλ2i+1 ]1 и [X2i−1λ,a2i ]2 . Вы вод завершается использованием блока [Xk ,aλk+1 ]1 при четном k и блока [Xk ,aλk+1 ]1 при нечетном k. Все нижние блоки домино из D начинаются с символов вида [X, a]1 , а все верхние с символов вида [X, a]2 . Таким образом, завершенное вычисление невозможно продолжить (из-за отношения ρ). В силу этого ясно, что Ln (γ) = Lp (γ) = L1 (γ), и что для кодирования h, определяемого как h([X,a]i ) = a для X ∈ N , a ∈ T , i = 1, 2, получим L(G) = h Ln (γ) . Для произвольного семейства языков FL через Cod(FL) обозначим семейство всевозможных языков вида h(L), где L — язык из FL, а h — кодирование. Следствие 4.7. Cod SOSL(α) = Cod SRSL(α) = REG, α ∈ {n, b, p}. Доказательство. Все семейства SOSL(α), SRSL(α), α ∈ {n, b, p} содержатся в семействе REG (теорема 4.1, следствие 4.1), которое замкнуто относительно (произвольных) морфизмов. Следовательно, семейства Cod(SOSL(α) и Cod SRSL(α) также содержатся REG. В предыдущей теореме доказаны обратные включения. Теорема 4.9. Каждый линейный язык является слабым кодированием языка из семейства SSL(b). Доказательство. Рассмотрим линейную грамматику G = (N, T, S, P ). Без потери общности можно предполагать, что все правила в P имеют вид X → aY , X → Y a, X → a, a ∈ T , X, Y ∈ N . Возьмем новый символ c ∈ / T и заменим эти правила на X → aY c, X → cY a, X → cac. Таким образом, можно предполагать, что для каждого линейного языка L ⊆ T ∗ есть символ c ∈ / T и такая линейная грамматика G0 с правилами
180
4. Системы со склейкой
вывода упомянутого выше вида, что L = g L(G0 ) для слабого кодирования g, стирающего символ c и оставляющего неизменными символы из T . Предположим, что уже G = (N, T ∪{c}, S, P ) является такой грамматикой для данного языка L ∈ LIN . Построим простую склеивающую систему γ = (V, ρ, A, D), в которой (A) V = {[X, a]i | X ∈ N, a ∈ T ∪ {c}, i = 1, 2, 3}, (B) ρ = {([X, a]i , [X, a]i ) | X ∈ N, a ∈ T ∪ {c}, i = 1, 2, 3}, n h i [X,a2 ]3 [X,a1 ]1 [X,a3 ]1 (C) A = | X → a1 a2 a3 ∈ P , X ∈ λ λ [X,a2 ]3 o N , a1 , a2 , a3 ∈ T ∪ {c} (D) D состоит из следующих пар домино: (a) ( [Y,a2 ]2λ[X,a1 ]1 , [X,a3 ]1λ[Y,a4 ]2 ), для Y → a2 Xa4 ∈ P , a1 , a2 , a3 , a4 ∈ T ∪ {c}, X, Y ∈ N , и есть правило 0 X → a1 X 0 a3 или X → a1 a5 a3 в P, X ∈ N , a5 ∈ T ∪ {c}, (b) ( [Y,a2 ]1λ[X,a1 ]2 , [X,a3 ]2λ[Y,a4 ]1 ) для Y → a2 Xa4 ∈ P , a1 , a2 , a3 , a4 ∈ T ∪ {c}, X, Y ∈ N , и есть правило 0 X → a1 X X → a1 a5 a3 в P, X 0 ∈ N , a5 ∈ T ∪ {c}, a3 или
(c) ( [S,aλ1 ]1 , [S,aλ2 ]1 ) для S → a1 Xa2 ∈ P , X ∈ N , a1 , a2 ∈ T∪ {c},
(d) ( [S,aλ1 ]2 , T ∪ {c}.
[S,a2 ]2 λ
) для S → a1 Xa2 ∈ P , X ∈ N , a1 , a2 ∈
Смоделируем выводы в G от конца к началу, начав наращивать строку из центра. Пары домино из первой группы добавляют блоки снизу, а пары из второй группы — сверху. При этом все домино первой группы присоединяются к символам [X, a]1 , а домино второй группы — к символам [X, a]2 . Такимh образом, i [X,a]3 получается молекула, состоящая из столбика вида [X,a] по 3 середине последовательностей столбиков виh iи чередующихся h i [X,a]1 [X,a]2 да [X,a]1 и [X,a]2 слева и справа от него. Это чередование
4.5. Характеризации класса RE
181
обеспечивает то, что все вычисления в γ соответствуют корректным выводам в G. Завершить молекулу при вычислении можно, использовав пары типов 3 или 4, в зависимости от четности шага. Это соответствует использованию S-правила из P , т. е. корректному началу вывода в G. Обратно, благодаря виду правил из P , все выводы G можно смоделировать завершенными вычислениями из γ. Ясно, что задержка γ равна 1 и никакое завершенное вычисление в γ нельзя продолжить, следовательно, Ln (γ) = L1 (γ) = Lp (γ). Определив слабое кодирование h как h([X, a]i ) = a для X ∈ N, i = 1, 2, 3, a ∈ T, h([X, c]i ) = λ для X ∈ N, i = 1, 2, 3, очевидным образом получим, что h Ln (γ) = L, завершая тем самым доказательство. Для произвольного семейства языков FL через CodW(FL) обозначим семейство всевозможных языков вида h(L), где L — язык из FL, а h — слабое кодирование. Следствие 4.8. CodW SSL(b) = LIN . Доказательство. Включение SSL(b) ⊆ LIN следует из теоремы 4.3. Семейство LIN замкнуто относительно произвольных морфизмов, следовательно, CodW SSL(b) ⊆ LIN . В предыдущей теореме доказано обратное включение.
4.5
Характеризации рекурсивно перечислимых языков
С точки зрения молекулярных вычислений более интересна возможность представления (а, значит, и характеризации) рекурсивно перечислимых языков посредством склеивающих языков. Мы уже упомянули такую возможность в конце раздела 4.2. Там мы обсудили пример такой склеивающей системы (обозначенной через γ2 ), что h Ln (γ2 ) = T SV ,
182
4. Системы со склейкой
для некоторого слабого кодирования h. Комбинируя это с теоремой 3.17 (слабое кодирование моделируется посредством ОПМ), мы получаем следующий результат: Теорема 4.10. Каждый язык L ∈ RE может быть представлен в виде L = g(L0 ) для подходящих языка L0 ∈ ASL(n) и детерминированного ОПМ-отображения g. В силу результатов раздела 4.3 нельзя получить аналогичное представление, в котором язык L0 выбирался бы из одного из семейств на рис. 4.5, отличных от ASL(n), ASL(p), SSL(n), SSL(p), поскольку все остальные семейства состоят только из линейных языков, а семейство LIN замкнуто относительно произвольных ОПМ-отображений. Однако для семейства SSL(n) — и даже для SSL(p) — имеет место результат о представлении рекурсивно перечислимых языков, усиливающий теорему 4.10. Теорема 4.11. Каждый язык L ∈ RE может быть представлен в виде L = h(L0 ) для подходящих языка L0 ∈ SSL(n) ∩ SSL(p) и слабого кодирования h. Доказательство. Рассмотрим язык L ⊆ T ∗ , L ∈ RE . По теореме 3.16 существуют два λ-свободных морфизма h1 , h2 : V1∗ −→ V2∗ , регулярный язык R ⊆ V2∗ и проекция prT :V2∗ −→ T ∗ для T ⊆ V2 , такие, что L = prT h1 EQ(h1 , h2 ) ∩ R . Рассмотрим детерминированный конечный автомат M = (K, V2 , s0 , F, δ), распознающий язык R. Построим простую склеивающую систему γ = (V, ρ, A, D), в которой (A) V = V2 ∪ V 2 ∪ K ∪ {$, E, E 0 , C, Z}, (B) ρ = {(X, X) | X ∈ V }, n h i o s0 $ Z (C) A = и λ $ λ (D) D состоит из следующих пар домино: 1. Для каждого a ∈ V1 такого, что h1 (a) = b1 . . . bk , k > 1, и h2 (a) = c1 . . . cm , m > 1, где b1 , . . . , bk , c1 , . . . , cm ∈ V2 ,
4.5. Характеризации класса RE
183
и для sij ∈ K, 0 6 j 6 m, такого, что δ(sij , ci ) = sij+1 , 0 6 j 6 m, поместим в D пару s c¯ s ¯2 si1 si1 c¯1 si0 i m im−1 . . . si2 c ( m , λ b1 CZb2 CZ . . . CZbk CZ ). λ h i (Слева от $$ строится развернутый образ некоторого h2 (a) для a ∈ V1 , и одновременно запоминается путь движения по автомату M при чтении слова h2 (a): si0 c1 c2 . . . cm =⇒∗ sim . Справа строится образ a при h1 , причем символы h1 (a) разделяются вспомогательными символами CZ.) 0
2. ( E λsf , Eλ ) для sf ∈ F . (Это позволит установить связь между принятием слова автоматом M и завершением левой части верхней строки.) построения λ 3. ( ss , Zλ ) для каждого s ∈ K. (Эти пары домино проверяют корректность распознавания пути через автомат M на стыках домино из первой группы. Если за s1 x =⇒∗ xs2 следует s3 y =⇒∗ ys4 , то s2 и s3 должны совпадать, в противном случае небудет комплементарλ ности после приклеивания блока ss .) λ 4. ( λ¯b , bC ), где b ∈ V2 . (Проверяется соответствие ¯ строки h i символов b, записанных в верхней нити слева от $$ , строке символов b, записанных в верхней нити h i справа от $$ . Заметим, что символы Z «поглощаются» вместе с парами состояний из-за вида пар домино третьей группы. А теперь также «поглотятся» h иi символы C, записанные в верхней строке справа от $$ .) 5. ( Eλ0 , Eλ ). (Только таким образом может быть завершено построение молекулы.)
184
4. Системы со склейкой
Из приведенных выше объяснений можно понять, что каждая построенная системой γ завершенная молекула имеет вид
E 0 sf sf c¯t st st . . . c¯2 s1 s1 c¯1 s0 s0 E 0 sf sf c¯t st st . . . c¯2 s1 s1 c¯1 s0 s0
$ Zb1 CZb2 CZ . . . CZbt CZE , $ Zb1 CZb2 CZ . . . CZbt CZE
где c1 c2 . . . ct = h1 (w) = h2 (w) = b1 b2 . . . bt для некоторого w ∈ V1∗ , и вдобавок s0 c1 . . . ct =⇒∗ c1 . . . ct sf в автомате M для sf ∈ F , т. е. h1 (w) ∈ R. Никакое завершенное вычисление не может быть продолжено, поскольку верхние цепочки левых домино (в группах 1 и 2) имеют на правом конце цепочки только одну букву из K, тогда как каждая нижняя нить левой домино (в группах 3, 4, 5) либо состоит из двух таких букв подряд, либо вообще их не содержит. Следовательно, Ln (γ) = Lp (γ). Теперь рассмотрим слабое кодирование (точнее проекцию) h, определяемую как h(a) = a для a ∈ T, h(¯ a) = λ для a ∈ T, h(s) = λ для s ∈ Q, h(E) = h(E 0 ) = h($) = h(C) = h(Z) = λ. Ясно, что L = h Ln (γ) , что и завершает доказательство. Приведенная выше конструкция имеет интересное следствие в классической теории формальных языков, а именно, можно усилить результат следствия 3.3. Следствие 4.9. Каждый рекурсивно перечислимый язык является проекцией пересечения двух минимальных линейных языков. Доказательство. Сохраняя обозначения из предыдущего доказательства, построим две минимальных линейных грамматики Gi = ({S}, V, S, Pi ), i = 1, 2, в которых 1. P1 = {S → sim c¯m sim sim . . . si2 c¯2 si1 si1 c¯1 si1 Sb1 CZb2 C . . . Zbk CZ | для b1 . . . bk = h1 (a), c1 . . . cm = h2 (a) для некоторых m > 1, a ∈ V1 , и δ(sij , cj ) = sij+1 , 0 6 j 6 m − 1, где b1 , . . . , bk , c1 , . . . , cm ∈ V2 } ∪ {S → E 0 sf SE | sf ∈ F } ∪ {S → s0 $Z ,
4.6. Дальнейшие результаты о регулярных системах
185
2. P2 = {S → ssSZ | s ∈ Q} ∪ {S → ¯bSbC | b ∈ V2 } ∪ {S → E 0 SE, S → $}. Легко видеть, что G1 порождает строки верхних нитей, построенных системой γ при использовании только пар из первой и второй группы плюс центральная подстрока s0 $Z, тогда как G2 порождает строки нижних нитей, построенных системой γ при использовании только пар из групп 3, 4 и 5 плюс центральная подстрока $. Взятие пересечения эквивалентно проверке отношения комплементарности ρ, поскольку это просто отношение равенства. Следовательно, L(G1 ) ∩ L(G2 ) = Ln (γ), что и завершает доказательство.
4.6
Дальнейшие результаты о регулярных системах
Регулярные склеивающие системы порождают только регулярные языки, и следовательно, из них нельзя получить семейство RE с использованием AFL-операций в качестве сжимающих механизмов. С другой стороны, именно простые варианты таких устройств особенно привлекательны и с математической, и с биохимической точек зрения. Например, использование пар домино, на которое существенным образом опиралось доказательство теоремы 4.11, не очень реалистично с практической точки зрения. К процессу ренатурации, происходящему в пробирке, ближе использование отдельных домино, в силу чего неоднократно выдвигалась и обсуждалась идея «самосборки» вычислений. Встает важный вопрос о модификации определения простых склеивающих систем или задаваемых ими языков таким образом, чтобы получить характеризации рекурсивно перечислимых языков с помощью таких склеивающих систем. Рассмотрим здесь два ограничения на язык, порожденный простой регулярной склеивающей системой. Поскольку мы работаем только с правостронними парами домино, мы можем забыть про их левый элемент, который все равно пуст. Кроме того, разделим все домино на «верхние» и «нижние». Тем самым мы представим простую регулярную
186
4. Системы со склейкой
склеивающую систему в виде γ = (V, ρ, A, Dl , Du ), где 1. V, ρ, A те же, что и ранее, а ∗ 2. Dl ⊆ Vλ∗ , Du ⊆ Vλ , причем множества Dl и Du конечны. Языки Lα (γ) определяются также, как и в предыдущих разделах для α ∈ {n, b, p}. Рассмотрим два помечивания элементов из Dl , Du элементами множества Lab, eπ : Dπ −→ Lab, π ∈ {l, u}. Для завершенного вычисления σ : x1 =⇒ x2 =⇒ . . . =⇒ xk в системе γ определим контрольные слова eπ (σ), π ∈ {l, u}, состоящие из меток использованных в σ элементов из Dl , Du , соответственно. Формально говоря, для π ∈ {l, u} обозначим 1 δ(π, x =⇒ y) = eπ ( w ), если на шаге x =⇒ y использовано w2 1 домино w w2 ∈ Dπ , δ(π, x =⇒ y) = λ в противном случае. Далее, eπ (σ) = δ(π, x1 =⇒ x2 )δ(π, x2 =⇒ x3 ) . . . δ(π, xk−1 =⇒ xk ),
π ∈ {l, u}.
Скажем, что завершенное вычисление σ : x1 =⇒∗ xk , x1 ∈ A является чистым, если |el (σ)| = |eu (σ)|, связным, если el (σ) = eu (σ). В чистом вычислении используется одинаковое количество верхних (из Du ) и нижних (из Dl ) блоков. В связном вычислении требуется, чтобы совпадали две последовательности из меток, ассоциированных с верхними и нижними использованными в вычислении блоками. Разумеется, каждое связное вычисление является чистым.
4.6. Дальнейшие результаты о регулярных системах
187
Обозначим через Lf (γ), Lc (γ) языки (состоящие из строк, расположенных в верхних нитях молекул из LMn (γ)), порожденные системой γ с применением только чистых вычислений или только связных вычислений, соответственно. Получившиеся семейства языков обозначим через SRSL(f ), SRSL(c). Когда кроме этого вычисления еще и примитивны, заменим в этих обозначениях f и c на pf , pc, соответственно. Условие связности снова приводит к представлению рекурсивно перечислимых языков. Теорема 4.12. Каждый рекурсивно перечислимый язык является слабым кодированием языка из семейства SRSL(c) или SRSL(pc). Доказательство. Рассмотрим язык L ∈ RE , L ⊆ T ∗ . По теореме 3.16 найдутся два алфавита V1 и V2 такие, что T ⊆ V2 , два λ-свободных морфизма h1 , h2 : V1∗ −→ V2∗ и такой регулярный ∗ язык R ⊆ V2 , что L = prT h1 EQ(h1 , h2 ) ∩ R . Допустим, что V1 = {b0 , b1 , . . . , bn−1 }, n > 1. Рассмотрим детерминированный конечный автомат M = (K, V2 , s0 , F, δ), распознающий язык R. Пусть в нем K = {s0 , s1 , . . . , sm−1 } для некоторого m > 1. Построим склеивающую систему γ = (V, ρ, A, Dl , Du ), в которой 1. V = V2 ∪ K ∪ {¯ s | s ∈ F } ∪ {[s, j] | s ∈ K, 0 6 j 6 m − 1}, 2. ρ = {(X, X) | X ∈ V2 } ∪ {(s, s), ([s, j], s), (s, [s, k]), ([s, j], [s, k]) | s ∈ K, 0 6 j, k 6 m − 1} ∪ {(¯ s, s¯) | s ∈ F }, h i 3. A = { ss00 sλ0 }, 4. Dl = { [sl ,j]a1 sl sl a2 sl slλ ...sl | a1 a2 . . . ati = sl at sl 0
1
1
2
2
ti −1
ti −1
i
ti
h2 (bi ), 0 6 i 6 n − 1, 0 6 j 6 m − 1, δ(slk , ak+1 ) = slk+1 , 0 6 lk 6 m − 1, 0 6 k < ti } ∪ { slλs¯l | sl ∈ F },
188
4. Системы со склейкой
a [s ,j]s a s s ...a s
s
5. Du = { 1 l1 l1 2 lλ2 l2 ti lti lti | a1 a2 . . . ati = h1 (bi ), 0 6 i 6 n − 1, 0 6 j 6 m − 1, δ(slk , ak+1 ) = slk+1 , 0 6 lk 6 m − 1, 1 6 k < ti } ∪ { s¯λl | sl ∈ F }. Для каждой тройки чисел 0 6 i 6 n − 1, 0 6 j, k 6 m − 1 обозначим через rl (i, j, k) элемент из Dl , ассоциированный с h2 (bi ), как показано выше, и имеющий в качестве первого символа нижней нити пару из состояния sj и числа k. Последова-
тельность sjλs¯j из Dl обозначим через rl (n, 0, j). Подобным же образом для каждой тройки чисел 0 6 i 6 n − 1, 0 6 j, k 6 m − 1 обозначим через ru (i, j, k) элемент из Du , ассоциированный с h1 (bi ) как показано выше, и имеющий в качестве первого символа нижней пару из состояния sj и числа k. нити Последовательность
λ sj s¯j
из Du обозначим через ru (n, 0, j).
Ясно, что card(Dl ) = card(Du ) = n·m2 +card(F ). Определим помечивания el : Dl −→ {1, 2, . . . , card(Dl )}, eu : Du −→ {1, 2, . . . , card(Du )} поэлементно rd (i, j, k) = i · m2 + j · m + k + 1, ru (i, j, k) = i · m2 + k · m + j + 1. Из приведенной выше конструкции легко увидеть, что u =⇒∗ z тогда и только тогда является завершенным вычислением в γ, u ∈ A, когда существует такая последовательность sl0 a1 sl1 a2 . . . slt−1 at slt , что, во-первых, sl0 = s0 , slt ∈ F , ak ∈ V2 , и δ(slk−1 , ak ) = slk , 1 6 k 6 t, во-вторых, есть такое слово x ∈ V ∗ , что h1 (x) = h2 (x) = a1 a2 . . . at . Теперь определим слабое кодирование h : WKρ (V ) → T ∗ как ( X, если X ∈ T, X h( )= X λ, в противном случае,
4.6. Дальнейшие результаты о регулярных системах
189
[s, j] s [s, j] h( ) = h( ) = h( )=λ [s, k] [s, k] s для s ∈ K, 0 6 j, k 6 m − 1. Проверим равенство h Lc (γ) = prT h1 EQ(h1 , h2 ) ∩ R . (⊆). Пусть w ∈ h Lc (γ) . Тогда найдется такой элемент z ∈ WKρ (V ), что w = h(z), и найдется вычисление в γ вида σ : x =⇒∗ z, x ∈ A, cd (σ) = cu (σ). После описания конструкции γ отмечено, что есть такая последовательность sl0 a1 sl1 a2 . . . slt−1 at slt , в которой sl0 = s0 , slt ∈ F , δ(slk−1 , ak ) = slk , 1 6 k 6 t. Следовательно, a1 a2 . . . at ∈ R. Из определения Dl и Du и того факта, что el (σ) = eu (σ), следует равенство a1 a2 . . . at = h1 (y) =h2 (y) для некоторого y ∈ V1∗ . Тогда a1 a2 . . . at ∈ h1 EQ(h1 , h2 ) ∩ R. Ну и поскольку w = h(z) = prT (a1 a2 . . . at ), получаем w ∈ prT h1 EQ(h1 , h2 ) ∩ R . (⊇). Пусть w ∈ prT h1 EQ(h1 , h2 ) ∩R . Тогда существуют такие x = bi1 bi2 . . . bis ∈ EQ(h1 , h2 ) и y = h1 (x) = h2 (x), что y ∈ R и w = prT (y). Пусть y = a1 a2 . . . at , ai ∈ V2 , 1 6 i 6 t. Кроме того, имеется такая последовательность sj1 , sj2 , . . . , sjt+1 состояний из K, что sj1 = s0 , sjt+1 ∈ F и δ(sjk , ak ) = sjk+1 , 1 6 k 6 t. Заметим, что h1 (x) = h1 (bi1 ) . . . h1 (bis ) = a1 a2 . . . at . Пусть h1 (bik ) = aqk . . . aqk+1 −1 , 1 6 k < s, и h1 (bis ) = aqs . . . at . Аналогично, пусть h2 (bik ) = apk . . . apk+1 −1 , 1 6 k < s, и h2 (bis ) = aps . . . at . Тогда найдется вычисление σ, использующее следующие блоки из Dl : rl (i1 , jp1 , jq1 +1 ), . . . , rl (is , jps , jqs +1 ), rl (n, 0, it ), и следующие блоки из Du : ru (i1 , jq1 +1 , jp1 ), . . . , ru (is , jqs +1 , jps ), ru (n, it , 0). Обозначим результат этого вычисления через z. По определению h получим w = h(z). Легко видеть, что el (σ) = eu (σ), следовательно, w ∈ h Lc (γ) .
190
4. Системы со склейкой
Завершенное вычисление в γ невозможно продолжить, поскольку в любой паре блоков из Dl и из Du первые символы не будут комплементарны в смысле отношения ρ. Следовательно, Lc (γ) = Lpc (γ), что и завершает доказательство. В случае чистых вычислений мы получим нерегулярные языки, но не получим характеризации рекурсивно перечислимых языков. Следующий результат мы получим, немного изменив конструкцию из доказательства теоремы 4.8. Следствие 4.10. Каждый регулярный язык является кодированием языка из семейства SRSL(f ). Доказательство. Для регулярной грамматики G = (N, T, S, P ) построим простую регулярную склеивающую систему γ = (V, ρ, A, Dl , Du ), в которой 1. V и ρ те же, что и в доказательстве теоремы 4.8, 2. Dl состоит из таких домино λy , что ( λλ , λy ) ∈ D, а 3. Du состоит из таких домино λy , что ( λλ , λy ) ∈ D, где D как в доказательстве теоремы 4.8, и кроме того h i λ 1 4. A = { [S,a] [X,b]2 | S → aX ∈ P , X → bY ∈ P , [S,a]1 X, Yh ∈ N , a, bi ∈ T} [S,a]1 [X,b]2 λ ∪ { [S,a]1 [X,b]2 [Y,c]1 | S → aX ∈ P , X → bY ∈ P , Y → h cZ ∈ i P , X, Y, Z ∈ N , a, b, c ∈ T } [S,a]1 ∪ { [S,a]1 | S → a ∈ P , a ∈ T } ∪ h i 1 [X,b]2 { [S,a] | S → aX ∈ P , X → b ∈ P , X ∈ N , a, b ∈ T } [S,a]1 [X,b]2 h i 1 [X,b]2 [Y,c]1 ∪ { [S,a] | S → aX ∈ P, X → bY ∈ P , Y → c ∈ P , [S,a]1 [X,b]2 [Y,c]1 X, Y ∈ N , a, b, c ∈ T }. Легко видеть, что у каждой строки из L(G) есть чистое вычисление в γ. Действительно, можно выбрать из A ту аксиому, которая гарантирует, что на последнем шаге будет использован элемент из Dl , тогда число блоков, присоединенных к обеим цепочкам, будет одинаковым. Затем с помощью
4.6. Дальнейшие результаты о регулярных системах
191
кодирования h, взятого из доказательства теоремы 4.8, полу чим L(G) = h Lf (γ) . С другой стороны, даже наложив условие чистоты, мы можем получать нерегулярные языки. Теорема 4.13. SRSL(f ) − REG 6= ∅. Доказательство. Рассмотрим склеивающую систему γ = ({a, b}, {(a, a), (b, b)}, A, Dl , Du ), hai a A={ }, a λ λ λ Dl = { , }, a bb aa b Du = { , }. λ λ Аксиома только одна. Если использовать домино λa , то получим не чистое завершенное вычисление. Его можно продолжить любым элементом из Dl и Du . В силу отношения комплементарности (под которым здесь понимается равенство), после каждого символа b возникает продолжение из доми появления λ b но bb и λ снова до появления прямого конца. Если пересечь язык Lf (γ) с регулярным языком a+ b+ , то получится язык, состоящий из всех строк вида a2n+2 bm , где n > 0, m > 1, построенных при вычислениях, в которых 1) 2) 3) 4)
первый элемент из Dl использовался 2n + 1 раз, второй элемент из Dl использовался m/2 раз, первый элемент из Du использовался n раз, второй элемент из Du использовался m раз.
Поскольку m/2 целое, запишем m = 2k, k > 1. Используя условие чистоты, получим 2n + 1 + k = n + 2k, что эквивалентно n = k − 1. Язык Lf (γ) ∩ a+ b+ = {a2k b2k | k > 1} не регулярен, следовательно и Lf (γ) тоже не регулярен. Теорема 4.14. SRSL(f ) ⊆ M AT λ .
192
4. Системы со склейкой
Доказательство. Рассмотрим склеивающую систему γ = (V, ρ, A, Dl , Du ). Определим 1. V 0 = {a0 | a ∈ V }, 2. L(A) =i {[a1 , b01 ] . . . [ak , b0k ]ak+1 . . . ak+r | k > 1, r > 0, h ak+1 ...ak+r a1 ...ak ∈ A, ai , bi ∈ V для всех i} b1 ...bk λ ∪ {[a1 , b01 ] . . . [ak , b0k ]b0k+1 . . . b0k+r | k > 1, r > 0, h i a1 ...ak λ b1 ...bk bk+1 ...bk+r ∈ A, ai , bi ∈ V для всех i}, λ 3. L(Dl ) = {b01 . . . b0k | k > 1, b1 ...b ∈ Dl , bi ∈ V , 1 6 i 6 k}, k k 4. L(Du ) = {a1 . . . ak | k > 1, a1 ...a ∈ Du , ai ∈ V , 1 6 i 6 k}. λ Введем новые символы s, d, d0 и построим языки L1 = {xd0 | x ∈ L(Dl )}+ , L2 = {xd | x ∈ L(Du )}+ , L01 = L1 ⊥ t c+ , L02 = L2 ⊥ t c+ , L3 = (L(A)L01 ⊥ t L02 ) ∩ {[a, b0 ] | a, b ∈ V }∗ (V V 0 ∪ {cd0 , dc})∗ . Ясно, что L1 , L2 — регулярные языки, следовательно, и L3 тоже регулярный, поскольку семейство REG замкнуто относительно операций перетасовки и пересечения языков. Рассмотрим ОПМ g, которая: 1) оставляет символы [a, b0 ] без изменений, a, b ∈ V , 2) заменяет каждую пару ab0 на [a, b0 ], a, b ∈ V, 3) заменяет каждую пару cd0 на [c, d0 ] и каждую пару dc на [d, c]. Язык g(L3 ) в алфавите U = {[a, b0 ] | a, b ∈ V } ∪ {[c, d0 ], [d, c]} тоже регулярен. Пусть G = (N, U, S, P ) — регулярная грамматика, задающая g(L3 ). Построим матричную грамматику G0 = (N 0 , V, S 0 , M ), в которой 1. N 0 = N ∪ U ∪ {S 0 },
4.7. Комментарии к библиографии
193
2. M = {(S 0 → S)} ∪ {(r) | r ∈ P } ∪ {([a, b0 ] → a) | a, b ∈ V } ∪ {([c, d0 ] → λ, [d, c] → λ)}. 0 ∗ Легко из видеть, h i что L(G ) состоит всех h таких i строк w ∈ V , x1 v1 x1 v1 что uu12 =⇒∗ ww0 в γ, uu12 ∈ A, причем x2 v2 x2 v2
этот вывод чистый, поскольку матрица ([c, d0 ] → λ, [d, c] → λ) проверяет, совпадают ли количества символов d и d0 . Следовательно, Lf (γ) ∈ M AT λ . Поскольку семейство M AT λ строго содержится в RE и замкнуто относительно произвольных ОПМ-отображений, невозможно получить характеризации RE на основе языков из семейства SRSL(f ) с использованием кодирований, морфизмов или ОПМ-отображений в качестве сжимающих механизмов. Проблема. Содержится ли семейство SRSL(f ) в CF (или в LIN )?
4.7
Комментарии к библиографии
Системы со склейкой были введены в [159], где изучались простые регулярные системы. Кроме того, в [159] рассмотрены примитивные, сбалансированные, связные и чистые вычисления. Из этой статьи взяты результаты раздела 4.6; в ней содержатся также результаты, сходные с теоремой 4.1, следствием 4.1 и теоремами 4.4 и 4.8, но несколько более слабые. Простые системы со склейкой, удлиняющие цепочки в обе стороны, введены в [97]. В той же статье введено понятие ограниченной задержки и получены равенства ASL(b) = LIN и OSL(b) = REG. Теорема 4.11 и следствие 4.9 также взяты из [97]. Общие системы со склейкой (использующие домино произвольной формы) исследовались в [256], где результаты, не упомянутые в предыдущем абзаце, появляются сразу в общности, принятой также в данной главе.
Глава 5 Автоматы Уотсона–Крика В этой главе исследуются автоматы, соответствующие склеивающим системам из предыдущей главы. Мы рассмотрим новую разновидность автоматов, работающих со сдвоенной лентой, на которой записываются двойные цепочки комплементарных символов, подобные молекулам ДНК (такая структура данных называется лентой Уотсона–Крика). Автомат читает каждую из двух дорожек ленты по отдельности, но в то же время координирует процесс чтения. Кроме того, он может иметь конечное число состояний для контроля за передвижениями головки и/или вспомогательную память в виде еще одной ленты Уотсона–Крика с доступом по типу очереди. Комбинируя эти возможности, мы получаем несколько типов автоматов. В большинстве случаев, дополняя эти автоматы такими сжимающими механизмами, как слабые кодирования и детерминированные последовательные преобразователи, мы приходим к характеризации рекурсивно перечислимых языков. Отметим существенное отличие рассматриваемых здесь автоматов от обычных, состоящее в структурах данных, с которыми они оперируют. Обычные автоматы работают с одномерными строками символов, а наши автоматы работают с двойными строками. Эти двойные строки подобны молекулам ДНК в следующем смысле. Парные буквы (подобно нуклеотидам) комплементарны, причем отношение комплементарности разбивает буквы основного алфавита на пары, подобно комплементарным по Уотсона–Крика парам (А, Т) и (Г, Ц) из алфавита ДНК. Наиболее важно предположение о том, что такие структуры данных — двойные строки, удовлетворяющие упомянутому условию комплементарности, — предоставляются нам «даром» в том смысле, что нам не нужно проверять,
5.1. Конечные автоматы Уотсона–Крика
195
что отвечающие друг другу буквы действительно комплементарны. В силу условия комплементарности такие автоматы называют автоматами Уотсона–Крика. Наиболее интересен основной вариант, при котором автомат читает каждую из двух дорожек ленты по отдельности, координируя процесс чтения. Однако мы исследуем и другие варианты, такие как преобразователи и автоматы со вспомогательной лентой. Автоматы Уотсона–Крика используют лишь один из двух существенных «вычислительных козырей» молекул ДНК, а именно, комплементарность Уотсона–Крика (что дает порождающую силу языка перетасованных копий), но не многочисленность молекул ДНК, вносящую в вычисления массированный параллелизм. Пока остаются открытыми как проблема моделирования этого второго аспекта, так и проблема построения модели молекулярных вычислений, учитывающей оба названных преимущества молекул ДНК.
5.1
Конечные автоматы Уотсона–Крика
Определим один из классов автоматов, анонсированных выше. Эти автоматы соответствуют обычным конечным автоматам (они используют состояния для контроля за переходами, как это принято в теории автоматов), но отличаются тем, что работают на лентах Уотсона–Крика, т. е., на элементах множества WKρ (V ) для некоторого алфавита V и отношения комплементарности на нем ρ ⊆ V × V . (Используются обозначения, введенные в предыдущей главе.) Конечный автомат Уотсона–Крика представляет собой конструкцию M = (V, ρ, K, s0 , F, δ), в которой V и K — непересекающиеся алфавиты, ρ ⊆V × V — V∗ симметричное отношение, s0 ∈ K, F ⊆ K, δ : K × V ∗ −→ P(K) — такое отображение, что δ(s, xy ) 6= ∅ лишь для конечного числа троек (s, x, y) ∈ K × V ∗ × V ∗ .
196
5. Автоматы Уотсона–Крика
Элементы множества K называются состояниями, V — (входной) алфавит, ρ — отношение комплементарности на V , s0 — начальное состояние, F — множество заключительных со 0 стояний, а δ — функция переходов. Выражение s ∈ δ(s, xx12 ) нужно понимать так: в состоянии s автомат прочитал x1 в верхней цепочке и x2 в нижней цепочке и перешел в состояние s0 . Как и в случае конечных автоматов, можно записывать переходы M как переписывающие правила вида x1 x1 s → s0 ; x2 x2 такое правило означает то же самое, что и запись x1 0 s ∈ δ(s, ). x2 Замечание 5.1. В отличие от случая конечных автоматов в описаниях автоматов Уотсона–Крика алфавит V и отношение комплементарности ρ пишутся перед множеством состояний K для того, чтобы подчеркнуть важность роли, играемой парой (V, ρ) в таких машинах. Основным отличием конечных автоматов Уотсона–Крика от традиционных конечных автоматов является работа с двойными цепочками Переходв автомате Уотсона–Крика так: ∗ можно h определить i w1 V x1 u 1 w 1 x1 u1 для таких x2 , u2 , w2 ∈ V ∗ , что x2 u2 w2 ∈ WKρ (V ) и s, s0 ∈ K, запишем x1 u1 w1 x1 u1 w1 s =⇒ s0 x2 u2 w2 x2 u2 w2 тогда и только тогда, когда s0 ∈ δ(s, uu12 ). Через =⇒∗ обозначим рефлексивное и транзитивное замыкание отношения =⇒. Как и в случае склеивающих систем, мы исследуем здесь язык строк, записанных в верхних цепочках лент Уотсона–
5.1. Конечные автоматы Уотсона–Крика
197
Крика, принимаемых данным автоматом, т. е. язык w1 ∗ ∗ w1 Lu (M ) = {w1 ∈ V | s0 =⇒ sf , для sf ∈ F, w2 w2 w1 ∗ и w2 ∈ V , ∈ WKρ (V )}. w2 Замечание 5.2. Конечно, можно рассмотреть и язык строк, записанных в нижних цепочках лент Уотсона–Крика, и язык молекул, но мы здесь такие языки не обсуждаем (они связаны с Lu (M ) отношением ρ; когда ρ инъективно, все три этих языка изоморфны). Другой важный пример языка, связанного с автоматом Уотсона–Крика, получается, если вместо принимаемых слов взять списки переходов. Для конечного автомата Уотсона–Крика M = (V, ρ, K, s0 , F, P ) (в котором переходы задаются переписывающими правилами) рассмотрим помечивание e : P −→ Lab правил из P элементами множества Lab. Через e(σ) обозначим последовательность меток правил, использованных при вычислении σ : s0 w =⇒∗ wsf , где w ∈ WKρ (V ), sf ∈ F . Тем самым получим язык Lctr (M ) = {e(σ) | σ : s0 w =⇒∗ wsf , w ∈ WKρ (V ), sf ∈ F }. Замечание 5.3. Контрольное слово e(σ), ассоциированное с вычислением σ на конечном автомате Уотсона–Крика, может оказаться особенно полезным в молекулярных вычислениях, где мы имеем дело со словами над заранее фиксированным алфавитом и, следовательно, должны кодировать символы б´ольших алфавитов, возникающих в тех задачах, которые мы должны решить. Вспомним, например, самый первый эксперимент по молекулярным вычислениям, разобранный в разделе 2.1. Свяжем с исходным графом автомат Уотсона– Крика, используя при определении переходов коды ребер на верхнем уровне и коды вершин на нижнем уровне. Пометим каждый переход именем соответствующей вершины или ребра. Тогда контрольное слово вычисления будет перетасовкой
198
5. Автоматы Уотсона–Крика
описания пути, ассоциированного с нашим вычислением, записанным одновременно как последовательность ребер и как последовательность вершин. С помощью слабого кодирования можно извлечь из контрольного слова описание нужного нам пути. Таким образом, в этом случае контрольное слово вычисления дает более ясную картину, чем принимаемая последовательность. В частности, можно, как в опыте Эдлмана, запускать автомат на недетерминировано выбранных последовательностях, а затем отбирать интересующие нас контрольные слова. Будем говорить, что языки Lα (M ), α ∈ {u, ctr} распознаются конечным автоматом Уотсона–Крика M . Отметим еще раз, что работа автоматов Уотсона–Крика определена только для элементов из WKρ (V ), т. е. для двойных строк элементов из V , попарно связанных отношением комплементарности ρ. Можно считать, что такая машина состоит из двойной ленты, на которой написаны элементы из WKρ (V ), конечной памяти, которая хранит номер состояния из некоторого конечного множества, и двух головок чтения, каждая из которых просматривает свой уровень ленты, одна — верхний, а другая — нижний. В начале работы каждая головка расположена напротив первого символа своего уровня, и машина находится в состоянии s0 . Две головки смещаются вправо, в соответствии с текущим состоянием машины и функцией перехода (правилами перехода). Шаг перехода состоит в перемещении обеих головок через блоки, определяемые конкретным правилом перехода. Остановка и принятие данной последовательности происходят, если обе головки достигают правого края последовательности, записанной на ленте, а машина приходит в заключительное состояние. Рис. 5.1 иллюстрирует это представление. Рассмотрим несколько видов автоматов Уотсона–Крика. Скажем, что M = (V, ρ, K, s0 , F, P ) является: автоматом без состояний, если K = F = {s0 }; всефинальным автоматом, если F = K;
5.1. Конечные автоматы Уотсона–Крика
199
?
s 6 Рис. 5.1. Конечный автомат Уотсона–Крика.
простым автоматом, если для всех s xx12 → xx12 s0 ∈ P выполняется либо x1 = λ, либо x2 = λ; 1-ограниченным автоматом, если для всех x1 x1 s → s0 ∈ P x2 x2 выполняется |x1 x2 | = 1. В автоматах без состояний можно опустить компоненты K, s0 , F , т. е. такой автомат можно записать в виде M = (V, ρ, P ). Правила перехода для таких автоматов можно записать x1 в виде x2 . Обозначим через AWK(α), N WK(α), F WK(α), SWK(α), 1WK(α), N SWK(α), N 1WK(α), F SWK(α), F 1WK(α), семейства языков вида Lα (M ), α ∈ {u, ctr}, распознаваемых конечными автоматами Уотсона–Крика с соответствующими дополнительным свойствами. Две последние буквы всех аббревиатур соответствуют первой и последней букве одинарной цепочки «W A T S O N C R I C K». Первые буквы аббревиатур означают, соответственно, (A) — произвольные автоматы, (N) — автоматы без состояний, (F) — всефинальные автоматы, (S) — простые автоматы, (1) — 1-ограниченные автоматы, (NS) — простые автоматы без состояний, (N1) — 1-ограниченные автоматы без состояний, (FS) — простые всефинальные автоматы, (F1) — 1-ограниченные всефинальные автоматы. Общий термин WK-семейства будет использоваться для ссылок на все эти семейства языков.
200
5.2
5. Автоматы Уотсона–Крика
Соотношения между WK-семействами
В этом разделе исследуются соотношения между семействами языков из предыдущего раздела, а также соотношения между ними и семействами языков из иерархии Хомского. Непосредственно из определений получаем: Лемма 5.1. XWK(α) ⊆ AWK(α), α ∈ {u, ctr}, X ∈ {N, F, S, 1, N S, N 1, F S, F 1}. Лемма 5.2. N WK(α) ⊆ F WK(α), N SWK(α) ⊆ F SWK(α), N 1WK(α) ⊆ F 1WK(α), α ∈ {u, ctr}. Лемма 5.3. XSWK(α) ⊆ SWK(α), X1WK(α) ⊆ 1WK(α), X1WK(α) ⊆ XSWK(α) ⊆ XWK(α), 1WK(α) ⊆ SWK(α), α ∈ {u, ctr}, X ∈ {N, F }. Кроме того, легко видеть, что выполняются следующие соотношения: Лемма 5.4. REG ⊆ 1WK(u). Лемма 5.5. AWK(α) ⊆ CS , α ∈ {u, ctr}. Лемма 5.6. Каждый язык из семейства XWK(u) является кодированием языка из семейства XWK(ctr), X ∈ {A, N, F, S, 1, N S, N 1, F S, F 1}. Использование состояний является сильным средством в том смысле, что произвольные правила перехода можно заменить на простые правила перехода без уменьшения порождающей силы. Следующую лемму можно считать одним из часто встречающихся в теории автоматов результатов о «нормальной форме». Лемма 5.7. AWK(u) ⊆ 1WK(u). Доказательство. Рассмотрим конечный автомат Уотсона– Крика без дополнительных ограничений M = (V, ρ, K, s0 , F, P ) и построим 1-ограниченный автомат Уотсона–Крика M 0 = (V, ρ, K 0 , s0 , F, P 0 ), следующим образом.
5.2. Соотношения между WK-семействами
201
Для каждого правила перехода a1 a2 . . . an a1 a2 . . . an t:s → s0 b1 b2 . . . b m b1 b2 . . . b m из P , n > 0, m > 0, n + m > 2, занесем в P 0 правила a a 1 1 s → st,1 , λ λ a a i+1 i+1 st,i → st,i+1 , 1 6 i 6 n − 1, λ λ λ λ st,n → s0t,1 , b1 b1 λ λ 0 st,i → s0t,i+1 , 1 6 i 6 m − 2, bi+1 bi+1 λ λ 0 st,m−1 → s0 . bm bm Кроме того, поместим все состояния st,i , s0t,i в K 0 в дополнение ко всем состояниям из K. Легко видеть, что получившийся автомат эквивалентен M и 1-ограничен, а новые состояния контролируют работу M 0 детерминированным образом. Следствие 5.1. 1WK(u) = SWK(u) = AWK(u). Приведенная выше конструкция изменяет язык Lctr (M ). Нам не известно, справедливо ли включение, аналогичное включению из леммы 5.7 и для семейств 1WK(ctr), SWK(ctr), AWK(ctr). Для удобства ссылок мы суммируем соотношения из предыдущих лемм для семейств XWK(ctr) в диаграмме на рис. 5.2. Стрелки на нем означают включения, возможно и нестрогие. Случай семейств XWK(u) отложим до установления дополнительных соотношений между ними. Замечание 5.4. Определенные выше устройства приводят к понятию двухголовочных конечных автоматов. Двухголовочный конечный автомат представляет собой конструкцию M = (K, V, s0 , F, δ), в которой K, V, s0 , F имеют обычный для конечного автомата смысл, δ — функция пере-
202
5. Автоматы Уотсона–Крика
CS 6
AW K(ctr) @ I @ @
SW K(ctr)
1W K(ctr) @ I @
F W K(ctr) @ I @ @
@ I @ @
F SW K(ctr) I @ @
@
N W K(ctr)
@
F 1W K(ctr) N SW K(ctr) @ I @ @
N 1W K(ctr) Рис. 5.2. Иерархия ctr-семейств.
хода, δ : K × (V ∪ {λ}) × (V ∪ {λ}) −→ P(K). Для w1 , w2 , x1 , x2 ∈ V ∗ , u1 , u2 ∈ V ∪ {λ} и s, s0 ∈ K пишем (w1 , w2 )s(u1 x1 , u2 x2 ) =⇒ (w1 u1 , w2 u2 )s0 (x1 , x2 ) тогда и только тогда, когда s0 ∈ δ(s, u1 , u2 ). Язык, распознаваемый M , определяется как L(M ) = {x ∈ V ∗ | s0 (x, x) =⇒∗ (x, x)sf , sf ∈ F }. Обозначим через T H семейство языков, распознаваемых такими автоматами. Интенсивно исследуются и некоторые другие разновидности двухголовочных (или более общо, многоголовочных) конечных автоматов: в частности, детерминированные, простые (одна головка читает ленту, а остальные различают на входной строке лишь маркеры конца), ощущающие (головки «ощущают», когда две из них располагаются напротив одной и той же ячейки ленты). Точные определения, результаты и дальнейшие ссылки можно найти в [77, 146, 151, 288].
5.2. Соотношения между WK-семействами
203
Очевидно, что двухголовочный конечный автомат есть частный случай 1-ограниченного конечного автомата Уотсона–Крика, когда в качестве отношения комплементарности берется отношение равенства: (a, b) ∈ ρ тогда и только тогда, когда a = b. С другой стороны, 1-ограниченный конечный автомат Уотсона–Крика можно смоделировать при помощи двухголовочного конечного автомата: первая головка разбирает входную строку, действуя как верхняя головка автомата Уотсона–Крика, а вторая разбирает ту же строку, действуя как нижняя головка автомата Уотсона–Крика, при этом предполагается, что проход верхней головки через символ a осуществляется только при условии, что нижняя в том же состоянии автомата проходит комплементарный ему символ b. Тем самым получаем следующее равенство: Лемма 5.8. T H = 1WK(u). Конечный автомат Уотсона–Крика можно рассматривать и как двухленточный двухголовочный конечный автомат специального типа, в котором ленты связаны отношением комплементарности. В случае молекулы ДНК такое отношение взаимно-однозначно, т. е. одна лента в точности определяет вторую. В случае простого автомата без состояний при разборе строки из WKρ (V ) достаточно проверить подпоследовательность длиной не более максимума длин строк w1 , w2 из правил переw1 хода w2 . Причина этого в том, что одна из строк w1 и w2 обязательно пустая, и поэтому можно действовать на том уровне, у которого читающая головка оказалась позади другой, тем самым ограничивая дистанцию между двумя головками (задержку). Отсюда вытекает Лемма 5.9. N SWK(u) ⊆ REG . Справедливо следующее усиление леммы 5.4. Лемма 5.10. REG ⊆ F 1WK(u). Доказательство. Рассмотрим конечный автомат M = (K, V, s0 , F, δ) и построим всефинальный 1-ограниченный конечный
204
5. Автоматы Уотсона–Крика
автомат Уотсона–Крика M 0 = (V, ρ, K 0 , s0 , K 0 , δ 0 ), в котором ρ = {(a, a)) | a ∈ V }, K 0 = K ∪ {sf }, (sf ∈ / K), a δ 0 (s, ) = δ(s, a) ∪ F (s, a), λ ( {sf }, если δ(s, a) ∩ F 6= ∅, где s ∈ K, a ∈ V , F (s, a) = ∅ в противном случае, λ δ 0 (sf , ) = {sf }, a ∈ V, a u δ 0 (s, )=∅ во всех других случаях. v Распознавание последовательности w происходит так. w Сначала слева направо читается первая строка точно также как и в M , за исключением последнего шага, на котором M переходит в заключительное состояние, а M 0 переходит в состояние sf . Затем читается вторая строка и последовательность либо принимается, либо отвергается. Следовательно, Lu (M 0 ) = L(M ). Теперь все соотношения между семействами XWK(u) можно собрать на одной диаграмме, показанной на рис. 5.3. Как обычно, стрелки означают не обязательно строгие включения. Семейства XWK(u) «малы» в том смысле, что языки этих семейств удовлетворяют очень сильным условиям. В следующих леммах приведены два таких необходимых условия. Лемма 5.11. (i) Если L ∈ N WK(α) для α ∈ {u, ctr}, то L = L+ . (ii) Если L ∈ N 1WK(u), то найдется такой алфавит V, что L = V + . Доказательство. (i) Рассмотрим конечный автомат Уотсона– Крика без состояний M = (V, ρ, P ). Если w1 , w2 ∈ WKρ (V ) можно разобрать с помощью правил из P , то и w1 w2 тоже
5.2. Соотношения между WK-семействами
205
CS 6
AW K(u) = SW K(u) = 1W K(u) 6
F W K(u) 3 k Q Q Q Q
F SW K(u)
N W K(u)
@ I @ @
6
F 1W K(u) @ I @ @
REG @ I @
N SW K(u) 6
N 1W K(u) Рис. 5.3. Иерархия u-семейств.
можно разобрать с помощью тех же правил. Следовательно, Lα (M )+ ⊆ Lα (M ), α ∈ {u, ctr}. Противоположное включение, Lα (M ) ⊆ Lα (M )+ , очевидно. (ii) Очевидно, поскольку каждая строка распознается 1ограниченным автоматом Уотсона–Крика без состояний. Ниже (лемма 5.14) будет видно, что утверждение (ii) не верно для ctr-случая. Следствие 5.2. REG − XWK(α) 6= ∅, α ∈ {u, ctr}, X ∈ {N, N S}. Следствие 5.3. F 1WK(u) − N WK(u) 6= ∅. Доказательство. По лемме 5.10 язык ab∗ лежит в F 1WK(u). Но этот язык не обладает свойством из пункта (i) леммы 5.11, значит, ab∗ ∈ / N WK(u). Следствие 5.4. Включение N WK(u) ⊂ F WK(u) и включение N SWK(u) ⊂ F 1WK(u) являются строгими.
206
5. Автоматы Уотсона–Крика
Лемма 5.12. Каждый язык из AWK(u) над однобуквенным алфавитом регулярен. Доказательство. Рассмотрим конечный автомат Уотсона– Крика без дополнительныхограничений M = (V, ρ, K, s0 , F, δ). ai 0 Если есть переход s ∈ δ(s, w ), в котором слово w содержит букву b и (a, b) ∈ / ρ, то этот переход можно не использовать при выработке строк из Lu (M ). Таким образом, обо всех таких переходах можно забыть и считать, что все вышеупомянутые буквы b обладают свойством (a, b) ∈ ρ. Построим линейную грамматику G = (K, {a, b}, s0 , P ), в которой i a i 0 j 0 0 P = s → a s b | s ∈ δ(s, ), s, s ∈ K, i > 0, j = |w| w i a i j ∪ s → a b | δ(s, ) ∩ F 6= ∅, s ∈ K, i > 0, j = |w| . w Кроме того, рассмотрим линейный язык L = {an bn | n > 1}. По следствию 5.3.1 из [115], L(G) ∩ L — линейный язык. L(G) ∩ L = an bm | (n, m) ∈ Ψ{a,b} L(G) ∩ {(p, p) | p ∈ N} . Из того, что пересечение двух полулинейных множеств является полулинейным, следует полулинейность множества Ψ{a,b} L(G) ∩ L . А это, вместе с вышеупомянутым результатом из [115], влечет линейность языка L(G) ∩ L.) Определив слабое кодирование h как h(a) = a, h(b) = λ, получим равенство Lu (M ) = h L(G) ∩ L , из которого следует, что Lu (M ) регулярен. Следствие 5.5. Включение AWK(u) ⊂ CS строгое. Однако обсуждавшиеся выше семейства (за исключением N SWK(u)) содержат языки очень большой сложности. В следующем разделе будет показано, что на их основе с использованием AFL-операций (слабого кодирования и детерминированных ОПМ) можно получить характеризацию рекурсивно перечислимых языков. Завершает текущий раздел результат,
5.2. Соотношения между WK-семействами
207
прямо доказывающий, что конечные автоматы Уотсона–Крика без состояний способны распознавать сложные языки. Конечно, причиной этого является использование двойных цепочек. Лемма 5.13. N WK(u) − M AT λ 6= ∅. Доказательство. Рассмотрим конечный автомат Уотсона– Крика без состояний M = ({a, b, c, d, e, f }, ρ, P ), в котором ρ = {(a, a), (b, c), (c, b), (a, d), (d, a), (e, f ), (f, e)} , c d a b b e e λ P = , , , , , , , . λ λ a b c c d f Кроме того, рассмотрим регулярный язык, описываемый следующим регулярным выражением: R = c(dd+ b)(aa+ b)+ a+ e+ , и слабое кодирование h, определяемое равенствами h(a) = a, h(b) = h(c) = h(d) = h(e) = λ. Распознаваемые M молекулы, у которых в верхней нити располагается строка из R, должны иметь вид n1 n2 cd ba b . . . banm−1 banm enm+1 , b x1 c x2 c . . . c xm−1 c xm f nm+1 где m > 3, ni > 2, 1 6 i 6 m, nm+1 > 1. Вдобавок из-за комплементарности выполняется x1 = an1 , xi ∈ {a, d}∗ , |xi | = ni для 2 6 i 6 m. По виду множества P каждое появление b в верхней цепочке сочетается с появлением в нижней либо b, либо c, на что указывают индексы у символов b, c в следующей записи n1 n2 c0 d b1 a b2 . . . bm−2 anm−1 bm−1 anm em enm+1 −1 . b1 x1 c2 x2 c3 . . . cm−1 xm−1 cm xm f f nm+1 −1 Последнее вхождение c в нижнюю цепочку находится в паре с первым вхождением e в верхнюю. Теперь, с учетом точного распределения по парам, и поa скольку символы a появляются лишь парами a из P , а символы d в нижней строке появляются лишь из пар de , получаем,
208
5. Автоматы Уотсона–Крика
что xi ∈ a+ , xm = d
nm+1 −1
|xi | = ni+1 ,
2 6 i 6 m − 1, , 1 6 i 6 m − 1.
Из |xi | = ni и |xi | = ni+1 получим ni = ni+1 , 1 6 i 6 m − 1. Значит, распознанная молекула имеет вид n n cd ba b . . . ban ban en+1 , ban can c . . . can cdn f n+1 где не менее двух блоков ban и n > 2. Следовательно, h Lu (M ) ∩ R = {anm | n, m > 2} = {ap | p — составное число}. Этот язык не полулинеен, а значит, не регулярен. Каждый язык из M AT λ над однобуквенным алфавитом регулярен [129]. Семейство M AT λ замкнуто относительно пересечений с регулярными языками и произвольных морфизмов. Следовательно, Lu (M ) ∈ / M AT λ . Следствие 5.6. Включение N SWK(u) ⊂ N WK(u) строгое.
5.3
Характеризации рекурсивно перечислимых языков
Теперь приведем ряд результатов о представлении рекурсивно перечислимых языков с помощью языков, распознаваемых конечными автоматами Уотсона–Крика различных типов. Мы характеризуем RE, поскольку RE замкнуто относительно применяемых операций. Доказательство следующей леммы, хотя и просто технически, существенно опирается на свойства лент Уотсона–Крика и на взаимосвязь с языками перетасованных копий. Лемма 5.14. Для каждого алфавита V выполняется T SV ∈ N 1WK(ctr).
5.3. Характеризации RE языков
209
Доказательство. Рассмотрим 1-ограниченный конечный автомат Уотсона–Крика M = (V, ρ, P ), в котором ρ = {(a, a) | λ a a ∈ V }, P = { λ , a | a ∈ V }, и помечивание e( λa ) = a, e( λa ) = a ¯, a ∈ V . x Если x ∈ WKρ (V ) и σ : s0 xx =⇒∗ xx s0 есть некоторое вычисление в M (состояние s0 выписано только для того, чтобы показать, что вычисление нетривиально), то e(σ) ∈ x ⊥ tx ¯, поэтому e(σ) ∈ T SV . Поскольку в качестве x можно взять любую строку из V ∗ , и каждый элемент x ⊥ tx ¯ описывает корректное вычисление в M , получаем равенство Lctr (M ) = T SV . Теорема 5.1. Каждый язык в семействе RE является образом детерминированного ОПМ отображения некоторого языка любого из семейств XWK(ctr), X ∈ {A, N, F, S, 1, N S, N 1, F S, F 1}. Доказательство. Это непосредственное следствие предыдущей леммы и теоремы 3.17. Лемма 5.15. SRSL(c) ⊆ F WK(u). Доказательство. Рассмотрим простую регулярную склеивающую систему γ = (V, ρ, A, Dl , Du ), в которой элементы из Dl , Du помечены функцией e : Dl ∪ Du −→ Lab. Построим всефинальный конечный автомат Уотсона–Крика M = (V, ρ, {s0 , s1 }, s0 , {s0 , s1 }, P ) , с правилами перехода h i h i v1 u1 1. s0 uu12 vv12 → uu12 vv22 s1 для uu12 ∈ A, v2 u2 ∈ WKρ (V ), ∗ v1 V ∪ Vλ∗ , v2 ∈ λ 2. s1 xy → xy s1 для таких λy ∈ Dl и λx ∈ Du , что e( λy ) = e( λx ). Соответствующее корректное вычисление в γ можно смоделировать с помощью корректного вычисления в M и обратно, последовательность, распознаваемая автоматом M также строится и при корректном (соответствующем) вычисле-
210
5. Автоматы Уотсона–Крика
нии в γ. Действительно, начало процесса вывода с аксиомы гарантируется списком правил, содержащих начальное состояние s0 , а соответствие вычислений обеспечивается правилами перехода, которые определяются только такими парами xy , что λx ∈ Du и λy ∈ Dl , и эти два блока одинаково помечены. Следовательно, Lc (γ) = Lu (M ). Теорема 5.2. Каждый рекурсивно перечислимый язык является слабым кодированием языка из семейства XWK(u), X ∈ {A, F, S, 1}. Доказательство. Данное утверждение следует из леммы 5.15, включения F WK(u) ⊆ XWK(u), X ∈ {A, S, 1} (см. рис. 5.3), и теоремы 4.12. Лемма 5.16. Если h1 , h2 : V1∗ −→ V2∗ — два морфизма, то h1 EQ(h1 , h2 ) ∈ N WK(u). Доказательство. Для данных h1 , h2 построим конечный автомат Уотсона–Крика без состояний M = (V2 , ρ, P ), в котором h1 (b) ρ = {(a, a) | a ∈ V2 } , P = | b ∈ V1 . h2 (b) h i 1 Последовательность w w2 ∈ WKρ (V2 ) успешно воспринимается автоматом M тогда и только тогда, когда w1 = w2 (благодаря отношению ρ) и w1 = h1 (x), w2 = h2 (x), для некоторого x ∈ V1∗ (благодаря виду правил из P ). Следовательно, x ∈ EQ(h1 , h2 ) и w1 ∈ h1 EQ(h1 , h2 ) , из чего следует, что Lu (M ) = h1 EQ(h1 , h2 ) . Теорема 5.3. Каждый язык L ∈ RE может быть представлен в виде L = h(L0 ∩ R), где L0 ∈ N WK(u), R ∈ REG, и h — некоторая проекция. Доказательство. Это непосредственное следствие предыдущей леммы и теоремы 3.16. Можно преобразовать теорему 5.3 в следующий возможно более интересный результат: каждый рекурсивно перечисли-
5.3. Характеризации RE языков
211
мый язык является проекцией некоторого языка Lu (M ), где M — некоторый конечный автомат Уотсона–Крика. Теорема 5.4. Каждый язык L ∈ RE может быть представлен в виде L = h(L0 ), где L0 ∈ AWK(u) и h — некоторая проекция. Доказательство. из теоремы 3.16, Используя представление запишем L = h h1 EQ(h1 , h2 ) ∩R0 , где h — проекция, h1 , h2 : V1∗ −→ V2∗ — λ-свободные морфизмы, и R0 ⊆ V2∗ — регулярный язык. Пусть M0 = (K, V2 , s0 , F, δ) — такой детерминированный конечный автомат, что R0 = L(M0 ). Достаточно сконструировать конечный автомат Уотсона–Крика M со свойством Lu (M ) = h1 EQ(h1 , h2 ) ∩ R0 . В самом деле, определим конечный автомат Уотсона–Крика M = (V2 , ρ, K, s0 , F, δ 0 ), в котором 1. ρ = {(a, a) | a ∈ V2 }, 2. δ 0 (s, hh12 (a) ) = {s0 } при условии s, s0 ∈ K, a ∈ V1 , и (a) ∗ 0 s, h1 (a) ` (s , λ), 3. δ 0 (s, uv ) = ∅ в противном случае. (Символ `∗ обозначает переход в автомате M0 в смысле, описанном в главе 3.) Теперь, как и в лемме 5.16, видно, что автомат M обладает требуемым свойством. Хотя кажется, что результат, подобный лемме 5.16, не верен для семейства F SWK(u), результат, подобный теореме 5.3, остается верным и для этого семейства. Теорема 5.5. Каждый язык L ∈ RE может быть представлен в виде L = h(L0 ∩ R), где L0 ∈ F SWK(u), R ∈ REG, и h — некоторая проекция. Доказательство. Используя теорему 3.16, можно представить L как L = h h1 EQ(h1 , h2 ) ∩ R0 , где h — проекция, h1 , h2 — λ-свободные морфизмы, и R0 — регулярный язык. Для h1 , h2 : V1∗ −→ V2∗ , построим простой всефинальный автомат Уотсона– Крика M = (V, ρ, K, s0 , K, δ), в котором
212
5. Автоматы Уотсона–Крика
1. V = V2 ∪ {c}, 2. ρ = {(a, a) | a ∈ V2 } ∪ {(c, c)}, 3. K = {s0 , s1 } ∪ {sa | a ∈ V1 }, 4. δ(s0 , h1λ(a) ) = {sa }, 5. δ(sa , h2λ(a) ) = {s0 }, a ∈ V1 , 6. δ(s0 , λc ) = {s1 }, 7. δ(s1 , λc ) = {s1 } и 8. δ(s, uv ) = ∅ во всех других случаях. Очевидно, что для регулярного языка R1 = V2∗ {c} выполняется равенство Lu (M ) ∩ R1 = h1 EQ(h1 , h2 ) {c}. (Сначала чередование состояний s0 , sa , а затем, после первого появления состояния s1 , его сохранение гарантирует то, что принимаемая h i h1 (x)c автоматом молекула имеет вид h2 (x)c для некоторого x ∈ V1∗ .) Рассматривая R = R0 {c} и дополняя проекцию h равенством h(c) = λ, получаем L = h(Lu (M ) ∩ R). Разумеется, проектирование h и пересечение с регулярным языком R в теоремах 5.3 и 5.5 можно сделать с помощью детерминированной ОПМ, поэтому результат, подобный теореме 5.1, остается верен и для семейств N WK(u) и F SWK(u). Следовательно, можно сказать, что по модулю детерминированной ОПМ, а в некоторых случаях и только по модулю слабого кодирования, все семейства XWK(α), X ∈ {A, N, S, 1, F, F S}, совпадают с RE , а значит, и между собой. Это приводит к следующей оценке размеров этих семейств. Следствие 5.7. Для каждого такого семейства языков FL, что F L ⊂ RE и FL замкнуто относительно пересечения с регулярными языками и произвольных морфизмов, выполняется XWK(u) − F L 6= ∅, X ∈ {A, S, F, 1, N, F S}. Среди важных семейств языков F L, удовлетворяющих посылке утверждения следствия 5.7, оказываются семейства M AT λ и ET 0L.
5.4. Конечные преобразователи Уотсона–Крика
213
Отметим, что в предыдущих результатах заключительные состояния роли не играли, так как они нисколько не увеличивают порождающую силу конечных автоматов Уотсона–Крика по модулю детерминированной ОПМ или в некоторых случаях по модулю слабого кодирования. Кроме того, отметим, что простых конечных автоматов Уотсона–Крика (всего лишь с тремя состояниями) достаточно для характеризации RE по модулю слабого кодирования. Автоматы без состояний, использующие переходные пары uv без дополнительных ограничений, наложенных на строки u, v, также очень сильны. Эти наблюдения вновь иллюстрируют мощь комплементарности Уотсона–Крика и они еще подтвердятся ниже при рассмотрении других устройств. Стоит также упомянуть, что в большинстве приведенных выше конструкций (имеются в виду доказательства теоремы 5.5 и лемм 5.14 и 5.16) в качестве отношения комплементарности бралось отношение равенства, т. е. (a, b) ∈ ρ означало a = b. Это не относится к доказательству теоремы 4.12, а значит, и к теореме 5.2. Как уже неоднократно отмечалось, в молекуле ДНК отношение комплементарности взаимно однозначно. Поэтому если мы пытаемся следовать «реалиям ДНК», то мы должны считать основное отношение комплементарности для наших моделей симметричным и взаимно однозначным. Из-за этого могут возникнуть некоторые проблемы, поскольку в доказательстве теоремы 4.12 уже было использовано отношение, не являющееся даже инъектив ным: (s, s) ∈ ρ и в то же время s, [s, k] ∈ ρ.
5.4
Конечные преобразователи Уотсона–Крика
Выходную последовательность можно связать с конечным автоматом Уотсона–Крика тем же способом, каким такая последовательность связывается с конечным автоматом в виде ОПМ. Выходная последовательность записывается на обычной ленте, в отличие от входной, записанной на двойной ленте Уотсона–Крика (иная возможность будет рассмотрена в разделе 5.6). Рис. 5.4 иллюстрирует эту идею.
214
5. Автоматы Уотсона–Крика ?
s 6 ? Рис. 5.4. Преобразователь Уотсона–Крика.
ОПМ Уотсона–Крика — это конструкция g = (VI , ρI , VO , K, s0 , F, δ), в которой 1. VI — входной алфавит, 2. ρI ⊆ VI × VI — симметричное отношение (комплементарности), 3. VO — выходной алфавит, 4. K — множество состояний, 5. s0 ∈ K — начальное состояние, 6. F ⊆ K —множество заключительных состояний и ∗
7. δ : K × VVI∗ −→ Pf (VO∗ × K) — такое отображение, что I δ(s, uv ) 6= ∅ лишь для конечного числа троек (s, u, v) ∈ K × VI∗ × VI∗ . Соотношение (x, s0 ) ∈ δ(s, uv ) интерпретируется так: находясь в состоянии s, преобразователь прочитывает u на верхней дорожке и v на нижней дорожке сдвоенной ленты, пишет на выходной ленте x, и переходит в состояние s0 . Более формально, для w1 , w2 , w10 , w20 ∈ VI∗ , x, z ∈ VO∗ , и 0 s, s ∈ K, пишем 0 w1 0 w1 zs =⇒ zxs w2 w20
5.4. Конечные преобразователи Уотсона–Крика
215
0 0 0 тогда и только тогда, когда w1 = x1 w1 , w2 = x2 w2 , для (x, s ) ∈ δ(s, xx12 ), x1 , x2 , w10 , w20 ∈ VI∗ . Для последовательности w = h i w1 w2 ∈ WKρI (VI ) определим w1 λ ∗ ∗ g(w) = z ∈ VO | s0 =⇒ zsf , sf ∈ F . w2 λ
Распространение этого определения на языки из WKρI (VI ) производится как обычно. Как и для конечных автоматов Уотсона–Крика, рассмотрим ОПМ Уотсона–Крика без состояний, простые, 1-ограниченные, всефинальные ОПМ Уотсона–Крика и четыре их попарные комбинации. Следующий результат получается из леммы 5.14 из-за того, что помечивание переходов в конечном автомате Уотсона– Крика без состояний можно выразить через выходную функцию ОПМ Уотсона–Крика. Следствие 5.8. Для каждого алфавита V существует такая 1-ограниченная ОПМ Уотсона–Крика без состояний, что выполняется равенство T SV = gV WKρ (V ) для ρ = {(a, a) | a ∈ V }. Это влечет результат, подобный теореме язык 5.1: каждый L ∈ RE можно представить в виде L = g gV WKρ (V ) , где g — обычная детерминированная ОПМ, а gV — 1-ограниченная ОПМ Уотсона–Крика без состояний. И пересечение с регулярным языком, и морфизм реализуются посредством ОПМ Уотсона–Крика, следовательно, по теореме 5.5 получаем: Теорема 5.6. Для каждого языка L ∈ RE , L ⊆ V ∗ , существует такая простая всефинальная ОПМ Уотсона–Крика, что L = gL WKρ (V 0 ) для некоторой области Уотсона–Крика WKρ (V 0 ). Следовательно, конечные преобразователи Уотсона–Крика не только не сохраняют на месте семейства из иерархии Хом-
216
5. Автоматы Уотсона–Крика
ского, но даже отображают (очень простые) регулярные языки так, что их образы покрывают все семейство RE . Аналогично тому, что каждый двухголовочный конечный автомат можно считать вариантом конечного автомата Уотсона–Крика, двухголовочный конечный преобразователь можно рассматривать как частный случай ОПМ Уотсона– Крика.
5.5
Дальнейшие варианты конечных автоматов Уотсона–Крика
Среди конечных автоматов Уотсона–Крика, рассмотренных в разделе 5.1, наиболее близко связанными с процессами в структурах ДНК являются автоматы без состояний, которые при работе используют лишь комплементарность Уотсона–Крика и не обладают никакими другими возможностями в духе теории автоматов. Эти автоматы заслуживают дополнительного изучения. Из леммы 5.11 и равенства h(w1 w2 ) = h(w1 )h(w2 ), где h — морфизм, следует, что невозможно представить каждый регулярный язык как образ при морфизме языка из N WK(α), α ∈ {u, ctr}. Следовательно, с одной стороны, на этой основе нельзя получить даже представления всех регулярных языков, с другой стороны, результаты теорем 5.1 и 5.5 нельзя улучшить, заменив детерминированные ОПМ отображения на морфизмы или отказавшись от использования пересечения с регулярными языками. «Слабым местом» конечных автоматов Уотсона–Крика без состояний является неспособность контролировать первый шаг вычисления. Это наводит на мысль о следующем определении. Инициальный конечный автомат Уотсона–Крика без состояний — это четверка M = (V, ρ, P0 , P ), в которой V — алфавит, ρ ⊆ V ×V — симметричное ∗ отношение, P0 и P — конечные подмножества множества VV ∗ .
5.5. Варианты автоматов Уотсона–Крика
h
217
i
1 Двойная цепочка w ∈ WKρ (V ) распознается автомаw2 том M тогда и только тогда, когда
w1 = x0 x1 . . . xn ,
w2 = y0 y1 . . . yn ,
n > 0,
где
x0 y0
∈ P0 ,
xi yi
∈ P,
1 6 i 6 n.
h i 1 Иначе говоря, в начале разбора строки w w2 следует использовать элемент из P0 , а затем элементы из P0 лишь в том случае, когда P0 ∩ P 6= ∅. Как обычно, обозначим через Lα (M ), α ∈ {u, crt} языки, ассоциированные с корректными вычислениями в M . Через IN WK(α), IN SWK(α) обозначим семейства языков, распознаваемых инициальными конечными автоматами Уотсона– Крика без состояний и простыми инициальными конечными автоматами Уотсона–Крика без состояний соответственно. Как и следовало ожидать, установив контроль за первым шагом процесса распознавания мы увеличили силу наших устройств. Тем не менее, легко видеть, что результат подобный лемме 5.9, по-прежнему верен: Лемма 5.17. IN SWK(u) ⊆ REG . С другой стороны, появился результат, не имевший аналога для неинициальных автоматов. Теорема 5.7. Каждый регулярный язык является кодированием некоторого языка из семейства IN SWK(u). Доказательство. Рассмотрим детерминированный конечный автомат M = (K, V, s0 , F, δ) и построим инициальный простой конечный автомат Уотсона–Крика без состояний M 0 = (U, ρ, P0 , P ), в котором 1. U = {[s, a, s0 ]i | s, s0 ∈ K, a ∈ V, 1 6 i 6 4}, 2. ρ = {([s, a, s0 ]i , [s, a, s0 ]i ) | s, s0 ∈ K, a ∈ V, 1 6 i 6 4},
218
5. Автоматы Уотсона–Крика
n
o [s0 ,a,s0 ]1 0 = δ(s , a), a ∈ V 3. P0 = | s 0 λ n o [s0 ,a,s0 ]3 0 = δ(s , a) ∈ F, a ∈ V , ∪ | s 0 λ n [s,a1 ,s0 ]2 [s0 ,a2 ,s00 ]1 4. P = | s0 = δ(s, a1 ), s00 = δ(s0 , a2 ), λ o n [s,a1 ,s0 ]2 [s0 ,a2 ,s00 ]3 s, s0 , s00 ∈ K, a1 , a2 ∈ V ∪ | s0 = δ(s, a1 ), λ o s00 = δ(s0 , a2 ), s, s0 ∈ K, s00 ∈ F, a1 , a2 ∈ V n o [s,a,s0 ]4 0 = δ(s, a) ∈ F, s ∈ K, a ∈ V ∪ | s n λ λ 0 00 0 ∪ 0 0 00 [s,a1 ,s ]1 [s ,a2 ,s ]2 | s = δ(s, a1 ), s = δ(s , a2 ), o n λ 0 s, s0 , s00 ∈ K, a1 , a2 ∈ V ∪ [s,a1 ,s0 ]1 [s0 ,a2 ,s00 ]4 | s = δ(s, a1 ), o s00 = δ(s0 , a2 ) ∈ F, s, s0 ∈ K, s00 ∈ F, a1 , a2 ∈ V n o λ 0 ∪ [s,a,s0 ]3 | s = δ(s, a) ∈ F, s ∈ K, a ∈ V . Каждое последовательности должно начи распознавание [s0 ,a,s1 ]1 наться с из P0 , за исключением распознавания поλ 1 ]3 следовательности длины один, которое начинается с [s0 ,a,s λ λ из P0 и немедленно заканчивается после применения [s0 ,a,s 1 ]3 из P . Нить x в каждом элементе из P вида λx начинается либо 0 с символа [s, a, s0 ]2 , либо с символа [s, a, s ]4 . Нить y в каждом элементе из P вида λy начинается либо с символа [s, a, s0 ]1 , либо с символа [s, a, s0 ]3 . Следовательно, после завершения разбора элемента из WKρ (U ) никакой лишний шаг уже невозможен из-за отсутствия допустимых комплементарных пар. Это означает, что успешно перерабатываются лишь последовательности w ∈ WKρ (U ), составленные из двух одинаковых цепочек вида [s0 , a1 , s1 ]1 [s1 , a2 , s2 ]2 [s2 , a3 , s3 ]1 [s3 , a4 , s4 ]2 . . . [sk−1 , ak , sk ]i [sk , ak+1 , sk+1 ]j , в которых i = 2, j = 3 при четном k и i = 1, j = 4 при нечетном k; причем s0 s1 . . . sk+1 является последовательностью со-
5.5. Варианты автоматов Уотсона–Крика
219
?
s0 6 Рис. 5.5. Реверсивный конечный автомат Уотсона–Крика.
стояний, соответствующей процессу распознавания строки a1 a2 . . . ak+1 из M . Пусть h — такое кодирование, которое отображает тройку 0 0 [s, a, s ]i в a. Тогда получим L(M ) = h Lu (M ) . Поскольку каждый обыкновенный конечный автомат Уотсона–Крика без состояний можно рассматривать как инициальный, считая P0 = P , получаем включение XWK(α) ⊆ IXWK(α), X ∈ {N, N S}, α ∈ {u, ctr}. Следовательно, характеризации семейства RE из теорем 5.1 и 5.3 остаются верными и для соответствующих семейств IXWK(α), α ∈ {u, ctr}. Как мы знаем из главы 1, две цепочки молекулы ДНК имеют противоположные 50 −30 -ориентации. Это наводит на мысль рассмотреть такой вариант конечного автомата Уотсона–Крика, который производит разбор двух дорожек ленты Уотсона– Крика в противоположных направлениях. Рис. 5.5 показывает начальную конфигурацию такого автомата. Более формально, реверсивный конечный автомат Уотсона–Крика — это конструкция M = (V, ρ, K, s0 , F, δ), компоненты которой определяются также как и у конечных автоматов Уотсона–Крика, а отношение выводимости =⇒ определяется следующим образом: для w1 , w2 , w10 , w20 , x, y ∈ V ∗ , s, s0 ∈ K, пишем 0 w1 xw1 w1 x 0 w10 s =⇒ s w2 y w20 w2 yw20
220
5. Автоматы Уотсона–Крика
тогда и только тогда, когда w1 xw10 ∈ WKρ (V ), w2 yw20
0
x s ∈ δ(s, ). y h i 1 При этом последовательность w w2 ∈ WKρ (V ) распознается автоматом M тогда и только тогда, когда λ λ w1 ∗ w1 sf , для sf ∈ F. s0 =⇒ w2 w2 λ λ Как и в разделе 5.1, с реверсивным конечным автоматом Уотсона–Крика M можно связать два языка Lα (M ), α ∈ {u, ctr}. Соответствующие XWK(α) семейства языков, ассоциированных с реверсивными конечными автоматами Уотсона–Крика, обозначим через XRWK(α), X ∈ {A, N, F, S, 1, N S, N 1, F S, F 1}. Ясно, что диаграмма, подобная той, что изображена на рис. 5.2, может быть составлена и для этих семейств. В простых автоматах без состояний существенным является не направление движения головок, а возможность покрытия поданной на вход двойной цепочки блоками верхней и нижней дорожек. Отсюда следует Лемма 5.18. N SWK(u) = N SRWK(u). Используя теперь лемму 5.9, получим Следствие 5.9. N SRWK(u) ⊆ REG. Для новой конструкции будет верен и аналог теоремы 5.1. Лемма 5.19. Для каждого алфавита V выполняется RT SV ∈ N 1RWK(ctr). Доказательство. Взяв 1-ограниченный автомат Уотсона–Крика M из доказательства леммы 5.14 и, проинтерпретировав его как реверсивный автомат, получим Lctr (M ) = RT SV . Теорема 5.8. Каждый рекурсивно перечислимый язык является образом при детерминированном ОПМ-отображении некоторого языка любого из семейств XRWK(ctr), X ∈ {A, N, F, S, 1, N S, N 1, F S, F 1}.
5.5. Варианты автоматов Уотсона–Крика
221
Мы не знаем, какие еще из результатов разделов 5.2 и 5.3 можно переформулировать для реверсивных конечных автоматов Уотсона–Крика. Во всяком случае, имеет место Теорема 5.9. N RWK(u) − CF 6= ∅. Доказательство. Рассмотрим реверсивный конечный автомат Уотсона–Крика без состояний M = ({a, b, c}, ρ, P ), в котором 1. ρ = {(a, a), (b, b), (c, c)}, n λ o a b c 2. P = , , c λ b , a и регулярный язык R = a+ b+ c+ . Нас интересует пересечение Lu (M ) ∩ R. По виду отноше ния ρ можно сказать, что лишь последовательности w w , в которых w = an bm cp , n, m, p > 1, могут быть входными для M , приводящими к строкам из Lu (M )∩R. Разбор такой последовательности происходит следующим образом. Сначала получаем n m p m p λ a b c an b c ∗ s0 =⇒ s0 n m p n m p−n a b c λ a b c cn an bm cp ∗ =⇒ s0 n , an bm cp−n c если p > n, или n m p p n−p m p λ a b c a a b c ∗ s0 =⇒ s0 , n m p n m p a b c λ a b c если n > p. (В процессе используется только одно состояние автомата s0 . Оно бесполезно в смысле контроля за работой M и лишь отмечает положения читающих головок на дорожках.) Дальнейшие шаги невозможны ни во втором случае, ни в первом при p > n. Если же p = n, то возможны такие продолжения n m n n m n a b c a b c λ ∗ s =⇒ s , 0 0 an bm cn an bm−n bn cn
222
5. Автоматы Уотсона–Крика
если m > n, или n m n n m m n−m a b c a b c c ∗ s0 n =⇒ s0 n m n a b c a bm cn n m m n−m a b c c =⇒∗ s0 , λ an bm cn если n > m. Дальнейшие шаги невозможны ни во втором случае, ни в первом при m > n. Если же m = n, то возможно такое продолжение n n n n n n a b c λ a b c λ ∗ s0 n n =⇒ s0 . an b c λ an bn cn Следовательно, Lu (M ) ∩ R = {an bn cn | n > 1}, а это не контекстно-свободный язык. Теорема 5.10. F 1RWK(u) − CF 6= ∅. Доказательство. Рассмотрим всефинальный 1-ограниченный реверсивный конечный автомат Уотсона–Крика M = ({a, b, c}, ρ, K, s0 , K, δ) , в котором 1. ρ = {(a, a), (b, b), (c, c)}, 2. K = {s0 , s1 , s2 , s3 }, 3. δ(s0 , λa ) = {s1 }, 4. δ(s1 , λc ) = δ(s0 , λb ) = δ(s2 , λb ) = {s0 }, 5. δ(s0 , λc ) = {s2 }, 6. δ(s0 , λa ) = δ(s3 , λa ) = {s3 }, 7. δ(s, uv ) = ∅ в других случаях. Для регулярного языка R = a+ b+ c+ получим Lu (M ) ∩ R = {an bn cn | n > 1}. n m p (При разборе цепочки w w , в которой w = a b c , состояния из K контролируют работу M точно так же, как пары uv ∈ P в доказательстве теоремы 5.9.)
5.6. Автоматы Уотсона–Крика с памятью
223
Следствие 5.10. Включения N SRWK(u) ⊂ F SRWK(u) и N SRWK(u) ⊂ N RWK(u) строгие. Естественными обобщениями конечных автоматов Уотсона–Крика, к которым ведет идея реверсивных автоматов, являются двунаправленные конечные автоматы Уотсона–Крика, где одна или обе читающих головки способны передвигаться по своим дорожкам ленты Уотсона–Крика в обоих направлениях. Мы не даем здесь формального определения таких устройств (в разделе 5.7 это будет сделано для случая, когда только одна нижняя головка способна двигаться в обоих направлениях). Тем не менее отметим, что поскольку двунаправленные автоматы являются обобщениями обыкновенных однонаправленных, все характеризации рекурсивно перечислимых языков из раздела 5.3 остаются верными и для соответствующих вариантов двусторонних автоматов Уотсона–Крика. Более того, остается верной и лемма 5.9, потому что в случае простого автомата без состояний действия на разных дорожках ленты не зависят друг от друга. В главе 3 было упомянуто, что двусторонние конечные автоматы характеризуют регулярные языки. Проверка корректности сочетаемости символов на цепочках в соответствии с отношением комплементарности может быть выполнена побуквенной перетасовкой, выполняемой ОПМ, значит, эта операция сохраняет регулярность. Если дополнить модель маркерами конца на входной ленте, то двусторонний конечный автомат Уотсона–Крика (с состояниями) сможет моделировать реверсивный конечный автомат Уотсона–Крика. Дальнейшее изучение этих вариантов конечных автоматов Уотсона–Крика здесь не проводится.
5.6
Автоматы Уотсона–Крика с памятью Уотсона–Крика
Обсуждавшиеся в разделе 5.4 конечные преобразователи Уотсона–Крика являются гибридными устройствами в том смысле,
224
5. Автоматы Уотсона–Крика
что они получают на входе ленту Уотсона–Крика, а на выходе выдают обычную ленту (в одну строку). Это наводит на мысль рассмотреть такое устройство, в котором бы и выходная лента тоже была бы лентой Уотсона–Крика. Префиксный автомат Уотсона–Крика — это конструкция M = (V1 , ρ1 , V2 , ρ2 , K, s0 , F, δ), в которой 1. V1 , V2 — алфавиты, 2. ρ1 ⊆ V1 × V1 , ρ2 ⊆ V2 × V2 — симметричные отношения на V1 и V2 , соответственно, 3. K — (конечное) множество состояний, 4. s0 ∈ K, F ⊆ K и ∗ ∗ 5. δ : K × VV1∗ −→ Pf ( VV2∗ × K), где δ(s, xx12 ) 6= ∅ лишь 1 2 для конечного числа троек (s, x1 , x2 ) ∈ K × V1∗ × V1∗ . Интерпретируются эти элементы следующим образом. 1. V1 и V2 — алфавиты первой и второй лент Уотсона–Крика соответственно. 2. ρ1 , ρ2 — отношения комплементарности на V1 , V2 . 3. K — множество состояний, в котором s0 — начальное состояние, а F — множество заключительных состояний. 4. δ — функция перехода. Значение записи ( yy12 , s0 ) ∈ δ(s, xx12 ) состоит в следующем: автомат в состоянии s читает строки x1 , x2 , записанные на верхней и нижней цепочках первой ленты, после чего он переходит в состояние s0 и пишет строки y1 , y2 на верхней и нижней цепочках второй ленты. В начале работы автомат находится в состоянии s0 , а четыре его головки располагаются напротив крайних левых концов четырех дорожек двух его лент. Работа завершается, если автомат оказывается в одном из заключительных состояний, и при этом четыре его головки располагаются напротив крайних правых концов четырех цепочек двух его лент. Рис. 5.6 иллюстрирует эту идею.
5.6. Автоматы Уотсона–Крика с памятью
225
?
s
6 ?
6 Рис. 5.6. Автомат Уотсона–Крика с памятью.
Можно интерпретировать и использовать такую машину и как распознающее устройство, и как преобразователь. При интерпретации автомата как распознавателя вторая лента используется как память для контроля за работой автомата. Это можно сделать двумя способами: 1) начать ленты и с каждым переходом с пустой второй y1 x ( y2 , s0 ) ∈ δ(s, x12 ) записывать строки y1 , y2 на ее дорожках в крайних слева пустых позициях, или 2) начатьhсо второй ленты, на которой записана последовательi w1 ность w2 ∈ WKρ2 (V2 ) и с каждым переходом ( yy12 , s0 ) ∈ δ(s, xx12 ) передвигать читающие головки на второй ленте через слова y1 , y2 соответственно. При первом способе использования памяти следует считать работу автомата корректной, если в результате на второй ленте h i 1 оказалась запись w ∈ WK ρ2 (V2 ), как и во втором способе. w2 Ясно, что при таком условии оба способа использования второй ленты в распознающем устройстве эквивалентны. Во второй интерпретации, т. е. при использовании автомата как преобразователя, следует считать входную последовательность принятой, если вторая лента оказалась пустой, а удаление символов с нее можно производить двумя способами: 1) столбик ab на второй ленте, в котором (a, b) ∈ ρ2 , удаляется сразу после появления;
226
5. Автоматы Уотсона–Крика
a
2) столбик b на второй ленте, в котором (a, b) ∈ ρ2 , удаляется после того, как обе головки окажутся справа от него. Таким образом, в первом случае возникает память, организованная как очередь (первым вошел — первым вышел), которая «тает» слева направо по мере укомплектования столбиков. Поэтому автоматы такого типа названы префиксными. Дадим формальное определение перехода, но лишь для того случая, когда в начале работы на первой ленте записан элемент WKρ1 (V1 ), а вторая лента пуста. При прочтении первой ленты на второй записывается элемент множества WKρ2 (V2 ), т. е. последовательность Уотсона–Крика. Таким образом, нам удастся описать обе интерпретации префиксных автоматов Уотсона– Крика: и распознаватели, и преобразователи. Для w1 , w2 , x1 , x2 ∈ V1∗ , z1 , z2 , y1 , y2 ∈ V2∗ , s, s0 ∈ Q, запишем x1 w1 z1 z1 y 1 0 w1 s / =⇒ s / x2 w2 z2 w2 z2 y 2 тогда и только тогда, когда y1 x1 0 ( , s ) ∈ δ(s, ). y2 x2 h i 1 Последовательность w w2 ∈ WKρ1 (V1 ) принимается автоматом h i M , если существует такой элемент zz12 ∈ WKρ2 (V2 ), что w1 λ λ z1 ∗ s0 / =⇒ sf / . w2 λ λ z2 Следовательно, вычисление (распознавание или трансляция) завершается корректно, если последовательность Уотсона– Крика на первой ленте прочитывается полностью и при этом на второй ленте создается новая последовательность Уотсона– Крика, иначе говоря, завершенная «молекула» в алфавите V2 с соответствующим отношением комплементарности. Замечание 5.5. Знак / в обозначениях выше разделяет две разные сдвоенные последовательности, записанные на разных лентах, а не две сцепленные сдвоенные последовательности. h ih i Подчеркнем существенное различие между записями xx12 yy12
5.6. Автоматы Уотсона–Крика с памятью
227
h
i h i h i и xx12 / yy12 ; первую запись можно переписать в виде xx12 yy12 , что будет некорректно во втором случае. При интерпретации префиксного автомата Уотсона–Крика M как преобразователя результатом переработки последоваh i w1 тельности w = w2 ∈ WKρ1 (V1 ) будет z1 M (w) = ∈ WKρ2 (V2 ) | z2 λ λ z1 w1 ∗ , s0 / =⇒ sf / w2 λ λ z2 для некоторого sf ∈ F . Особое значение здесь имеет тот факт, что последовательности Уотсона–Крика над V1 перерабатываются только в последовательности Уотсона–Крика над V2 ; если на выходе не получится элемент из WKρ2 (V2 ), то переработка неудачна. Мы не будем подробно исследовать префиксные автоматы Уотсона–Крика, используемые в качестве преобразователей. Тем не менее отметим тот очевидный факт, что обобщенные последовательные машины Уотсона–Крика из раздела 5.4 можно смоделировать с помощью префиксных преобразователей Уотсона–Крика следующим образом: пусть в качестве отношения комплементарности на V2 взято отношение равенства, пусть y1 0 y1 = y2 для каждого перехода ( y2 , s ) ∈ δ(s, xx12 ) и т. д. Таким образом, утверждение теоремы 5.6 остается верным и для (простых всефинальных) префиксных преобразователей Уотсона–Крика. Как и с конечным автоматом Уотсона–Крика, так и с префиксным автоматом Уотсона–Крика можно связать два языка: Lα (M ), α ∈ {u, ctr}. Например, h w i λ λ z1 ∗ Lu (M ) = w ∈ V1∗ | s0 / =⇒ s / f w0 λ λ z2 0 ∗ ∗ для таких w ∈ V1 , z1 , z2 ∈ V2 , sf ∈ F, что
228
5. Автоматы Уотсона–Крика
z1 ∈ WK (V ) . ρ2 2 w0 z2 Как и для конечных автоматов Уотсона–Крика, можно рассматривать префиксные автоматы Уотсона–Крика, являющиеся простыми, 1-ограниченными, всефинальными или не имеющие состояний, а также обладающие какой-либо парой из приведенных свойств. В случае простых автоматов в каждом переy1 0 ходе ( y2 , s ) ∈ δ(s, xx12 ) в обеих парах x1 , x2 и y1 , y2 имеется ровно по одному пустому слову, причем эти пустые слова не обязательно имеют одинаковые индексы. Подобным образом, в случае 1-ограниченных автоматов в обеих парах x1 , x2 и y1 , y2 имеется ровно по одному пустому слову, а не пустые состоят из одного символа. Можно рассмотреть и инициальные префиксные автоматы Уотсона–Крика без состояний, реверсивные или двусторонние автоматы, но здесь мы их не исследуем. Префиксные автоматы Уотсона–Крика без состояний можно представить в виде M = (V1 , ρ1 , V2 , ρ2 , P ), где ∗ ∗ V1 V2 P ⊆ . × ∗ V1 V2∗ Обычно правила ( xx12 , yy12 ) из P записываются в виде x1 y1 x1 / , где обозначают строки, читаемые на перx2 y2 x2 вой ленте, а yy12 обозначают строки, записываемые (или тоже читаемые) на второй ленте (оба действия выполняются за один такт работы автомата). Обозначим полученные таким путем семейства через XP WK(α) для X ∈ {A, N, F, S, 1, N S, N 1, F S, F 1} и α ∈ {u, ctr}. Конечный автомат Уотсона–Крика можно смоделировать с помощью идентичного ему префиксного автомата Уотсона– Крика с двумя лентами так, что переходы будут происходить на этих автоматах одинаково (это значит, что никакого дополнительного контроля за выводом вторая лента не даст). Из этого следует hwi
∈ WKρ1 (V1 ),
5.6. Автоматы Уотсона–Крика с памятью
229
Лемма 5.20. XWK(α) ⊆ XP WK(α) для всех X и α, перечисленных выше. Это значит, что все представления семейства RE , полученные для конечных автоматов Уотсона–Крика, остаются верны и для префиксных автоматов Уотсона–Крика. Кроме того, верны и соотношения между семействами XP WK(ctr), соответствующие диаграмме, изображенной на рис. 5.2. Применение второй ленты увеличивает выразительную силу автоматов Уотсона–Крика, а значит, и префиксных автоматов по сравнению с конечными. Лемма 5.21. Если h1 , h2 : V ∗ −→ U ∗ — два морфизма, то h1 EQ(h1 , h2 ) ∈ N SP WK(u). Доказательство. Для данных морфизмов h1 , h2 построим простой префиксный автомат Уотсона–Крика без состояний M = (V1 , ρ1 , V2 , ρ2 , P ), в котором V1 = U , ρ1 = {(a, a) | a ∈ U }, V2 = V , ρ2 = {(a, a) | a ∈ V }, n o λ λ h1 (a) a , / | a ∈ V . 5. P = / λ h2 (a) a λ 1. 2. 3. 4.
Легко видеть, что
w1 λ z1 ∗ λ / =⇒ / , w2 λ λ z2
если и только если w1 = w2 ∈ U ∗ , z1 = z2 ∈ V ∗ , w1 = h1 (z1 ) и w2 = h2 (z1 ). Следовательно, Lu (M ) = h1 EQ(h1 , h2 ) . Следствие 5.11. Если h1 , h2 : V ∗ −→ U ∗ — два морфизма, то EQ(h1 , h2 ) ∈ N SP WK(u). Доказательство. В доказательстве леммы 5.21 на обеих частях второй ленты оказалась запись EQ(h1 , h2 ). Меняя ленты местами, получим такой префиксный автомат Уотсона–Крика M 0 , что Lu (M 0 ) = EQ(h1 , h2 ).
230
5. Автоматы Уотсона–Крика
Теорема 5.11. Каждый язык L ∈ RE можно представить в виде L = h(L0 ∩ R), где L0 ∈ N SP WK(u), R ∈ REG и h — проекция. Доказательство. Достаточно применить лемму 5.21 вместе с теоремой 3.16 или следствие 5.11 вместе с теоремой 3.15. Следствие 5.12. Для каждого семейства F L, строго содержащегося в RE и замкнутого относительно пересечений с регулярными языками и произвольных морфизмов, выполняется N SP WK(u) − F L 6= ∅. Кроме того, из теоремы 5.11 следует, что включение N SWK(u) ⊂ N SP WK(u) является строгим, так как N SWK(u) содержит лишь регулярные языки. Характеризацию RE, родственную вытекающей из теоремы 5.11, можно получить и на основе следующего результата. Лемма 5.22. Для каждого алфавита V выполняется T SV ∈ N 1P WK(u). Доказательство. Рассмотрим простой префиксный автомат Уотсона–Крика без состояний M = (V1 , ρ1 , V2 , ρ2 , P ), в котором V1 = V ∪ V , ρ1 = {(a, a), (¯ a, a ¯)) | a ∈ V }, V2 = V , ρ2 = {(a, a) | a ∈ V }, o n λ λ λ λ 5) P = / , / | a ∈ V ∪ a λ a ¯ λ o λ a ¯ λ / a |a∈V .
1) 2) 3) 4)
a λ
/
a λ
,
Итак, процесс корректного распознавания в M имеет вид h i hwi λ z ∗ λ / =⇒ / w λ λ z для w ∈ (V ∪ V )∗ , z ∈ V ∗ , и w ∈ z ⊥ t z¯. Действительно, нижняя дорожка первой ленты прочитывается безо всякого взаимодей-
5.7. Универсальные автоматы Уотсона–Крика
231
ствия со второй лентой, при чтении символа a ∈ V в верхней дорожке первой ленты одновременно должен быть прочитан тот же символ в верхней дорожке второй ленты, и, наконец, при чтении символа a ¯ в верхней дорожке первой ленты одновременно должен быть прочитан символ a в нижней дорожке второй ленты. Отсюда, Lu (M ) = T SV . Следствие 5.13. Каждый язык из RE является образом при детерминированном ОПМ-отображении некоторого языка из N 1P WK(u).
5.7
Универсальные автоматы Уотсона–Крика
В свете характеризаций рекурсивно перечислимых языков посредством автоматов Уотсона–Крика (раздел 5.3) было бы интересно найти универсальный (конечный) автомат Уотсона– Крика. Например, в силу теоремы 5.2 такой автомат будет универсальным — по модулю слабого кодирования — для целого класса машин Тьюринга. Временно отложим обсуждение этого сюжета, а пока отметим, что конечный автомат Уотсона–Крика может служить изящным примером «частично универсального» конечного автомата, сконструированного в конце раздела 3.3. Пусть M = (K, V, s0 , F, P ) — конечный автомат, и x — строка из V ∗ . Рассмотрим строку w = code(M )n , где запись code(M ) имеет тот же смысл, что и в разделе 3.3, а n = |x|. Кроме того, рассмотрим строку xcm для m = |w| − |x| (т. е. |w| = |xcm |). Обозначим через ρ универсальное отношение на множестве K ∪ V ∪ {c, c1 , c2 }. Запишем строку xcm в верхнюю нить, а строку w в нижнюю нить ленты Уотсона–Крика. Процесс работы универсального конечного автомата, сконструированного в разделе 3.3, указывает способ определения переходов автомата Уотсона–Крика, работающего с упомянутой выше лентой и распознающего строки xcm тогда и только тогда, когда x ∈ L(M ). Нижняя головка считывает копию кода автомата M , записанную на нижней дорожке, недетерминировано выбирает переход sa → as0 автомата M в соответствии с
232
5. Автоматы Уотсона–Крика
прочитанным верхней головкой символом a, и состояние автомата Уотсона–Крика проверяет корректность связи состояний автомата M , запоминая их. Как только на верхней дорожке прочитан первый символ c (по крайней мере один такой есть), автомат M должен перейти в заключительное состояние для корректного завершения разбора. Подробности конструкции мы оставляем читателю (см. конструкцию, описанную ниже). Рассмотрим теперь более простую «программу» для M , в которой последовательность из |x| копий кода M отделена от «начальных данных» (строки x). В такой ситуации есть две проблемы: довольно велика длина этой «программы» и распознаваемая универсальной машиной последовательность в верхней строке оканчивается очень длинным хвостом из букв c. Обе этих проблемы исчезнут, если позволить нижней головке автомата Уотсона–Крика двигаться в обоих направлениях. Тогда будет достаточно всегоiодной копии code(M ), и лента сможет h xcm принять вид code(M )cp , где m и p — такие целые числа, что m > 1 и |xcm | = | code(M )cp | (на верхней нити есть по крайней мере один символ c отмечающий конец ленты, и, кроме того, более короткая цепочка дополнена символами c до выравнивания длин). И снова конструкция оказалась по существу подобной тому, что уже использовалось в конце раздела 3.3, но теперь мы представим ее более подробно, поскольку интересно увидеть конкретный автомат Уотсона–Крика, универсальный в рассмотренном выше смысле. Сперва договоримся об одном обозначении. Переход в автомате Уотсона–Крика с перемещающейся в обоих направлениях нижней головкой задается в виде пары переписывающих правил: одно для верхней, а другое для нижней головки; для наглядности мы пишем их одно над другим. Кроме того, состояния, участвующие в этих переходах, должны быть одинаковы (состояние является характеристикой автомата, а не каждой из головок). Для множества конечных автоматов, которые необходимо моделировать, найдем максимальные множества состояний K
5.7. Универсальные автоматы Уотсона–Крика
233
и алфавит V . Построим автомат Уотсона–Крика Mu = (Ku , V ∪ K ∪ {c, c1 , c2 }, ρu , q0,u , {qf }, Pu ), в котором 1) ρu = (V ∪ K ∪ {c, c1 , c2 }) × (V ∪ K ∪ {c, c1 , c2 }), 0 , q 00 , q } ∪ {[s], (s), (s)0 , (s)00 , (s)000 , (s)iv , [s] | s ∈ 2) Ku = {q0,u , q0,u 0,u f K} ∪ {[sa] | s ∈ K, a ∈ V }, и 3) множество Pu состоит из следующих правил перехода (правило вида sλ → s0 λ в верхней позиции означает то, что верхняя головка не движется): ! 0 λ q0,u λ → q0,u , s ∈ K, (1) 0 q0,u s → sq0,u ! 0 λ → q 00 λ q0,u 0,u , a ∈ V, (2) 0 a → aq 00 q0,u 0,u ! 00 λ → q q0,u 0,u λ , s ∈ K, (3) 00 s → sq q0,u 0,u q0,u λ → [s0 ]λ , (4) q0,u s0 → s0 [s0 ] [s]a → a[sa] , s ∈ K, a ∈ V, (5) [s]a → a[sa] [sa]λ → (s0 )λ , s, s0 ∈ K, a ∈ V, (6) [sa]s0 → s0 (s0 ) (s)λ → (s)0 λ , s, s0 ∈ K, (7) (s)s0 → s0 (s)0 0 (s) λ → (s)00 λ , s ∈ K, a ∈ V, (8) (s)0 a → a(s)00 00 (s) λ → (s)λ , s, s0 ∈ K, (9) (s)00 s0 → s0 (s) (s)λ → [s]λ , s ∈ K, (10) (s)s → s[s] (s)λ → (s)000 λ , s, s0 ∈ K, (11) s0 (s) → (s)000 s0
234
5. Автоматы Уотсона–Крика
(s)000 λ → (s)iv λ , s ∈ K, a ∈ V, a(s)000 → (s)iv a iv (s) λ → (s)λ , s, s0 ∈ K, s0 (s)iv → (s)s0 ! (s)c → c[s] , s ∈ K, (s)c1 → c1 [s] ! [s]λ → [s]λ , s, s ∈ K, s = 6 s0 , [s]s0 → s0 [s] ! [s]λ → qf λ , s ∈ F, [s]s → sqf qf λ → qf λ , s ∈ K, qf s → sqf qf c → cqf , qf λ → qf λ qf λ → qf λ , qf c2 → c2 qf qf λ → qf λ . qf c → cqf
(12) (13) (14) (15) (16) (17) (18) (19) (20)
Возьмем теперь конкретный конечный автомат M = (K 0 , V 0 , F, P ), в котором K 0 ⊆ K, V 0 ⊆ V , и напишем «программу» для Mu , т. е. в верхней строке его входной ленты напишем xcm , а в нижней — code(M )cp , где числа m, p определяются описанным выше способом. Пока верхняя головка Mu остается на месте, нижняя ищет переход автомата M , в котором участвует текущий символ из слова x. В начале это должен быть переход вида s0 a → as. Затем по правилам 5 и 6 моделируется один шаг работы автомата M . В состоянии (s0 ) автомат Mu может сделать тройной шаг вправо по правилам 7, 8, 9 или влево по правилам 11, 12, 13 в поиске верного продолжения по правилу 10. Когда заканчивается строка x и верхняя головка доходит до символа c (поскольку нижнюю головку можно перемещать свободно че0, s
5.7. Универсальные автоматы Уотсона–Крика
235
рез тройки вида sas0 , можно предполагать, что в тот же самый момент она доходит до символа c1 , разделяющего в code(M ) переходы и конечные состояния), происходит переход на проверку того, является ли текущее состояние заключительным в автомате M . Лишь при положительном ответе на этот вопрос работа Mu завершается корректно по правилу 16. Следовательно, xcm ∈ L(Mu ) тогда и только тогда, когда x ∈ L(M ). (Правила 17–20 используются для просмотра суффиксов cm , c2 cp на обеих дорожках.) Доказательство теоремы 5.2 состоит из следующих шагов: 1) для грамматики Хомского G типа0 строится три таких мор физма h1 , h2 , h3 , что L(G) = h3 h1 EQ(h1 , h2 ) ∩ R , где EQ(h1 , h2 ) обозначает множество равенств для h1 , h2 (т. е. множество таких слов w, что h1 (w) = h2 (w)), а R — некоторый регулярный язык (теорема 3.16); 2) для построенных выше морфизмов h1 , h2 строится система со склейкой определенного типа (когерентная), которая порождает множество двойных цепочек, содержащих язык h1 EQ(h1 , h2 ) в верхних цепочках (теорема 4.12); 3) по этой системе со склейкой строится автомат Уотсона–Кри ка, распознающий язык h1 EQ(h1 , h2 ) ∩ R (лемма 5.15); таким образом, оставшегося морфизма (выше это h3 , который на самом деле является слабым кодированием) достаточно для характеризации RE . Все эти три шага конструктивны. Если теперь взять вместо G универсальную грамматику Gu типа 0, то получится автомат Уотсона–Крика, являющийся универсальным в естественном смысле. Однако такой путь от универсальной грамматики типа 0 к универсальному автомату Уотсона–Крика настолько длинен и извилист, что результат получится слишком сложным (не видно даже простого способа написать «программу» для такой универсальной машины). Задача нахождения простых конечных автоматов Уотсона–Крика, которые были бы универсальными для класса всех таких автоматов, а значит, и для класса машин Тьюринга, остается темой для исследо-
236
5. Автоматы Уотсона–Крика
вания. Как и в случае конечных автоматов, здесь рассматриваются лишь более простая задача поиска конечных автоматов Уотсона–Крика, универсальных для автоматов с ограниченным числом состояний и входных символов. Для конечного автомата Уотсона–Крика в 1-ограниченной нормальной форме (из следствия 5.1 известно, что такие автоматы эквивалентны произвольным конечным автоматам Уотсона–Крика) M = (K, V, ρ, s0 , F, P ) рассмотрим кодировку вида α1 αn 0 code(M ) = [s1 s1 ] . . . [sn s0n ][sf 1 ] . . . [sf m ], βn β1 в которой каждый блок [si αβii s0i ] — это символ, соответству ющий переходу si αβii → αβii s0i из P (значит, один из элементов αi , βi является буквой, а второй пуст), а каждый блок [sf i ] — это символ, соответствующий заключительному состоянию из F . h i ...ar При разборе молекулы x = ab11ab22...b , ai , bi ∈ V , 1 6 i 6 r, r r > 1, за один такт читается ровно один символ на одной из дорожек, таким образом, весь разбор состоит из 2r шагов. «Скорости» движения головок различны и расстояние между ними может быть сколь угодно большим. Таким образом, для создания «программы» для универсального автомата мы можем слить коды для M с символами в каждой нити последовательности x и рассмотреть молекулу
code(M )a1 code(M )a2 . . . code(M )ar code(M )c code(M ) w0 = code(M )b1 code(M )b2 . . . code(M )br code(M )c code(M ) bls(code(M ), a1 a2 . . . ar c) = . bls(code(M ), b1 b2 . . . br c)
(Отношение комплементарности содержит все пары из ρ плюс все пары (α, α) для символов α, встречающихся в code(M ), или α = c.) Теперь универсальный конечный автомат Уотсона–Крика можно построить, действуя по схеме, которая приведена в разделе 3.3 для обыкновенных конечных автоматов: прочитать последовательность code(M ) на одной из двух нитей, выбрать
5.7. Универсальные автоматы Уотсона–Крика
237
переход вида αβ s0 , закодированный символом [s αβ s0 ], смоделировать его (разумеется, при работе на верхней дорожке должно выполняться β = λ, при работе на нижней дорожке должно выполняться α = λ); состояния универсального автомата гарантируют корректную взаимосвязь состояний автомата M , тем самым, они контролируют разбор последовательности также, как и состояния M ; движение по разным нитям идет с разной скоростью; после достижения столбика cc производится проверка, является ли текущее состояние заключительным относительно M (т. е. состоянием, которому соответствует некоторый символ [s] в code(M )); при положительном результате универсальный автомат в конце своей работы переходит в заключительное состояние. Обозначив через Mu автомат Уотсона–Крика, конструкция которого намечена выше, получим w0 ∈ Lu (Mu ) тогда и только тогда, когда x ∈ Lu (M ), т. е. свойство универсальности. Приведенная выше «программа» w0 довольно сложна (она не контекстно-свободного типа из-за повторяющихся копий code(M ) на каждой из двух дорожек). Путь снижения сложности исходной молекулы этого универсального автомата Уотсона–Крика такой же, как и в случае обычных конечных автоматов (там мы перешли к автоматам Уотсона–Крика): рассмотреть ленту с еще одной дорожкой, т. е. перейти к автоматам Уотсона–Крика с тройной лентой и тремя читающими ее головками под контролем общего состояния. Во-первых, в таком случае можно упростить форму «программы» w0 : запишем на первой дорожке a1 a2 · · · ar , на второй дорожке b1 b2 · · · br и дополним их нужным количеством символов c так, чтобы уравнять в длине с третьей дорожкой, на которой записаны 2r копий code(M ). Третья читающая головка может двигаться слева направо, находя в каждой записи code(M ) переход, подходящий для символа на одной из двух первых нитей. Отметим, что в такой ситуации «программа» (code(M )) отделена от данных (молекулы x).
238
5. Автоматы Уотсона–Крика
Во-вторых, если допустить возможность движения третьей головки в обоих направлениях (оставляя для двух первых головок лишь возможность движения в одну сторону), то будет достаточно всего одной копии code(M ) (смотри описанную выше конструкцию двустороннего конечного автомата Уотсона–Крика с двойной лентой, являющегося универсальным для класса конечных автоматов с ограниченным числом состояний и входных символов). Мы оставляем интересующемуся читателю технические детали, касающиеся универсальных автоматов Уотсона–Крика с двойными и тройным лентами. Замечание 5.6. Мы исследовали здесь только некоторые основные вопросы об автоматах Уотсона–Крика как распознающих устройствах, существенно использующих новый тип данных — ленты Уотсона–Крика, основанные на возникающих в цепочках ДНК отношениях комплементарности. Тем самым мы «уравновесили» проведенное в предыдущей главе исследование порождающих устройств. Определив эти новые классы машин, можно разворачивать обычную для теории автоматов программу исследований. Здесь мы, в основном, рассматривали лишь один класс задач, важных с точки зрения молекулярных вычислений: представления (т. е. характеризации) рекурсивно перечислимых языков. Результаты выглядят ободряющими: большинство наших машин характеризуют RE по модулю простого сжимающего устройства: слабого кодирования в одних случаях и детерминированной ОПМ в других. Такие сжимающие механизмы естественны для молекулярных вычислений, поскольку при использовании четырехбуквенного алфавита ДНК приходится иметь дело с кодированием информации. Есть много других задач для исследований. Упомянем только некоторые из них. 1. Исследовать «чистые» семейства языков, связанных с автоматами Уотсона–Крика (слово «чистые» означает: без использования сжимающих механизмов). Что можно сказать
5.7. Универсальные автоматы Уотсона–Крика
2.
3.
4.
5.
6.
239
об их соотношениях между собой и соотношениях между ними и семействами из иерархии Хомского или из других стандартных иерархий языков? Улучшить, если возможно, представленные здесь характеризации RE, используя более простые автоматы Уотсона– Крика и/или более простые сжимающие механизмы. Найти конкретные автоматы Уотсона–Крика, которые были бы (по модулю слабого кодирования или других сжимающих механизмов) универсальными для классов всех машин Тьюринга. Рассмотрим детерминированные автоматы Уотсона–Крика различных типов. Будут ли они строго слабее, чем недетерминированные? Детерминизм можно здесь определять и динамически, как возможность ветвления в процессе вычислений (напомним, что мы используем правила перехода 0 вида s ∈ δ(s, xx12 ), где строки x1 , x2 могут состоять из любого числа символов, в том числе и быть пустыми). Определить и исследовать классы сложности, основанные на автоматах Уотсона–Крика. Существенная часть необходимой в вычислениях информации содержится в используемых структурах данных — лентах Уотсона–Крика, и можно считать, что эта часть достается «даром» некоторую свободу, поскольку в последовательностях ДНК комплементарность Уотсона–Крика проверяется автоматически. Поэтому естественно ожидать, что обычные классы сложности, основанные на машинах Тьюринга и других строкоподобных структурах данных, будут отличаться от классов сложности Уотсона–Крика. Это направление особенно интересно для молекулярных вычислений, поскольку оно может подвести к доказательству (или опровержению) полезности применения молекул ДНК — или связанных с ними теоретических моделей — для вычислений. Определить и исследовать меру дескриптивной сложности для автоматов Уотсона–Крика и для их языков. Основными рассматриваемыми мерами являются количество состояний
240
5. Автоматы Уотсона–Крика
автомата и количество правил перехода (заданных в разделе 5.1 как переписывающие правила). Вторая мера особенно интересна для автоматов без состояний. 7. Все эти классы задач связаны с автоматами, введенными в этой главе, а значит, и со структурами данных Уотсона–Крика. Область задач, касающихся параллелизма возможных молекулярных вычислений, остается совершенно открытой. По нашим оценкам, полное использование этого важного «козыря» молекул ДНК может привести к решительным изменениям в таких основных идеях сложности вычислений, как детерминированная и недетерминированная разрешимость за полиномиальное время. Вообще, «фоном» для проводимых здесь исследований остается вопрос если не реализации, то хотя бы возможности реализации автомата Уотсона–Крика в любом из рассмотренных вариантов или в каком-либо другом виде, который еще будет определен. Однако к такой проблеме можно подступиться лишь в рамках междисциплинарного подхода.
5.8
Комментарии к библиографии
Эта глава в основном базируется на работе [99], в которой были введены автоматы Уотсона–Крика (во всех рассмотренных выше вариантах, кроме 1-ограниченных). Конечные автоматы Уотсона–Крика рассматривались также в [98]. Обсуждение универсальных автоматов Уотсона–Крика следует статье [209], где введены 1-ограниченные автоматы.
Глава 6 Системы вставки и удаления 6.1
Вставка и удаление в контексте ДНК
В этой главе рассматриваются вычислительные модели, основанные на двух операциях, которые возникли в теории формальных языков по мотивам, связанным с лингвистикой. Эти операции — вставка и удаление с зависимостью от контекста. Они возникают также и в работе с генами и могут быть реализованы, по крайней мере теоретически, следующим образом. Представим себе, что в пробирке находится одинарная цепочка ДНК вида 50 − x1 uvx2 z − 30 , где x1 , x2 , u, v, z — некоторые строки. Добавим в эту пробирку одинарную цепочку ДНК 30 − u ¯y¯v¯ − 50 , где через u ¯, v¯ обозначены строки, комплементарные по Уотсону–Крику строкам u, v, а строка y¯ комплементарна некоторой новой строке y. Цепочки будут соединяться так, что u ¯ прилипнет к u, а v¯ к v, сворачивая y¯. Получится картина, изображенная на рис. 6.1(b). Если теперь разрезать двойную подцепочку uv (с помощью рестриктазы), то получится структура, изображенная на рис. 6.1(c). Добавив праймер z¯ (и полимеразу), получим двойную цепочку, показанную на рис. 6.1(d). При нагревании две цепочки разделятся, и одна из получившихся одинарных цепочек будет иметь вид x1 uyvx2 z. Это означает, что строка y оказалась вставлена между u и v. С помощью подобного же частичного отжига теоретически можно выполнить операцию удаления, также с зависимостью от контекста. Возьмем uyv в качестве исходной строки, добавим u ¯v¯, а затем произведем аналогичную процедуру. На рис. 6.2 показаны все ее фазы (переход от (b) к (c) производится путем полимеризации и удаления петли y с помощью рестриктазы).
242
6. Системы вставки и удаления
50 (a)
(b) 50
x1 30
u
u ¯
x1
u u ¯
v
x2
y¯
v¯
z 50
x2
v
30
z
30
v¯
y¯
(c) 50
x1
u u ¯
v y¯
v¯
x2 30
z
x1
u
y
v
x2
z¯ z
x ¯1
u ¯
y¯
v¯
x ¯2
z¯
x1
u
y
v
x2
z
30 50
(d)
(e) 50
30
Рис. 6.1. Вставка с помощью частичного отжига.
Следовательно, при работе с ДНК можно выполнять операции вставки и удаления. Такие операции происходят и в естественном процессе эволюции в виде (случайных) точечных мутаций, при которых единичный символ вставляется в последовательность ДНК или удаляется из нее, в общем случае без явного контроля контекста, показанного на рис. 6.1 и 6.2. Эти же операции происходят и при редактировании РНК, см. [23], с той особенностью, что вставки и удаления урацила У происходят проще и чаще, чем вставки и удаления А, Ц и Г. Как и ожидалось, операции вставки и удаления, работающие вместе, очень сильны и приводят к различным характеризациям рекурсивно перечислимых языков. (Грубо говоря, порождающий механизм, равновыразительный грамматикам Хомского типа 0, должен обладать «достаточным количеством» встроенной контекстной зависимости и возможностью удаления. Ясно, что операции вставки и удаления обеспечива-
6.2. Характеризации языков из RE
(a) 50
x1
y
u 30
u ¯
243
x2
v
z
30
50
v¯
y
(b) 50
(c)
(d)
x1
u v
x2
z z¯
u ¯
v¯
x1
u
v
x2
z
x ¯1
u ¯
v¯
x ¯2
z¯
x1
u
v
x2
z
30
30 50
Рис. 6.2. Удаление с помощью частичного отжига.
ют и то, и другое.) Ниже мы докажем такие характеризации для различных ограничений, сформулированных в терминах новой вычислительной модели, называемой системой вставки и удаления или, кратко, ВУ-системой.
6.2
Характеризации рекурсивно перечислимых языков
ВУ-система — это конструкция γ = (V, T, A, R), в которой V — алфавит, T ⊆ V , A — конечный язык над V , R — конечное множество троек вида (u, α/β, v), где u, v ∈ V ∗ , и (α, β) ∈ (V + ×{λ})∪({λ}×V + ). Элементы множества T — терминальные символы, множества A — аксиомы, тройки из R — правила вставки и удаления. Запись (u, λ/β, v) означает, что β можно вставить между u и v, а запись (u, α/λ, v) означает, что α можно удалить из uαv Иначе говоря, (u, λ/β, v) соответствует переписывающему правилу uv → uβv, а (u, α/λ, v) соответствует переписывающему правилу uαv → uv.
244
6. Системы вставки и удаления
Следовательно, для x, y ∈ V ∗ можно написать x =⇒ y, если y можно получить из x применением упомянутых выше правил вставки и удаления. Точнее это означает, что имеет место один из двух случаев: 1. x = x1 uvx2 , y = x1 uβvx2 , для некоторых x1 , x2 ∈ V ∗ и (u, λ/β, v) ∈ R, 2. x = x1 uαvx2 , y = x1 uvx2 , для некоторых x1 , x2 ∈ V ∗ и (u, α/λ, v) ∈ R. Язык, порожденный системой γ, определяется как L(γ) = {w ∈ T ∗ | x =⇒∗ w для некоторого x ∈ A}, где через =⇒∗ обозначено рефлексивное и транзитивное замыкание отношения =⇒. Будем говорить, что ВУ-система γ = (V, T, A, R) имеет вес (n, m; p, q), если n = max{|β| | (u, λ/β, v) ∈ R}, m = max{|u| | (u, λ/β, v) ∈ R или (v, λ/β, u) ∈ R}, p = max{|α| | (u, α/λ, v) ∈ R}, q = max{|u| | (u, α/λ, v) ∈ R или (v, α/λ, u) ∈ R}. Обозначим через IN Snm DELqp , где n, m, p, q > 0, семейство языков L(γ), порожденных такой ВУ-системой веса (n0 , m0 ; p0 , q 0 ), что n0 6 n, m0 6 m, p0 6 p, q 0 6 q. Когда один из параметров n, m, p, q не ограничен, заменим его на ∗. Таким образом, семейство всех ВУ-языков записывается как IN S∗∗ DEL∗∗ . Поскольку вставка или удаление пустой строки ничего не меняет, то при n = 0 предполагается, что m = 0, а при p = 0 предполагается, что q = 0. Запись IN S00 означает, что не используются правила вставки, а запись DEL00 означает, что не используются правила удаления. Из определений очевидным образом имеем следующие включения. 0
0
Лемма 6.1. (i) IN Snm DELqp ⊆ IN Snm0 DELqp0 , для всех 0 6 n 6 n 0 , 0 6 m 6 m0 , 0 6 p 6 p 0 , 0 6 q 6 q 0 . (ii) IN S∗∗ DEL∗∗ ⊆ RE , IN S∗∗ DEL00 ⊆ CS .
6.2. Характеризации языков из RE
245
Используя ВУ-системы произвольных весов, легко охарактеризовать рекурсивно перечислимые языки. Теорема 6.1. RE = IN S32 DEL03 . Доказательство. Возьмем язык L ⊆ T ∗ , порожденный грамматикой G = (N, T, S, P ) типа 0, в которой P содержит правила вида X → x для X ∈ N , x ∈ (N ∪ T )∗ , |x| 6 2, и правила вида XY → U Z для X, Y, U, Z ∈ N (например, возьмем G в нормальной форме Куроды). Построим ВУ-систему γ = (N ∪ T ∪ {E, K1 , K2 }, T, {SEE}, R), R = {(X, λ/K1 x, α1 α2 ) | X → x ∈ P для X ∈ N, x ∈ (N ∪ T )∗ , |x| 6 2, и α1 , α2 ∈ N ∪ T ∪ {E}} ∪ {(XY, λ/K2 U Z, α1 α2 ) | XY → U Z ∈ P для X, Y, U, Z ∈ N, и α1 , α2 ∈ N ∪ T ∪ {E}} ∪ {(λ, XK1 /λ, λ) | X ∈ N } ∪ {(λ, XY K2 /λ, λ) | X, Y ∈ N } ∪ {(λ, EE/λ, λ)}. Символ E используется только для создания на конце строки пары символов α1 α2 , необходимых в качестве контекста для ВУ-правил. Символы K1 , K2 выполняют роль «киллеров»: K1 ликвидирует один символ, расположенный непосредственно слева от него, а K2 ликвидирует два символа, расположенных непосредственно слева от него. Применением этих символов правила вставки из R моделируют правила из P . Символы, помеченные «киллерами» K1 , K2 , уже не могут использоваться в качестве контекста для правил из R (α1 , α2 в перечисленных выше правилах из R не могут совпадать с K1 , K2 ). Следовательно, L(G) = L(γ). С математической точки зрения естественным является вопрос о том, можно ли усилить результат теоремы 6.1, рассматривая более короткие вставляемые и удаляемые строки и короткие контексты, контролирующие вставки и удаления. В частности, интересно было бы рассмотреть случай, когда вставляются или удаляются лишь одиночные символы. Этот же во-
246
6. Системы вставки и удаления
прос мотивируется и ограничениями, возникающими в области работы с ДНК и РНК. Как упоминалось в предыдущем разделе, вставки и удаления одиночных символов соответствуют точечным мутациям в генетической эволюции. ВУ-системы весьма ограниченного веса характеризуют рекурсивно перечислимые языки: Теорема 6.2. RE = IN S12 DEL11 . Доказательство. Разумеется, нужно доказывать лишь включение RE ⊆ IN S12 DEL11 . Рассмотрим язык L ⊆ T ∗ , L ∈ RE , порожденный грамматикой G = (N, T, S, P ) типа 0 в нормальной форме Петтонена (теорема 3.4), т. е. содержащей контекстно-свободные правила X → x, в которых |x| 6 2, и не контекстно-свободные правила вида XY → XZ для X, Y, Z ∈ N . Без ограничения общности можно предполагать, что в каждом правиле X → α1 α2 ∈ P выполняется X 6= α1 , X 6= α2 и α1 6= α2 . (Если потребуется, заменим X → α1 α2 на X → X 0 , X 0 → α1 α20 , α20 → α2 , где X 0 , α20 — новые символы.) Аналогично, можно предполагать, что для каждого правила XY → XZ ∈ P выполняется X 6= Y , X 6= Z и Y 6= Z. Более того, заменив каждое правило X → α ∈ P , α ∈ N ∪ T , на X → αZ, Z → λ, получим эквивалентную грамматику. Значит, можно считать, что каждое правило из P имеет один из трех следующих видов: 1. X → α1 α2 для таких α1 , α2 ∈ N ∪ T , что X 6= α1 , X 6= α2 , α1 6= α2 , 2. X → λ, 3. XY → XZ для таких X, Y, Z ∈ N , что X = 6 Y, X = 6 Z, Y 6= Z. Кроме того, можно предполагать, что правила из P помечены, причем это помечивание взаимно однозначно. Построим ВУ-систему γ = (V, T, A, R), в которой V = N ∪ T ∪ {[r], (r) | r — метка правила из P } ∪ {B, E}, A = {BSE}, и множество R сконструировано следующим образом.
6.2. Характеризации языков из RE
247
1. По каждому правилу r : X → α1 α2 ∈ P типа 1, в котором α1 , α2 ∈ N ∪T , конструируются следующие правила вставки и удаления: β1 ∈ N ∪ T ∪ {B}, (β1 , λ/[r], Xβ2 ), для (r.1) β2 ∈ N ∪ T ∪ {E}, ([r]X, λ/(r), β), для β ∈ N ∪ T ∪ {E}, (r.2) ([r], X/λ, (r)),
(r.3)
([r], λ/α1 , (r)),
(r.4)
(α1 , λ/α2 , (r)),
(r.5)
(λ, [r]/λ, α1 ),
(r.6)
(α2 , (r)/λ, λ).
(r.7)
2. По каждому правилу r : X → λ ∈ P типа 2 конструируется правило удаления β1 ∈ N ∪ T ∪ {B} (β1 , X/λ, β2 ) для . (r.1) β2 ∈ N ∪ T ∪ {E} 3. По каждому правилу r : XY → XZ ∈ P типа 3, в котором X, Y, Z ∈ N , конструируются следующие правила вставки и удаления: β1 ∈ N ∪ T ∪ {B} (β1 X, λ/[r], Y β2 ) для , (r.1) β2 ∈ N ∪ T ∪ {E} ([r]Y, λ/(r), β) для β ∈ N ∪ T ∪ {E}, (r.2) ([r], Y /λ, (r)),
(r.3)
([r], λ/Z, (r)),
(r.4)
(X, [r]/λ, Z),
(r.5)
(Z, (r)/λ, λ).
(r.6)
4. Кроме того, добавляются правила удаления (λ, B/λ, λ), (λ, E/λ, λ). Получаем равенство L(G) = L(γ).
248
6. Системы вставки и удаления
(⊆) Каждый шаг вывода w =⇒ w0 в G моделируется в γ выводом BwE =⇒∗ Bw0 E, использующим правила (r.i), ассоциированные с примененным в w =⇒ w0 правилом из P так, как показано выше. Например, пусть w = w1 Xw2 , w0 = w1 α1 α2 w2 для r : X → α1 α2 ∈ P . Тогда мы получаем: Bw1 Xw2 E =⇒ Bw1 [r]Xw2 E
по правилу (r.1)
=⇒ Bw1 [r]X(r)w2 E
по правилу (r.2)
=⇒ Bw1 [r](r)w2 E
по правилу (r.3)
=⇒ Bw1 [r]α1 (r)w2 E
по правилу (r.4)
=⇒ Bw1 [r]α1 α2 (r)w2 E
по правилу (r.5)
=⇒ Bw1 α1 α2 (r)w2 E
по правилу (r.6)
=⇒ Bw1 α1 α2 w2 E
по правилу (r.7)
= Bw0 E. Подобным образом можно поступить, когда шаг w =⇒ w0 сделан с помощью правила вида r : XY → XZ. Подробности оставим читателю. Вывод начинается с BSE. В любой момент символы B, E можно удалить. Таким образом, любая строка терминальных символов, порожденная G, лежит в L(γ). (⊇) Рассмотрим строку BwE. Первоначально w = S. Можно к этому применить правило (r.1) из группы 1, или правило удаления (β1 , X/λ, β2 ), ассоциированное с X → λ ∈ P , или правило (r.1) из группы 3, или правило из группы 4. Допустим, что применено (β1 , λ/[r], Xβ2 ) для некоторого r : X → α1 α2 ∈ P . Тогда имеем Bw1 Xw2 E =⇒ Bw1 [r]Xw2 E. Поскольку правила из P однозначно помечены, X 6= α1 и у правил вида (r.1) в группах 1 и 3 левый контекст указывает на символ, расположенный непосредственно перед X (то же можно сказать и о правилах группы 2), есть лишь одно правило, в котором участвует символ X, а именно (r.2). В конце концов, это правило обязательно должно быть применено, иначе процесс вывода не приведет к строке терминальных символов.
6.2. Характеризации языков из RE
249
После этого подстрока [r]X строки Bw1 [r]Xw2 превратится в [r]X(r). Далее, вновь есть лишь одно возможное продолжение по правилу (r.3), которое стирает символ X. Символ [r] можно будет удалить только после того, как между [r] и (r) будет вставлен символ α1 . По правилу (r.5) между символами α1 и (r) можно вставить символ α2 . Необходимый для этого в качестве левого контекста символ α1 должен появиться на предыдущем шаге по правилу (r.4) между [r] и (r), поскольку X 6= α1 . После появления α2 , отличного как от α1 , так и от X, по правилу (r.7) можно удалить (r). Благодаря контекстам, никакое другое правило не может использовать упоминавшиеся символы в качестве левого или правого элемента или удалить их. Таким образом, после применения (r.1), обязательно должны сработать все правила (r.i), 2 6 i 6 7, ассоциированные с r : X → α1 α2 , чем и моделируется применение правила X → α1 α2 . Из тех же соображений после применения правила (β1 X, λ/[r], Y β2 ), ассоциированного с r : XY → XZ ∈ P , необходимо продолжить процесс правилами (r.i), 2 6 i 6 6 (необязательно применять их правила по порядку, но только эти правила могут применяться к заданным символам текущей строки), тем самым, моделируется применение правила XY → XZ. Правила удаления (β1 , X/λ, β2 ) напрямую соответствуют стирающим правилам из P . Маркеры B, E можно удалить на любом шаге. Следовательно, γ может порождать только строки из L(G). Теорема 6.3. RE = IN S11 DEL02 . Доказательство. Рассмотрим язык L ∈ RE , L ⊆ T ∗ и возьмем такую грамматику G = (N, T, S, P ) в нормальной форме Гефферта, приведенной в теореме 3.5(2), что L = L(G). Следовательно, P = P1 ∪ P2 , где P1 содержит только контекстносвободные правила вида S → uSv
для
u, v ∈ (N ∪ T − {S})+ ,
S→x
для
x ∈ (N ∪ T − {S})+ ,
а P2 состоит из правил вида XY → λ для X, Y ∈ N .
250
6. Системы вставки и удаления
Построим ВУ-систему γ = (V, T, A, R), в которой V = N ∪ T ∪ {c, K, K 0 , F } ∪ {[S, r] | r : S → x ∈ P1 } ∪ {[X, r, i] | r : S → zXw ∈ P1 , z, w ∈ (N ∪ T )∗ , i = |z| + 1, X ∈ N ∪ T }, A = {Sc}, и R содержит следующие правила вставки и удаления: A. Заменим каждое правило S → uSv из P правилом S → uScv. Правила S → x, в которых |x|S = 0, оставим без изменений. Обозначим через P10 получившееся в результате этого множество. Для каждого правила r : S → X1 X2 . . . Xk ∈ P10 , где Xi ∈ N ∪ T ∪ {c}, 1 6 i 6 k, k > 1, напишем следующие правила: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
(S, λ/[S, r], c), (S, λ/K, [S, r]), (λ, SK/λ, λ), ([S, r], λ/[X1 , r, 1], c), ([Xi , r, i], λ/[Xi+1 , r, i + 1], c), 1 6 i 6 k − 1, ([S, r], λ/K, [X1 , r1 , 1]), (λ, [S, r]K/λ, λ), ([Xi , r, i], λ/Xi , [Xi+1 , r, i + 1]), 1 6 i 6 k − 1, ([Xi , r, i], λ/K, Xi ), 1 6 i 6 k − 1, (λ, [Xi , r, i]K/λ, λ), 1 6 i 6 k, ([Xk , r, k], λ/F, c), ([Xk , r, k], λ/Xk , F ), ([Xk , r, k], λ/K, Xk ), (Xk , λ/K 0 , F ), (λ, K 0 F/λ, λ).
B. Кроме этого, добавим в R правила (λ, XY /λ, λ) для XY → λ ∈ P2
6.2. Характеризации языков из RE
251
(λ, c/λ, λ). Ясно, что если ВУ-система γ корректно моделирует контекстно-свободные правила из P1 , то она порождает язык L(G). Рассмотрим строку w ∈ (N ∪ T ∪ {c})∗ . К ней можно применить лишь правила из группы B и правило типа 1 из группы A. То есть ее подстроку Sc можно заменить на S[S, r]c, для некоторого r ∈ P10 . Предположим, что w = w1 Scw2 (первоначально, w1 = w2 = λ), и воспользуемся упомянутым выше правилом для r : S → X1 X2 . . . Xk , k > 1. Получим w1 S[S, r]cw2 . Из [S, r] изготовим X1 . . . Xk . Поскольку X1 6= c и k > 1, в w1 S[S, r]cw2 после c уже не может появиться S, значит, правило типа 1 больше не может использоваться. Нам придется удалять символ S, используя правила 2 и 3 (K — «киллер» стоящего перед ним символа): w1 S[S, r]cw2 =⇒ w1 SK[S, r]cw2 =⇒ w1 [S, r]cw2 . Единственный путь продолжения состоит в использовании правил типов 4, 5, 8, поскольку для внесения в строку символа K, необходимого для удаления символов [S, r], [Xi , r, i], 1 6 i 6 k − 1, требуется, чтобы слева и справа от него появились символы вида [S, r], [Xi , r, i], 1 6 i 6 k − 1. Таким образом, в конце концов придется выполнить вывод w1 [S, r]cw2 =⇒ w1 [S, r][X1 , r, 1]cw2 =⇒ w1 [S, r][X1 , r, 1][X2 , r, 2]cw2 =⇒ . . . =⇒ w1 [S, r][X1 , r, 1] . . . [Xk−1 , r, k − 1][Xk , r, k]cw2 . После этих шагов, сделанных возможно вперемежку с шагами по правилам из группы B, для удаления символов в квадратных скобках мы должны вставить между [S, r] и [X1 , r, 1] символ K, а между [Xi , r, i] и [Xi+1 , r, i + 1], для каждого 1 6 i 6 k − 1, символ Xi . Получим строку w1 [S1 , r]K[X1 , r, 1]X1 [X2 , r, 2]X2 . . . [Xk−1 , r, k − 1]Xk−1 [Xk , r, k]cw2 .
252
6. Системы вставки и удаления
Блок [S, r]K уже можно удалить. Это единственный способ удаления символа [S, r]. Между [Xi , r, i] и Xi можно вставить K, а затем удалить его вместе с [Xi , r, i]. Это единственный способ удаления символов [Xi , r, i], 1 6 i 6 k − 1. Таким образом, получим строку w1 X1 X2 . . . Xk−1 [Xk , r, k]cw2 . Для того чтобы удалить [Xk , r, k], нужно сначала вставить символ F , а в его присутствии символ Xk : w1 X1 X2 . . . Xk−1 [Xk , r, k]cw2 =⇒ w1 X1 . . . Xk−1 [Xk , r, k]F cw2 =⇒ w1 X1 . . . Xk−1 [Xk , r, k]Xk F cw2 . Теперь [Xk , r, k] можно удалить так же, как были удалены остальные символы [Xi , r, i], т. е. вставкой K между [Xk , r, k] и Xk . Символ F можно удалить, введя перед ним символ K 0 и убрав их вместе. Отметим, что если S не входит в X1 . . . Xk , то никакое правило из группы A уже не может использоваться в продолжении вывода. Если же в X1 . . . Xk есть один символ S, то за ним следует c, и возможны новые применения правил из группы A. Символ c можно удалить с помощью правила (λ, c/λ, λ) группы B. Если сделать это тогда, когда еще присутствует символ S, то его станет невозможно удалить, а значит, станет невозможно получить строку терминальных символов. Следовательно, L(γ) = L(G). Насколько велико семейство IN S11 DEL11 , неизвестно, но кажется, что для порождения не контекстно-свободных языков, надо потребовать, чтобы по крайней мере один из параметров m (максимум длины контекстов при вставке), p (максимум длины удаляемой строки) или q (максимум длины контекстов при удалении) был больше единицы. В подтверждение этого предположения можно привести следующий пример. Теорема 6.4. IN S∗1 DEL00 ⊆ CF. Доказательство. Возьмем ВУ-систему γ = (V, T, A, R) веса (n, 1; 0, 0), для некоторого n > 1. Поскольку удаления невозможны, можно убрать из A все аксиомы, не лежащие в T ∗ , а из
6.2. Характеризации языков из RE
253
R все правила, содержащие нетерминальные символы. Итак, можно считать, что V = T . Построим контекстно-свободную грамматику G = (N, V, S, P ), где 1. N = {S} ∪ {(λ, a), (a, b), (a, λ) | a, b ∈ V }, 2. P = {S → (λ, a1 )(a1 , a2 )(a2 , a3 ) . . . (ak−1 , ak )(ak , λ) | a1 a2 . . . ak ∈ A, k > 1, ai ∈ V , 1 6 i 6 k} ∪ {(a, b) → (a, a1 )(a1 , a2 ) . . . (ak , b) | (a, λ/a1 a2 . . . ak , b) ∈ R, или (a, λ/a1 a2 . . . ak , λ) ∈ R, или (λ, λ/a1 a2 . . . ak , b) ∈ R, или (λ, λ/a1 a2 . . . ak , λ) ∈ R, k > 1, ai ∈ V , 1 6 i 6 k, a, b ∈ V } ∪ {(λ, a) → (λ, a1 )(a1 , a2 ) . . . (ak−1 , ak )(ak , a) | (λ, λ/a1 a2 . . . ak , a) ∈ R, или (λ, λ/a1 a2 . . . ak , λ) ∈ R, k > 1, ai ∈ V , 1 6 i 6 k, a ∈ V } ∪ {(a, λ) → (a, a1 )(a1 , a2 ) . . . (ak−1 , ak )(ak , λ) | (a, λ/a1 a2 . . . ak , λ) ∈ R, или (λ, λ/a1 a2 . . . ak , λ) ∈ R, k > 1, ai ∈ V , 1 6 i 6 k, a ∈ V } ∪ {(λ, a) → a, (a, λ) → λ | a ∈ V } ∪ {(a, b) → b | a, b ∈ V }. Правила S → x вместе с терминальными правилами из P дают строки из A. Правила из R моделируются соответствующими правилами из P . Символы (a, b) хранят «следы» пар символов текущей строки (т. е. то, что можно получить из этих пар при выводе), а символы (λ, a), (a, λ) дают возможность моделировать действие правил (u, λ/x, v) с u = λ или v = λ в начале или соответственно в конце текущей строки. Следовательно, L(γ) = L(G), откуда L(γ) ∈ CF . Это наилучший результат подобного типа, поскольку верна Теорема 6.5. IN S22 DEL00 содержит неполулинейные языки. Доказательство. Рассмотрим следующую ВУ-систему веса (2, 2; 0, 0): γ = ({a, b, c, d, f, g}, {a, b, c, d, f, g}, {f abcdf }, R),
254
6. Системы вставки и удаления
в которой множество R состоит из следующих правил: 1. (f, λ/ga, ab), (aa, λ/b, bc), (cc, λ/d, da),
(bb, λ/c, cd),
(dd, λ/a, ab), (cc, λ/d, df ).
Начиная с подстроки f ab текущей строки, эти правила последовательно удваивают каждое из вхождений символов a, b, c, d. Отметим, что все правила, за исключением первого, имеют вид (u, λ/x, v), где u = αα, α ∈ {a, b, c, d}, а v принадлежит множеству {ab, bc, cd, da}, кроме последнего правила, в котором v = df . Пары ab, bc, cd, da назовем легальными, ими исчерпываются все двухбуквенные подстроки строки вида (abcd)n . Ясно, что, начав со строки вида wf (abcd)n f (первоначально у нас w = λ и n = 1), мы можем дойти до строки wf g(aabbccdd)m xy(abcd)p f,
(∗)
в которой m > 0, p > 0, m + p + 1 = n, y — суффикс abcd, т. е. abcd = zy, а x получен удвоением каждого символа z. При m = n − 1 и y = λ получим строку wf g(aabbccdd)n f , т. е. длина строки, возникшей между g и f , равна 8n, что вдвое больше длины первоначальной строки (abcd)n . 2. (g, λ/c, aa), (ca, λ/c, a),
(ca, λ/d, bb),
(db, λ/d, b),
(db, λ/a, cc), (ac, λ/a, c),
(ac, λ/b, dd),
(bd, λ/b, d),
(bd, λ/c, aa).
Начиная с подстроки gaa, т. е. со вставленного правилами первой группы символа g, эти правила заменяют каждую подстроку αα, α ∈ {a, b, c, d}, на βαβα, β ∈ {a, b, c, d}, таким образом, чтобы все пары βα, αβ были нелегальны. Из того, что все правила группы 2, за исключением первого, имеют вид (u, λ/x, v), где u — нелегальная пара, следует, что эти правила можно применять только слева направо с соблюдением порядка, в котором они выписаны. Поскольку в строке uv из каждого правила (u, λ/x, v) группы 2 содержится
6.2. Характеризации языков из RE
255
пара αα, α ∈ {a, b, c, d}, то применение правил группы 2 возможно лишь после применения правил группы 1. Следовательно, из строки вида (∗) после использования правил группы 2 можно получить либо строку вида wf g(cacadbdbacacbdbd)r uv(aabbccdd)s xy(abcd)p f,
(∗∗)
где 0 6 r 6 m, r + s + 1 = m, v — суффикс aabbccdd, т. е. zv = aabbccdd, а строка u получена «трансляцией» строки z с помощью правил второй группы, либо строку вида wf g(cacadbdbacacbdbd)m x0 y(abcd)p f, где строка x0 получена из префикса x при «трансляции» по приведенным выше правилам. Заметим, что правила второй группы тоже удваивают количество символов в подстроке, к которой они применяются. Таким образом, из строки (∗) вида wf g(aabbccdd)n f можно получить строку wf g(cacadbdbacacbdbd)n f , подстрока которой, заключенная между g и f , имеет длину 16n, что вдвое больше длины (aabbccdd)n и вчетверо больше длины первоначальной строки (abcd)n . 3. (b, λ/c, df ),
(d, λ/a, bc),
(b, λ/c, da),
(c, λ/a, bc),
(c, λ/d, ab), (a, λ/b, cd),
(a, λ/c, da),
(b, λ/d, ab),
(d, λ/b, cd),
(gc, λ/f, ab). Все эти правила имеют вид (u, λ/x, v), где v — легальная пара, или в первом правиле v = df . Более того, в каждом правиле, за исключением последнего, v = αβ, где α, β ∈ {a, b, c, d}, u ∈ {a, b, c, d}, и uα — нелегальная пара. Каждое правило вставляет между u и v символ x таким образом, что получается легальная пара xβ. Следовательно, правила группы 3 можно применять только слева направо с соблюдением порядка, в котором они выписаны, начиная либо с крайнего слева символа f по первому правилу, либо с крайней правой позиции, до которой применялись правила группы 2. В
256
6. Системы вставки и удаления
самом деле, только в этой позиции есть трехбуквенная подстрока uαβ, в которой uα — нелегальная, а αβ — легальная пара. Используя приведенные выше правила, получим только легальные пары, т. е. придем к строке, содержащей подстроки abcd. Из того, что правилам групп 1 и 2 для работы нужны подстроки γγ, γ ∈ {a, b, c, d}, следует, что правила первой группы можно применять лишь после «легализации» всех пар символов. Таким образом, первое правило группы 1 можно применять только после использования последнего правила группы 3, что приводит к появлению нового символа f . Применение правил третьей группы снова удваивает длину строки. Следовательно, строка вида (∗∗) по этим правилам перерабатывается в строку wf gcf (abcd)8r u0 v(aabbccdd)s xy(abcd)p f, где u0 получается из u описанным выше способом. Когда строка wf g(aabbccdd)n f по правилам группы 2 переработана в строку wf g(cacadbdbacacbdbd)n f , тогда правила третьей группы дают строку wf gcf (abcd)8n f . Ясно, что после использования правил группы 3 максимально возможное число раз, вывод можно повторять, используя вновь правила группы 1. Описанная выше грамматика порождает неполулинейный язык. Для доказательства этого воспользуемся следующим вспомогательным результатом. Утверждение 6.1. Если E ⊆ (N−{0})n — полулинейное множество, то для каждой пары (i, j), 1 6 i, j 6 n, выполняется одно из двух следующих свойств: ui 6 ki,j для всех (1) Существует такая константа ki,j , что uj векторов (u1 , . . . , un ) ∈ E. (2) Существуют векторы (u1 , . . . , un ) ∈ E, в которых одна из компонент ui , uj зафиксирована, а другая может быть подобрана сколь угодно большой.
6.2. Характеризации языков из RE
257
Это утверждение можно доказать следующим образом. ЕсSk ли E = t=1 Et , где Et ⊆ (N − {0})n — линейные множества, 1 6 t 6 k, и mt X Et = {vt0 + vts xs | x1 , . . . , xmt ∈ N} s=1
для некоторых векторов vts , 0 6 s 6 mt , то vt0 (r) > 0 для всех 1 6 r 6 n (в векторах из E нет нулевых компонент). Далее (1) если vts (i) > 0, vts (j) > 0 для всех 1 6 s 6 mt , то для всех ui (t) (u1 , . . . , un ) ∈ Et имеем 6 ki,j для uj (t)
ki,j =
max{vts (i) | 0 6 s 6 mt } ; min{vts (j) | 0 6 s 6 mt }
(2) если, например, vts (j) = 0, vts (i) > 0 для данного s, 1 6 s 6 mt , то множество {vt0 + vts x | x ∈ N} содержит вектора с i-й компонентой, равной vt0 (i) + xvts (i), т. е. сколь угодно большой, и j-й компонентой, равной vt0 (j). Теперь, если для линейного множества Et выполняется условие пункта 2 (т. е. свойство 2 из условия), то оно выполняется и для всего E, в противном случае легко увидеть, что (t) для E выполняется свойство 1, взяв ki,j = max{ki,j | 1 6 t 6 k}. Возвращаясь к доказательству теоремы, рассмотрим отображение Париха ΨV , ассоциированное с V = {g, a, b, c, d, f } (обратите внимание на порядок). Приведенное выше утверждение не выполняется для множества ΨV L(γ) . Действительно, рассмотрим в шестерках из ΨV L(γ) первую и вторую позиции (соответствующие символам g и a). Из приведенных выше объяснений можно увидеть, что правила групп 1, 2 и 3 могут применяться только в этом порядке. В каждом таком цикле в данную строку вставляется ровно один символ g и несколько символов a, причем число символов a может увеличиться не более чем в восемь раз. Следовательно, для каждой шестер ки (u1 , . . . , u6 ) ∈ ΨV L(γ) можно написать u1 6 u2 6 8u1 , причем для каждого u1 в L(γ) есть такой вектор, в котором
258
6. Системы вставки и удаления
u2 = 8u1 . То есть отношение
8u 1
может быть сколь угодно веu1 лико, а при фиксированном u1 компонента u2 не может быть произвольно большой. Из этого следует, что приведенное выше утверждение не выполняется, а значит, ΨV L(γ) не является полулинейным. С другой стороны, имеется следующий результат, показывающий, что одна только операция вставки не «слишком сильна». Теорема 6.6. LIN − IN S∗∗ DEL00 6= ∅. Доказательство. Язык L = {an ban | n > 1} не лежит в семействе IN S∗∗ DEL00 . В самом деле, ясно, что если бесконечный язык L0 попадает в IN S∗∗ DEL00 , то бесконечное число строк z ∈ L0 можно так представить в виде z = uxv, что x 6= λ и uv ∈ L0 . Язык L не обладает таким свойством.
6.3
Односимвольные системы вставки и удаления
Ограничение сверху длины контекстов при вставке и удалении какой-либо малой величиной (например двумя, как в теоремах 6.2 и 6.3) интересно с математической точки зрения, но не очень важно с точки зрения молекулярных вычислений: контексты (u, v) на рис. 6.1 и 6.2 должны быть «достаточно большими» для того, чтобы гарантировать стабильность получившейся структуры. Биохимические же условия требуют наложить иные ограничения. А именно, ограничимся вставкой и удалением строк, состоящих из какого-то одного символа (такого как У в случае РНК). Разумеется, мы не сможем работать лишь с одним символом из нашего алфавита, поскольку, с одной стороны, кодирование двухсимвольных строк в односимвольном алфавите приводит к экспоненциальному возрастанию длины. С другой стороны, становится невозможен контроль за процессом вывода, поскольку контекст может представлять собой любую достаточно длинную строку.
6.3. Односимвольные системы вставки и удаления
259
Необходим по крайней мере еще один дополнительный символ, но его нельзя ни вставлять, ни удалять при вычислениях. Следовательно, придется заранее запасти в рабочей области достаточное количество всех символов, кроме того, который можно вставлять и удалять. Вдобавок будем считать выходную строку принятой или отвергнутой, не обращая внимания на последовательность таких символов, поскольку они все равно остаются на месте. Более того, поскольку нужно манипулировать только последовательностями из одного символа, то для порождения языка над произвольным алфавитом придется кодировать символы общего алфавита строками в односимвольном, а после вычисления производить обратную раскодировку, чтобы на выходе получались строки символов общего алфавита. Таким образом, мы приходим к следующему варианту ВУ-системы. Ограниченная ВУ-система — это конструкция γ = V, {a, c}, A, R, h , в которой V — алфавит, a, c — выделенные символы (не обязательно из алфавита V ), A — конечное подмножество множества {a, c}∗ , R — конечное множество троек вида (u, α/β, v), где u, v ∈ {a, c}∗ и α, β ∈ c∗ , причем одна из строк α, β пуста, и, наконец, 5. h : V ∗ −→ {a, c}∗ — морфизм. 1. 2. 3. 4.
Вставлять и удалять можно лишь строки вида ci , i > 1, в качестве контекстов могут использоваться последовательности из обоих символов a и c. Отношения =⇒ определяется на {a, c}∗ как обычно. Теперь определим язык, порожденный системой γ, как L(γ) = h−1 {w ∈ {a, c}∗ | z(aca)n =⇒∗ (aca)m w, для некоторых n, m > 0, z ∈ A} .
260
6. Системы вставки и удаления
Таким образом, вывод начинается с аксиомы z ∈ A, к которой справа приписано произвольное число «пробелов» aca. В процессе применяется произвольное количество правил вставки и удаления. Затем отбрасываются «пробелы» на левом конце получившийся строки. И, наконец, к тому, что осталось, применяется отображение h−1 , которое выдает строку из V ∗ . Таким образом, строки w, для которых h−1 (w) не определено, удаляются, значит, можно обеспечить завершение вывода так же, как и при использовании специального терминального алфавита. Обозначим семейство языков, порожденных ограниченными ВУ-системами произвольного веса, через 1IN SDEL. Поскольку здесь применяется кодирование строк над V строками над {a, c}, невозможно ограничить (например, независимо от мощности алфавита V ) вес используемых систем. Следующий результат, вполне ожидаемый после теорем 6.2, 6.3, внушает оптимизм с точки зрения вычислений с помощью ДНК и РНК. Теорема 6.7. RE = 1IN SDEL. Доказательство. Рассмотрим язык L ⊆ T ∗ , L ∈ RE, и порождающую его грамматику G = (N, T, S, P ), заданную в нормальной форме Куроды. Пусть N ∪ T = {α1 , . . . , αn }, а α1 = S. В P могут быть правила следующих видов: αi → αj ,
(1)
αi → λ,
(2)
αi → αj αk ,
(3)
αi αj → αk αp .
(4)
Рассмотрим новый специальный символ α0 = #, обозначающий пустое место, и будем считать, что вывод начинается не с аксиомы S, а со строки S#s для некоторого s > 0. Тогда можно заменить в P все правила видов на правила вида 4, следующим образом: αi α0 → αj α0
для αi → αj ∈ P,
(1)
αi α0 → α0 α0
для αi → λ ∈ P,
(2)
6.3. Односимвольные системы вставки и удаления
αi α0 → αj αk
для αi → αj αk ∈ P
261
(3)
при условии того, что добавлены правила вида αi α0 → α0 αi ,
1 6 i 6 n.
(5)
(Они сдвигают символ α0 = # влево.) Обозначим полученную таким способом грамматику через G0 . Тогда для каждого вывода S =⇒∗ w в грамматике G можно найти вывод S#s =⇒∗ #t w в G0 для некоторого t > 0. На основе G0 построим ограниченную ВУ-систему γ = (N ∪ T ∪ {#}, {a, c}, A, R, h) следующим образом. Рассмотрим морфизм g, определяемый равенствами g(αi ) = aci+1 a, 0 6 i 6 n. (В частности, пробел # кодируется как aca.) Далее, A = {ac2 a}, h(αi ) = aci+1 a для терминального символа αi из G. Теперь составим множество R из следующих правил. Для q-го правила в G0 , rq : αi αj → αk αp рассмотрим «закодированное» правило aci+1 aacj+1 a → ack+1 aacp+1 a и поместим в R правила (aci+1 aa, λ/c(2q−1)(n+1) , cj+1 aacs+1 a), i+1
(ac
2(q−1)(n+1)
, λ/c
(2q−1)(n+1)+j+1
, aac
0 6 s 6 n,
(rq .1)
a),
(rq .2)
(ac2(q−1)(n+1)+i+1 aa, c(2q−1)(n+1)+j−p /λ, cp+1 a), k+1
(ac
,c
2(q−1)(n+1)+i−k
p+1
/λ, aac
a).
(rq .3) (rq .4)
Заметим, что: 1) в G0 нет правил вида #αj → αk αp , значит, в предыдущих правилах i > 1; 2) в то же время j, k, p > 0, причем они могут и равняться нулю.
262
6. Системы вставки и удаления
Покажем, что L(G) = L(γ). В соответствии с приведенным выше обсуждением достаточно показать, что {w ∈ T ∗ | S#s =⇒∗ #t w в G0 для некоторых s, t > 0} = L(γ). (⊆) Рассмотрим шаг вывода x =⇒ y в G с использованием правила (унифицированного вида) rq : αi αj → αk αp . То есть x = x1 αi αj x2 =⇒ x1 αk αp x2 = y. Строке x соответствует такая «кодированная» строка g(x), что g(x) = g(x1 )aci+1 aacj+1 ag(x2 ). Поскольку в начальной строке S#s число s достаточно велико, можно считать, что g(x2 ) 6= λ. Тогда, используя правила (rq .1) − (rq .4), получим g(x) = g(x1 )aci+1 aacj+1 ag(x2 ) =⇒ g(x1 )aci+1 aa(2q−1)(n+1)+j+1 ag(x2 ) =⇒ g(x1 )ac2(q−1)(n+1)+i+1 aac(2q−1)(n+1)+j+1 ag(x2 ) =⇒ g(x1 )ac2(q−1)(n+1)+i+1 aacp+1 ag(x2 ) =⇒ g(x1 )ack+1 aacp+1 ag(x2 ) = g(y). Следовательно, каждый вывод в G0 можно смоделировать с помощью вывода в γ. Используя правила вида αi α0 → α0 αi , по каждому терминальному выводу строки w в G0 можно найти вывод строки #t g(w) в γ. Следовательно, h−1 g(w) = w, т. е. L(G) ⊆ L(γ). (⊇) Рассмотрим строку z = aci1 aaci2 a . . . acik a, где 1 6 ij 6 n + 1, 1 6 j 6 k. Назовем блок aci a при 1 6 i 6 n + 1 коротким, а при i > n + 1 длинным. В выписанной выше строке z все блоки короткие. К ней можно применить только правило вставки вида (rq .1) из R, соответствующее правилу rq из P . Пусть «закодированное» пра-
6.3. Односимвольные системы вставки и удаления
263
вило, ассоциированное с rq , имеет вид acim aacim+1 a → acp1 aacp2 a. Используя правило (rq .1), получим z =⇒ aci1 a . . . acim−1 aacim aac(2q−1)(n+1)+im+1 aacim+2 a . . . acik a = z 0 . Заметим, что при этом возник длинный блок ac(2q−1)(n+1)+im+1 a. При использовании правила вида (rq .1) короткий блок, окруженный двумя другими короткими, заменяется на длинный. Точнее, выполняется вставка (2q − 1)(n + 1) новых символов c. Поскольку при этом 2q − 1 нечетное, назовем этот блок нечетным длинным блоком. Единственным правилом из R, способным использовать длинный блок в z 0 в качестве контекста, является правило (rq .2), в котором q то же, что и на предыдущем шаге. Обратный морфизм h−1 не определен на длинных блоках, значит, рано или поздно правило (rq .2) придется применить. Это означает, что подстрока acim aac(2q−1)(n+1)+im+1 a строки z 0 заменится на ac2(q−1)(n+1)+im aac(2q−1)(n+1)+im+1 a. acim a
(∗)
заменится на длинный Следовательно, короткий блок 2(q−1)(n+1)+i m блок ac a. Поскольку число 2(q−1) четное, назовем его четным длинным блоком. Таким образом, получится строка, включающая в себя пару длинных блоков, впереди четный и за ним нечетный, длины которых однозначно определяются индексом q правила rq из G0 . Единственным правилом из R, способным использовать эти длинные блоки, является правило (rq .3), заменяющее подстро-
264
6. Системы вставки и удаления
ку (∗) на ac2(q−1)(n+1)+im aacp2 a, т. е. нечетный длинный блок на короткий. Единственный возможный способ заменить оставшийся четный длинный блок на короткий состоит в применении правила (rq .4), которое приводит к acp1 aacp2 a. Таким образом моделируется действие правила acim aacim+1 a → acp1 aacp2 a, причем это единственный путь выполнения успешного вычисления (т. е. вычисления, строящего строку из (aca)∗ g(T ∗ )). Следовательно, если ac2 a(aca)s =⇒∗ (aca)t g(w) для некоторого w ∈ T ∗ (только для таких строк w определено выражение g −1 (w)), то S#s =⇒∗ #t w в G0 , w ∈ T ∗ . Это означает, что w ∈ L(G), что и завершает доказательство. Из доказательств теорем 6.2, 6.3 и 6.7 можно получить результаты об универсальных машинах, а именно: существуют такие ВУ-системы γu = (Vu , T, −, Ru ) веса (1, 2; 1, 1) и веса (1, 1; 2, 0), а также такие ограниченные ВУ-системы, что для каждой ВУ-системы γ = (V0 , T, A0 , R0 ) можно подобрать такое множество слов A(γ) в алфавите Vu , что L(γu0 ) = L(γ) для γu0 = (Vu , T, A(γ), Ru ). Итак, универсальная ВУ-система моделирует любую данную ВУ-систему γ, или каждая конкретная система γ запускается как программа для устройства γu . Эти результаты можно получить следующим образом. Возьмем универсальную грамматику Gu = (Nu , T, Pu ) типа 0 и построим эквивалентную ей ВУ-систему так же, как это сделано в доказательствах теорем 6.2, 6.3 (или 6.7). Поскольку в Gu нет аксиом, в полученной системе γu их тоже не будет. При этом γu окажется искомой универсальной системой. Действительно, для каждой ВУ-системы γ с тем же терминальным алфавитом существует эквивалентная ей грамматика G = (N, T, S, P ) типа 0. Рассмотрим (так же, как это было проделано в конце раздела 3.3, когда строилась универсальная грамматика типа 0) код w(G) для этой грамматики. В аксиомах BSE, Sc, использовавшихся в доказательствах теорем 6.2 и 6.3, соответственно, S заменим на w(G)S. Затем, поскольку L(G0u ) = L(G) для G0u = (Nu ,
6.3. Односимвольные системы вставки и удаления
265
T, w(G)S, Pu ) и L(G) = L(γ), L(G0u ) = L(γu0 ) для γu0 , полученной из γu описанным выше способом, получим L(γu0 ) = L(γ), что и означает выполнение свойства универсальности. Видно, что в действительности работающая на γu программа γ состоит лишь из одной строки. Тот же результат остается верен и для ограниченных ВУ-систем с той разницей, что единственная программа-аксиома должна быть обеспечена произвольно большим количеством пробелов (aca, при кодировании в доказательстве теоремы 6.7). Таким образом, благодаря существованию универсальных машин Тьюринга и универсальных грамматик Хомского типа 0, мы получаем доказательство теоретической возможности построения универсального (программируемого) молекулярного компьютера, основанного на операциях вставки и удаления. Доказательство теоремы 6.7 наводит на другое интересное размышление, касающееся так называемого «мусора в ДНК». Известно, что б´ oльшая часть генома человека (около 97%) состоит из коротких повторяющихся последовательностей, которые не могут содержать значительного объема информации и не выполняют никаких известных функций. «Объяснение» этого с точки зрения компьютерных наук дано в [315]. Не вдаваясь в детали, упомянем, что основное предположение состоит в том, что высшие формы жизни должны иметь в генотипе полную вычислительную силу для того, чтобы обладать эффективной иммунной системой. Но вычислительная полнота приводит к ненадежности, что опасно для самой жизни. Значит, должна существовать система исправления ошибок («убийца неудачных копий»). Вывод: «возможно, что мусор в ДНК в значительной степени состоит из следов старых ошибок» [315]. Приведенное выше доказательство дает более «мирное» объяснение: если нужно обеспечить высокую вычислительную сложность, то потребуется произвольно большое рабочее пространство, которое в начале вычисления имеет вид последовательности пустых символов (пробелов или aca, здесь); во время вычисления пустое пространство перемешивается с текущей значимой строкой, пробелы расходуются и вновь
266
6. Системы вставки и удаления
добавляются в строку так, что в конце получается произвольно длинная последовательность повторяющихся строк. Короче, мусор в ДНК может представлять собой множество ячеек рабочей области «вычислительного устройства». Это объясняет как его изобилие, так и тот факт, что он состоит из повторов одной и той же короткой строки. В терминах [315] эти размышления показывают, что подход компьютерных наук к исследованию ДНК и РНК может оказаться столь же интересен для биологии, как и для молекулярных вычислений.
6.4
Использование только вставки
При разработке «компьютера», основанного на операциях вставки и удаления, естественно попытаться взять в качестве его основы как можно более простую модель. Одна из возможных идей состоит в том, чтобы использовать либо только операции вставки, либо только операции удаления. Как уже было отмечено в лемме 6.1(ii), применяя одни только операции вставки, можно породить лишь контекстные языки. Более того, как видно из теоремы 6.6 в разделе 6.2, семейство IN S∗∗ DEL00 сильно ограничено. Тем не менее, применяя модель с некоторыми сжимающими механизмами (например, с прямыми и обратными морфизмами), можно вновь охарактеризовать рекурсивно перечислимые языки. Пока не ясно, как можно применить устройство, основанное лишь на операции удаления с дополнительными механизмами (отличными от вставки), чтобы получить языки из RE. Поэтому здесь мы рассмотрим только семейства IN Snm DEL00 , где n, m > 0, в том числе, и с условиями n = ∗ или m = ∗. Для того чтобы иметь понятие о размере и свойствах этих семейств, упомянем ряд известных результатов о них. Доказательства можно найти в [1, 236, 237, 317] (некоторые из этих результатов доказаны в разделе 6.2, а подробности их доказательств можно найти в [249]). 1. F IN ⊂ IN S∗0 DEL00 ⊂ IN S∗1 DEL00 ⊂ · · · ⊂ IN S∗∗ DEL00 ⊂ CS.
6.4. Использование только вставки
267
2. Семейство REG несравнимо с семействами IN S∗m DEL00 , m > 0. 3. Семейства LIN и CF несравнимы со всеми семействами IN S∗m DEL00 , m > 2, и IN S∗∗ DEL00 . 4. Семейство IN S22 DEL00 содержит неполулинейные языки. 5. Все семейства IN S∗m DEL00 , m > 0 являются анти-AFL. Отметим различие между приведенными выше пунктами 2 и 3. Как REG, так и LIN и CF несравнимы с IN S∗∗ DEL00 . Ниже будет показано, что каждый регулярный язык можно породить, используя только операцию вставки, т. е. эта операция позволяет вычислять на уровне конечных автоматов. Причем при использовании произвольных контекстов это можно сделать без дополнительных операций, а если дополнить систему морфизмами, то достаточно будет контекстов длины 1. Теорема 6.8. REG ⊂ IN S∗∗ DEL00 . Доказательство. Пусть L — регулярный язык, а M = (K, V, q0 , F, δ) — минимальный распознающий его детерминированный конечный автомат. Для каждого слова w ∈ V ∗ , определим отображение ρw : K −→ K так: ρw (q) = q 0 тогда и только тогда, когда (q, w) `∗ (q 0 , λ),
q, q 0 ∈ K.
Очевидно, что если x1 , x2 ∈ V ∗ таковы, что ρx1 = ρx2 , то для каждых u, v ∈ V ∗ , строка ux1 v лежит в L тогда и только тогда, когда ux2 v лежит в L. Множество отображений из K в K конечно. Значит, и множество различных отображений ρw тоже конечно. Обозначим их количество через n0 . Построим ВУ-систему γ = (V, V, A, R), в которой 1. A = {w ∈ L | |w| 6 n0 − 1}, 2. R = {(w, λ/v, λ) | |w| 6 n0 − 1, 1 6 |v| 6 n0 , |wv| 6 n0 , и ρw = ρwv }.
268
6. Системы вставки и удаления
Из определения отображений ρw и определений множеств A и R немедленно следует, что L(γ) ⊆ L. Предположим, что противоположное включение неверно, и выберем во множестве L − L(γ) строку x минимальной длины. Тогда x ∈ / A. Значит, |x| > n0 . Пусть x = zz 0 , где |z| = n0 0 и z ∈ V ∗ . Если z = a1 a2 . . . an0 , то у него n0 + 1 префиксов, а именно, λ, a1 , a1 a2 , . . . , a1 . . . an0 . Но различных отображений ρw всего n0 . Следовательно, найдутся два таких префикса u1 , u2 слова z, что u1 6= u2 и ρu1 = ρu2 . Без ограничения общности можно предполагать, что |u1 | < |u2 |. Заменив u2 на u1 , получим строку x0 , снова лежащую в L. Поскольку |x0 | < |x|, а x — строка минимальной длины во множестве L − L(γ), получим x0 ∈ L(γ). Однако |u2 | − |u1 | 6 |u2 | 6 n0 , т. е. если u2 = u1 u3 , то (u1 , λ/u3 , λ) — правило вставки из R. Это означает, что x0 =⇒in x, т. е. x ∈ L(γ). Противоречие, из которого следует, что L ⊆ L(γ). Строгость включения очевидна (см., например, теорему 6.5 из раздела 6.2). Теорема 6.9. Каждый регулярный язык является кодированием некоторого языка из семейства IN S∗1 DEL00 . Доказательство. Пусть G = (N, T, S, P ) — регулярная грамматика (а значит ее правила имеют вид X → aY или X → a для X, Y ∈ N , a ∈ T ). Построим регулярную грамматику G0 = (N, N × T, S, P 0 ), в которой P 0 = {X → (X, a)Y | X → aY ∈ P для a ∈ T, X, Y ∈ N } ∪ {X → (X, a) | X → a ∈ P для X ∈ N, a ∈ T }. Кроме этого, рассмотрим кодирование h : (N × T )∗ −→ T ∗ , определяемое равенствами h (X, a) = a, X ∈ N , a ∈ T . Ясно, 0 что L(G) = h L(G ) , таким образом, достаточно доказать, что L(G0 ) ∈ IN S∗1 DEL00 . Рассмотрим множество W = {x ∈ (N × T )∗ | где x = x1 (X, a)x2 (Y, b)x3 для
6.4. Использование только вставки
269
x1 , x2 , x3 ∈ (N × T )∗ , тогда X 6= Y }. Ясно, что для каждого y ∈ W , выполнено |y| 6 card(N ) и, следовательно, множество W конечно. Построим ВУ-систему γ = (N × T, N × T, A, R), в которой 1. A = L(G0 ) ∩ (N × T )W , 2. R = (X, a), λ/(X1 , a1 ) . . . (Xk , ak ), (Y, b) | (X1 , a1 ) . . . (Xk , ak ) ∈ W , b ∈ T , X → aX1 ∈ P , X k → ak Y ∈ P , Xi → ai Xi+1 ∈ P для всех 1 6 i 6 k − 1 . Включение L(γ) ⊆ L(G0 ) очевидно. Обратно, пусть x ∈ L(G0 ) — произвольная строка. Если x ∈ (N × T )W , то x ∈ L(γ). Если x ∈ / W , то x = x1 (X, a)x2 (X, b)x3 , x1 , x2 , x3 ∈ (N ∪ T )∗ . Ясно, что y = x1 (X, b)x3 ∈ L(G0 ) и |y| < |x|. Выберем x1 , x2 , x3 таким образом, что (X, a)x2 ∈ W . Тогда y =⇒ x — корректный вывод в соответствии с правилами из R. Если y ∈ (N × T )W , то x ∈ L(γ). В противном случае будем повторять описанную выше процедуру до тех пор, пока не получим такую строку z ∈ (N × T )W , что z =⇒ . . . =⇒ y =⇒ x, т. е. x ∈ L(γ), что и завершает доказательство. Если разрешены и прямые и обратные морфизмы, и, вдобавок, используются «не слишком короткие» контексты, то достигается порождающая сила машин Тьюринга. Теорема 6.10. Каждый язык L ∈ RE можно представить в виде L = g(h−1 (L0 )), где g — слабое кодирование, h — морфизм, и L0 ∈ IN S47 DEL00 . Доказательство. Рассмотрим язык L ⊆ T ∗ , L ∈ RE, порожденный грамматикой Хомского G = (N, T, S, P ) типа 0, записанной в нормальной форме Куроды. Тогда P содержит правила следующих двух типов: 1. X → Y Z, X → a, X → λ для X, Y, Z ∈ N , a ∈ T , 2. XY → U Z для X, Y, U, Z ∈ N . Вид этих правил показывает, что каждая строка из L(G) порождается в результате вывода, состоящего из двух фаз, на
270
6. Системы вставки и удаления
первой используются только нетерминальные правила, а на второй только терминальные. (Если потребуется удалить символ Q, чтобы подготовить подстроку XY для не контекстно свободного правила из P , то заменим Q на Q0 и сдвинем Q0 в конец строки, где рано или поздно он будет стерт по правилу Q0 → λ.) Более того, можно предполагать, что на второй фазе производится левосторонний вывод. Добавим три новых символа #, $, c и построим ВУ-систему γ = N ∪ T ∪ {#, $, c}, N ∪ T ∪ {#, $, c}, {c4 Sc6 }, R , в которой R включает в себя следующие правила вставки: (1) для каждого контекстно-свободного правила r : X → x ∈ P поместим в R следующие правила: (1.r): (α1 α2 α3 α4 X, λ/#$x, α5 α6 α7 α8 α9 α10 ) для αi ∈ N ∪ {#, $, c}, 1 6 i 6 10, α3 α4 ∈ / N {$}, α2 α3 α4 ∈ / N {$}N , α1 α2 α3 α4 ∈ / N {$}N N , α5 ∈ / {#, $}, и α5 α6 α7 α8 α9 ∈ / N {#$}N {#}; (2) для каждого не контекстно-свободного правила r : XY → U Z ∈ P поместим в R следующие правила: (2.r.1): (α1 α2 α3 X, λ/$U Z, Y α4 ) для αi ∈ N ∪ {#, $, c}, 1 6 i 6 4, и α1 α2 α3 ∈ / N {$}N , α2 α3 ∈ / N {$}, α4 ∈ / {#, $}, (2.r.2): (X$U ZY, λ/#$, α) для α ∈ N ∪ {c}, (2.r.3): (X, λ/#, $U ZY #$); (3) для каждых X, Y ∈ N поместим в R следующие правила: (3.XY.1): (α1 α2 α3 XY #$, λ/X#, α4 α5 α6 ) для αi ∈ N ∪ {#, $, c}, 1 6 i 6 6, α1 α2 α3 ∈ / N {$}N , причем если α4 α5 = X#, то α6 = $; (3.XY.2): (X, λ/#$, Y #$X#α) для α ∈ N ∪ {c}, (3.XY.3): ($Y #$X#, λ/$X, α) для α ∈ N ∪ {c}. Все правила (1.r) назовем правилами типа 1, все правила (2.r.i) для каждого не контекстно-свободного правила r из P и 1 6 i 6 3 назовем правилами типа 2, а все правила (3.XY.i) для X, Y ∈ N и 1 6 i 6 3 — правилами типа 3.
6.4. Использование только вставки
271
Обозначим через M множество строк α#$ для α ∈ N ∪ T . Каждой строке w ∈ M поставим в соответствие символ bw . Пусть W — множество всех таких символов. Определим морфизм ∗ ∗ h : W ∪ T ∪ {c} −→ N ∪ T ∪ {#, $, c} , следующим образом: h(bw ) = w, w ∈ M, h(a) = a,
a ∈ T,
h(c) = c. Кроме того, рассмотрим слабое кодирование ∗ g : W ∪ T ∪ {c} −→ T ∗ , определяемое как g(bw ) = λ, w ∈ M, g(c) = λ, g(a) = a, a ∈ T. Получаем L(G) = g h−1 L(γ) . Смысл описанной выше конструкции состоит в следующем. Правила вставки типа 1 моделируют контекстно свободные правила из G, а правила типа 2 моделируют не контекстно свободные правила из G. Правила типа 3 применяются для того, чтобы в текущей строке создать возможность для использования правил типа 2. Это делается следующим образом. Символы #, $ назовем метками. Будем называть нетерминальный символ #-помеченным, если за ним следует символ #, за которым стоит символ, отличный от $. Скажем, что нетерминальный символ $-помечен, если за ним следует символ $. И наконец, скажем, что нетерминальный символ #$-помечен, если за ним следует пара символов #$. Далее, #-, $-, или #$-помеченные нетерминальные символы назовем просто помеченными (к удалению), а все остальные непомеченными. Строку, состоящую из непомеченных символов множества N ∪ T ∪ {c} и из блоков α#$, в которых α ∈ N ∪ T , будем считать легальной.
272
6. Системы вставки и удаления
Например, c4 Sc6 (аксиома из γ) легальна, и строка cX#$XaY #$c тоже легальна. В последней строке первое вхождение X и символ Y помечены (точнее #$-помечены), тогда как второе вхождение X и все символы c и a непомечены. Напротив, строка cX$XaY #$c легальной не будет, поскольку первое вхождение символа X является $-помеченным, а не #$-помеченным. По правилам типа 3 можно переместить непомеченный нетерминальный символ X через блок X#$, расположенный непосредственно справа от X. Таким способом можно создать пару XY , которая необходима для моделирования контекстно зависимых правил из G. Помеченные символы вместе с метками и символами c можно считать «невидимым мусором». Подразумевается, что в каждый момент строка непомеченных символов соответствует сентенциальной форме в G. Действительно, по определению h и g, этот «невидимый мусор» стирается из каждой легальной строки, порожденной γ. Поскольку в образе h−1 нет непомеченных нетерминальных символов, в результате получается терминальная строка. Чтобы доказать равенство L(G) = g h−1 L(γ) , сперва покажем, что c помощью правил групп 1, 2, 3 из R можно добиться того, что нам требуется (тем самым докажем включение ⊆), затем покажем, что с помощью этих правил ничего большего не добиться (т. е. верно и включение ⊇). Утверждение 6.2. Перед применением правила (α1 α2 α3 α4 X, λ/#$x, α5 α6 α7 α8 α9 α10 ) типа 1 вхождение символа X в обрабатываемой части строки не помечено, а после применения оно становится помеченным и, кроме того, появляются непомеченные вхождения символов слова x.
6.4. Использование только вставки
273
Тот факт, что X не помечено в строке, к которой применяется правило, подтверждается тем, что α5 отлично от # и $. Поскольку получается подстрока X#$xα5 , очевидны и остальные утверждения. Утверждение 6.3. Перед применением группы правил (2.r.i), 1 6 i 6 3, ассоциированных с правилом r : XY → U Z из P , символы XY в обрабатываемой части строки не помечены, а после применения они становятся помеченными, и, кроме того, появляется непомеченные U Z. В текущей строке подстрока, к которой применимо правило (2.r.1), имеет вид α1 α2 α3 XY α4 , где α4 ∈ / {#, $}, значит, X и Y не помечены. Затем возникает строка α1 α2 α3 X$U ZY α4 , к которой применимо правило (2.r.2), приводящее к α1 α2 α3 X$U ZY #$α4 . Далее, по третьему правилу получается α1 α2 α3 X#$U ZY #$α4 . Видно, как третье правило завершает #$-помечивание символа X, а символ Y оказался #$-помечен еще на втором шаге. Ясно, что U Z помеченными быть не могут. Таким образом, из непомеченного блока XY получается подстрока с единственным непомеченным блоком U Z (если не обращать внимание на подстроки α1 α2 α3 и α4 ). Утверждение 6.4. Применение правил третьей группы к легальной строке производит замену подстроки XY #$α (т. е. с непомеченным X) на подстроку, состоящую из блоков из N {#$} и оканчивающуюся на Xα (опять с непомеченным X). Правило (3.XY.1) можно применить к строке xα1 α2 α3 XY #$α4 α5 α6 y.
274
6. Системы вставки и удаления
Оно изготовит из нее строку xα1 α2 α3 XY #$X#α4 α5 α6 y. Теперь применимо второе правило, дающее в результате xα1 α2 α3 X#$Y #$X#α4 α5 α6 y. Наконец, третье правило вырабатывает строку xα1 α2 α3 X#$Y #$X#$Xα4 α5 α6 y. Следовательно, подстрока XY #$ оказалась замененной на строку X#$Y #$X#$X, у которой в крайней правой позиции стоит непомеченный символ X. Таким образом, если работа начинается с легальной строки (первоначально у нас c4 Sc6 ), то правила из R могут смоделировать работу правил из G, вновь вырабатывая при этом легальную строку. Более того, если обозначить через umk(x) строку непомеченных символов в легальной строке x, порожденной γ, то выполняется Утверждение 6.5. (i) Если вывод x =⇒∗ y выполнен применением правила группы 1 или всех трех правил (2.r.i), 1 6 i 6 3, ассоциированных с не контекстно-свободным правилом r из G, то вывод umk(x) =⇒ umk(y) выполняется применением соответствующего правила из G. (ii) Если вывод x =⇒∗ y выполнен применением трех правил группы 3, ассоциированных с одними и теми же X, Y из N , то umk(x) = umk(y). Утверждение 6.6. Если x = g h−1 (y) для некоторого y ∈ L(γ), то y — легальная строка и x = umk(y), y ∈ T ∗ .Обратно, если y ∈ L(γ) и umk(y) ∈ T ∗ , то umk(y) = g h−1 (y) . Это утверждение непосредственно следует из определений морфизмов g и h. Эти утверждения доказывают включение L(G) ⊆ g h−1 L(γ) . Покажем теперь, что лишь описанные выше процессы вывода приводят к легальным строкам.
6.4. Использование только вставки
275
Утверждение 6.7. После применения правила (2.r.1) с нетерминальными символами X, Y , U , Z не может работать никакое правило, кроме (2.r.2). А после (2.r.2) можно применить только правило (2.r.3). Действительно, рассмотрим подслово α1 α2 α3 XY α4 , используемое правилом (2.r.1) для r : XY → U Z ∈ P . После применения (2.r.1) получаем α1 α2 α3 X$U ZY α4 . Теперь отметим следующие факты: 1. Никакое правило типа (1.q) нельзя применить ни для какой из четырех букв X, Y, U, Z из-за символов βi , 1 6 i 6 10 в правилах (β1 β2 β3 β4 X, λ/#$x, β5 β6 β7 β8 β9 β10 ) типа (1.q), q : X → x ∈ P . (Например, β2 β3 β4 ∈ / N {$}N , значит, к букве Z нельзя применить правило (1.q), соответствующее q : Z → x ∈ P .) 2. Никакое правило (2.q.1) нельзя применить ни для пары U Z, ни для пары ZY из-за символов β1 β2 β3 в правилах (β1 β2 β3 X, λ/$Y Z, U β4 ) типа (2.q.1), ассоциированных с q : XU → Y Z ∈ P . 3. Нельзя применить никакое правило (2.q.2), q 6= r. Это очевидно, так как для его применения необходимо подслово X$U ZY , которое однозначно выделяет правило r из P . 4. Нельзя применить никакое правило (2.q.3), поскольку для этого необходима подстрока X$U ZY #$, а появившаяся выше буква α4 отлична от #. 5. Нельзя применить никакое правило (3.CD.1), поскольку наша строка не содержит подстроки CD#$. По тем же соображениям нельзя применить правила (3.CD.2) и (3.CD.3) для любых C, D ∈ N . Применив правило (2.r.2), получим строку α1 α2 α3 X$U ZY #$α4 . Ничего не изменилось ни слева от подстроки X$U ZY , ни внутри нее. Более того, теперь символ Y стал #$-помеченным. Как и прежде видно, что никакое правило, кроме (2.r.3), нельзя применить к этой строке. Например:
276
6. Системы вставки и удаления
1. Никакое правило (3.ZY.1) нельзя применить к паре ZY (единственной паре, за которой следует #$), поскольку слово β1 β2 β3 в правиле этого типа (β1 β2 β3 ZY #$, λ/Z#, β4 β5 β6 ) не может совпадать с X$U . 2. Нельзя применить никакое правило (3.CD.2), поскольку в нашей строке нет ни одного #-помеченного символа C. По тем же соображениям нельзя применить правило (3.CD.3), C, D ∈ N . Утверждение 6.8. После применения правила (3.XY.1), с нетерминальными символами X, Y не может работать никакое правило, кроме (3.XY.2). А после (3.XY.2), можно применить только правило (3.XY.3). Правило (3.XY.1) заменяет подстроку α1 α2 α3 XY #$α4 α5 α6 на w = α1 α2 α3 XY #$X#α4 α5 α6 . Теперь отметим следующие факты: 1. Никакое правило (β1 β2 β3 β4 X, λ/#$x, β5 β6 β7 β8 β9 β10 ) типа (1.q) нельзя применить (X — единственный непомеченный символ в нашей строке) из-за того, что слово β5 β6 β7 β8 β9 β10 не может совпадать с Y #$X#α4 . 2. Нельзя применить никакое правило типа (2.q.1), поскольку в w нет двух непомеченных символов. 3. Нельзя применить никакое правило типов (2.q.2) и (2.q.3), поскольку в w нет ни одного $-помеченного символа. 4. Нельзя применить никакое правило (3.CD.1): (β1 β2 β3 CD#$, λ/c$, β4 β5 β6 ). Единственная возможность применения правила (3.XY.1) (поскольку других символов здесь нет) предотвращается благодаря слову β4 β5 β6 . 5. Нельзя применить никакое правило (3.CD.2), в котором XY 6= CD, поскольку нет необходимых для него символов C и D.
6.4. Использование только вставки
277
6. Нельзя применить никакое правило (3.CD.3), поскольку для него нужна подстрока вида $D#$C#, а такой подстроки в w нет. Следовательно, придется применить правило (3.XY.2). Получим строку α1 α2 α3 X#$Y #$X#α4 α5 α6 . Здесь нет непомеченных символов, значит, нельзя использовать правила видов (1.r), (2.q.1), (2.q.2), (2.q.3), (3.CD.1), (3.CD.2). Правило (3.CD.3) можно применить, если только XY = CD. Утверждение 7 доказано. Следовательно, нельзя смешивать правила из групп (1.r) (для контекстно-свободных правил r из P ), (2.r.i), 1 6 i 6 3 (для не контекстно-свободных правил r из P ) и (3.XY.i), 1 6 i 6 3 (для X, Y ∈ N ), а внутри этих групп необходимо применять правила в порядке возрастания индекса i от 1 до 3. Следовательно, система γ может лишь моделировать выводы в G на непомеченных символах. Это означает, что если h−1 определено на y ∈ L(γ), то c4 Sc6 =⇒∗ umk(y) в грамматике G и g h−1 (y) ∈ L(G), что доказывает включение g h−1 L(γ) ⊆ L(G). Отметим, что система γ имеет вес (4, 7; 0, 0) (4 достигается в правилах типа (1.r), а 7 достигается в правилах типа (3.XY.1)). Доказательство предыдущей теоремы можно видоизменить следующим образом. S 1. Запишем L = a∈T (∂ar (L){a}) и для каждого языка ∂ar (L) рассмотрим грамматику Ga = (Na , T, Sa , Pa ). Будем считать, что алфавиты Na , a ∈ T попарно не пересекаются. 2. Работа начинается с множества аксиом {c4 Sa ca | a ∈ T }. 3. К правилам приведенной выше конструкции, ассоциированным с Pa , a ∈ T , добавим правила с суффиксами-«свидетелями» типа α1 . . . αk , оканчивающимися символом c. Например, вместе с (α1 α2 α3 α4 X, λ/#$x, α5 α6 α7 α8 α9 α10 )
(1.r)
278
6. Системы вставки и удаления
рассмотрим также правила, в которых α5 α6 α7 α8 α9 α10 заменено на α5 α6 α7 α8 α9 c для α5 ∈ {#, $}, α5 α6 α7 α8 c, α5 α6 α7 c, α5 α6 c, α5 c, для α5 , α6 , α7 , α8 , α9 ∈ N ∪ { $}, c. То же самое сделаем и с правилами всех остальных типов, в суффиксах которых есть символы α. Эти укороченные правила можно применять к концу текущей строки, по-прежнему не допуская таких выводов, которые порождают строки, не лежащие в языках ∂ar (L). 4. Кроме того, позволим терминальным символам мигрировать вправо по правилам третьей группы, т. е. разрешим в правилах группы 3 символам X и Y быть терминальными, а Y разрешим быть и буквой c. 5. Добавим следующие правила: (ac, λ/#$a#, b), a, b ∈ T,
(4.a.1)
(a, λ/#$, c#$a#b), a, b ∈ T,
(4.a.2)
($c#$a#, λ/$ca, b), a, b ∈ T.
(4.a.3)
Заметим, что при действии этих правил символ c становится #$-помеченным, и, кроме того, вместе с перемещенным вправо непомеченным символом a появляется непомеченный символ c. Шаг вывода имеет вид xacbx0 =⇒ xac#$a#bx0 =⇒ xa#$c#$a#bx0 =⇒ xa#$c#$a#$cabx0 , т. е. символ a перемещается через символ c, расположенный рядом с символом b.
6.4. Использование только вставки
279
6. Добавим еще правило ($c#$a#, λ/$da, b),
a, b ∈ T,
(4.a.4)
где d — новый символ, добавленный к алфавиту γ. Правило (4.a.1) использует непомеченный символ c, а если применить вместо (4.a.3) правило (4.a.4), то нового непомеченного вхождения c не появится, значит, правила (4.a.i) больше нельзя будет применять. Следовательно, для регулярного языка L0 = {α#$ | α ∈ (N ∪ T ∪ {c})∗ }{d} выполняется равенство L = L0 \L(γ). Действительно, это деление на L0 слева выделяет из L(γ) строки, содержащие символ d, перед которым стоят только #$-помеченные символы. Это означает, что все нетерминальные символы были заменены на терминальные, и все терминальные передвинуты вправо, это значит, что справа от d остались их копии. Таким образом, получаем Следствие 6.1. Каждый язык L ∈ RE можно представить в виде L = L0 \L0 , где L0 — регулярный язык, а L0 ∈ IN S47 DEL00 . Вопрос, можно ли заменить здесь числа 4 и 7 на меньшие, остается открытой проблемой. В любом случае, из IN S∗1 DEL00 ⊆ CF и того факта, что семейство CF замкнуто относительно обратных морфизмов и относительно произвольных морфизмов, следует, что верхний индекс 7 нельзя заменить ни на 0 ни на 1. Можно сделать весьма интересное заключение о размерах семейств IN Snm DEL00 . Следствие 6.2. Каждое семейство IN Snm DEL00 , n > 4, m > 7, не сравнимо ни с одним из семейств FL таким, что LIN ⊆ F L ⊂ RE, и FL замкнуто относительно слабых кодирований и обратных морфизмов или относительно левых делений на регулярные языки.
280
6. Системы вставки и удаления
Доказательство. Поскольку LIN − IN S∗∗ DEL00 6= ∅, получаем F L−IN S∗∗ DEL00 6= ∅. Так как F L, замкнутое относительно слабых кодирований и обратных морфизмов, строго содержится в RE, включение IN S47 DEL00 ⊆ F L не может выполняться. (иначе RE ⊆ F L ⊂ RE, противоречие). В качестве примеров семейств языков, обладающих свойствами упомянутых выше семейств F L, можно привести семейства M AT λ и ET 0L.
6.5
Комментарии к библиографии
Системы вставки (без использования операций удаления) впервые рассматривались в [1]. Такие системы исследовались в [236, 237, 317]. Системы вставки и удаления были рассмотрены в [162], после систематического изучения операций вставки и удаления в [155] (где, однако, в основном рассматривались комбинаторные свойства и свойства разрешимости нескольких вариантов этих операций, а не основанные на них порождающие механизмы). Теорема 6.1 взята из [210] (подобный результат появлялся и в [162], но с более сложным доказательством). Теоремы 6.2 и 6.7 взяты из [161]. Теорема 6.3 новая. Теорема 6.4 основана на аналогичном доказательстве из [1]. Доказательство теоремы 6.8 основано на доказательстве из [80] (где работа происходит не с системами вставки, а с контекстуальными грамматиками). Теорема 6.10 и ее следствия взяты из [210]. Более подробно с семействами IN Snm DEL00 можно познакомится как по упомянутым выше статьям, так и по монографии [249]. Обсуждения того, как операции вставки и удаления появляются при работе с ДНК и РНК, можно найти в [315] и соответственно в [23].
Глава 7 Системы сплетения Начиная с этой главы, мы будем исследовать модели вычислимости, основанные на операции сплетения, которая на формальном уровне имитирует рекомбинантное поведение молекул ДНК, проявляющееся под влиянием рестриктаз и лигаз. Говоря неформально, процесс сплетения двух строк включает в себя их рассечение в местах, задаваемых данными подстроками (они соответствуют сайтам узнавания для рестриктаз), и перекрестное сцепление полученных фрагментов (что отвечает реакции сшивки). После краткого обсуждения перехода от операции рекомбинации, происходящей in vivo, к абстрактной операции сплетения, мы начинаем математическое изучение последней, исследуя как итеративный, так и неитеративный случаи. Далее мы определяем фундаментальное понятие следующих глав — понятие расширенной H-системы, порождающего устройства, использующего в качестве основной составляющей операцию сплетения. В данной главе мы обсудим операцию сплетения и системы сплетения в общей и простой формах. Как выяснится, H-системы с конечными компонентами могут порождать лишь регулярные языки, поэтому в следующих главах мы рассмотрим дополнительные управляющие механизмы, регулирующие работу H-систем. Мы исследуем механизмы, подсказанные как теорией регулируемых переписывающих систем (в главе 8), так и теорией грамматических систем (в главе 10). В большинстве случаев мы получим характеризации рекурсивно перечислимых языков, а значит, вычислительную полноты. Из соответствующих доказательств при этом извлекаются универсальные H-системы рассматриваемых типов.
282
7. Системы сплетения
7.1
От рекомбинации ДНК к операции сплетения
Давайте начнем с примера, иллюстрирующего разрезание и склеивание, осуществляемые in vitro рестриктазами и лигазами на двойных цепочках, и сходного с рекомбинацией ДНК, происходящей in vivo. Рассмотрим следующие три молекулы ДНК: 50 − ЦЦЦЦЦТЦГАЦЦЦЦЦ − 30 30 − ГГГГГАГЦТГГГГГ − 50 50 − АААААГЦГЦААААА − 30 30 − ТТТТТЦГЦГТТТТТ − 50 50 − ТТТТТГЦГЦТТТТТ − 30 30 − АААААЦГЦГААААА − 50 Рестрикционные ферменты (эндонуклеазы) умеют распознавать определенные подстроки двойных цепочек ДНК и разрезать последние, создавая либо «прямые», либо «липкие» концы. Например, последовательности, разрезаемые ферментами TaqI, SciNI и HhaI, суть соответственно: ТЦГА АГЦТ
ГЦГЦ ЦГЦГ
ГЦГЦ ЦГЦГ
Мы уже обсуждали этот способ разрезания молекул ДНК. В частности, воздействуя на три приведенные выше молекулы, ферменты TaqI, SciNI и HhaI однозначно выберут места для рассечений, в результате чего возникнут шесть фрагментов: 50 − ЦЦЦЦЦТ 30 − ГГГГГАГЦ
ЦГАЦЦЦЦЦ − 30 ТГГГГГ − 50
50 − АААААГ 30 − ТТТТТЦГЦ
ЦГЦААААА − 30 ГТТТТТ − 50
50 − ТТТТТГЦГ 30 − АААААЦ
ЦТТТТТ − 30 ГЦГААААА − 50
7.1. От рекомбинации ДНК к сплетению
283
Заметим, что во всех случаях мы получаем фрагменты с одинаковым, если читать в направлении от 50 к 30 , выступом ЦГ, но есть важное различие между случаем TaqI, SciNI и случаем HhaI: у выступов, создаваемых первыми двумя ферментами, свободны 50 -концы, в то время как у обоих выступов, создаваемых HhaI, свободны 30 -концы. Концы первых четырех фрагментов совместимы. В результате сшивки они могут соединиться вместе, либо восстанавливая исходные молекулы, либо путем рекомбинации создавая новые. Рекомбинация указанных четырех фрагментов приводит к возникновению следующих новых молекул: 50 − ЦЦЦЦЦТЦГЦААААА − 30 30 − ГГГГГАГЦГТТТТТ − 50 50 − АААААГЦГАЦЦЦЦЦ − 30 30 − ТТТТТЦГЦТГГГГГ − 50 Их появление возможно, поскольку выступы соответствуют друг другу. Таким образом, операция, которую мы должны смоделировать, состоит из двух этапов: (1) рассечение последовательностей в четко определенных местах и (2) склейка фрагментов с подходящими концами. Благодаря комплементарности Уотсона-Крика, можно рассматривать эту операцию как действие над одинарными цепочками (т. е. над строками). Для молекул ДНК этот абстрактный шаг очевиден; например, три молекулы, с которых мы начинали, соответственно отождествляются со строками ЦЦЦЦЦТЦГАЦЦЦЦЦ, АААААГЦГЦААААА, ТТТТТГЦГЦТТТТТ, при условии, что последние представляют цепочки молекул ДНК, читаемые в направлении от 50 к 30 . Для схем рестрикционных ферментов мы должны сохранить не только информацию о включенных в них нуклеотидах, но еще и о типе концов, возникающих при разрезании молекул. Такая схема описывается тройкой строк (u, x, v) над алфави-
284
7. Системы сплетения
том {А, Ц, Г, Т}, где (u, v) — окружение, в котором происходит рассечение, а x — выступающая последовательность. Для ферментов из нашего примера это тройки (Т, ЦГ, А), (Г, ЦГ, Ц), (Г, ЦГ, Ц). Известно, однако, что концы, создаваемые первым и вторым ферментами, совместимы друг с другом и не совместимы с результатом деятельности третьего фермента, несмотря на то, что соответствующая ему тройка ничем не отличается от тройки второго фермента. Эту коллизию мы разрешим, разделив схемы на два класса. Скажем, что первые две тройки лежат, например, в Классе 1, а последняя — в Классе 2. Тогда при рекомбинации строк мы допустим сцепление лишь тех фрагментов, которые произведены в соответствии с тройками одного и того же класса. Формально, для двух строк w1 , w2 и троек (u1 , x1 , v1 ), (u1 , x2 , v2 ), таких что w1 = w10 u1 x1 v1 w100 , w2 = w20 u2 x2 v2 w200 , операция рекомбинации разрешена, только когда (u1 , x1 , v1 ) и (u2 , x2 , v2 ) — схемы одного и того же класса и x1 = x2 . Строки, получающиеся в результате рекомбинации, таковы: z1 = w10 u1 xv2 w200 , z2 = w20 u2 xv1 w100 , где x = x1 = x2 . Фактически мы сделали здесь еще одно небольшое обобщение, перейдя к некоему произвольному алфавиту. Для того чтобы получить наиболее общую операцию над строками, моделирующую операцию, описанную выше, нужно сделать еще три шага. Во-первых, вместо отношения «быть из одного и того же класса», введенного на схемах (u, x, v), мы можем рассмотреть произвольное отношение, задаваемое непосредственно парами ((u1 , x, v1 ), (u2 , x, v2 )), такими, что тройки (u1 , x, v1 ), (u2 , x, v2 )
7.1. От рекомбинации ДНК к сплетению
285
из пары лежат в одном классе и дают совместимые концы, т. е., другими словами, фрагментам, возникающим с их помощью, разрешено рекомбинировать. Во-вторых, результатом рекомбинации для пары ((u1 , x, v1 ), (u2 , x, v2 )) и строк w1 , w2 , таких что w1 = w10 u1 xv1 w100 и w2 = w20 u2 xv2 w200 , можно считать только строку z1 = w10 u1 xv2 w200 , поскольку строка z2 = w20 u2 xv1 w100 — это результат аналогичной рекомбинации относительно симметричной пары ((u2 , x, v2 ), (u1 , x, v1 )). В-третьих, вместо пар троек ((u1 , x, v1 ), (u2 , x, v2 )) мы можем рассматривать пары двоек: переход от w1 = w10 u1 xv1 w100 , w2 = w20 u2 xv2 w200 к z1 = w10 u1 xv2 w200 в соответствии с ((u1 , x, v1 ), (u2 , x, v2 )) равносилен переходу от w1 = w10 u01 v1 w100 , w2 = w20 u02 v2 w200 к z1 = w10 u01 v2 w200 в соответствии с ((u01 , v1 ), (u02 , v2 )), где u01 = u1 x и u02 = u2 x. Аналогично, можно рассмотреть четверку ((u1 , xv1 ), (u2 , xv2 )). Все это вместе подводит нас к следующей операции со строками над алфавитом V : четверка строк над V (u1 , u2 ; u3 , u4 ) называется правилом сплетения; в соответствии с таким правилом r для x, y, z ∈ V ∗ мы записываем (x, y) `r z тогда и только тогда, когда x = x1 u1 u2 x2 , y = y1 u3 u4 y2 , z = x1 u1 u4 y2 , для некоторых x1 , x2 , y1 , y2 ∈ V ∗ . Скажем, что мы сплетаем x, y в сайтах u1 u2 , u3 u4 соответственно и результатом является z. Это — основная операция, с которой мы будем иметь дело в данной главе. В следующих главах при построении моделей вычислений мы будем рассматривать данную операцию в несколько иной, более приближенной к реальности форме: (x, y) |=r (z, w) тогда и только тогда, когда x = x1 u1 u2 x2 ,
y = y 1 u 3 u 4 y2 ,
z = x1 u1 u4 y2 ,
w = y1 u3 u2 x2
286
7. Системы сплетения
для некоторых x1 , x2 , y1 , y2 ∈ V ∗ , где r = (u1 , u2 ; u3 , u4 ) — правило сплетения. Будем говорить, что ` есть операция 1сплетения, а |= есть 2-сплетение. Будет появляться и просто термин «сплетение», но при этом из контекста всегда будет ясно, о каком типе операции идет речь. В данной главе мы имеем дело только с 1-сплетением. Безусловно, если мы захотим вернуть наши модели в лабораторию, мы должны будем отказаться от всех вышеизложенных абстракций и возвратиться к рассмотрению конкретных ферментов с конкретными сайтами узнавания. Для ряда моделей мы обсудим некоторые из возникающих при этом проблем. В общем случае, выразительная сила наших моделей существенным образом зависит от механизмов регуляции, встроенных в операцию сплетения, о чем уже упоминалось в начале данной главы. При сегодняшней лабораторной технике все эти механизмы выглядят нереалистичными. Поэтому «компьютеры», которые мы будем обсуждать, требуют для своей реализации значительных продвижений в биохимических технологиях. Анализ возможной скорости таких продвижений выходит далеко за рамки настоящей книги.
7.2
Неитеративное сплетение как операция над языками
В реальных обстоятельствах множество строк и множество правил сплетения, точнее ферментов, скрывающихся за ними, конечно. Поскольку строки могут иметь произвольную длину (здесь нет никаких априорных ограничений), вполне естественно рассматривать языки произвольной мощности. Не так обстоят дела с правилами сплетения: лишь немногие рестрикционные ферменты производят выступы длины, большей чем шесть. Это означает, что в схеме узнавания (u, x, v) в большинстве случаев |x| 6 6, т. е. при рассмотрении правил сплетения (u1 , u2 ; u3 , u4 ), длина каждой из строк u1 , u2 , u3 , u4 весьма ограничена. В математической постановке подобное ограничение не является необходимым. Более того, как мы увидим в разделе 7.3, конечный набор правил даже
7.2. Неитеративное сплетение
287
при итеративном сплетении всегда сохраняет регулярность. С вычислительной точки зрения это означает, что на этом пути можно достичь самое большее выразительной силы конечного автомата или регулярных грамматик Хомского. Эти наблюдения подталкивают к рассмотрению «произвольно длинных» правил сплетения, т. е. бесконечных множеств правил сплетения. Для сохранения контроля над такими бесконечными множествами мы можем представлять правила в виде строк. Тогда их множества являются языками, и мы можем соотносить тип этих языков с определенной классификацией, например, с иерархией Хомского. Именно такой подход принят в данном разделе. Рассмотрим алфавит V и два специальных символа #, $, не лежащие в V . Правило сплетения (над V ) — это строка вида r = u1 #u2 $u3 #u4 , ∗.
где u1 , u2 , u3 , u4 ∈ V (Для максимальной общности мы не накладываем никаких ограничений на строки u1 , u2 , u3 , u4 . Случаи, когда u1 u2 = λ или u3 u4 = λ, могут быть исключены как нереальные.) Для правила сплетения r = u1 #u2 $u3 #u4 и строк x, y, z ∈ V ∗ мы записываем (x, y) `r z тогда и только тогда, когда x = x1 u1 u2 x2 ,
y = y1 u 3 u 4 y 2 ,
z = x1 u1 u4 y2
для некоторых x1 , x2 , y1 , y2 ∈ V ∗ . (Следовательно, правило u1 #u2 $u3 #u4 соответствует правилу (u1 , u2 ; u3 , u4 ) из конца предыдущего раздела.) Строки x, y иногда называют термами сплетения; часто мы будем опускать индекс r и писать ` вместо `r , если смысл будет понятен из контекста. Переход от x, y к z с помощью `r может быть представлен, как показано на рис. 7.1. Часто при сплетении конкретных строк мы будем для наглядности отмечать вертикальной чертой место, где термы
288
7. Системы сплетения
x1
u1
u2
x2
x ?
y
z
-
y1
u3
u4
y2
x1
u1
u4
y2
Рис. 7.1. Операция сплетения.
сплетения разрезаются, например: (x1 u1 |u2 x2 , y1 u3 |u4 y2 ) `r x1 u1 u4 y2 , для r = u1 #u2 $u3 #u4 . При такой записи становится наглядным и сам способ построения результата: к префиксу первого терма сплетения приписывается суффикс второго. Она также может быть полезна при графическом представлении правил сплетения, как на рис. 7.2(a). Поясним способ работы этих правил: «окно» на рис. 7.2(а) должно одновременно совпасть с сайтами u1 u2 и u3 u4 в двух молекулах ДНК, как на рис. 7.2(б). u1
u2
u3
u4 а)
...
u1
u2
...
...
u3
u4
...
б)
Рис. 7.2. Графическое представление правила сплетения.
Пару σ = (V, R), где V — алфавит, а R ⊆ V ∗ #V ∗ $V ∗ #V ∗ — множество правил сплетения, будем называть H-схемой. Заметим, что язык R может быть бесконечным, и можно рассмотреть его место в иерархии Хомского или в другой клас-
7.2. Неитеративное сплетение
289
сификации языков. Вообще, если R ∈ F L для данного семейства языков F L, то мы будем говорить, что H-схема σ имеет тип F L. Для H-схемы σ = (V, R) и языка L ⊆ V ∗ положим σ1 (L) = {z ∈ V ∗ | (x, y) `r z для некоторых x, y ∈ L, r ∈ R}. Другими словами, σ1 (L) есть результат однократного 1сплетения строк из L в соответствии с правилами из R. Иногда для данной H-схемы σ = (V, R) и упорядоченной пары (x, y), x, y ∈ V ∗ , мы также обозначаем σ1 (x, y) = {z ∈ V ∗ | (x, y) `r z для некоторых r ∈ R}. Заметим, что σ1 (x, y) отличается от множества σ1 ({x, y}). Последнее есть объединение четырех множеств σ1 (x, x), σ1 (x, y), σ1 (y, x), σ1 (y, y). Мы можем записать [ σ1 (L) = σ1 (x, y). x,y∈L
Для двух семейств языков F L1 , F L2 мы обозначаем S1 (F L1 , F L2 ) = {σ1 (L) | L ∈ F L1 и σ = (V, R) при R ∈ F L2 }. (Индекс 1 в S1 (. . . , . . . ) напоминает нам, что мы пользуемся операцией 1-сплетения.) Семейство F L1 замкнуто относительно сплетения типа F L2 (или, короче, «F L2 сплетения»), если S1 (F L1 , F L2 ) ⊆ F L1 . Вообще, возможности F L2 сплетения оцениваются при исследовании для разных F L1 семейств S1 (F L1 , F L2 ). Мы будем рассматривать семейства S1 (F L1 , F L2 ) для F L1 , F L2 из множества {F IN, REG, LIN, CF, CS, RE} (следовательно, всегда будет предполагаться, что F L2 содержит по меньшей мере все конечные языки). Сначала мы установим справедливость серии лемм, связывающих операцию сплетения с другими операциями над языками, затем соберем эти результаты о семействах S1 (F L1 , F L2 ) в одну теорему. Лемма 7.1. Для любых семейств F L1 , F L2 , F L01 , F L02 из включений F L1 ⊆ F L01 и F L2 ⊆ F L02 следует S1 (F L1 , F L2 ) ⊆ S1 (F L01 , F L02 ).
290
7. Системы сплетения
Доказательство. Очевидно в силу определений. Лемма 7.2. Пусть F L1 — семейство языков, замкнутое относительно приписывания символов. Тогда при любом F L2 F L1 ⊆ S1 (F L1 , F L2 ). Доказательство. Возьмем L ⊆ V ∗ , L ∈ F L1 и c ∈ / V . Тогда L0 = L{c} ∈ F L1 . Для H-схемы σ = (V ∪ {c}, {#c$c#}) имеем L = σ1 (L0 ), откуда L ∈ S1 (F L1 , F L2 ) при любом F L2 . Лемма 7.3. Пусть FL — семейство языков, замкнутое относительно произведения и произвольных ОПМ-отображений. Тогда FL замкнуто относительно REG сплетения. Доказательство. Возьмем L ⊆ V ∗ , L ∈ F L и H-схему σ = (V, R) при R ⊆ V ∗ #V ∗ $V ∗ #V ∗ , R ∈ REG. Рассмотрим новый символ c ∈ / V и конечный автомат M = (K, V ∪ {#, $}, s0 , F, δ), распознающий язык R. С помощью стандартного построения мы можем получить ОПМ g, ассоциированную с M , которая преобразует каждую строку вида w = x1 u1 u2 x2 cy1 u3 u4 y2 при x1 , x2 , y1 , y2 ∈ V ∗ , u1 #u2 $u3 #u4 ∈ R в строку g(w) = x1 u1 u4 y2 . Следовательно, σ1 (L) = g(L{c}L). Из свойств замкнутости F L получаем σ1 (L) ∈ F L. Лемма 7.4. Пусть FL — семейство языков, замкнутое относительно объединения, приписывания символов и FIN сплетения. Тогда FL замкнуто относительно произведения. Доказательство. Возьмем два произвольных языка L1 , L2 из F L, L1 , L2 ⊆ V ∗ , и рассмотрим H-схему σ = (V ∪ {c1 , c2 }, {#c1 $c2 #}), в которой c1 , c2 ∈ / V — два новых символа. Очевидно, что L1 L2 = σ1 (L1 {c1 } ∪ {c2 }L2 ), откуда L1 L2 ∈ F L. Лемма 7.5. Пусть FL — семейство языков, замкнутое относительно приписывания символов и FIN сплетения. Тогда FL замкнуто относительно операций Pref и Suf.
7.2. Неитеративное сплетение
291
Доказательство. Для L ⊆ V ∗ , L ∈ F L рассмотрим новый символ c ∈ / V , и H-схемы σ = (V ∪ {c}, {#α$c# | α ∈ V ∪ {c}}), σ 0 = (V ∪ {c}, {#c$α# | α ∈ V ∪ {c}}). Имеем Pref(L) = σ1 (L{c}), Suf(L) = σ10 ({c}L). Легко заметить, что при использовании правила r = #c$c# мы получим (x|c, yc|) `r x, а для любого z ∈ P ref (x) − {x}, x ∈ L, найдется правило вида r = #a$c# из σ, такое, что (xc, yc) `r z. Аналогично, для σ 0 и Suf. Лемма 7.6. Пусть FL — семейство языков, замкнутое относительно подстановки λ-свободных регулярных языков и произвольных ОПМ-отображений. Тогда S1 (REG, F L) ⊆ F L. Доказательство. Из условия следует, что F L замкнуто также и относительно приписывания символов и пересечения с регулярными языками (это напрямую вытекает из замкнутости относительно ОПМ-отображений). Теперь замкнутость относительно приписывания символов и пересечения с регулярными языками влечет замкнутость относительно произведения с регулярными языками. Мы используем эти свойства ниже. Возьмем L ⊆ V ∗ , L ∈ REG, и H-схему σ = (V, R) при R ∈ F L. Рассмотрим регулярную подстановку s : (V ∪ {#, $})∗ −→ P((V ∪ {#, $})∗ ), определенную следующим образом: s(a) = {a}, a ∈ V, s(#) = {#}, s($) = V ∗ {$}V ∗ , и построим язык L1 = V ∗ s(R)V ∗ . Кроме того, рассмотрим язык L2 = (L ⊥ t {#})$(L ⊥ t {#}). Поскольку L1 ∈ F L и L2 ∈ REG, имеем L1 ∩ L2 ∈ F L. Строки из L1 ∩ L2 имеют вид w = x1 u1 #u2 x2 $y1 u3 #u4 y2 для x1 u1 u2 x2 ∈ L, y1 u3 u4 y2 ∈ L, и u1 #u2 $u3 #u4 ∈ R.
292
7. Системы сплетения
Если g — ОПМ, стирающее подстроку #z2 $z3 # из строк вида z1 #z2 $z3 #z4 при zi ∈ V ∗ , 1 6 i 6 4, то получаем σ1 (L) = g(L1 ∩ L2 ), следовательно, σ1 (L) ∈ F L. Лемма 7.7. Пусть FL — семейство языков, замкнутое относительно приписывания символов. Тогда для всех L1 , L2 ∈ F L имеем L1 /L2 ∈ S1 (F L, F L). Доказательство. Возьмем L1 , L2 ⊆ V ∗ , L1 , L2 ∈ F L и c ∈ / V. Для H-схемы σ = (V ∪ {c}, {#xc$c# | x ∈ L2 }) имеем L1 /L2 = σ1 (L1 {c}). Действительно, единственно возможное сплетение строк в L1 {c} имеет вид (x1 |x2 c, yc|) `r x1 для x1 x2 ∈ L1 , x2 ∈ L2 , y ∈ L1 , где r = #x2 c$c#. Лемма 7.8. Пусть FL — семейство языков, замкнутое относительно приписывания символов. Тогда для любых L ∈ F L, L ⊆ V ∗ и c ∈ / V имеем {c}L ∈ S1 (REG, F L). Доказательство. Для данных L и c рассмотрим H-схему σ = (V ∪ {c, c0 }, {cx#c0 $c0 # | x ∈ L}), где c0 — новый дополнительный символ. Очевидно, что она имеет тип F L. Тогда {c}L = σ1 ({c}V ∗ {c0 }), поскольку возможны лишь сплетения вида (cx|c0 , cyc0 |) `r cx при r = cx#c0 $c0 #, x ∈ L, y ∈ V ∗ . Лемма 7.9. Пусть FL — семейство языков, замкнутое относительно приписывания символов и перетасовки c символами. Тогда для любых L ∈ F L, L ⊆ V ∗ и c ∈ / V имеем {c}P ref (L) ∈ S1 (REG, F L). Доказательство. Для данных L и c возьмем H-схему типа F L σ = (V ∪ {c, c0 }, {cxc0 $c0 # | x ∈ L ⊥ t {#}}), где c0 — новый дополнительный символ. Имеем {c}P ref (L) = σ1 ({c}V ∗ {c}),
7.2. Неитеративное сплетение F IN F IN F IN REG REG LIN LIN, CF CF CF CS RE RE RE
REG F IN REG LIN, CF CF RE RE
LIN F IN REG, LIN RE RE RE RE
293 CF F IN REG, CF RE RE RE RE
CS F IN REG, RE RE RE RE RE
RE F IN REG, RE RE RE RE RE
Таблица 7.1. Размер семейств S1 (F L1 , F L2 ).
поскольку возможны только сплетения вида (cx1 |x2 c0 , cyc0 |) `r cx1 для правил r = cx1 #x2 c0 $c0 #, x1 x2 ∈ L, y ∈ V ∗ . Сведем теперь предыдущие леммы о семействах языков из иерархии Хомского в один результат. Теорема 7.1. Имеют место соотношения из таблицы 7.1, в которой на пересечении строки, отмеченной F L1 , и столбца, отмеченного F L2 , стоит либо семейство S1 (F L1 , F L2 ), либо два семейства F L3 , F L4 , такие, что F L3 ⊂ S1 (F L1 , F L2 ) ⊂ F L4 . Эти семейства F L3 , F L4 являются наилучшими возможными приближениями среди рассматриваемых здесь шести семейств. Доказательство. Ясно, что σ1 (L) ∈ F IN для всех L ∈ F IN , каким бы ни было σ. Вместе с леммой 7.2 это дает S1 (F IN, F L) = F IN для всех семейств F L. Лемма 7.3 показывает, что S1 (REG, REG) ⊆ REG. Вместе с леммой 7.2 это приводит к равенствам S1 (REG, F IN ) = S1 (REG, REG) = REG. Из леммы 7.4 мы получаем S1 (LIN, F IN ) − LIN 6= ∅. Из леммы 7.3 имеем S1 (CF, REG) ⊆ CF . Следовательно, LIN ⊂ S1 (LIN, F L) ⊆ CF = S1 (CF, F L) для F L ∈ {F IN, REG}. Включения S1 (LIN, F L) ⊂ CF, F L ∈ {F IN, REG} являются собственными. Для того чтобы заметить это, рассмотрим снова доказательство леммы 7.3. Если L ⊆ V ∗ , L ∈ LIN и σ = (V, R) есть H-схема REG типа, то σ1 (L) = g(L{c}L), где c∈ / V , а g — ОПМ. Язык L{c}L имеет контекстно-свободный индекс, меньший или равный 2.
294
7. Системы сплетения
В разделе 3.1 упоминалось о том, что семейство контекстно-свободных языков конечного индекса является полным AFL, значит, оно замкнуто относительно произвольных ОПМотображений. Следовательно, для любого L ∈ S1 (LIN, REG) имеем indCF (L) < ∞. При этом существуют контекстносвободные языки бесконечного индекса, откуда следует, что CF − S1 (LIN, REG) 6= ∅. Из теоремы 3.12 нам известно, что для каждого языка L ∈ RE над алфавитом V существуют символы c1 , c2 ∈ / V и язык 0 0 ∗ L ∈ CS, L ⊆ L{c1 }{c2 } , такие, что для любого слова w ∈ L найдется такое i > 0, что wc1 ci2 ∈ L0 . Возьмем еще один дополнительный символ c3 . Язык L0 {c3 } все еще попадает в CS. Для H-схемы σ = (V ∪ {c1 , c2 , c3 }, {#c1 $c3 #}) имеем σ1 (L0 {c3 }) = {w | wc1 ci2 c3 ∈ L0 {c3 } для некоторого i > 0} = L. Итак, RE ⊆ S1 (CS, F IN ). Поскольку S1 (RE, RE) ⊆ RE (можно доказать это напрямую или задействовать тезис Черча), получаем S1 (CS, F L) = S1 (RE, F L) = RE при всех F L. Каждый язык L ∈ RE согласно теореме 3.13 может быть представлен в виде L = L1 /L2 для L1 , L2 ∈ LIN . По лемме 7.7 каждый язык L1 /L2 с линейными L1 , L2 лежит в S1 (LIN, LIN ). Следовательно, S1 (LIN, F L) = S1 (CF, F L) = RE для всех F L ∈ {LIN, CF, CS, RE}. По лемме 7.6 имеем S1 (REG, F L) ⊆ F L при F L ∈ {LIN, CF, RE}. Все эти включения являются собственными. Более точно, существуют линейные языки, не лежащие в S1 (REG, RE). Таков, например, язык L = {an bn | n > 1}. Действительно, предположим, что L = σ1 (L0 ) при некотором L0 ∈ REG, L0 ⊆ V ∗ и σ = (V, R). Возьмем для L0 конечный автомат M = (K, V, s0 , F, δ). Пусть m = card(K), и рассмотрим строку w = am+1 bm+1 из L. Пусть x, y ∈ L0 и r ∈ R таковы, что (x, y) `r w, x = x1 u1 u2 x2 , y = y1 u3 u4 y2 , w = x1 u1 u4 y2 при r = u1 #u2 $u3 #u4 . Имеем либо x1 u1 = am+1 z, либо u4 y2 =
7.2. Неитеративное сплетение
295
z 0 bm+1 для некоторых z, z 0 ∈ {a, b}∗ . Рассмотрим первый случай, второй разбирается аналогично. Итак, x = am+1 zu2 x2 . Проходя через префикс am+1 , автомат M использует дважды некоторое состояние из K. Соответствующий цикл можно повторять, поэтому L0 содержит строки вида x0 = am+1+ti zu2 x2 для t > 0 и произвольного i > 0. Для такой строки x0 при i > 1 имеем (x0 , y) `r am+1+ti zu2 x2 = am+1+ti bm+1 . Полученная строка не лежит в L, противоречие. Это рассуждение не зависит от типа R. (Сравните с леммой 7.8: L ∈ / S1 (REG, RE), но {c}L ∈ S1 (REG, LIN ).) Согласно лемме 7.8, S1 (REG, LIN ) − REG 6= ∅ и S1 (REG, CF ) − LIN 6= ∅. Из леммы 7.9 имеем S1 (REG, CS) − CS 6= ∅. (Следовательно, S1 (REG, CF ) не сравнимо с LIN , и S1 (REG, CS), S1 (REG, RE) не сравнимы с LIN, CF, CS.) Все утверждения, представленные в таблице, доказаны. Сделаем несколько полезных замечаний по поводу результатов из таблицы 7.1: 1. Все семейства S1 (F L1 , F L2 ) принадлежат иерархии Хомского, за исключением S1 (REG, F L2 ), при F L2 ∈ {LIN, CF, CS, RE}, и S1 (LIN, F L2 ) при F L2 ∈ {F IN, REG}, занимающих строго промежуточные места среди семейств иерархии Хомского. Свойства этих шести промежуточных семейств (например, замкнутость относительно операций и разрешимость) требуют дополнительного изучения.1 2. Получена серия новых характеризаций семейства RE, отталкивающихся, что удивительно, от «простых» пар (F L1 , F L2 ). Особенно интересен случай (LIN, LIN ) в виду того, что реальный язык последовательностей ДНК, по-видимому, не является ни регулярным, ни даже контекстносвободным [44, 312]. Поэтому в соответствии с упомянутым результатом этот язык не может быть ничем иным как ре1
Примечание переводчика. В [60] найдена характеризация семейства S1 (LIN, REG), из которой, в частности, следует, что оно совпадает с S1 (LIN, F IN ).
296
7. Системы сплетения
курсивно перечислимым языком, т. е. языком наибольшей сложности (в иерархии Хомского). Мы завершим данный раздел рассмотрением возможного расположения подсемейств из S1 (LIN, F IN ) в промежутке между семействами LIN и CF . Для H-схемы σ = (V, R) с конечным R определим радиус σ: rad(σ) = max{|x| | x = ui , 1 6 i 6 4, для некоторых u1 #u2 $u3 #u4 ∈ R}. Далее, для p > 1 обозначим через S1 (F L, [p]) семейство языков σ1 (L) для L ∈ F L и H-схем σ, радиуса меньшего или равного p. Заметим, что в доказательстве леммы 7.2 (а также лемм 7.4 и 7.5), как и при доказательстве включения RE ⊆ S1 (CS, F IN ) в теореме 7.1, используются схемы радиуса 1. Следовательно, для F L ∈ {F IN, REG, CF, CS, RE} мы имеем S1 (F L, [1]) = S1 (F L, [p]), для всех p > 1. Таким образом, эта иерархия схлопывается. То же самое верно и для F L = LIN , что вытекает из следующей леммы. Лемма 7.10. Пусть семейство FL замкнуто относительно λ-свободных ОПМ-отображений.Тогда S1 (F L, F IN ) ⊆ S1 (F L, [1]). Доказательство. Возьмем H-схему σ = (V, R) с конечным R. Предположим, что правила в R пронумерованы, R = {r1 , . . . , rs }, ri = ui,1 #ui,2 $ui,3 #ui,4 , 1 6 i 6 s. Легко построить связанную с R ОПМ g, переводящую каждую строку w = x1 ui,1 ui,2 x2 в g(w) = x1 ui,1 ci ui,2 x2 и каждую строку w = y1 ui,3 ui,4 y2 в g(w) = y1 ui,3 c0i ui,4 y2 для x1 , x2 , y1 , y2 ∈ V ∗ и указанного ri , где ci , c0i — новые символы, связанные с ri . Рассмотрим теперь H-схему σ 0 = (V ∪ {ci , c0i | 1 6 i 6 s}, {#ci $c0i # | 1 6 i 6 s}). Имеем g(L) ∈ F L для любого языка L ⊆ V ∗ , L ⊆ F L, и, очевидно, σ1 (L) = σ10 (g(L)). Остается завершить доказательство, заметив, что rad(σ 0 ) = 1. Теорема 7.2. LIN ⊂ S1 (LIN, [p]) = S1 (LIN, F IN ), p > 1.
7.3. Итеративное сплетение
297
Доказательство. Включения S1 (LIN, [p]) ⊆ S1 (LIN, [p + 1]) ⊆ S1 (LIN, F IN ), p > 1, следуют из определений. По лемме 7.10 получаем также S1 (LIN, F IN ) ⊆ S(LIN, [1]). Включение же LIN ⊂ S1 (LIN, F IN ) известно из теоремы 7.1.
7.3
Итеративное сплетение как операция над языками
Когда в пробирке есть рестриктазы и лигазы, они не прекращают свое действие после однократного выполнения операции разрезания или сшивки, а действуют повторно. Для H-схемы σ = (V, R) и языка L ⊆ V ∗ определим σ10 (L) = L, σ1i+1 (L) = σ1i (L) ∪ σ1 (σ1i (L)), [ σ1∗ (L) = σ1i (L).
i > 0,
i>0
σ1∗ (L)
Следовательно, есть замыкание L относительно сплетения, обусловленного σ. Другими словами, L0 — наименьший язык, содержащий L и замкнутый относительно обусловленного σ сплетения, т. е. σ1 (L0 ) ⊆ L0 . Заметим, что σ11 (L) совпадает не с σ1 (L), а с L ∪ σ1 (L). Для двух семейств языков F L1 , F L2 определим H1 (F L1 , F L2 ) = {σ1∗ (L) | L ∈ F L1 и σ = (V, R) при R ∈ F L2 }. Таким образом, семейства H1 (F L1 , F L2 ) соответствуют семействам S1 (F L1 , F L2 ) из предыдущего раздела. Как и для случая неитеративного сплетения, на H-схемах конечного радиуса можно строить иерархию, рассматривая семейства H1 (F L, [p]) языков σ1∗ (L) при L ∈ F L и H-схемах σ радиуса, меньшего или равного p. Лемма 7.11. (i) Для любых семейств F L1 , F L01 , F L2 , F L02 из включений F L1 ⊆ F L01 и F L2 ⊆ F L02 следует H1 (F L1 , F L2 ) ⊆ H1 (F L01 , F L02 ). (ii) H1 (F L, [p]) ⊆ H1 (F L, [q]) для всех FL и p 6 q. Доказательство очевидно в силу определений.
298
7. Системы сплетения
Лемма 7.12. F L ⊆ H1 (F L, [1]) для всех семейств FL. Доказательство. Для данного языка L ⊆ V ∗ , L ∈ F L рассмотрим символ c ∈ / V и H-схему σ = (V ∪ {c}, {#c$c#}). Ясно, что σ1i (L) = L для любого i > 0, следовательно, σ1∗ (L) = σ10 (L) = L. Лемма 7.13. Пусть F L1 , F L2 , F L3 — семейства языков, таких, что F L1 и F L2 замкнуты относительно перетасовки символов, а F L2 и F L3 замкнуты относительно пересечения с регулярными языками. Тогда H1 (F L1 , F L2 ) ⊆ F L3 влечет S1 (F L1 , F L2 ) ⊆ F L3 . Доказательство. Возьмем язык L ⊆ V ∗ , L ∈ F L1 и H-схему σ = (V, R) при R ∈ F L2 . Для c ∈ / V рассмотрим язык L0 = L ⊥ t {c} и H-схему σ 0 = (V ∪ {c}, R0 ) при R0 = (R ⊥ t {cc}) ∩ V ∗ #cV ∗ $V ∗ c#V ∗ . Из свойств F L1 , F L2 получим L0 ∈ F L1 , R0 ∈ F L2 . Кроме того, ∗
σ1 (L) = σ10 (L0 ) ∩ V ∗ . Действительно, σ10 i (L0 ) = σ10 (L0 ) ∪ L0 для всех i > 1 (любое сплетение удаляет символ c из строк языка L0 , следовательно, использовать получаемые строки в качестве термов при следующем сплетении невозможно). Поэтому, если σ10 ∗ (L0 ) ∈ F L3 , то σ1 (L) ∈ F L3 . Следствие 7.1. В условиях леммы 7.13 каждый язык L ∈ S1 (F L1 , F L2 ) может быть записан как L = L0 ∩ V ∗ при L0 ∈ H1 (F L1 , F L2 ). Теперь мы представим два ключевых результата в данной области, имеющих исключительную важность для ДНК-вычислений, основанных на сплетении. Лемма 7.14 (лемма о сохранении регулярности). H1 (REG, F IN ) ⊆ REG.
7.3. Итеративное сплетение
299
Доказательство. Возьмем L ⊆ V ∗ — регулярный язык, распознаваемый конечным автоматом M = (K, V , s0 , F, δ), а также H-схему σ = (V, R) с конечным множеством R ⊆ V ∗ #V ∗ $V ∗ #V ∗ . Пусть R = {r1 , . . . , rn }, ri = ui,1 #ui,2 $ui,3 #ui,4 , 1 6 i 6 n, n > 1. Кроме того, предположим, что ui,1 ui,4 = ai,1 ai,2 . . . ai,ti при ai,j ∈ V , 1 6 j 6 ti , ti > 0, 1 6 i 6 n. Для каждого i, 1 6 i 6 n, введем новые состояния qi,1 , qi,2 , . . . , qi,ti , qi,ti +1 . Обозначим их множество через K 0 и рассмотрим конечный автомат M0 = (K ∪ K 0 , V, s0 , F, δ0 ), где δ0 (s, a) = δ(s, a), при s ∈ K, a ∈ V, δ0 (qi,j , ai,j ) = {qi,j+1 }, 1 6 j 6 ti , 1 6 i 6 n. Начав с него, мы построим последовательность конечных автоматов (с λ-переходами) Mk = (K ∪ K 0 , V, s0 , F, δk ), k > 1, переходя от Mk к Mk+1 , k > 0 по следующим законам. Рассмотрим правило сплетения ri = ui,1 #ui,2 $ui,3 #ui,4 , 1 6 i 6 n. Если s — такое состояние из K ∪ K 0 , что 1) qi,1 ∈ / δk (s, λ), 2) существуют s1 ∈ K ∪ K 0 и x1 , x2 ∈ V ∗ , такие, что s ∈ δk (s0 , x1 ), s1 ∈ δk (s, ui,1 ui,2 ), δk (s1 , x2 ) ∩ F 6= ∅ (следовательно, x1 ui,1 ui,2 x2 ∈ L(Mk )), тогда положим δk+1 (s, λ) = {qi,1 }. Скажем, что это — начальный переход уровня k + 1. Кроме того, если состояние s0 из K ∪ K 0 таково, что: 1) s0 ∈ / δk (qi,ti +1 , λ), 2) существуют s1 ∈ K ∪ K 0 и y1 , y2 ∈ V ∗ , такие, что s1 ∈ δk (s0 , y1 ),
300
7. Системы сплетения
s0 ∈ δk (s1 , ui,3 ui,4 ), δk (s0 , y2 ) ∩ F 6= ∅ (следовательно, y1 ui,3 ui,4 y2 ∈ L(Mk )), тогда полагаем δk+1 (qi,ti +1 , λ) = {s0 }. Мы говорим, что это — заключительный переход уровня k + 1. Тогда δk+1 есть расширение δk начальными и заключительными переходами уровня k + 1, в соответствии со всеми правилами сплетения из R и всеми внутренними состояниями s, s0 из K ∪ K 0 . Так как множество состояний фиксировано, указанная процедура завершится не более чем через 2 · n · card(K ∪ K 0 ) шагов. Таким образом, найдется такое целое m, что Mm+1 = Mm . Докажем, что L(Mm ) = σ1∗ (L). Поскольку σ1∗ (L) является наименьшим языком, содержащим L и замкнутым относительно 1-сплетений, задаваемых σ, достаточно доказать, что i) L ⊆ L(Mm ), ii) L(Mm ) замкнуто относительно 1-сплетений, задаваемых σ, iii) L(Mm ) ⊆ σ1∗ (L). Пункт i) очевиден в силу построения автомата Mm . Для того чтобы доказать пункт ii), рассмотрим правило сплетения ri = ui,1 #ui,2 $ui,3 #ui,4 из R и две строки x, y ∈ L(Mm ), такие, что x = x1 ui,1 ui,2 x2 , y = y1 ui,3 ui,4 y2 . Существуют два состояния s1 , s2 ∈ K ∪ K 0 , такие, что s1 ∈ δm (s0 , x1 ), δm (s1 , ui,1 ui,2 x2 ) ∩ F 6= ∅, s2 ∈ δm (s0 , y1 ui,3 ui,4 ), δm (s2 , y2 ) ∩ F 6= ∅. Из построения Mm имеем qi,1 ∈ δm (s1 , λ) и s2 ∈ δm (qi,ti +1 , λ). Отсюда следует x1 ui,1 ui,4 y2 ∈ L(Mm ). (Эту ситуацию иллюстрирует рис. 7.3.) Следовательно, σ1 (L(Mm )) ⊆ L(Mm ). Чтобы доказать, что каждая строка, распознаваемая автоматом Mm , может быть получена из строк L с помощью итера-
7.3. Итеративное сплетение
qi,1
301
ui,1 ui,4
6 λ ui,1 ui,2 x2 x1 - s0 - s1
- qi,ti +1
λ y1 ui,3 ui,4
y2
?
F
? - s2
Рис. 7.3. Имитация сплетения в Mm .
тивного сплетения в соответствии с σ, воспользуемся индукцией по параметру compl(π) — сложности допустимых путей π (т. е. последовательностей состояний) из Mm . Для последовательности π состояний s0 , s1 , . . . , sp ∈ K ∪ K 0 , таких, что sp ∈ F , sj+1 ∈ δm (sj , αj ) при αj ∈ V ∪ {λ}, где 0 6 j 6 p − 1, обозначим через compl(π) вектор (c1 , . . . , cm ) из Nm , где ck — число начальных или заключительных переходов из π уровня k, т. е. число индексов l, таких, что sl+1 ∈ δk (sl , λ). Введем на множестве Nm обратный лексикографический порядок: (c1 , . . . , cm ) < (d1 , . . . , dm ), если существует индекс j, 1 6 j 6 m, такой, что ci = di при i > j и cj < dj . Поскольку это отношение является полным порядком, мы можем воспользоваться им для индукции. Для того же допустимого пути π обозначим через yield(π) распознаваемую строку α0 α1 . . . αp−1 . Если π — допустимый путь с compl(π) = (0, 0, . . . , 0), то очевидно, что yield(π) лежит в L, а значит, и в σ1∗ (L). Пусть (c1 , . . . , cm ) ∈ Nm , (c1 , . . . , cm ) > (0, 0, . . . , 0), и для всех допустимых путей π с условием compl(π) < (c1 , . . . , cm ) строка yield(π) принадлежит σ1∗ (L). Рассмотрим допустимый путь π из Mm , такой, что compl(π) = (c1 , . . . , cm ). (Если таких путей не существует, индуктивный шаг выполняется по умол-
302
7. Системы сплетения
чанию.) Путь π должен иметь следующий вид: π = s0 , s1 , . . . , sp , sp ∈ F. Поскольку он начинается состоянием s0 ∈ K, заканчивается состоянием sp ∈ F ⊆ K и compl(π) > (0, . . . , 0), в нем присутствуют переходы. От K к K 0 можно перейти лишь с помощью начальных переходов, а от K 0 к K — только с помощью заключительных, поэтому существуют sj1 , sj2 , 1 6 j1 < j2 < p, такие, что sj1 = qi,1 , sj2 = qi,ti +1 , и все sj при j1 6 j 6 j2 лежат в K 0 (проход автоматом через ui,1 ui,4 определен однозначно: если следующий после попадания в qi,1 переход является заключительным, то после него мы обязательно попадаем в qi,ti +1 ). Следовательно, существует правило сплетения r = ui,1 #ui,2 $ui,3 #ui,4 , в соответствии с которым и была введена указанная пара переходов. Предположим, что переход, соответствующий sj1 , имеет уровень k, а переход, соответствующий sj2 , — уровень k 0 . Тогда существует допустимый путь π1 = s0 , . . . , sj1 −1 , s0j1 , . . . , s0p0 из Mk−1 , такой, что s0p0 ∈ F и yield(s0 , . . . , sj1 −1 ) = x1 , yield(sj1 −1 , s0j1 , . . . , s0p0 ) = ui,1 ui,2 x2 для некоторых x1 , x2 ∈ V ∗ . Аналогично, существует допустимый путь π2 = s0 , s01 , . . . , s0j 0 , sj2 +1 , . . . , sp из Mk0 −1 , такой, что 2
yield(s0 , s01 , . . . , s0j 0 ) = y1 ui,3 ui,4 , 2
yield(sj2 +1 , . . . , sp ) = y2 для некоторых y1 , y2 ∈ V ∗ . Эта ситуация изображена на рис. 7.4. Следовательно, (yield(π1 ), yield(π2 )) `r yield(π). Исследуем теперь сложность пути π1 , для π2 все аналогично. Разложение ui,1 ui,2 x2 (прохождение от sj1 −1 к s0p0 ∈ F ) осуществляется в Mk−1 , следовательно, все переходы здесь — уровня меньше k. Все переходы при прохождении от s0 к sj1 −1 — общие для π и π1 . Итак, для compl(π1 ) = (d1 , . . . , dm )
7.3. Итеративное сплетение
303
sj1 = qi,1
ui,1 ui,4
- sj2 = qi,ti +1
6
λ ui,1 ui,2 x2 x1 - s0 - sj1 −1
λ
y1 ui,3 ui,4
? - sj2 +1
y2 ?
F
Рис. 7.4. Вычисление сплетения в Mm .
имеем dj 6 cj при всех j > k. Кроме того, путь π содержит по меньшей мере один не содержащийся в π1 переход уровня k: от sj1 −1 к sj1 . Это означает, что dk < ck . Следовательно, (d1 , . . . , dm ) < (c1 , . . . , cm ), что завершает индуктивное рассуждение, а значит, и все доказательство. Более сильный результат приведен в [270]; найти его подробное доказательство можно также в [139]. Лемма 7.15. Если семейство FL является полным AFL, то H1 (F L, F IN ) ⊆ F L. На самом деле, в [139] доказан еще более сильный результат, поскольку утверждение леммы 7.15 остается справедливым для любого содержащего регулярные языки семейства F L, замкнутого относительно левых и правых частных при делении на регулярные языки и относительно подстановок внутри регулярных языков. (Если s : V ∗ −→ P(U ∗ ) — подстановка, такая, что s(a) ∈ F L для всех a ∈ V и L ⊆ V ∗ — регулярный язык, то s(L) ∈ F L. Каждое полное AFL обладает этим свойством, см. теорему 11.5 из [145].)
304
7. Системы сплетения
Лемма 7.16 (основная лемма об универсальности). Любой язык L ∈ RE, L ⊆ T ∗ , может быть представлен в виде L = L0 ∩ T ∗ для некоторого L0 ∈ H1 (F IN, REG). Доказательство. Рассмотрим порождающую L грамматику типа 0 G = (N, T, S, P ), обозначим U = N ∪ T ∪ {B}, где B — новый символ, и построим H-схему σ = (V, R), где V = N ∪ T ∪ {X, X 0 , B, Y, Z} ∪ {Yα | α ∈ U }, а R содержит следующие группы правил: Имитация : 1. Xw#uY $Z#vY Переброска : 2. Xw#αY $Z#Yα
при u → v ∈ P, w ∈ U ∗ . при α ∈ U, w ∈ U ∗ ,
3. X 0 α#Z$X#wYα
при α ∈ U, w ∈ U ∗ ,
4. X 0 w#Yα $Z#Y
при α ∈ U, w ∈ U ∗ ,
5. X#Z$X 0 #wY
при w ∈ U ∗ .
Завершение : 6. #ZY $XB#wY
при w ∈ T ∗ ,
7. #Y $XZ#. Рассмотрим также язык L0 = {XBSY, ZY, XZ} ∪ {ZvY | u → v ∈ P } ∪ {ZYα , X 0 αZ | α ∈ U }. Утверждается, что L = σ1∗ (L0 ) ∩ T ∗ . Действительно, исследуем работу σ, точнее, возможности получать строки из T ∗ . Ни одна строка из L0 не лежит в T ∗ . Все правила из R включают строки, содержащие символ Z, в то же время он не может появиться в строке, полученной путем сплетения. Поэтому на каждом шаге мы должны задействовать строку из L0 и строку, полученную на предыдущем шаге, за исключением XBSY из L0 . Символ B отмечает начало сентенциальных форм грамматики G, моделируемых σ.
7.3. Итеративное сплетение
305
С помощью правил из группы 1 мы можем имитировать выполнение правил из P . Правила из групп 2–5 перебрасывают символы c правого конца текущей строки на левый конец, делая возможным имитацию правил из P на правом конце получаемой строки. Понять же, какова эта строка в действительности, мы всегда сможем благодаря постоянному присутствию символа B, помечающего начала сентенциальных форм грамматики G. Другими словами, если текущая строка в σ имеет вид β1 w1 Bw2 β2 при некоторых β1 , β2 из X, X 0 , Y, Yα (α ∈ U ), и w1 , w2 ∈ (N ∪ T )∗ , то w2 w1 — сентенциальная форма в G. Мы начинаем с XBSY , т. е. с аксиомы грамматики G, помеченной с левой стороны символом B и заключенной между маркерами X, Y . Посмотрим, как работают правила 2–5. Возьмем строку XwαY при некоторых α ∈ U, w ∈ U ∗ . По правилу типа 2 мы получаем (Xw|αY, Z|Yα ) ` XwYα . Символ Yα запоминает, что с правого конца строки wα стирается буква α. К XwYα не может быть применено ни одно правило из R, кроме правил типа 3: (X 0 α|Z, X|wYα ) ` X 0 αwYα . Заметим, что тот же символ α, который был удален на предыдущем шаге, теперь добавлен перед w. Продолжить можно опять лишь одним способом, использовав правило типа 4. Получим (X 0 αw|Yα , Z|Y ) ` X 0 αwY. Применение правила типа 7, стирающего Y , не позволит нам затем удалить X 0 (и B) и превратить строку в терминальную. Поэтому мы должны использовать правило типа 5: (X|Z, X 0 |αwY ) ` XαwY. Начав с XwαY , мы получили XαwY , строку с теми же маркерами. Мы можем сколько угодно повторять эти шаги, производя таким образом любые циклические перестановки строк, заключенных между X и Y . Более того, ничего кроме цикли-
306
7. Системы сплетения
ческих перестановок получить мы не сможем (в частности, на каждом шаге в строку будет входить ровно один символ B). Правило типа 1 также можно применить к каждой строке XwY , у которой w оканчивается левой частью правила из P . Подготовив же строку с помощью правил из групп 2–5, как описывалось выше, мы сможем имитировать выполнение любого правила из P в любом месте соответствующей сентенциальной формы грамматики G. Следовательно, для каждой сентенциальной формы w из G существует строка XBwY , полученная с помощью σ, и обратно, в строке Xw1 Bw2 Y , построенной σ, w2 w1 есть сентенциальная форма грамматики G. Удалить символы, не лежащие в T , из построенных с помощью σ строк можно только, воспользовавшись правилами групп 6, 7. Более точно, символы XB могут быть удалены только при следующих условиях: (1) в наличии имеется Y (т. е. работа будет заблокирована, если воспользоваться сначала правилом 7, стирающим Y : строка не сможет участвовать в дальнейших сплетениях, а терминальной она не является), (2) текущая строка, ограниченная X, Y , состоит только из терминальных символов и одного символа B, (3) символ B расположен слева. После удаления X и B можно стереть и Y , а то, что мы получим, будет строкой из T ∗ . Из предыдущего обсуждения ясно, что она лежит в L(G), значит, σ1∗ (L0 ) ∩ T ∗ ⊆ L(G). Обратно, каждая строка из L(G) может быть построена таким способом, следовательно, L(G) ⊆ σ1∗ (L0 ) ∩ T ∗ . Получаемое равенство L(G) = σ1∗ (L0 ) ∩ T ∗ завершает доказательство. В следующих главах встретится много вариантов процедуры переброски и имитации, использованной в данном доказательстве. Семейства H1 (F L1 , F L2 ) удовлетворяют сильным ограничениям.
7.3. Итеративное сплетение
307
Лемма 7.17. Пусть FL — семейство языков, замкнутое относительно пересечения с регулярными языками и ограниченных морфизмов. Тогда для каждого L ⊆ V ∗ , L ∈ / F L, и c, d ∈ / V, имеем L0 ∈ / H1 (F L, RE) при L0 = (dc)∗ L(dc)∗ ∪ c(dc)∗ L(dc)∗ d. Доказательство. Для L, c, d из условия леммы обозначим L1 = (dc)∗ L(dc)∗ , L2 = c(dc)∗ L(dc)∗ d. Из L = L1 ∩ V ∗ = L0 ∩ V ∗ и L = h(L2 ∩ cV ∗ d), где h — морфизм, определяемый соотношениями h(a) = a, a ∈ V и h(c) = h(d) = λ, следует L1 ∈ / F L, L2 ∈ / F L и L0 = L1 ∪L2 ∈ / F L. 0 ∗ Предположим, что L = σ1 (L0 ) для некоторого L0 ∈ F L, L0 ⊆ L0 и σ = (V, R) с произвольным R. Из L0 ∈ / F L следует L0 6= L0 . Поэтому, чтобы получить L0 , мы должны провести хотя бы одно сплетение (x, y) `r z, x, y ∈ L0 . Пусть x = x1 u1 u2 x2 , y = y1 u3 u4 y2 для некоторых x1 , x2 , y1 , y2 ∈ (V ∪ {c, d})∗ и r = u1 #u2 $u3 #u4 ∈ R. Тогда, если x ∈ L1 , то x0 = cxd ∈ L2 , x0 = cx1 u1 u2 x2 d. Следовательно, можно выполнить сплетение (x0 , y) `r z 0 = cx1 u1 u4 y2 = cz. Если z ∈ L0 , то cz ∈ / L0 , противоречие. Следовательно, строка x должна быть взята из L2 . Тогда x0 = dxc ∈ L1 , x0 = dx1 u1 u2 x2 c, и значит, можно выполнить сплетение (x0 , y) `r z 0 = dx1 u1 u4 y2 = dz. Мы снова получаем строку, не лежащую в L0 . Поскольку любое сплетение провоцирует появление не лежащих в L0 строк, мы должны заключить, что σ1∗ (L0 ) = L0 . Это противоречит условию L0 6= L0 . Так как тип множества R не играет никакой роли в предыдущих рассуждениях, имеем L0 ∈ / H1 (F L, RE). Теорема 7.3. Имеют место соотношения, приведенные в таблице 7.2, где на пересечении строки, отмеченной F L1 , и столбца, отмеченного F L2 , стоит либо семейство H1 (F L1 , F L2 ), либо пара семейств F L3 , F L4 , таких, что
308 F IN F IN REG REG LIN LIN CF CS RE
7. Системы сплетения F IN F IN, REG REG REG LIN, CF CF CS, RE RE
REG F IN, RE REG, RE LIN, RE CF, RE CS, RE RE
LIN F IN, RE REG, RE LIN, RE CF, RE CS, RE RE
CF F IN, RE REG, RE LIN RE CF, RE CS, RE RE
CS F IN, RE REG, RE LIN, RE CF, RE CS, RE RE
RE F IN, RE REG, RE LIN, RE CF, RE CS, RE RE
Таблица 7.2. Размеры семейств H1 (F L1 , F L2 ).
F L3 ⊂ H1 (F L1 , F L2 ) ⊂ F L4 . Семейства F L3 , F L4 являются наилучшими возможными границами среди рассматриваемых здесь шести семейств. Доказательство. В силу леммы 7.12 F L1 ⊆ H1 (F L1 , F L2 ) при любых F L1 , F L2 . С другой стороны, H1 (F L1 , F L2 ) ⊆ RE для всех F L1 , F L2 . За исключением семейств H1 (RE, F L2 ), совпадающих с RE, все включения H1 (F L1 , F L2 ) ⊆ RE собственные, так как по лемме 7.17 непусты следующие разности: REG−H1 (F IN, RE), LIN −H1 (REG, RE), CF −H1 (LIN, RE), CS − H1 (CF, RE), RE − H1 (CS, RE). Из лемм 7.14 и 7.12 следует, что H1 (REG, F IN ) = REG. Значит, H1 (F IN, F IN ) ⊆ REG. Это включение собственное по лемме 7.17. Из леммы 7.13 и результатов раздела 7.2 получаем строгость включений LIN ⊂ H1 (LIN, F IN ) и CS ⊂ H1 (CS, F IN ). Тот же результат получается при замене F IN на произвольное семейство F L2 . Из лемм 7.15 и 7.12 вытекает равенство H1 (CF, F IN ) = CF. Кроме того, H1 (LIN, F IN ) ⊆ CF . Это включение собственное по лемме 7.17. Из той же леммы следует, что RE является наилучшим приближением для H1 (F L1 , F L2 ), F L2 6= F IN (действительно, H1 (F IN, REG) − F L 6= ∅ для всех семейств F L ⊂ RE, замкнутых относительно пересечения с регулярными языками).
7.3. Итеративное сплетение
309
Остается доказать утверждение о том, что H1 (F IN, F IN ) содержит бесконечные языки. Это так даже для H1 (F IN, [1]): при σ = ({a}, {a#$#a}) имеем σ1∗ ({a}) = a+ . Таким образом, доказательство теоремы завершено. Из соотношений таблицы 7.2 можно сделать ряд интересных выводов: 1. Итеративное сплетение регулярных (и даже конечных) языков относительно регулярного множества правил дает нерегулярные (и даже нерекурсивные) языки (это не так в случае более «слабого» неитеративного сплетения). Поэтому результат леммы 7.14 не может быть улучшен. 2. Итеративное сплетение конечных языков относительно (по меньшей мере) регулярного множества правил дает языки, не являющиеся контекстными. Фактически для всех семейств F L2 , содержащих регулярные языки, пересечения языков из H1 (F L1 , F L2 ) с регулярными языками вида V ∗ характеризуют семейство рекурсивно перечислимых языков. 3. С другой стороны, для всех семейств H1 (F L1 , F L2 ), таких, что F L1 6= RE, выполняются довольно неожиданные ограничения. Если F L01 — наименьшее из рассматриваемых здесь семейств, строго содержащее F L1 , то при всех F L2 , включая F L2 = RE, имеются языки из F L01 , не лежащие в H1 (F L1 , F L2 ). Ввиду равенств H1 (F L, F IN ) = F L для F L ∈ {REG, CF, RE} иерархии, основанные на радиусе H-схем, в этих случаях схлопываются. Аналогичная проблема для F L ∈ {LIN, CS} все еще открыта. В случае же F IN имеется Теорема 7.4. Выполняются строгие включения F IN ⊂ H1 (F IN, [1]) ⊂ H1 (F IN, [2]) ⊂ . . . ⊂ H1 (F IN, F IN ) ⊂ REG. Доказательство. Включения следуют из определений и лемм 7.12 и 7.14. Строгость первого и последнего включений уже известна.
310
7. Системы сплетения
Для k > 1 рассмотрим язык Lk = {a2k b2k an b2k a2k | n > 2k + 1}. Он принадлежит H1 (F IN, [k + 1]), поскольку Lk = σ1∗ (L0k ) при L0k = {a2k b2k a2k+2 b2k a2k }, σ = ({a, b}, {ak+1 #ak $ak+1 #ak }). Действительно, правило сплетения может быть применено только к подстрокам u1 u2 = a2k+1 и u3 u4 = a2k+1 центральных подстрок a2k+i (i > 1) строк из Lk . Следовательно, для любого i > 0 мы можем получить строку с центральной подстрокой a2k+i+1 с помощью сплетений вида (a2k b2k ak+1 |ak+1 b2k a2k , a2k b2k aak+1 |ak b2k a2k ) ` a2k b2k ak+1 ak b2k a2k , (a2k b2k aj ak+1 |ak b2k a2k , a2k b2k ak+1 |ak+1 b2k a2k ) ` a2k b2k aj ak+1 ak+1 b2k a2k при j > 1. Предположим, что Lk = σ 0 ∗1 (L00k ) для некоторого конечного языка L00k и H-схемы σ 0 = (V, R) с условием rad(σ 0 ) 6 k. Возьмем правило r = u1 #u2 $u3 #u4 ∈ R и две строки x, y ∈ Lk , к которым это правило может быть применено, x = a2k b2k an b2k a2k , n > 2k +1, y = y1 u3 u4 y2 . По условию |u1 u2 | 6 2k. Поэтому, если u1 u2 ∈ a∗ , то u1 u2 является подстрокой и префикса a2k , и суффикса a2k , и центрального подслова an в x. Аналогично, если u1 u2 ∈ b∗ , то u1 u2 — подстрока обеих подстрок b2k в x. Если u1 u2 ∈ a+ b+ , то u1 u2 является подстрокой и префикса a2k b2k , и подслова an b2k из x; если u1 u2 ∈ b+ a+ , то u1 u2 — подстрока и суффикса b2k a2k , и подслова b2k an в x. В любом случае, сплетение x, y по правилу r приводит к появлению по крайней мере одной строки, не лежащей в Lk . Значит, равенство Lk = σ10 ∗ (L00k ) невозможно. Поэтому H1 (F IN, [k + 1]) − H1 (F IN, [k]) 6= ∅ при всех k > 1.
7.3. Итеративное сплетение
311
Хотя семейства H1 (F IN, [1]) и REG кажутся очень разными (они находятся на концах бесконечной иерархии), они, однако, совпадают по модулю кодирования. Теорема 7.5. Каждый регулярный язык есть кодирование языка из семейства H1 (F IN, [1]). Доказательство. Пусть язык L ∈ REG порожден регулярной грамматикой G = (N, T, S, P ). Следовательно, все правила из P имеют вид X → aY , X → a, при X, Y ∈ N , a ∈ T . Рассмотрим алфавит V = {[X, a, Y ] | X → aY ∈ P, при X, Y ∈ N, a ∈ T } ∪ {[X, a, ∗] | X → a ∈ P, при X ∈ N, a ∈ T }, H-схему σ = (V, {[X, a, Y ]#$#[Y, b, Z] | [X, a, Y ], [Y, b, Z] ∈ V } ∪{[X, a, Y ]#$#[Y, b, ∗] | [X, a, Y ], [Y, b, ∗] ∈ V }) и конечный язык L0 = {[S, a, ∗] | S → a ∈ P, a ∈ T } ∪ [X1 , a1 , X2 ][X2 , a2 , X3 ] . . . [Xk , ak , Xk+1 ][Xk+1 , ak+1 , ∗] | k > 1, X1 = S, Xi → ai Xi+1 ∈ P, 1 6 i 6 k, Xk+1 → ak+1 ∈ P, причем нет таких 1 6 i1 < i2 < i3 6 k, что [Xi1 , ai1 , Xi1 +1 ] = [Xi2 , ai2 , Xi2 +1 ] = [Xi3 , ai3 , Xi3 +1 ] (в строке из L0 символ из V может встретиться самое большее дважды). Рассмотрим также кодирование h : V −→ T , определенное следующим образом: h([X, a, Y ]) = h([X, a, ∗]) = a, X, Y ∈ N, a ∈ T. Имеет место равенство L = h(σ1∗ (L0 )). Действительно, каждая строка из L0 соответствует выводу в G. Если x, y — строки из σ1∗ (L0 ), описывающие выводы в G, x = x1 [X, a, Y ][Y, a0 , Z 0 ]x2 и y = y1 [X 0 , b0 , Y ][Y, b, Z]y2 , то z = x1 [X, a, Y ][Y, b, Z]y2 ∈ σ1 (x, y), и, очевидно, z также соот-
312
7. Системы сплетения
ветствует выводу в G. Кодирование h сопоставляет подобной строке w, описывающей вывод в G, строку h(w), порождаемую как раз этим выводом. Следовательно, h(σ1∗ (L0 )) ⊆ L. Обратно, рассмотрим строки V ∗ , описывающие выводы в G. Такие строки w, длины меньшей или равной двум, лежат в L0 , значит, и в σ1∗ (L0 ). Предположим, что все такие строки, длины меньшей или равной n (n > 2), содержатся в σ1∗ (L0 ). Рассмотрим строку w, самую короткую среди строк длины, большей n, для которых может быть найден вывод в G. Если w ∈ L0 , то, очевидно, w ∈ σ1∗ (L0 ). Если w ∈ / L0 , то в трех разных местах w встречается один и тот же символ [X, a, Y ]: w = w1 [X, a, Y ]w2 [X, a, Y ]w3 [X, a, Y ]w4 . Тогда w0 = w1 [X, a, Y ]w2 [X, a, Y ]w4 , w00 = w1 [X, a, Y ]w3 [X, a, Y ]w4 описывают корректные выводы в G и |w0 | < |w|, |w00 | < |w|, следовательно, w0 , w00 ∈ σ1∗ (L0 ) по индукционному предположению. Вид w0 , w00 и правил сплетений из σ позволяет заключить, что w ∈ σ1 (w0 , w00 ), следовательно, w ∈ σ1∗ (L0 ). Для каждого вывода в G мы находим строку w ∈ σ1∗ (L0 ), такую, что h(w) есть в точности строка, порожденная этим выводом. Итак, L ⊆ h(σ1∗ (L0 )).
7.4
Выразительная сила расширенных H-систем
Теперь мы введем основную вычислительную модель, которую и будем исследовать в данной и следующих главах. Здесь мы рассмотрим ее в общей (неограниченной) форме. В предыдущем разделе мы уже имели дело с порождающим механизмом, основанным на операции сплетения: пара (σ, L), где σ = (V, R) — H-схема, а L ⊆ V ∗ — данный язык, определяла язык σ1∗ (L). В более явном виде можно записать ее как тройку γ = (V, L, R), задающую язык L(γ) = σ1∗ (L). Такая тройка называется H-системой. Заметим, что мы до-
7.4. Расширенные H-системы
313
пускаем бесконечность компонент L, R, что контрастирует с привычным определением грамматики как конечного механизма, порождающего, вообще говоря, бесконечный язык. Такая расширенная точка зрения принимается, с одной стороны, ради математической полноты, а с другой, из-за результатов типа лемм 7.14, 7.15: при помощи конечного множества правил сплетения и регулярных языков нельзя выйти за пределы регулярности. Мы ищем вычислительно полные механизмы; путь к этой цели подсказан леммой 7.16, в которой демонстрируются возможности регулярных множеств правил сплетения. Там же кроется и идея возможного обобщения в определении H-систем: ввести терминальный алфавит (как в грамматиках Хомского и системах Линденмаейра) и считать допустимыми только строки над этим алфавитом, полученные путем итеративного сплетения. Так мы приходим к понятию расширенной H-системы, фундаментальному понятию, изучаемому в данной главе. Расширенной H-системой называется четверка γ = (V, T, A, R), где V — алфавит, T ⊆ V , A ⊆ V ∗ , и R ⊆ V ∗ #V ∗ $V ∗ #V ∗ , а #, $ — специальные символы, не лежащие в V . Будем называть V алфавитом γ, T — терминальным алфавитом, A — множеством аксиом, R — множеством правил сплетения. Таким образом, у нас есть основная H-схема σ = (V, R), пополненная некоторым данным подмножеством из V и множеством аксиом. Если T = V , скажем, что γ — нерасширенная H-система. Ниже мы будем касаться таких систем лишь вскользь. Язык, порожденный системой γ, определяется равенством L(γ) = σ1∗ (A) ∩ T ∗ , где σ — основная H-схема в γ. Для двух семейств языков F L1 , F L2 мы обозначаем через EH1 (F L1 , F L2 ) семейство языков L(γ), порожденных расширенными H-системами γ = (V, T, A, R), такими, что A ∈ F L1 , R ∈ F L2 . Некоторые результаты из раздела 7.3
314
7. Системы сплетения
могут быть переформулированы на языке расширенных Hсистем. Кроме того, имеет место следующее включение: Лемма 7.18. REG ⊆ EH1 (F IN, F IN ). Доказательство. Возьмем язык L ∈ REG, L ⊆ T ∗ , порожденный регулярной грамматикой G = (N, T, S, P ). Построим H-систему γ = (N ∪ T ∪ {Z}, T, A1 ∪ A2 ∪ A3 , R1 ∪ R2 ), где A1 = {S}, A2 = {ZaY | X → aY ∈ P, X, Y ∈ N, a ∈ T }, A3 = {ZZa | X → a ∈ P, X ∈ N, a ∈ T }, R1 = {#X$Z#aY | X → aY ∈ P, X, Y ∈ N, a ∈ T }, R2 = {#X$ZZ#a | X → a ∈ P, X ∈ N, a ∈ T }. Если в качестве первого терма в сплетении по правилу из R1 взять строку ZxX, возможно, и из A2 (при x = c ∈ T и U → cX ∈ P ), то получится строка вида ZxaY . Устранить символ Z невозможно, поэтому, терминальная строка образована не будет, если на роль первых термов брать получающиеся строки. С другой стороны, строка ZxX при |x| > 2 не может быть использована как второй терм сплетения. Поэтому единственный способ получить терминальную строку — начать с S, произвольное число раз использовать сплетения относительно правил из R1 и закончить по правилу из R2 . Первый терм сплетения всегда берется из числа полученных в предыдущих сплетениях, второй терм — из A2 или из A3 (на последнем шаге). Это соответствует выводу в G, следовательно, имеем L(γ) = L(G) = L. Теорема 7.6. Имеют место соотношения из таблицы 7.3, где на пересечении строки, отмеченной F L1 , и столбца, отмеченного F L2 , стоит семейство EH1 (F L1 , F L2 ) или пара семейств F L3 , F L4 , таких, что F L3 ⊂ EH1 (F L1 , F L2 ) ⊂ F L4 . Семейства F L3 , F L4 являются наилучшими возможными границами среди рассматриваемых здесь шести семейств.
7.4. Расширенные H-системы
F IN REG LIN CF CS RE
F IN REG REG LIN, CF CF RE RE
REG RE RE RE RE RE RE
315
LIN RE RE RE RE RE RE
CF RE RE RE RE RE RE
CS RE RE RE RE RE RE
RE RE RE RE RE RE RE
Таблица 7.3. Выразительная сила расширенных H-систем.
Доказательство. Ясно, что F L ⊆ EH1 (F L, F IN ) для всех F L. Из леммы 7.18 имеем также REG ⊆ EH1 (F IN, F L) для всех F L. Из лемм 7.14, 7.15 и замкнутости семейств REG, CF относительно пересечения с регулярными языками следуют включения EH1 (REG, F IN ) ⊆ REG, EH1 (CF, F IN ) ⊆ CF . Если в доказательстве отношения RE ⊆ S1 (CS, F IN ) в теореме 7.1 считать c1 , c2 , c3 нетерминальными символами, а V — терминальным алфавитом, то получаем RE ⊆ EH1 (CS, F IN ). Таким образом, отношения из первого столбца таблицы 7.3 установлены. Из доказательства леммы 7.16 RE ⊆ EH1 (F IN, REG). Остается заметить, что EH1 (F L1 , F L2 ) ⊆ RE для всех семейств F L1 , F L2 (это можно доказать напрямую или задействовать тезис Черча–Тьюринга). Единственное семейство, не совпадающее ни с одним семейством иерархии Хомского, — это EH1 (LIN, F IN ). Два из отношений, сведенных в таблице 7.3, являются центральными для ДНК-вычислений, основанных на сплетении: 1. EH1 (F IN, F IN ) = REG, 2. EH1 (F IN, REG) = RE. При использовании конечной расширенной H-системы, т. е. системы с конечным набором аксиом и конечным набором правил сплетения, мы получим всего лишь характеризацию регулярных языков. Возможности такого рода устройств остаются на уровне конечных автоматов (регулярных грамматик Хомского). Увеличение множества аксиом существенно не
316
7. Системы сплетения
поможет: требуется контекстное множество аксиом для того, чтобы, задействовав конечное множество правил, охарактеризовать RE. Однако расширение множества правил сплетения лишь на шаг (с нашей точки зрения), т. е. использование регулярного множества правил сплетения, приводит к скачку на уровень возможностей машины Тьюринга (грамматики Хомского типа 0). Бесконечное множество правил сплетения, даже образующее регулярный язык, не представляет большого практического интереса, так как «бесконечные компьютеры» нереалистичны. Таким образом, мы должны выбирать одно из двух: либо удовлетвориться «ДНК-компьютерами», способными вычислять лишь на уровне конечных автоматов, либо пополнить модель новыми ингредиентами с тем, чтобы по-прежнему работать с конечными множествами правил сплетения, но сохранять возможности расширенных H-систем с регулярными множествами правил. Кроме того, как уже упоминалось в главе 3, не существует конечного автомата, универсального, в естественном смысле, в классе всех конечных автоматов. Следовательно, нельзя надеяться на создание универсальных, а значит, программируемых ДНК-компьютеров из расширенных H-систем с конечными компонентами (без дополнительного управления операцией сплетения или другого ингредиента, способного увеличить выразительную силу системы). Выбор практически вынужден: единственный способ получить универсальные по Тьюрингу программируемые ДНК-компьютеры из расширенных H-систем с конечными составляющими заключается в том, чтобы научиться регулировать работу этих системы за счет дополнительного управления операцией сплетения. Это и станет целью следующих глав. В разделе 3.3 мы построили конечный автомат Mu , универсальный в классе конечных автоматов с ограниченным числом состояний и символов. Применяя доказательство леммы 7.18 к Mu , можно построить расширенную H-систему γu , обладающую подобными свойствами универсальности. Однако таким способом мы получим систему сплетения, производящую строки вида bls(code(M ), x) (используется обозначение из разде-
7.4. Расширенные H-системы
317
ла 3.3). Можно улучшить этот результат и построить «частично универсальную» H-систему с конечными составляющими, производящую в точности строки x, распознаваемые автоматом M , «программа» которого включена в множество аксиом этой универсальной системы. Для этого мы начнем не с bls(code(M ), x), как в разделе 3.3, а со строки, содержащей еще одну копию x. Воспользовавшись bls(code(M ), x), мы проверим, лежит или нет x в L(M ), и только в утвердительном случае удалим все вспомогательные символы, получив терминальную строку x. Вот эта универсальная H-система, ассоциированная с Mu : γu = (W, V, Au , Ru ), где W = V ∪ K ∪ Ku ∪ {B0 , B, E, Z, c1 , c2 }, Au = {BqZ | q ∈ Ku } ∪ {ZZ}, Ru = {Bq0,u #Z$B0 #} ∪ {Bq 0 #Z$Bqα# | qα → αq 0 ∈ Pu , f or q, q 0 ∈ Ku , α ∈ V ∪ K ∪ {c1 , c2 }} ∪ {#ZZ$BqE# | q ∈ K}. Если мы добавим к Au аксиому w0 = B0 bls(code(M ), x)Ex, то получим расширенную H-систему γu0 = (W, V, A0u , Ru ), такую, что L(γu0 ) = L(M ). Действительно, единственный способ получить строку из V ∗ , т. е. строку без символов из множества K ∪ Ku ∪ {B0 , B, E, Z, c1 , c2 }, состоит в том, чтобы шаг за шагом моделировать в префиксе B0 bls(code(M ), x)E аксиомы w0 выполнение с левой стороны правил из Pu (это обеспечивается тем, что во всех правилах сплетения требуется наличие B0 или B) до того момента, пока строка не будет приведена к виду BqE для некоторого q ∈ K (фактически режим работы автомата Mu обеспечит, что q ∈ Fu ). После этого блок BqE можно будет удалить с помощью правила сплетения #ZZ$BqE#.
318
7. Системы сплетения
Мы сформулируем этот важный (для ДНК-вычислений) вывод в виде теоремы. Теорема 7.7. Существуют расширенные H-системы с конечными множествами правил, универсальные в классе конечных автоматов с ограниченным числом состояний и ограниченным числом входящих символов. Заметим, что M «выполняется» на «компьютере» γu посредством «программы» w0 , единственной строки (связанной как с M , так и с x, и, следовательно, содержащей в себе и «алгоритм», и «входные данные»). Эта «программа» не слишком проста, она даже не контекстно-свободного типа из-за присутствия копий кода M . Однако строку w0 = B0 bls(code(M ), x)Ex можно получить сплетением более простых строк: построить строку z = code(M ), создать ее копии (операцией «размножить»), затем создать произвольно много строк вида Xi zXi0 , i > 1 (в действительности, потребуется ровно n + 2 такие копии, где n = |x|). Если x = a1 a2 · · · an , ai ∈ V , 1 6 i 6 n, рассмотрим также строки Yi ai Yi0 , 1 6 i 6 n. Наконец, рассмотрим строки B0 Z1 , Z2 Ex. Теперь несложно разработать правила сплетения, которые смогут построить строку w0 = B0 bls(code(M ), x)Ex, начав с упоминавшихся блоков. Символы Xi , Xi0 , Yi , Yi0 , Z1 , Z2 смогут проконтролировать эти операции, чтобы после их исключения строка стала бы равной w0 . Мы оставим эту задачу читателю. Замечание 7.1. С математической точки зрения семейство REG в равенстве EH1 (F IN, REG) = RE можно заменить на EH1 (F IN, F IN ), что дает равенство EH1 (F IN, EH1 (F IN, F IN )) = RE. На первый взгляд, это решает упомянутую выше проблему характеризации RE с помощью расширенных H-системы с конечными составляющими. Однако это равенство не имеет биохимического смысла: семейство REG из равенства EH1 (F IN, REG) = RE состоит из языков правил сплетения (связанных с рестриктазами), в то время как семейство REG
7.4. Расширенные H-системы
319
из EH1 (F IN, F IN ) = REG состоит из языков молекул ДНК. С практической точки зрения это совершенно разные объекты. Вернемся к равенству RE = EH1 (F IN, REG) и доказательству включения RE ⊆ EH1 (F IN, REG), данному в лемме 7.16. Для построенной в ней H-системы γ = (V, T, L0 , R) card(L0 ) = card(P ) + 2 · card(N ∪ T ) + 5 (обозначения те же, что и в лемме 7.16). Возникает естественный вопрос: можно ли уменьшить количество аксиом? Ответ довольно неожиданный: достаточно одной аксиомы. В то же время уменьшение числа аксиом может увеличить их длину. Мы докажем это в рамках более общего подхода. Определим две меры сложности для расширенной H-системы γ = (V, T, A, R) с конечным множеством аксиом A: nrax(γ) = card(A), lmax(γ) = max{|x| | x ∈ A}. (Это соответственно число аксиом и максимум их длин.) Для меры µ ∈ {nrax, lmax} и языка L ∈ EH1 (F IN, REG) положим µ(L) = min{µ(γ) | L = L(γ)}, и при каждом k > 1 рассмотрим семейство µ−1 (k) = {L ∈ EH1 (F IN, REG) | µ(L) 6 k}. В силу определений выполнены следующие включения: Лемма 7.19. Для µ ∈ {nrax, lmax} имеем µ−1 (1) ⊆ µ−1 (2) ⊆ · · · ⊆ EH1 (F IN, REG). Обе эти иерархии схлопываются. (В терминах дескриптивной сложности меры nrax, lmax тривиальны, см. раздел 3.1). Включение EH1 (F IN, REG) ⊆ lmax−1 (4) получается из доказательства леммы 7.16. Если начать с грамматики в нормальной форме Куроды G = (N, T, S, P ), т. е. с правилами u → v, в которых |u| 6 2, |v| 6 2, то для H-системы γ, построенной в этом доказательстве, будет выполняться lmax(γ) = 4. Верен более сильный результат: Теорема 7.8. lmax−1 (1) ⊂ lmax−1 (2) = EH1 (F IN, REG).
320
7. Системы сплетения
Доказательство. Возьмем H-систему γ = (V, T, A, R) с конечным множеством аксиом A = {w1 , w2 , . . . , wn }. Рассмотрим новые символы ci , c0i , 1 6 i 6 n, связанные с этими аксиомами, и построим H-систему γ 0 = (V ∪ {ci , c0i | 1 6 i 6 n}, T, A0 , R0 ), где A0 = {ci a | 1 6 i 6 n, a ∈ V } ∪ {ci , c0i | 1 6 i 6 n}, n [ R0 = R ∪ Ri , i=1
Ri = {ci x#$ci #a | x ∈ Pref(wi ), a ∈ V, xa ∈ Pref(wi )} ∪ {ci wi #$#c0i , #ci $ci #wi c0i , wi #c0i $c0i #}, 1 6 i 6 n. Имеем L(γ) = L(γ 0 ). Включение ⊆ достаточно очевидно: начав с ci , мы можем добавлять символ за символом, слева направо восстанавливая wi . Получив ci wi , мы сможем также ввести символ c0i ; при наличии c0i можно будет удалить ci , а затем и c0i , и в результате этого получить wi . После построения всех строк из A, мы сможем воспользоваться правилами из R, и значит, каждая строка из L(γ) может быть порождена с помощью γ 0 . Обратно, ни одна нежелательная строка не может быть получена с помощью γ 0 . Действительно, нетерминальные символы ci , c0i , 1 6 i 6 n, появляются во всех аксиомах γ 0 . Для того чтобы удалить c0i , мы должны воспользоваться правилом wi #c0i $c0i #; мы получим строку, содержащую wi в качестве суффикса. Следовательно, просто исключить c0i из аксиомы c0i мы можем лишь когда wi = λ. В таком случае λ ∈ L(γ). С другой стороны, удалить ci можно только в присутствии c0i , более точно, применив правило #ci $ci #wi c0i . Мы получим строку wi c0i . Поэтому, если после построения строки ci x при x ∈ Pref(wi ) воспользоваться правилами из R для сплетения x, мы получим строку ci z либо с условием z ∈ Pref(wi ), либо с z ∈ / Pref(wi ). В первом случае можно продолжить строить wi , во втором же случае удалить символ ci невозможно в принципе. Следова-
7.4. Расширенные H-системы
321
тельно, работа γ 0 состоит в точности из производства аксиом γ и последующего применения правил из R. Это означает, что L(γ 0 ) ⊆ L(γ), и значит, мы имеем равенство L(γ) = L(γ 0 ) и включение EH1 (F IN, REG) ⊆ lmax−1 (2). Эта граница неулучшаема, так как lmax−1 (1) строго содержится в lmax−1 (2). Действительно, возьмем язык L = {aa} и предположим, что L = L(γ) для некоторого γ = (V, {a}, A, R) при A ⊆ V . Поскольку все аксиомы имеют длину 1, символ a должен появиться по меньшей мере в одной аксиоме, следовательно, a ∈ A. Это означает, что a ∈ L(γ), в противоречие с равенством L = L(γ). Схлопывается (даже до одного уровня) и иерархия, связанная с числом аксиом. Теорема 7.9. nrax−1 (1) = EH1 (F IN, REG). Доказательство. Для данной H-системы γ = (V, T, A, R) с A = {w1 , w2 , . . . , wn }, n > 2, построим H-систему γ 0 = (V ∪ {c, c0 }, T, {w}, R0 ), где c, c0 — новые символы, и w = c0 cw1 cw2 · · · cwn cc0 , R0 = R ∪ {#c0 c$c#c0 , #c$c0 #, #c0 $c#}. Докажем, что L(γ) = L(γ 0 ). Включение ⊆ получить легко: применяя правило #c0 c$c#c0 , мы выводим (w, w) ` c0 ; используя правило #c$c0 #, из каждой строки вида xc (и из w) можно удалить самый правый символ c (соответственно, суффикс cc0 ), имея вторым термом c0 ; используя же правило #c0 $c#, из всякой строки вида x1 cx2 можно выделить суффикс x2 . Поэтому все аксиомы γ могут быть выделены из w. Применяя правила R мы теперь можем получить любую строку из L(γ). Обратно, нетрудно видеть, что на любом шаге все возникающие строки не выходят за пределы множества {с0 } ∪ X, где X = {gu1 cu2 · · · cus h | g ∈ {λ, c0 c}, h ∈ {λ, cc0 }, s > 1, ui ∈ σ1∗ (A), 1 6 i 6 s}.
322
7. Системы сплетения
Действительно, мы начинаем с аксиомы w, которая, очевидно, принадлежит X. С помощью первого правила из R0 − R и строк из нашего множества всегда строится с0 , второе и третье правила не выводят за границы X. Остается проверить, что и с помощью правила из R нельзя получить ничего нового. Действительно, если к двум строкам x, y вида x = x1 cx2 cx3 , y = y1 cy2 cy3 при x2 , y2 ∈ V ∗ применить правило сплетения из R на участках x2 , y2 , получим строку z = x1 cz1 cy3 , такую, что (x2 , y2 ) ` z1 при z1 ∈ V ∗ . Если x, y ∈ X, то, очевидно, и z ∈ X. Таким образом мы доказали, что L(γ 0 ) ⊆ X ∩ T ∗ . Из структуры множества X легко понять, что X ∩ V ∗ ⊆ σ1∗ (A). Поэтому, L(γ 0 ) ⊆ X ∩ T ∗ ⊆ σ1∗ (A) ∩ T ∗ = L(γ). Следствие 7.2. nrax−1 (1) = RE. В доказательствах предыдущих теорем, уменьшая длины аксиом, мы были вынуждены увеличивать их число, и наоборот. Это неслучайно, ибо эти две меры не могут быть минимизированы одновременно. Если µ : GM −→ N — мера сложности порождающих механизмов в данном классе GM , положим µGM (L) = min{µ(G) | L = L(G), G ∈ GM }. Тогда для языка L определим µ−1 (L) = {G ∈ GM | L = L(G), µ(G) = µGM (L)} (множество оптимально порождающих L устройств из GM ). Будем говорить, что две меры µ1 , µ2 несовместны (в GM ), если с помощью GM можно породить такой язык L, что −1 µ−1 1 (L) ∩ µ2 (L) = ∅.
(Данные две меры не могут быть одновременно минимизированы для элементов из GM , порождающих язык L.) Теорема 7.10. Меры nrax, lmax несовместны. Доказательство. Рассмотрим произвольный язык L ⊆ a+ ∪ b+ такой, что alph(L) = {a, b}. Тогда по теореме 7.9 nrax(L) = 1. Возьмем H-систему γ = (V, {a, b}, A, R) такую, что L = L(γ) и A = {w}, w ∈ V ∗ . Докажем, что |w| > 3. Действительно, оба
7.5. Простые H-системы
323
символа a и b должны присутствовать в w, поскольку в противном случае они не смогут появиться в строках L(γ). Однако ни одна из строк ab и ba не может быть аксиомой. Значит, в w есть по крайней мере один символ из V − {a, b}, откуда |w| > 3. С другой стороны, по теореме 7.8 lmax(L) = 2. Следовательно, для таких языков L мы не сможем найти H-систему γ, для которой nrax(γ) = 1 и lmax(γ) = 2 одновременно. Языки L рассмотренного вида есть и в EH1 (F IN, REG), и это замечание завершает доказательство.
7.5
Простые H-системы
В предыдущих разделах данной главы мы отыскивали варианты как можно более мощных порождающих механизмов, основанных на операции сплетения. Здесь, напротив, мы изучим довольно специфический тип сплетающих систем. Неудивительно, что в этом частном случае многие вопросы допускают изящное решение, что придает таким устройствам определенную математическую привлекательность. Простая H-система — это тройка γ = (V, A, Q), где V — алфавит, A — конечный язык над V и Q ⊆ V . Элементы A называются аксиомами, а элементы Q — маркерами. Для x, y, z ∈ V ∗ и a ∈ Q пишем (x, y) `a z тогда и только тогда, когда x = x1 ax2 , y = y1 ay2 , z = x1 ay2 при некоторых x1 , x2 , y1 , y2 ∈ V ∗ . Следовательно, можно представлять, что для каждого маркера a ∈ Q мы имеем правило сплетения ra = a#$a# (или ra0 = #a$#a). Положим RQ = {ra | a ∈ Q} и рассмотрим H-схему σQ = (V, RQ ). Тогда язык, порождае∗ (A). (В этом мый γ и обозначаемый L(γ), полагаем равным σQ
324
7. Системы сплетения
разделе мы опускаем нижний индекс 1 в σ1 (L), σ1∗ (L), чтобы избежать громоздких обозначений типа (σQ )∗1 (L).) Пример. Рассмотрим простую H-систему γ = ({a, b, c}, {abaca, acaba}, {b, c}). Получаем L(γ) = (abac)+ a ∪ (abac)∗ aba ∪ (acab)+ a ∪ (acab)∗ aca. Действительно, ((abac)n a, acaba) `c (abac)n−1 abacaba = (abac)n aba, ((abac)n aba, abaca) `b (abac)n abaca = (abac)n+1 a, и аналогично для строк (acab)n a, (acab)n aca, и значит, установлено включение ⊇. Обратно, при сплетении двух строк вида (abac)n a, (acab)n a (в самом начале n = 1) или (abac)n aba, (acab)n aca, мы отождествляем в них либо подстроку aba, либо подстроку aca, и следовательно, получаемые строки имеют тот же вид. Обозначим через SH семейство языков, порождаемых простыми H-системами. Легко могут быть доказаны следующие необходимые условия того, что язык лежит в SH. Лемма 7.20. (i) Если язык L ∈ SH бесконечен, то существует такое непустое множество Q ⊆ alph(L), что σQ (L) ⊆ L. (ii) Если L ∈ SH, L ⊆ V ∗ , и a+ ⊆ L при некотором a ∈ V , то σ{a} (L) ⊆ L. (iii) Если w ∈ V + , то w∗ ∈ SH тогда и только тогда, когда существует символ a ∈ V такой, что |w|a = 1. Используя эти условия, можно показать, что следующие языки не лежат в семействе SH: L1 = a+ b+ a+ b+ , L2 = a+ b ∪ b+ , L3 = (aabb)+ ,
7.5. Простые H-системы
325
а язык L ⊆ a∗ принадлежит семейству SH тогда и только тогда, когда либо он конечен, либо совпадает с одним из языков a∗ , a+ . Кроме того, мы получаем Следствие 7.3. Семейство SH является анти-AFL. Поскольку каждая простая H-система является (нерасширенной) конечной H системой особого типа, лемма 7.14 влечет, что SH ⊆ REG. Ниже мы увидим, что этот результат можно получить гораздо более простым способом как следствие теоремы о представлении языков из SH. Включение SH ⊂ REG, ввиду предыдущих контрпримеров, является собственным. Однако SH и REG «эквивалентны по модулю кодирования». Лемма 7.21. Каждый регулярный язык есть проекция языка из семейства SH. Доказательство. Пусть M = (K, V, s0 , F, δ) — детерминированный конечный автомат. Построим простую H-систему γ = (K ∪ V, A, K), где A = {s0 a1 s1 a2 s2 b · · · sr ar+1 sr+1 | r > 0, si ∈ K, причем каждое состояние si , 0 6 i 6 r + 1, появляется максимум дважды, sr+1 ∈ F , si+1 = δ(si , ai+1 ) для 0 6 i 6 r}. Ясно, что A — конечное множество. Рассмотрим также проекцию h, определяемую правилом h(a) = a для a ∈ V и h(s) = λ для s ∈ K. Включение h(L(γ)) ⊆ L(M ) следует из конструкции γ и определения h. Обратное включение может быть легко доказано с помощью индукции по длине строк в L(M ). Лемма 7.22. Для каждого языка L ∈ SH существуют пять конечных языков L1 , L2 , L3 , L4 , L5 и проекция h такая, что L = h(L1 L∗2 L3 ∩ L∗4 ) ∪ L5 . Доказательство. Пусть γ = (V, A, Q) — простая H-система. Для каждого a ∈ V рассмотрим новый символ a0 . Обозначим V 0 = {a0 | a ∈ V } и определим L1 = {xa | xay ∈ A, x, y ∈ V ∗ , a ∈ Q}, L2 = {a0 xb | yaxbz ∈ A, x, y, z ∈ V ∗ , a, b ∈ Q}, L3 = {a0 x | yax ∈ A, x, y ∈ V ∗ , a ∈ Q},
326
7. Системы сплетения
L4 = V ∪ {aa0 | a ∈ V }, L5 = {x ∈ A | |x|a = 0 для всех a ∈ Q}, h : (V ∪ V 0 )∗ −→ V ∗ , h(a) = a, a ∈ V, и h(a0 ) = λ, a ∈ V. Мы утверждаем, что L(γ) = h(L1 L∗2 L3 ∩L∗4 )∪L5 . Обозначим через B правую часть этого равенства. (1) L(γ) ⊆ B. Из определений ясно, что достаточно доказать два факта: (i) B включает множество A, и (ii) σQ (B) ⊆ B. (i) Если x ∈ A и |x|a = 0 для всех a ∈ Q, то x ∈ L5 ⊆ B. Если x ∈ A и x = x1 ax2 , a ∈ Q, то x1 a ∈ L1 , a0 x2 ∈ L3 , следовательно, x1 aa0 x2 ∈ L1 L3 . Ясно, что x1 aa0 x2 ∈ L∗4 . Поскольку h(x1 aa0 x2 ) = x1 ax2 = x, имеем x ∈ B. Следовательно, A ⊆ B. (ii) Возьмем две строки x, y ∈ B. Если одна из них из L5 , то σQ (x, y) = {x, y} ⊆ B. Возьмем такие строки x0 , y 0 ∈ L1 L∗2 L3 ∩ L∗4 , что x = h(x0 ), y = h(y 0 ), z ∈ σQ (x, y) и (x, y) `a z при некотором a ∈ Q. Тогда x = z1 az20 , y = z10 az2 , где z = z1 az2 , x0 = x1 a1 a01 x2 · · · xk ak a0k xk+1 , k > 1, y 0 = y1 b1 b01 y2 · · · ys bs b0s ys+1 , s > 1, где ai , bi ∈ Q, xi , yi ∈ V ∗ , a0i−1 xi ai , b0i−1 yi bi ∈ L2 для всех i и x1 a1 , y1 b1 ∈ L1 , a0k xk+1 , b0s ys+1 ∈ L2 . Тогда x = x1 a1 x2 · · · xk ak xk+1 , y = y1 b1 y2 · · · ys bs ys+1 . Определим теперь тот маркер a в x, соответственно в y, который использовался в сплетении (x, y) `a z. Если a = ai , то z1 = x1 a1 · · · xi−1 ai−1 xi , z20 = xi+1 ai+1 · · · ak xk+1 . Если ai 6= a при всех 1 6 i 6 k, то тогда xi = x0i ax00i . При i = 1 мы имеем x01 a ∈ L1 и a0 x001 a1 ∈ L2 . При 1 < i < k + 1 имеем a0i−1 x0i a ∈ L2 , a0 x00i ai+1 ∈ L2 . При i = k + 1 имеем a0k x0k+1 a ∈ L2 и a0 x00k+1 ∈ L3 . В любом случае можно найти такую строку x00 = w1 aa0 w2 ∈ L1 L∗2 L3 ∩ L∗4 , что x = h(x00 ). Аналогично, есть строка y 00 = w10 aa0 w20 ∈ L1 L∗2 L3 ∩ L∗4 такая, что y = h(y 00 ). Для z 0 = w1 aa0 w20 , очевидно, имеем z = h(z 0 ) и
7.5. Простые H-системы
327
z 0 ∈ L1 L∗2 L3 ∩ L∗4 . Следовательно, z ∈ B, что завершает доказательство свойства (ii), а значит, и включения L(γ) ⊆ B. (2) B ⊆ L(γ). Возьмем x ∈ B. Если x ∈ L5 , то x ∈ A ⊆ L(γ). Если x = h(x0 ), где x0 = x1 a1 a01 x2 a2 a02 . . . x0k ak a0k xk+1 , k > 1, причем x1 a1 ∈ L1 , a0i−1 xi ai ∈ L2 , 2 6 i 6 k, a0k xk+1 ∈ L3 , то в силу определения языков L1 , L2 , L3 найдутся строки x1 a1 x01 , yi ai−1 xi ai yi0 , 2 6 i 6 k, zk+1 ak xk+1 , лежащие в A. Тогда (x1 a1 x01 , y2 a1 x2 a2 y20 ) `a1 x1 a1 x2 a2 y20 = w2 , (w2 , y3 a2 x3 a3 y30 ) `a2 x1 a1 x2 a2 x3 a3 y30 = w3 , ... (wk , zk+1 ak xk+1 ) `ak x1 a1 x2 a2 . . . xk ak xk+1 = x. Следовательно, x ∈ L(γ). Данное представление не является характеризацией языков из SH. В действительности, сходный результат имеет место для всех регулярных языков: достаточно объединить леммы 7.21 и 7.22. Тем не менее, данное представление имеет ряд интересных следствий, одно из которых как раз касается регулярности языков, получаемых простым сплетением. Следствие 7.4. SH ⊆ REG. Помимо этого, из леммы 7.22 мы получаем следующее полезное необходимое условие того, что язык принадлежит SH. Следствие 7.5. Если γ = (V, A, Q) — простая H-система, то |x| 6 max{|w| | w ∈ A} для каждого x ∈ Sub(L(γ)) ∩ (V − Q)∗ . Из него выводится Теорема 7.11. Если L — регулярный язык, то вопрос о том, принадлежит ли L семейству SH, алгоритмически разрешим. Доказательство. Пусть L ⊆ V ∗ — регулярный язык, заданный с помощью регулярной грамматики или конечного автомата. Для произвольного подмножества Q ⊆ V обозначим
328
7. Системы сплетения
RQ = (V − Q)∗ ∪ {x1 a1 x2 a2 · · · xk ak xk+1 | 1 6 k 6 2 · card(Q), xi ∈ (V − Q)∗ , ai ∈ Q, 1 6 i 6 k, причем нет таких 1 6 i < j < l 6 k + 1, что ai = aj = al }. (Множество RQ состоит из всех строк над V , в которых каждый символ из Q появляется самое большее дважды.) Докажем, что L ∈ SH тогда и только тогда, когда существует такое множество Q0 , что L ∩ RQ0 конечно и есть A0 ⊆ L ∩ RQ0 такое, что L = L(γ0 ) для γ0 = (V, A0 , Q0 ). Действительно, достаточность очевидна. Установим необходимость. Пусть L = L(γ) и γ = (V, A, Q) при Q ⊆ V . Множество L ∩ RQ не может быть бесконечным, иначе в Sub(L) ∩ (V − Q)∗ найдутся строки произвольной длины, в противоречие со следствием 7.5. Положим, Q0 = Q. Если A не лежит в L ∩ RQ0 , то в A имеется строка вида z = x1 ax2 ax3 ax4 для x1 , x2 , x3 , x4 ∈ V ∗ , a ∈ Q0 . Рассмотрим строки z1 = x1 ax2 ax4 , z2 = x1 ax3 ax4 . Обе они лежат в σQ0 ({z}), и значит, в L(γ). Более того, (z1 , z2 ) `a z. Следовательно, заменив A на A0 = (A − {z}) ∪ {z1 , z2 }, мы получим систему γ 0 = (V, A0 , Q0 ), такую, что L(γ 0 ) = L(γ). Повторив этот процесс конечное число раз (множество A конечно и |z1 |, |z2 | < |z|), мы найдем нужную систему γ0 = (V, A0 , Q0 ) с A0 ⊆ L ∩ RQ0 . Теперь для проверки того, принадлежит ли данный регулярный язык L ⊆ V ∗ семейству SH, можно предложить следующий алгоритм. Для каждого подмножества Q0 ⊆ V (таковых конечное число) рассматривается пересечение L ∩ RQ0 . Если оно бесконечно, то L ∈ / SH. В противном случае, для каждого подмножества A0 ⊆ L∩RQ0 (которых опять же конечное число) строится простая H-система γ0 = (V, A0 , Q0 ). Если L = L(γ0 ) (что можно проверить алгоритмически), то, очевидно, L ∈ SH. Если же для всех таких пар Q0 , A0 L 6= L(γ0 ), то L ∈ / SH. Этот результат не может быть обобщен на случай контекстно-свободных (и даже линейных) языков.
7.5. Простые H-системы
329
Теорема 7.12. Вопрос о том, принадлежит ли данный линейный язык семейству SH, неразрешим. Доказательство. Возьмем произвольный линейный язык L1 ⊆ {a, b}∗ , а также язык L2 = c+ d+ c+ d+ , который не лежит в семействе SH. Построим линейный язык L = L1 {c, d}∗ ∪ {a, b}∗ L2 . Если L1 = {a, b}∗ , то L = {a, b}∗ {c, d}∗ ∈ SH: для γ = ({a, b, c, d}, {xy | x ∈ {a, b}∗ , y ∈ {c, d}∗ , |x| ∈ {0, 2}, |y| ∈ {0, 2}}, {a, b, c, d}) мы имеем L(γ) = {a, b}∗ {c, d}∗ . Если L1 6= {a, b}∗ , то возьмем w ∈ {a, b}∗ − L1 и рассмотрим строку w0 = wcdcd. Она лежит в L и (w0 , w0 ) `e wcdcdcd при e ∈ {c, d}. Получаемая строка не лежит в L, поэтому ни c, ни d не может быть маркером в простой H-системе для языка L. Но L содержит все строки из wc+ d+ c+ d+ , а значит, включение L ∈ SH противоречит пункту (i) леммы 7.20. Следовательно, L ∈ SH тогда и только тогда, когда L1 = {a, b}∗ , а вопрос о справедливости такого равенства для данного линейного языка алгоритмически неразрешим. Поскольку SH ⊂ REG, представляет интерес исследование взаимосвязей между SH и другими подсемействами REG. Мы рассмотрим только одно такое важное подсемейство — семейство строго локально тестируемых языков. Язык L ⊆ V ∗ называется p-строго локально тестируемым для некоторого p > 1, если он может быть представлен в виде L = {x ∈ L | |x| < 2p} ∪ (Pref(L) ∩ V p )V ∗ (Suf(L) ∩ V p ) − V ∗ (V p − Sub(L))V ∗ . Язык называется строго локально тестируемым, если он pстрого локально тестируемый при некотором p > 1. Семейство таких языков мы будем обозначать через SLT . Ясно, что SLT ⊂ REG. В действительности, SLT содержится в семействе расширенных беззвездных языков, наимень-
330
7. Системы сплетения
шем семействе, содержащем конечные языки и замкнутом относительно булевых операций и произведения. Теорема 7.13. SH ⊂ SLT. Доказательство. Мы воспользуемся характеризацией строго локально тестируемых языков из [72]. Следуя [311], будем называть строку x ∈ V ∗ константой по отношению к языку L ⊆ V ∗ , если из uxv ∈ L и u0 xv 0 ∈ L всегда следует, что uxv 0 ∈ L и u0 xv ∈ L. В [72] доказано, что язык L ⊆ V ∗ является строго локально тестируемым тогда и только тогда, когда существует такое целое k, что все строки из V k являются константами по отношению к L. Рассмотрим теперь язык L ∈ SH, и пусть L = L(γ), где γ = (V, A, Q) — некоторая простая H-система. Положим k = max{|x| | x ∈ A} + 1. Каждая строка из V k есть константа по отношению к L. Действительно, возьмем такую строку x и две строки uxv, u0 xv 0 из L. Поскольку |x| = k, по следствию 7.5 имеем |x|Q > 0. Возьмем такую букву a ∈ Q, что x = x1 ax2 . Тогда uxv = ux1 ax2 v, u0 xv 0 = u0 x1 ax2 v 0 , и значит, (uxv, u0 xv 0 ) `a ux1 ax2 v 0 = uxv 0 и (u0 xv 0 , uxv) `a u0 x1 ax2 v = u0 xv. Итак, L ∈ SLT и SH ⊆ SLT . Это включение строгое: при w = aabb, очевидно, имеем w∗ ∈ SLT , но w∗ ∈ / SH по лемме 7.20(iii).
7.6
Комментарии к библиографии
Операция сплетения введена Хэдом [130] в форме, рассмотренной в начале раздела 7.1: задаются тройки (u, x, v), которые описывают схемы, распознаваемые рестрикционными ферментами, и из троек, создающих совместимые окончания, строятся правила сплетения ((u1 , x, v1 ), (u2 , x, v2 )). Идея присоединить символ x к u1 , u2 (или к v1 , v2 ), приводящая к описанию места разреза в терминах контекстов (u01 , v1 ), (u02 , v2 ), появилась в [73]. Кодирование правил сплетения в виде строк u1 #u2 $u3 #u4 предложено в [239]; там же были рассмотрены схемы сплетения с бесконечными множествами правил.
7.6. Комментарии к библиографии
331
Раздел 7.1 основан на результатах [130] и введении и добавлении к [139]. Раздел 7.2 следует [239] с некоторыми модификациями в духе [139]. Один из главных вопросов, поднятых в [130], касался выразительной силы H-схем с конечным множеством правил, когда эти правила итерировались на конечном множестве начальных строк. Ответ на него получен в [59], где было установлено, что такая операция сохраняет регулярные языки. Доказательство опиралось на сложные рассуждения, сформулированные на языке полугруппы домино. Доказательство леммы о сохранении регулярности (лемма 7.14), представленное здесь, взято из [269]. Аналогичная идея используется в [271], где доказывается, что регулярность сохраняется и «обобщенным сплетением», правила которого суть тройки r : (v1 , v2 ; v3 ), применимые к строкам вида x = x1 v1 x2 и y = y1 v2 y2 с результатом x1 v3 y2 . Правила сплетения вида u1 #u2 $u3 #u4 , рассмотренные в данной главе, могут быть записаны как тройки (u1 u2 , u3 u4 ; u1 u4 ), и потому доказательство из [271] влечет лемму 7.14. Заметим, однако, что переходя от регулярного множества правил сплетения, записанных в виде u1 #u2 $u3 #u4 , к соответствующему множеству правил вида (u1 u2 , u3 u4 ; u1 u4 ) (с подходящим кодированием символов «,» и «;»), мы не всегда получим регулярный язык из-за повторения строк u1 и u4 . Тем не менее, если число строк u1 , u4 конечно, то регулярность будет сохраняться даже для бесконечных регулярных языков правил сплетения вида u1 #u2 $u3 #u4 . Общий результат в терминах AFL (лемма 7.15) анонсирован в [270], в [271] он приведен в случае правил вида (v1 , v2 ; v3 ), а со всеми подробностями изложен в [139]. Несколько более общая формулировка содержится в [272]. Основная лемма об универсальности доказана в [243] сразу для расширенных H-систем. Расширенные H-системы были введены в [258]. Характеризации регулярных языков в терминах морфизмов (такие, как, например, теорема 7.5) найдены в [109, 111, 239]. Лемма 7.18 появилась в [258]. Теоремы 7.8– 7.10 взяты из [243], теорема 7.7 — из [209].
332
7. Системы сплетения
Простые H-системы введены и исследованы в [212], где можно найти и ряд результатов, не упомянутых в разделе 7.5 (они касаются дескриптивной сложности, алгебраических характеризаций, сравнения с другими подсемействами семейства регулярных языков и т. п.). В [132] рассматривается одно обобщение SH-систем — системы с маркерами-строками: k-простая H-система — это тройка γ = (V, A, Q), где V — алфавит, A — конечное подмножество в V ∗ , а Q — конечное множество строк над V , длины меньшей или равной k, k > 1. Строки из Q играют ту же роль, что и маркеры в простой H-системе: (uxv, u0 x0 v 0 ) `x uxv 0 , x ∈ Q. Обозначим через Sk H семейство языков, порожденных k 0 -простыми H-системами, где k 0 6 k. В [132] доказано, что [ SH = S1 H ⊂ S2 H ⊂ · · · ⊂ Sk H = SLT. k>1
Кроме того, установлена разрешимость вопроса о принадлежности данного регулярного языка семейству Sk H, k > 1. Доказано, что в случае утвердительного ответа минимальное значение k эффективно вычислимо.
Глава 8 Универсальность и конечные H-системы Как мы уже видели в предыдущей главе, расширенные H-системы с конечными множествами аксиом и правил сплетения порождают лишь регулярные языки. Поскольку нам хотелось бы найти порождающие (вычислительные) модели с возможностями машин Тьюринга, мы должны рассмотреть такие свойства, которые могли бы расширить выразительную силу H-систем. Это с успехом было проделано для грамматик Хомского и других порождающих механизмов в теориях регулируемых переписывающих систем и грамматических систем. Вооружившись соответствующими идеями этих теорий и идеями, предложенными при доказательстве основной леммы о универсальности (лемма 7.16), мы рассмотрим в данной главе ряд регулируемых H-систем, обладающих конечными составляющими. Эти системы характеризуют рекурсивно перечислимые языки, и значит, являются вычислительно полными. Из соответствующих доказательств мы извлечем универсальные вычислительные устройства, т. е. модели «программируемых ДНК-компьютеров, основанных на сплетении».
8.1
От 1-сплетения к 2-сплетению
Расширенные H-системы, которые мы будем рассматривать в данной главе (с регулируемым сплетением или другими механизмами, обеспечивающими вычислительную полноту даже при использовании конечных множеств аксиом и правил), призваны играть роль теоретических моделей ДНК-компьютеров, основанных на сплетении. Вот почему ниже мы будем работать с более реалистичной операцией 2-сплетения. В ее определении участвуют обе строки, получаемые при рекомбинации: (x, y) |=r (z, w)
334
8. Универсальность и конечные H-системы
тогда и только тогда, когда x = x1 u1 u2 x2 , z = x1 u1 u4 y2 ,
y = y1 u 3 u 4 y2 , w = y1 u3 u2 x2 ∗,
для некоторых x1 , x2 , y1 , y2 ∈ V где r = u1 #u2 $u3 #u4 — правило сплетения. Для H-схемы σ = (V, R) и языка L ⊆ V ∗ определим σ2 (L) = {z ∈ V ∗ | (x, y) |=r (z, w) или (x, y) |=r (w, z) для некоторых x, y ∈ L и r ∈ R}. Далее можно определить σ2i (L), i > 0, и σ2∗ (L) точно также, как в начале раздела 7.3 были определены соответственно σ1i (L), i > 0, и σ1∗ (L). Таким образом, можно повторить все рассуждения из разделов 7.2–7.5, заменив операцию ` на |=. Обозначим через S2 (F L1 , F L2 ), H2 (F L1 , F L2 ), EH2 (F L1 , F L2 ) семейства языков, аналогичные семействам S1 (F L1 , F L2 ), H1 (F L1 , F L2 ) и EH1 (F L1 , F L2 ) соответственно. Скажем, что семейство языков F L замкнуто относительно отмеченной циклической перестановки, если для каждого языка L ⊆ V ∗ {c}V ∗ , где c ∈ / V , L ∈ F L, язык permc (L) = {vcu | ucv ∈ L, u, v ∈ V ∗ } также лежит в F L. Лемма 8.1. Для каждого семейства F L1 и семейства F L2 , замкнутого относительно объединения и отмеченной циклической перестановки, имеем X2 (F L1 , F L2 ) ⊆ X1 (F L1 , F L2 ), X ∈ {S, H, EH}. Доказательство. Рассмотрим H-схему σ = (V, R) c R ∈ F L2 . Для каждого языка L ∈ F L1 имеем σ2 (L) = σ10 (L), где σ 0 = (V, R ∪ perm$ (R)). Равенство очевидно, и R ∪ perm$ (R) ∈ F L2 благодаря свойствам F L2 . Это доказывает все включения из формулировки леммы. Большинство результатов главы 7, касающихся семейств X1 (F L1 , F L2 ), X ∈ {S, H, EH}, остаются справедливыми и в случае семейств X2 (F L1 , F L2 ). Исключения составляют лем-
8.1. От 1-сплетения к 2-сплетению
335
мы 7.2, 7.4, 7.5. Правда, если от F L1 , F L2 из формулировок этих лемм потребовать замкнутости относительно пересечения с регулярными языками, то их утверждения станут верными и для семейств X2 (. . . , . . . ). В леммах 7.3 и 7.6 замкнутость относительно ОПМ-отображений обеспечивает и замкнутость относительно пересечения с регулярными языками, поэтому эти леммы также остаются справедливыми для случая 2сплетения. Мы не станем задерживаться для подробной проверки каждого результата из главы 7, поскольку интересуемся не математическими свойствами операции |=, а ее вычислительными свойствами. С этой точки зрения существенными являются следующие факты: 1. Из лемм 7.14 и 8.1 следует, что H2 (REG, F IN ) ⊆ REG. Аналогично, из леммы 7.15 имеем H2 (CF, F IN ) ⊆ CF . Кроме того, лемма 7.18 остается верной для операции 2сплетения, REG ⊆ EH2 (F IN, F IN ). Это легко усмотреть из доказательства леммы 7.18, проверив вторые строки, получающиеся в расширенной H-системе γ при операциях 2-сплетения. Все они содержат нетерминальный символ из N и символ Z, причем, даже вступая в новые сплетения, эти строки не могут произвести терминальные строки, не лежащие в L. Следовательно, EH2 (F IN, F IN ) = REG. 2. Лемма 7.16 и при замене H1 на H2 остается справедливой, т. е. каждый язык L ∈ RE, L ⊆ V ∗ , может быть записан в виде L = L0 ∩ V ∗ для некоторого L0 ∈ H2 (F IN, REG). Это можно понять из доказательства леммы 7.16 (вторые строки, полученные при 2-сплетении, не могут привести к появлению строк из V ∗ , не лежащих в L). Здесь мы не акцентируем на этом внимание, так как в ряде доказательств ниже мы подробно обсудим данный вопрос. 3. Благодаря лемме 8.1 утверждение леммы 7.17 также выполняется при замене H1 на H2 . Таким образом, отношения из таблицы 7.3, остаются в силе и для семейств EH2 (F L1 , F L2 ). В частности, имеем EH2 (F IN, F IN ) = REG,
EH2 (F IN, REG) = RE.
336
8. Универсальность и конечные H-системы
Обсуждение, приведенное после таблицы 7.3 можно также повторить и для расширенных H-систем, основанных на 2-сплетениях: для того, чтобы добиться вычислительной полноты для систем с конечными компонентами, мы должны наделить наши модели дополнительными характеристиками.
8.2
Разрешающие и запрещающие контексты
Рассматривая H-системы в доказательстве леммы 7.16, можно заметить, что множество правил сплетения бесконечно из-за появления в правилах типа 1–6 подстрок w. Тем не менее, эти подстроки неинформативны сами по себе (кроме правил типа 6, в которых w ∈ T ∗ ). Они являются произвольными строками над алфавитом N ∪ T ∪ {B}, и роль их заключается в том, чтобы доставлять информацию о символе, появляющемся за ними, а именно, о X, X 0 с левого конца первого терма сплетения и Y , Yα , α ∈ N ∪ T ∪ {B}, с правого конца второго терма сплетения. Иначе говоря, мы имеем дело фактически с конечным числом правил сплетения, которые применяются только к строкам, содержащим на концах некие символы из вполне определенных множеств. Все это приводит к рассмотрению Hсистем с регулируемым сплетением следующего типа. Расширенная H-система с разрешающими контекстами — это четверка γ = (V, T, A, R), в которой V — алфавит, T ⊆ V , A — конечный язык над V , R — конечное множество троек вида p = (r; C1 , C2 ), причем r есть правило сплетения над V вида = u1 #u2 $u3 #u4 , а C1 , C2 — конечные подмножества V ∗ . Заметим, что здесь рассматриваются системы только с конечными компонентами. Для x, y, z, w ∈ V ∗ и p ∈ R, p = (r; C1 , C2 ) определяем (x, y) |=p (z, w) тогда и только тогда, когда (x, y) |=r (z, w), каждый элемент из C1 появляется в качестве подстроки в x, а каждый элемент из C2 — в качестве подстроки в y; в том
8.2. Разрешающие и запрещающие контексты
337
случае, когда C1 = ∅ или C2 = ∅, никаких условий на x, соответственно y, не накладывается. Пара σ = (V, R) называется (основной) H-схемой с правилами разрешающих контекстов. Язык, порожденный γ, определяется естественным образом: L(γ) = σ2∗ (A) ∩ T ∗ . Обозначим через EH2 ([n], p[m]), n, m > 1 семейство языков L(γ), порожденных расширенными H-системами с разрешающими контекстами, γ = (V, T, A, R) при card(A) 6 n и rad(R) 6 m, где rad(R) — максимальный радиус правил сплетения r в тройках (r; C1 , C2 ) из R. Если никаких ограничений на число аксиом или максимальный радиус не введено (безусловно, эти числа являются конечными), мы заменяем [n] или, соответственно, [m] на F IN . Мы подробно излагаем доказательство следующей леммы по двум причинам: во-первых, из-за важности самого результата, во-вторых, из желания продемонстрировать методы работы с H-системами, основанными на операции |=. Лемма 8.2. RE ⊆ EH2 (F IN, pF IN ). Доказательство. Рассмотрим грамматику Хомского 0 типа G = (N, T, S, P ). Обозначим U = N ∪ T ∪ {B}, где B — новый символ. Мы построим расширенную H-систему с разрешающими контекстами γ = (V, T, A, R), где V = N ∪ T ∪ {B, X, X 0 , Y, Z, Z 0 , Z 00 } ∪ {Yα | α ∈ U }, A = {XBSY, XZ, Z 0 , Z 00 , ZY } ∪ {ZYα , X 0 αZ | α ∈ U } ∪ {ZvY | u → v ∈ P } и R содержит такие правила с разрешающими контекстами: Имитация : 1. (#uY $Z#vY ; {X}, ∅) Переброска : 2. (#αY $Z#Yα ; {X}, ∅) 0
3. (X#$X α#Z; {Yα }, ∅) 0
4. (#Yα $Z#Y ; {X }, ∅) 0
5. (X #$X#Z; {Y }, ∅).
для u → v ∈ P. для α ∈ U, для α ∈ U, для α ∈ U,
338
8. Универсальность и конечные H-системы
Завершение : 6. (XB#$#Z 0 ; {Y }, ∅), 7. (#Y $Z 00 #; ∅, ∅). Эта конструкция, точнее, процедуры переброски и имитации, переписанные для правил сплетения с разрешающими контекстами, целиком взята из доказательства основной леммы о универсальности. Правила группы 1 позволяют нам имитировать правила из P в суффиксах первых термов сплетения. Мы же должны уметь моделировать применение правила из P в любом месте основной сентенциальной формы, а не только на ее правом конце. Для этого введены правила групп 2, 3, 4 и 5, позволяющие нам осуществлять «ротацию» букв. Правило из группы 2 отрезает символ α с правого конца слова, Yα сохраняет информацию об этом символе, применение правила из группы 3 вводит α на левый край (вместе с X 0 ), после чего Yα снова заменяется на Y (с помощью правила из группы 4), а X 0 — на X (с помощью правил из группы 5). Таким образом может быть получена любая циклическая перестановка. Правила из групп 6, 7 позволяют, наконец, удалить ограничители X и Y (первый из них — только при наличии B в качестве соседа). Разберем подробней, как эти идеи работают. Имитируя вывод в G, начнем с XBSY . Ограничитель X и его вариант X 0 , а также Y и его варианты Yβ , β ∈ U, отмечают концы слова. Кроме того, символ B всегда указывает на начало слова, перестановку которого мы рассматриваем. Все правила сплетения с разрешающими контекстами, содержащиеся в R, требуют присутствия символов Z, Z 0 , Z 00 во втором терме сплетения. Фактически это означает, что данные слова берутся из A. Правило 1, применяемое к XBSY и ZvY при некотором S → v ∈ P , начинает имитацию вывода в G. Далее, из слова Xx1 Bx2 uY и u → v ∈ P мы можем получить Xx1 Bx2 vY , используя подходящее правило из группы 1: (Xw|uY, Z|vY ) |=p (XwvY, ZuY )
8.2. Разрешающие и запрещающие контексты
339
для p = (#uY $Z#vY ; {X}, ∅), где u → v ∈ P и w ∈ (N ∪ T )∗ {B}(N ∪ T )∗ . Это соответствует шагу вывода x2 ux1 =⇒ x2 vx1 в G . В результате сплетений указанного вида мы дополнительно получаем еще и слова ZuY при u → v ∈ P , которые не используются в дальнейшем при имитации вывода в G. К каждому слову XwαY , где α ∈ N ∪ T и w ∈ (N ∪ T )∗ {B}(N ∪ T )∗ , и, соответственно, к XwαY , где α = B и w ∈ (N ∪ T )∗ , можно применить также подходящее правило группы 2, после чего — соответствующие правила из групп 3 и 4. Наконец, задействовав правило группы 5, мы получим слово XαwY . Символ α был в результате переброшен с правого на левый конец слова, что нам и требовалось: 1. (Xw|αY, Z|Yα ) |=p (XwYα , ZαY ) при p = (#αY $Z#Yα ; {X}, ∅), где wα ∈ (N ∪ T )∗ {B}(N ∪ T )∗ , α ∈ N ∪ T ∪ {B}; 2. (X|wYα , X 0 α|Z) |=p (XZ, X 0 αwYα ) при p = (X#$X 0 α#Z; {Yα }, ∅), где wα ∈ (N ∪ T )∗ {B}(N ∪ T )∗ , α ∈ N ∪ T ∪ {B}; 3. (X 0 αw|Yα , Z|Y ) |=p (X 0 αwY, ZYα ) при p = (#Yα $Z#Y ; {X 0 }, ∅), где wα ∈ (N ∪ T )∗ {B}(N ∪ T )∗ , α ∈ N ∪ T ∪ {B}; 4. (X 0 |αwY, X|Z) |=p (X 0 Z, XαwY ) при p = (X 0 #$X#Z; {Y }, ∅), где wα ∈ (N ∪ T )∗ {B}(N ∪ T )∗ , α ∈ N ∪ T ∪ {B}. Как дополнительные результаты (уже не лежащие в множестве аксиом A) перечисленных выше сплетений получаются слова ZαY , где α ∈ U , и если v 6= λ для всех правил u → v ∈ P , то еще и слово X 0 Z. Заметим, что каждое слово, получавшееся до сих пор из XBSY и не содержавшее символ Z, имело вид α1 x1 Bx2 α2 , где (α1 , α2 ) — одна из пар (X, Y ), (X, Yα ), (X 0 , Yα ), (X 0 , Y ), α ∈ U . Следовательно, эти символы, представленные в качестве разрешающих контекстов в правилах сплетения из R, четко регулируют работу γ.
340
8. Универсальность и конечные H-системы
Для того чтобы получить терминальное слово, мы должны воспользоваться правилами из групп 6, 7. Для применения правила 6 в слове должен присутствовать символ Y , а символ B — соседствовать с X: 1. (XB|wY, |Z 0 ) |=p (XBZ 0 , wY ) при p = (XB#$#Z 0 ; {Y }, ∅), 2. (w|Y, |Z 00 ) |=p (w, Z 00 Y ) при p = (F 0 #$#Z 00 ; {F 0 }, ∅), где w ∈ (N ∪ T )∗ . Дополнительно при указанных сплетениях мы получаем слова XBZ 0 , Z 00 Y . В общем, в γ можно построить любое терминальное слово, какое может быть создано с помощью G, т. е. L(γ) ⊇ L(G). Обратно, ни одно лишнее терминальное слово не может быть порождено в γ, т. е. L(γ) ⊆ L(G). Действительно, слова вида ZuY , возникающие по правилу из группы 1 и связанные с u → v ∈ P , могут участвовать в сплетении по правилу типа 1 только тогда, когда ZuY ∈ A, а такая операция уже обсуждалась. Кроме этого, мы можем выполнить сплетение (Zu|Y, Z 00 |) |=p (Zu, Z 00 Y ) при p = (#Y $Z 00 #; ∅, ∅). Строка Zu не может участвовать в новых сплетениях, а Z 00 Y может, но лишь по тому же правилу, не давая ничего нового: (Xw|Y, Z 00 |Y ) |=p (XwY, Z 00 Y ), (Z 00 |Y, Z 00 |) |=p (Z 00 , Z 00 Y ). Рассмотрим теперь строки ZαY, α ∈ U , получаемые при переброске. Их нельзя использовать как первые термы при сплетениях по правилам типов 1–6. Возникающая при сплетении (Zα|Y, Z 00 |) |=p (Zα, Z 00 Y ) при p = (#Y $Z 00 #; ∅, ∅) строка Zα вообще не может участвовать в новых сплетениях, а Z 00 Y (см. предыдущий абзац) не приводит к появлению терминальных строк. В качестве второго терма строка ZαY может вступать в сплетение лишь по правилу типа 1 тогда и только тогда, когда ZαY ∈ A.
8.2. Разрешающие и запрещающие контексты
341
И, наконец, X 0 Z не может участвовать ни в одном сплетении. Строка XBZ 0 может сплетаться по правилу типа 6 (XB|w, XB|Z 0 ) |= (XBZ 0 , XBw), w ∈ (N ∪ T )∗ , не производя при этом ничего нового. С помощью же строки Z 00 Y создать терминальную строку невозможно. Итак, L(γ) = L(G). Замечание 8.1. Отметим, что пары (C1 , C2 ) в правилах (p; C1 , C2 ) из H-системы с разрешающими контекстами в доказательстве леммы 8.2 имеют специальный вид ({D}, ∅), где D — некий нетерминальный символ (правило типа 7 можно заменить на (#Y $Z 00 #; {Y }, ∅)). Другими словами, мы лишь проверяем наличие одного нетерминального символа в первом терме сплетения. На это можно смотреть как на результат о нормальной форме для наших систем. Замечание 8.2. Правило сплетения с ровно одним проверяемым символом, который как и в доказательстве леммы 8.2 должен появляться в конце строки, можно в принципе реализовать следующим образом. Как отмечалось в главе 1, рестрикционные ферменты работают лишь на двойных цепочках. Мы расплавим раствор, чтобы получить одинарные цепочки и добавим праймер, содержащий дополнение к разрешенному символу. Этот праймер подключится только к одинарной цепочке, содержащей на конце выделенный символ. Лишь эти одинарные цепочки нужно включить в полимеразную реакцию, приводящую к удвоению цепочек, и тогда фермент будет воздействовать лишь на них. Теорема 8.1. EH2 (F IN, pF IN ) = RE. Доказательство. Включение EH2 (F IN, pF IN ) ⊆ RE следует из тезиса Черча–Тьюринга или может быть доказано непосредственно. Обратное включение установлено в лемме 8.2. В доказательстве леммы 8.2 мы не брали во внимание радиус используемых правил сплетения. Заменив произвольную грамматику G на грамматику в нормальной форме Куроды, мы
342
8. Универсальность и конечные H-системы
получим расширенную H-системы с разрешающими контекстами радиуса 3. Такое значение достигается в правилах сплетения типа 1 (#uY $Z#vY , где |uY | и |vY | могут равняться 3). Этот результат можно усилить. Лемма 8.3. RE ⊆ EH2 (F IN, p[2]). Доказательство. Возьмем грамматику G = (N, T, S, P ) типа 0 в нормальной форме Куроды. Обозначим через P1 множество контекстно-свободных правил из P , а через P2 множество неконтекстно-свободных правил из P . Мы построим расширенную H-систему с разрешающими контекстами γ = (V, T, A, R), где V = N ∪ T ∪ {B, X, X 0 , Z, Z 0 , Z 00 , Y } ∪ {Yr | r ∈ P2 } ∪ {Zr | r ∈ P } ∪ {Yα | α ∈ N ∪ T ∪ {B}}, A = {XBSY, ZY, XZ, Z 0 , Z 00 } ∪ {ZYα , X 0 αZ | α ∈ N ∪ T ∪ {B}} ∪ {Zr xY | r : C → x ∈ P1 } ∪ {ZYr , Zr EF Y | r : CD → EF ∈ P2 }, а R содержит следующие группы правил: Имитация : 1. (#CY $Zr #x; {X}, ∅) при r : C → x ∈ P1 . 2. (C#DY $Z#Yr ; {X}, ∅), 3. (#CYr $Zr #EF ; {X}, ∅) при r : CD → EF ∈ P2 , Переброска : 4. (#αY $Z#Yα ; {X}, ∅), 5. (X#$X 0 α#Z; {Yα }, ∅), 6. (#Yα $Z#Y ; {X 0 }, ∅), 7. (X 0 #$X#Z; {Y }, ∅) при α ∈ N ∪ T ∪ {B}. Завершение : 8. (XB#$#Z 0 ; {Y }, ∅), 9. (#Y $Z 00 #; ∅, ∅).
8.2. Разрешающие и запрещающие контексты
343
Правила типа 1 имитируют правила из P1 , а правила типа 2, 3 — правила из P2 . (Мы начинаем с XBSY , и значит, на первом шаге будем вынуждены воспользоваться правилом типа 1. В каждом сплетении должны участвовать аксиома и строка, произведенная на предыдущем шаге. В результате возникает строка вида XwY , где w ∈ (N ∪ T ∪ {B})∗ , а X, Y могут заменяться их вариантами с индексами.) Рассмотрим, для примера, строку Xw1 Bw2 CDY и правило r : CD → EF ∈ P2 . Получим (Xw1 Bw2 C|DY, Z|Yr ) |=2 (Xw1 Bw2 CYr , ZDY ), (Xw1 Bw2 |CYr , Zr |EF Y ) |=3 (Xw1 Bw2 EF Y, Zr CYr ). Правила типов 4–7 используются для сдвигов внутри строки, а правила типов 8 и 9 — для завершения работы γ так же, как и в доказательстве леммы 8.2. Таким образом, имеем L(G) = L(γ). Ясно, что rad(γ) = 2. Теорема 8.1 теперь может быть переписана так: Следствие 8.1. RE = EH2 (F IN, p[2]). Остаются открытыми три проблемы: (1) Можно ли усилить лемму 8.3 до включения RE ⊆ EH2 (F IN, p[1])? Мы предполагаем, что EH2 (F IN, p[1]) ⊆ CF , т. е. что ответ будет отрицательным. (2) Можно ли заранее ограничить число аксиом, не жертвуя при этом вычислительной полнотой? (3) Можно ли одновременно уменьшить и количество аксиом, и радиус правил сплетения? Как показывает опыт теории дескриптивной сложности (и как мы видели в конце раздела 7.4), ответ на этот вопрос, скорее всего, отрицательный, т. е. весьма вероятно, что потребуется компромисс между двумя критериями сложности — card(A) и rad(R). Заметим, что при доказательстве леммы 8.3 радиусы изменялись. Правила из R00 могут иметь радиусы произвольной величины в зависимости от длины аксиом системы γ. Тем не менее, как мы увидим позже, для многих регулируемых H-систем эти два параметра могут быть одновременно ограничены сверху, и границы эти довольно низки.
344
8. Универсальность и конечные H-системы
Если наше первое предположение подтвердится, и окажется верным включение EH2 (F IN, p[1]) ⊆ CF , возникнет абсолютно новая характеризация контекстно-свободных языков, так как обратное включение доказывается в следующей лемме. Лемма 8.4. CF ⊆ EH2 (F IN, p[1]). Доказательство. Рассмотрим контекстно-свободную грамматику G = (N, T, S, P ) в сильной нормальной форме Хомского, т. е. с правилами вида X → a, X → Y Z, где X, Y, Z ∈ N, a ∈ T , и добавочными ограничениями, указанными в теореме 3.2: 1) если X → Y Z из P , то Y 6= Z, 2) если X → Y Z из P , то для каждого правила X → Y 0 Z 0 из P выполняется Z 0 6= Y и Y 0 6= Z. Мы построим H-систему γ = (V, T, A, R) с разрешающими контекстами, где V = T ∪ {Xl , Xr , Xr0 | X ∈ N } ∪ {D, E}, A = {Xl aXr | X → a ∈ P } ∪ {Xl D, DXr , DXr0 | X ∈ N } ∪ {E}, а R состоит из следующих правил сплетения: 1)
(a#Yr $Zl #b; {Yl }, {Zr })
для
X → Y Z ∈ P,
a, b ∈ T,
2)
для
X → Y Z ∈ P,
a ∈ T,
для
X, Y ∈ N,
a ∈ T,
4)
(a#Zr $D#Xr0 ; {Yl }, ∅) (Xl #D$Yl #a; ∅, {Xr0 }) (a#Xr0 $D#Xr ; {Xl }, ∅)
для
X ∈ N,
a ∈ T,
5)
(a#Sr $E#; {Sl }, ∅)
для
a ∈ T,
6)
(#E$Sl #a; ∅, ∅)
для
a ∈ T.
3)
Основная идея конструкции заключается в том, чтобы строка Xl wXr при w ∈ T + , X ∈ N порождалась в γ тогда и только тогда, когда X =⇒∗ w в грамматике G. (Индексы l, r в Xl , Xr означают соответственно «лево» и «право».) Если X = S, то w — элемент L(G). Правила X → a имитируются непосредственно с помощью аксиом, поскольку строки Xl aXr введены в A. Рассмотрим две строки Yl w1 Yr , Zl w2 Zr , полученные в γ. Аксиомы из A, соответствующие терминальным правилам из P ,
8.2. Разрешающие и запрещающие контексты
345
имеют такой же вид, остальные же аксиомы от них отличаются. Если в P есть правило X → Y Z, то в R имеется правило типа 1, а значит, можно выполнить сплетение (Yl w1 |Yr , Zl |w2 Zr ) |=1 (Yl w1 w2 Zr , Zl Yr ). Вторая строка не может вступать в новые сплетения в γ (в термах сплетения всегда должен присутствовать либо терминальный символ, либо управляющий символ D). С первой строкой можно поступить следующим образом: (Yl w1 w2 |Zr , D|Xr0 ) |=2 (Yl w1 w2 Xr0 , DZr ), (Xl |D, Yl |w1 w2 Xr0 ) |=3 (Xl w1 w2 Xr0 , Yl D), (Xl w1 w2 |Xr0 , D|Xr ) |=4 (Xl w1 w2 Xr , DXr0 ). Эти шаги возможны лишь при условии, что в P есть правило X → Y Z. Следовательно, мы получаем строку Xl w1 w2 Xr , соответствующую выводу X =⇒∗ w1 w2 в G. Строки же DZr , Yl D, DXr0 — аксиомы. Таким образом, строка Xl zXr действительно строится в γ тогда и только тогда, когда X =⇒∗ z в G. Получив строку Sl xSr при x ∈ L(G), мы можем применить правила 5, 6 из R: (Sl x|Sr , E|) |=5 (Sl x, ESr ), (|E, Sl |x) |=6 (x, Sl E). Мы получим строку x и строки, которые могут участвовать лишь в сплетениях того же вида, ничего при этом не производя (например, (Sl x|Sr , E|Sr ) |=5 (Sl xSr , ESr )). Правило 6 не может быть применено раньше правила 5 из-за символа Sl , который обязан присутствовать в строке, сплетаемой по правилу 5. Это и завершает доказательство равенства L(G) = L(γ). Обратимся теперь снова к доказательству леммы 8.2. Символы, наличие которых там проверяется, — элементы множества контролирующих символов Q = {X, X 0 , Y } ∪ {Yα | α ∈ N ∪ T ∪ {B}}. Присутствие одного такого символа эквивалентно отсутствию остальных, поскольку на концах всех строк, за исключе-
346
8. Универсальность и конечные H-системы
нием терминальных, обязательно стоит пара контролирующих символов. Таким образом, можно рассмотреть дуальный вариант расширенных H-систем с разрешающими контекстами, а именно системы с запрещающими контекстами. Расширенная H-система с запрещающими контекстами — это четверка γ = (V, T, A, R), где V — алфавит, T ⊆ V (терминальный алфавит), A — конечный язык над V (аксиомы), а R — конечное множество троек (мы называем их правилами с запрещающими контекстами) следующего вида: p = (r; D1 , D2 ), где r = u1 #u2 $u3 #u4 — правило сплетения над V , а D1 , D2 — конечные подмножества множества V ∗ . Для x, y, z, w ∈ V ∗ и p ∈ R, p = (r; D1 , D2 ) полагаем (x, y) |=p (z, w) тогда и только тогда, когда (x, y) |=r (z, w), и ни один элемент из D1 не появляется в качестве подстроки в x, а ни один из D2 — в y. Если D1 = ∅ или D2 = ∅, то условий на x соответственно y, не накладывается. С биохимической точки зрения разрешающие контексты можно интерпретировать как катализаторы, благоприятствующие сплетению по соответствующему правилу, а запрещающие контексты — как ингибиторы (замедлители реакции), подавляющие соответствующее сплетение. Пара σ = (V, R) называется (основной) H-схемой с правилами запрещающих контекстов. Язык, порождаемый γ, определяется обычным образом: L(γ) = σ2∗ (A) ∩ T ∗ . Мы обозначаем через EH2 ([n], f [m]), n, m > 1 семейство языков L(γ), порождаемых расширенными H-системами с запрещающими контекстами γ = (V, T, A, R) при card(A) 6 n и rad(R) 6 m, где rad(R) — максимальный радиус правил сплетения r в тройках (r; D1 , D2 ) из R. Если число аксиом или максимальный радиус не ограничивается (оставаясь при этом конечным), мы заменяем [n] или [m] на F IN . Благодаря предыдущему обсуждению мы готовы к появлению равенства EH2 (F IN, f [2]) = RE, но, на самом деле, верен более сильный результат.
8.2. Разрешающие и запрещающие контексты
347
Теорема 8.2. EH2 ([1], f [2]) = RE. Доказательство этой теоремы основано на двух леммах, первая из которых соответствует леммам 8.2 и 8.3, а вторая доказывает для запрещающих контекстов включение, аналогичное предполагаемому нами (но пока не доказанному) включению RE ⊆ EH2 ([1], pF IN ). Ради полноты, а также изза впечатляющей формулировки теоремы 8.2, мы представим центральные конструкции из доказательств этих лемм. Лемма 8.5. RE ⊆ EH2 (F IN, f [2]). Доказательство. Возьмем грамматику G = (N, T, S, P ) типа 0 в нормальной форме Куроды. Обозначим через P1 множество контекстно-свободных правил из P , а через P2 —множество неконтекстно-свободных правил из P . Построим H-систему с запрещающими контекстами γ = (V, T, A, R), где V, T, A — те же, что и при доказательстве леммы 8.3, U = N ∪ T ∪ {B}, Имитация : 1. (#CY $Zr #x; {X 0 }, ∅) для r : C → x ∈ P1 , 2. (C#DY $Z#Yr ; {X 0 }, ∅), 3. (#CYr $Zr #EF ; {X 0 }, ∅) для r : CD → EF ∈ P2 . Переброска : 4. (#αY $Z#Yα ; {X 0 }, ∅), 5. (X#$X 0 α#Z; {Y } ∪ {Yβ | β ∈ U, β 6= α} ∪ {Yr | r ∈ P2 }, ∅), 6. (#Yα $Z#Y ; {X}, ∅) при α ∈ U, 7. (X 0 #$X#Z; {Yβ | β ∈ U } ∪ {Yr | r ∈ P2 }, ∅). Завершение : 8. (XB#$#Z 0 ; {Yβ | β ∈ U } ∪ {Yr | r ∈ P2 }, ∅), 9. (#Y $Z 00 #; {X, B}, ∅). Равенство L(γ) = L(G) легко проверить, повторив аргументы из доказательств лемм 8.2 и 8.3. Лемма 8.6. EH2 (F IN, f [2]) ⊆ EH2 ([1], f [2]). Доказательство. Рассмотрим расширенную H-систему с запрещающими контекстами γ = (V, T, A, R), заданную конструкцией из предыдущего доказательства, с правилами вида
348
8. Универсальность и конечные H-системы
(r; D1 , ∅). Заметим, что при каждом сплетении второй терм операции — аксиома. Пусть A = {w1 , w2 , . . . , wn }, n > 2. Построим расширенную H-систему с запрещающими контекстами γ 0 = (V ∪ {c}, T, {w}, R0 ), где w = cw1 cw2 . . . cwn c, R0 = {(r; D1 ∪ {c}, {c}) | (r; D1 , ∅) ∈ R} ∪ {(#c$c#; ∅, ∅)}. Применив правило #c$c# к двум экземплярам w, мы можем разрезать один из них после символа c, стоящего перед аксиомой wi , получив при этом wi c . . . wn c. Применив к нему и еще одному экземпляру w то же правило #c$c#, мы выделим аксиому wi в отдельную строку. Так как правила в R теперь имеют в качестве запрещающих контекстов D1 ∪ {c}, {c}, оба терма сплетения не могут содержать символ c. Его удаление равносильно выделению аксиом γ из w с помощью правила #c$c#. Отсюда L(γ) = L(γ 0 ). Заметим, что в случае запрещающих контекстов не возникло нормальной формы, как в случае разрешающих контекстов, когда в паре (C1 , C2 ) множество C1 содержало лишь один символ, а C2 было пустым. С другой стороны, в случае запрещающих контекстов получен результат, неизвестный для случая разрешающих контекстов: найденные нижние границы одновременно устанавливаются и на число аксиом, и на радиус. Управление с помощью запрещающих символов, как в доказательстве леммы 8.5, где проверялись символы, всегда появляющиеся на концах первого терма сплетения, может быть легко заменено управлением с помощью отношения старшинства на множестве правил сплетения. Более точно, упорядоченная расширенная H-система — это структура γ = (V, T, A, R, >), где V — алфавит, T ⊆ V (терминальный алфавит), A — конечный язык над V (аксиомы), R — конечное множество правил сплетения над V , а > — отношение частичного порядка на R. Для x, y, z, w ∈ V ∗ и r ∈ R мы допускаем отношение (x, y) |=r (z, w), если только ни для каких y 0 , z 0 , w0 ∈ V ∗ и
8.2. Разрешающие и запрещающие контексты
349
r0 ∈ R, таких, что r0 > r, не выполняется (x, y 0 ) |=r0 (z 0 , w0 ) или (y 0 , x) |=r0 (z 0 , w0 ). (Срабатывает максимальное из всех правил сплетения, применимых к первой строке.) Обозначим через EH2 ([n], ord[m]), n, m > 1, семейство языков, порождаемых упорядоченными H-системами с не более чем n аксиомами и радиусом, не превосходящим m. Теорема 8.3. RE = EH2 ([1], ord[2]). Доказательство. Рассмотрим H-систему с запрещающими контекстами, заданную конструкциями из доказательства лемм 8.5 и 8.6, т. е. систему вида γ = (V, T, {w}, R) с rad(γ) = 2 и с правилами из R двух типов: правилом #c$c#, разрезающим w на части, не содержащие символ c, и правилами, использующими всегда в качестве вторых термов сплетений эти части. Изменим γ следующим образом. Добавим символ Z0 к алфавиту V , и аксиому w заменим на wcZ0 Z0 . Каждое правило с запрещающими контекстами вида (u1 #u2 $u3 #u4 ; D1 , D2 ) с D1 ∪ D2 6= ∅ заменим множеством правил r = u1 #u2 $u3 #u4 , r(α) = α#$Z0 #Z0 при α ∈ D1 . r(α) = Z0 #Z0 $α# при α ∈ D2 . Рассмотрим отношение >, определенное следующим образом: r(α) > r, для всех α ∈ D1 ∪ D2 . Рассмотрим, кроме того, правило r0 = Z0 #$Z0 #Z0 , с r0 > r для всех r = u1 #u2 $u3 #u4 , соответствующих начальным правилам (u1 #u2 $u3 #u4 ; D1 , D2 ). Упорядоченную H-систему, полученную таким образом, обозначим через γ 0 . Воспользовавшись правилом #c$c#, мы сможем, как и в доказательстве леммы 8.6, выделить из wcZ0 Z0 блоки, не содержащие символ c и строку Z0 Z0 . Далее, если в строке x фигурирует символ α ∈ D1 ∪ D2 из некоторой
350
8. Универсальность и конечные H-системы
тройки (r; D1 , D2 ), то для сплетения (x, y) в γ 0 (y ∈ V ∗ ) нельзя пользоваться правилом r, а только одним из правил r(α) или r0 (α). Применение же любого из них приведет к появлению в обеих производимых строках неудаляемого символа Z0 . Поэтому ограничение по старшинству вынуждает использовать правила сплетения, учитывая уже наложенные запреты. Следовательно, L(γ) = L(γ 0 ). Рассмотренное отношение порядка можно интерпретировать как моделирование различия между реактивностью ферментов, подразумевающихся под правилами сплетения: из двух ферментов, готовых рассечь одну и ту же строку, на деле сработает более реактивный.
8.3
Языки-мишени
Расширенные H-системы с разрешающими или запрещающими контекстами моделируют биохимическую активность катализаторов и ингибиторов, присутствие или отсутствие которых среди реагентов регулирует реакции in vivo или in vitro. Управление же сплетением с помощью языков-мишеней моделирует другой аспект биохимии, встречающийся in vivo: естественный отбор продуктов эволюции, который не позволяет задерживаться на сцене «неподходящим» формам жизни. В «ламаркистских» терминах можно сказать, что эволюция имеет смысл, а мутации и рекомбинации направлены в сторону «улучшения». Представления такого рода легко выразить в рамках нашего подхода, если ввести в рассмотрение языки гипотез, которым должны принадлежать получающиеся при сплетениях строки. Такие ограничения соответствуют условным грамматикам в теории регулируемого переписывания и грамматическим системам с языками гипотез в теории грамматических систем. Так же, как и в этих разделах «классической» теории формальных языков, введение дополнительных регулирующих механизмов увеличивает выразительную силу соответствующих систем: мы снова сможем охарактеризовать
8.3. Языки-мишени
351
семейство RE с помощью H-систем с конечными множествами правил сплетения. Расширенная H-система с локальными мишенями — это структура γ = (V, T, A, R), где V — алфавит, T ⊆ V (терминальный алфавит), A — конечный язык над V (аксиомы), R — конечное множество пар p = (r, Qp ), где r = u1 #u2 $u3 #u4 — правило сплетения над V , а Qp — регулярный язык над V . Для x, y, z, w ∈ V ∗ и p = (r, Qp ) из R пишем (x, y) |=p (z, w) тогда и только тогда, когда (x, y) |=r (z, w) и z, w ∈ Qp (результаты соединения по правилу r принадлежат Qp ). Если в такой расширенной H-системе γ = (V, T, A, R) для любых p1 = (r1 , Qp1 ), p2 = (r2 , Qp2 ) из R имеем Qp1 = Qp2 , то скажем, что γ — система с глобальной мишенью. Если Q — язык-мишень, общий для всех правил из R, то будем записывать систему в виде γ = (V, T, A, R0 , Q), где R0 состоит из правил сплетения из R. Как обычно, мы обозначаем через EH2 ([n], lt[m]), n, m > 1, семейство языков, порожденных расширенными H-системами с локальными мишенями, имеющими самое большее n аксиом и правила сплетения, радиусом не больше m. В случае глобальных мишеней мы вместо lt пишем gt. Если никаких ограничений на число аксиом или радиус не накладывается, мы заменяем [n] или [m] на F IN . Из определений следует Лемма 8.7. EH2 ([n], gt[m])⊆EH2 ([n], lt[m]) при всех n, m>1. Лемма 8.8. RE ⊆ EH2 (F IN, gt[2]). Доказательство. Возьмем грамматику G = (N, T, S, P ) типа 0 в нормальной форме Куроды. Обозначим через P1 множество контекстно-свободных правил из P , а через P2 — множество неконтекстно-свободных правил из P . Предположим, что правила в P пронумерованы. Обозначим U = N ∪ T ∪ {B}, где B — некий новый символ. Построим расширенную H-систему с глобальной мишенью γ = (V, T, A, R, Q), в которой V = N ∪ T ∪ {B, X, X 0 , X 00 , Y, Y 0 , Z, Z 0 } ∪ {Yα | α ∈ U } ∪ {Zr | r ∈ P }
352
8. Универсальность и конечные H-системы
∪ {Yr | r : CD → EF ∈ P2 }, A = {XBSY, ZY, XZ, ZY 0 , X 00 Z, Z 0 } ∪ {ZYα , X 0 αZ | α ∈ U } ∪ {Zr xY | r : C → x ∈ P1 } ∪ {ZYr , Zr EF Y | r : CD → EF ∈ P2 }. Правила сплетения поделены на группы. Мы свяжем с ними локальные языки-мишени для того, чтобы сделать работу γ более наглядной, а Q будет объединением всех этих локальных языков. Имитация : 1. #CY $Zr #x,
Q1,r = XU ∗ Y ∪ {Zr CY } для r : C → x ∈ P1 ,
2. C#DY $Z#Yr ,
Q2,r = XU ∗ Yr ∪ {ZDY },
3. #CYr $Zr #E,
Q3,r = XU ∗ Y ∪ {Zr CYr } для r : CD → EF ∈ P2 .
Переброска : 4. #αY $Z#Yα ,
Q4,α = XU ∗ Yα ∪ {ZαY },
5. X 0 α#Z$X#,
Q5,α = X 0 U ∗ Yα ∪ {XZ},
6. #Yα $Z#Y 0 ,
Q6,α = X 0 U ∗ Y 0 ∪ {ZYα } для α ∈ U,
00
0
7. X #Z$X #,
Q7 = X 00 U ∗ Y 0 ∪ {X 0 Z},
8. #Y 0 $Z#Y,
Q8 = X 00 U ∗ Y ∪ {ZY 0 },
9. X#Z$X 00 #,
Q9 = XU ∗ Y ∪ {X 00 Z}.
Завершение : 10. #Z 0 $XB#,
Q10 = T ∗ Y ∪ {XBZ 0 },
11. #Y $Z 0 #,
Q11 = T ∗ ∪ {Z 0 Y }.
Тогда Q=
[
Q1,r ∪
r∈P1
∪
[ α∈U
[
(Q2,r ∪ Q3,r )
r∈P2
(Q4,α ∪ Q5,α ∪ Q6,α ) ∪
11 [
Qi .
i=7
Работа системы γ основана на идее имитации и переброски, уже использовавшейся выше в аналогичных ситуациях, с неко-
8.3. Языки-мишени
353
торыми дополнительными предосторожностями на этапе переброски. Как и раньше, мы начнем с аксиомы XBSY и будем на каждом шаге сплетать строку вида XwY (в которой символ X может быть заменен на X 0 или X 00 , а символ Y — на Y 0 , Yα , α ∈ U , или Yr , r ∈ P2 ) с некоторой аксиомой (каждое правило сплетения содержит вхождение символов Z, Z 0 или Zr для r ∈ P ). Вместе с языком-мишенью эти контрольные символы регулируют работу системы γ так, чтобы обеспечить имитацию в γ всех корректных выводов из G и, наоборот, предотвратить образование терминальных строк, не лежащих в L(G). Исследуем, например, как происходит переброска. Начав со строки XwαY при w ∈ U ∗ , α ∈ U , и воспользовавшись правилами из групп 4–9, получим: (Xw|αY, Z|Yα ) |=4,α (XwYα , ZαY ), (X 0 α|Z, X|wYα ) |=5,α (X 0 αwYα , XZ), (X 0 αw|Yα , Z|Y 0 ) |=6,α (X 0 αwY 0 , ZYα ), (X 00 |Z, X 0 |αwY 0 ) |=7 (X 00 αwY 0 , X 0 Z), (X 00 αw|Y 0 , Z|Y ) |=8 (X 00 αwY, ZY 0 ), (X|Z, X 00 |αwY ) |=9 (XαwY, X 00 Z). Мы получили строку XαwY — циклическую перестановку начальной строки XwαY . Язык-мишень не содержит строк вида X 00 zYr для r ∈ P2 , следовательно, X 00 αwY не может вступить в соединение в соответствии с правилами группы 2. Использование правила из группы 1 также не приведет к возникновению лишних строк. Никакая другая строка, стоящая на первом месте в указанных парах, не может участвовать в сплетениях согласно имитирующим правилам из R. Аналогично, эти строки не могут вступать и в соединения в соответствии с завершающими правилами: возникающие строки не попадают в T ∗ Y ∪T ∗ ∪{XBZ 0 , Z 0 Y }. Что же касается «побочного продукта», строк ZαY, XZ, ZYα , X 0 Z, ZY 0 , X 00 Z, — часть из них — аксиомы, а другие либо не могут участвовать в сплетениях изза ограничений мишени, либо могут вступать в соединения, которые не приводят к появлению незаконных терминальных
354
8. Универсальность и конечные H-системы
строк. Например, строка X 0 Z, не являющаяся аксиомой, может сплетаться с X 00 Z, (X 00 |Z, X 0 |Z) |=7 (X 00 Z, X 0 Z), но в результате воспроизводятся те же строки (отметим, что и X 00 Z, и X 0 Z лежат в Q). Таким образом, можно заключить что L(γ) = L(G). Лемма 8.9. EH2 (F IN, gt[m]) ⊆ EH2 ([1], gt[m]), m > 1. Доказательство. Предположим, γ = (V, T, A, R, Q) — расширенная H-система с глобальной мишенью, и A = {w1 , . . . , wn }, n > 2. Построим H-систему с глобальной мишенью γ 0 = (V ∪ {c}, T, {w}, R0 , Q0 ), где w = cw1 cw2 . . . cwn c, R0 = R ∪ {#c$c#}, Q0 = Q ∪ {wi , wi c · · · cwn c, cw1 c · · · cwi−1 cw, wcwi+1 c · · · cwn | 1 6 i 6 n}. Утверждается, что L(γ) = L(γ 0 ). Действительно, воспользовавшись правилом #c$c#, мы сможем отделить от w каждую аксиому wi из γ: (|w, cw1 c · · · cwi−1 c|wi c . . . cwn c) |= (wi c · · · cwn c, cw1 c · · · cwi−1 cw), (wi |cwi+1 c · · · cwn c, w|) |= (wi , wcwi+1 c · · · cwn c). Если правило сплетения из R применяется к строкам, содержащим символ c, то результирующие строки должны попасть в Q0 −Q. Следовательно, они должны быть либо аксиомами из A, либо строками, содержащими добавочные вхождения c, и, следовательно, составленными из блоков wi , 1 6 i 6 n, зажатых между символами c. Это гарантирует включение L(γ 0 ) ⊆ L(γ). Обратное включение очевидно. Заметим, что радиус правил из R0 − R равен 1, и значит, rad(R0 ) = rad(R). Теорема 8.4. RE = EH2 ([1], gt[2]) = EH2 ([1], lt[2]).
8.3. Языки-мишени
355
Доказательство. Включение RE ⊆ EH2 ([1], gt[2]) следует из лемм 8.9, 8.10. Включение EH2 ([1], gt[2]) ⊆ EH2 ([1], lt[2]) отмечалось в лемме 8.7, а включение EH2 ([1], lt[2]) ⊆ RE может быть доказано непосредственным построением грамматики типа 0, имитирующей расширенную H-систему с локальными мишенями, или выведено из тезиса Черча–Тьюринга. Используя языки-мишени, мы избавляемся от бесконечности множества правил сплетения, но зато бесконечность появляется в языках-мишенях. Однако оказывается, что достаточно использовать информацию, заключенную в начальных и конечных символах строк, получающихся при сплетении. Это возвращает нас к условиям в стиле разрешающих-запрещающих контекстов предыдущего раздела, но ограничивающим не сплетаемые строки, а результат сплетения. Мы можем сформулировать эти условия в стиле теории генетических алгоритмов в терминах отображений годности. Рассмотрим отображение, оценивающее качество (пригодность, реактивность) строк, и потребуем, чтобы строки с низкой степенью годности не использовались в последующих сплетениях. Здесь мы рассмотрим булево отображение годности (предикат). Расширенная H-система с отображением годности — это структура γ = (V, T, A, R, f ), в которой V — алфавит, T ⊆ V (терминальный алфавит), A — конечное подмножество в V ∗ (аксиомы), R — конечное множество правил сплетения над V , f : V ∗ −→ {0, 1} — отображение годности. Сплетение двух строк x, y ∈ V ∗ в соответствии с правилом из R определено, если только f (x) = 1, f (y) = 1. Язык, порождаемый γ, определяется как обычно. Через EH2 ([n], f it[m]), n, m > 1 мы обозначаем семейство языков, порождаемых такими системами с не более чем n аксиомами и радиусом, не превосходящим m.
356
8. Универсальность и конечные H-системы
Взяв в качестве f : V ∗ −→ {0, 1} отображение принадлежности подмножеству A ∪ Q из расширенной H-системы с глобальной мишенью γ = (V, T, A, R, Q), мы получим расширенную H-систему с отображением годности γ 0 = (V, T, A, R, f ), такую, что L(γ) = L(γ 0 ): результат сплетения не может вступать в новое сплетение, если не лежит в A ∪ Q. Таким образом, мы получаем Следствие 8.2. RE = EH2 ([1], f it[2]). Порождаемый язык может быть искусственно усложнен изза сложного отображения годности, с которым работает исходная H-система. Таким образом, важно выделить особые классы подобных отображений. Естественно, например, рассмотреть локальное определение отображения годности. Скажем, что f : V ∗ −→ {0, 1} локально определено, если f (αxβ) = f (αx0 β) для всех α, β ∈ V , x, x0 ∈ V ∗ (т. е. значение f (αxβ) зависит не от x, а лишь от ограничивающих его символов α, β). Мы обозначаем через EH2 ([n], f itl [m]), n, m > 1, семейство языков, порожденных расширенными H-системами с локально определенными отображениями годности, имеющими не более, чем n аксиом, и радиус, не превосходящий m. Если на число аксиом или радиус никаких ограничений не накладывается, [n], [m] заменяются на F IN . Теперь из доказательства следствия 8.1, определяя f так, чтобы захватить ограничения, вытекающие из условий разрешающих контекстов (там проверяются только концы сплетающих строк), мы получаем Следствие 8.3. RE=EH2 ([1], f itl F IN )=EH2 (F IN, f itl [2]). Заметим, что фактически мы имеем особую форму локально определенного отображения годности, зависящую только от крайних символов. Хотя следствия 8.2 и 8.3 получаются простой переформулировкой других результатов, мы упомянули их, поскольку они кажутся более подходящими с «практической» точки зрения: для того, чтобы реализовать H-системы с отображением годности, достаточно разработать механизм, который может удалить или запретить непригодные строки, полученные с помо-
8.4. Программируемые и развертывающиеся системы
357
щью недетерминированного неограниченного сплетения. Кроме того, этот механизм для оценки годности должен проверять только концы строк.
8.4
Программируемые и развертывающиеся системы
Методы регулирования, изложенные в предыдущих разделах, основываются на контекстных условиях, ограничивающих использование правил сплетения: в любой момент применимо любое из правил сплетения, но только для строк, удовлетворяющих неким условиям. Однако и сами правила могут меняться от шага к шагу под влиянием термов сплетения или даже всех доступных в данный момент строк. И строки (молекулы ДНК), и правила сплетения (рестрикционные ферменты и лигазы) соответствуют химическим комплексам, помещенным вместе в данном пространстве (клетке или пробирке), следовательно, осуществляется двустороннее взаимодействие: не только правила сплетения действуют на строки, но и строки в свою очередь влияют на правила сплетения. В общей постановке для языка L ⊆ V ∗ и множества R правил сплетения над V мы определяем: 1. Язык String(R, L) всех строк, полученных при однократном сплетении строк из L по правилам из R, применяемым, возможно, в ограниченной форме. 2. Множество Rule(R, L) правил сплетения над V , получаемых из правил R под влиянием строк из L. Далее, начиная с языка L0 ⊆ V ∗ и множества R0 правил сплетения над V , мы можем определить последовательность (Ri , Li ) = (Rule(Ri−1 , Li−1 ), String(Ri−1 , Li−1 )), i > 1. Для расширенной H-системы (возможно, с контролем ctr при применении ее правил) γ = (V, T, A, R, ctr) с помощью отображения String, зависящего от ctr, можно определить последовательность (Ri , Li ), i > 0, начинающуюся с L0 = A,
358
8. Универсальность и конечные H-системы
R0 = R. Тогда язык, порождаемый γ, задается равенством: [ L(γ) = ( Li ) ∩ T ∗ . i>0
Такая система γ называется развертывающейся. Отображение String можно определить, используя как и в предыдущих разделах, свободное сплетение или сплетения с различными ограничениями. В качестве вариантов можно рассмотреть разрешающие и запрещающие контексты, языки-мишени или отображения годности. В этом разделе мы обсуждаем возможности, предоставляемые отображением Rule. Можно считать, что множество Rule(Ri−1 , Li−1 ) зависит не от языка Li−1 в целом, а только от строк, используемых при переходе от Li−2 к Li−1 = String(Ri−2 , Li−2 ). Можно предполагать, что видоизмениться правила могут под влиянием «близких» им строк, которые и сами могут измениться благодаря этим правилам. В данных предположениях можно определять Rule(Ri−1 , Li−1 ) в манере разрешений или запрещений, в зависимости от наличия или отсутствия определяемых символов в сплетаемых строках. Этот способ позволяет охватить методы разрешений–запрещений, регулирующие сплетение. Можно считать, что основной класс развертывающихся H-систем базируется на отображениях Rule(R, L), зависящих только от R и не зависящих от текущего множества строк. Это немедленно приводит к рассмотрению H-систем, аналогичных изменяющимся во времени или программируемым грамматикам в теории регулируемых переписывающих систем. Мы откладываем изучение изменяющихся во времени H-систем до следующей главы, поскольку этот вид порождающих механизмов обладает распределенной архитектурой и заслуживает отдельного обсуждения и сравнения с другими распределенными H-системами. В программируемом случае мы снова сможем охарактеризовать семейство RE. Программируемая расширенная H-система — это структура γ = (V, T, A, R, ), где V — алфавит, T ⊆ V (терминальный алфавит), A — конечный язык над V (аксиомы), R — конечное
8.4. Программируемые и развертывающиеся системы
359
множество правил сплетения над V , а — отображение из R в множество P(R) подмножеств множества R. Язык, порожденный γ, определяется равенством L(γ) = A ∪ σ2 (A) ∪ ρ(A) ∩ T ∗ , где σ = (V, R) — основная H-схема в γ и ρ(A) — множество таких элементов w из V ∗ , что существует последовательность сплетений вида (x1 , y1 ) |=r1 (x2 , y20 ), (x2 , y2 ) |=r2 (x3 , y30 ), 0 . . . (xk , yk ) |=rk (xk+1 , yk+1 ),
таких, что k > 2, ri ∈ (ri−1 ), 2 6 i 6 k, yi0 ∈ V ∗ , 2 6 i 6 k + 1, x1 , y1 ∈ A, yi ∈ A, 2 6 i 6 k, и w = xk+1 . Другими словами, язык L(γ) содержит все терминальные строки из A, а также те строки, которые могут быть получены либо путем одного сплетения, начинающегося со строк из A (множество σ2 (A)), либо путем нескольких сплетений со следующими свойствами: при первом сплетаются аксиомы; на каждом следующем шаге соединяются первая из двух строк, произведенных на предыдущем шаге, и одна аксиома. Правила, применяемые на последовательных шагах, определяются с помощью отображения . Требование, чтобы на каждом шаге, кроме первого, сплетались аксиома и строка, произведенная на предыдущем шаге, может показаться искусственным и ограничивающим, но большинство H-систем из рассматривавшихся в предыдущих разделах доказательств работает таким образом, когда следует «правильными» путями, приводящими к строкам из порождаемого языка. Однако в тех системах допускались и сплетения другого вида. Здесь же для того, чтобы воспользоваться преимуществами программируемых ограничений, мы должны явно сформулировать это требование к термам сплетения. Как обычно, мы обозначаем через EH2 ([n], pr[m]), n, m > 1, семейство языков, порожденных программируемыми расширенными H-системами с не более чем n аксиомами и радиусами,
360
8. Универсальность и конечные H-системы
не превосходящими m. Если n, m не ограничены, мы заменяем [n], [m] на F IN . Теорема 8.5. RE = EH2 (F IN, pr[2]). Доказательство. Мы должны доказать только включение RE ⊆ EH2 (F IN, pr[2]). Рассмотрим грамматику G = (N, T, S, P ) типа 0 в нормальной форме Куроды. Обозначим через P1 множество контекстно-свободных правил из P , а через P2 — множество неконтекстно-свободных правил из P . Предположим, что правила из P пронумерованы. Построим программируемую H-систему γ = (V, T, A, R, ), где 1) V = N ∪ T ∪ {X, X 0 , Y, B} ∪ {Yp | p ∈ P2 } ∪ {Zp | p ∈ P }, 2) A = {X 0 BSY, ZY, XZ} ∪ {Zp xY | p : C → x ∈ P1 } ∪ {ZYp , Zp EF Y | p : CD → EF ∈ P2 } ∪ {XαZ | α ∈ N ∪ T ∪ {B}}, 3) R содержит следующие правила сплетения: Начало : s0 = X 0 #B$X#Z. Имитация : sp = #CY $Zp #x для p : C → x ∈ P1 , s1,p = C#DY $Z#Yp , s2,p = #CYp $Zp #E для p : CD → EF ∈ P2 . Переброска : r1,α = #αY $Z#Y, r2,α = X#$Xα#Z для α ∈ N ∪ T ∪ {B}. Завершение : t1 = XB#$#ZY, t2 = #Y $ZY #, 4) отображение определяется следующим образом: (s0 ) = {sp | p ∈ P1 }, (sp ) = {sp0 | p0 ∈ P1 }
8.4. Программируемые и развертывающиеся системы
361
∪ {s1,p0 | p0 ∈ P2 } ∪ {r1,α | α ∈ N ∪ T ∪ {B}} ∪ {t1 } для p ∈ P1 , (s1,p ) = {s2,p }, (s2,p ) = {sp0 | p0 ∈ P1 } ∪ {s1,p0 | p0 ∈ P2 } ∪ {r1,α | α ∈ N ∪ T ∪ {B}} ∪ {t1 } для p ∈ P2 , (r1,α ) = {r2,α }, (r2,α ) = {sp | p ∈ P1 } ∪ {s1,p | p ∈ P2 } ∪ {r1,β | β ∈ N ∪ T ∪ {B}} ∪ {t1 } для α ∈ N ∪ T ∪ {B}, (t1 ) = {t2 }, (t2 ) = ∅. Отображение регулирует работу γ так, что начав имитацию правила p ∈ P2 (т.е. применив правило сплетения s1,p ), мы должны будем продолжить правилом s2,p , а после удаления символа α с правого конца w строки XwY — ввести α с левого конца w. Поскольку правилами r2,α , α ∈ N ∪ T ∪ {B}, и t1 нельзя воспользоваться в присутствии X 0 , а X 0 можно удалить только с помощью правила s0 , применять которое разрешено лишь на первом шаге, мы должны начать с s0 . Это предотвращает старт с правил r2,α , при котором возникают незаконные строки. Таким образом, каждая последовательность сплетений в γ в точности отвечает выводу в G. Отсюда L(G) = L(γ). Элегантное с математической точки зрения понятие программируемой H-системы содержит небиохимический компонент — отображение , определенное независимо от текущих строк неким «тотальным» способом: на каждом шаге все множество доступных правил сплетения меняется на новые пра-
362
8. Универсальность и конечные H-системы
вила. Для развертывающихся H-систем, деятельность которых обусловлена двумя отображениями String и Rule, мы будем искать локальный способ, изменяющий правила от шагу к шагу. Один из возможных подходов — использование точечных мутаций, т. е. операций вставки и удаления одиночных символов или подстановки одного символа вместо другого. Мы рассмотрим контекстно-зависимые операции, в которых вставка или удаление символа зависит от определенного контекста. Для этого, как и в главе 6, вводятся правила вида (u, α/β, v) со строками u, v и символами α, β или λ. Подобное правило означает, что символ α может быть заменен на β в контексте (u, v); α/λ означает удаление, λ/β — вставку, a/b — замену a на b. Ниже мы увидим (что ожидаемо в свете результатов главы 6), что можно ограничиться вставками и удалениями, однако дадим общее определение, в котором фигурируют и замены. Расширенная H-система с локально развертывающимися правилами сплетения — это структура γ = (V, T, A0 , Ac , E, C0 , P ), где V — совокупный алфавит γ, T ⊆ V — терминальный алфавит, A0 ⊆ V ∗ — конечное множество начальных аксиом, Ac ⊆ V ∗ — конечное множество текущих аксиом, E — алфавит, E ∩ V 6= ∅, C0 — первоначальная последовательность правил сплетения, C0 = (r1 , . . . , rk ), ri ∈ E ∗ #E ∗ $E ∗ #E ∗ , 1 6 i 6 k, (vii) P — конечное множество редактирующих правил вида (u, α/β, v), с u, v ∈ (E ∪ {#, $})∗ , и α, β ∈ E ∪ {λ}, α 6= β. (i) (ii) (iii) (iv) (v) (vi)
Правила из P используются для редактирования правил сплетения, начиная с «шаблонных» правил из C0 . Если α ∈ E, β ∈ E, перед нами — подстановка, если α ∈ E, β = λ — удаление, а если α = λ, β ∈ E — вставка. Заметим, что специальные символы #, $ не редактируются.
8.4. Программируемые и развертывающиеся системы
363
Идея состоит в том, чтобы использовать компоненты E, C0 , P для производства правил сплетения. Мы переходим от одного шага к следующему, применяя одно правило из P к каждому доступному в настоящий момент правилу сплетения. Если какое-нибудь из имеющихся в данный момент правил сплетения может быть применено к строке, произведенной на предыдущем шаге (первоначально к строке из A0 ) и к текущей аксиоме (строке из Ac ), то оно должно быть использовано. Иным способом строки в пробирке изменены быть не могут. После применения правила сплетения к паре строк все экземпляры этих строк считаются израсходованными, и значит, они больше не фигурируют на следующих шагах. Исключение составляют текущие аксиомы, запасы которых предполагаются неистощимыми (их новые копии добавляются по мере необходимости). Формализация приводит к следующему определению. Обозначим через =⇒P обычное отношение вывода в соответствии с правилами из P , представленными как переписывающие правила uαv → uβv при (u, α/β, v) ∈ P . Для правила сплетения r ∈ E ∗ #E ∗ $E ∗ #E ∗ мы определим P (r) = {r0 | r =⇒P r0 }. Распространим отношение =⇒P на k-кортежи правил сплетения следующим образом: (r1 , . . . , rk ) =⇒P (r10 , . . . , rk0 ) тогда и только тогда, когда rj0 ∈ P (rj ), 1 6 j 6 k. Начав с C0 , мы сможем таким путем получить в момент времени i > 1 последовательность Ci = (ri,1 , . . . , ri,k ); мы свяжем с ней множество правил сплетения Ri = {r | r = ri,j при некотором 1 6 j 6 k}. Заметим, что множество Ri содержит в точности одного потомка каждого правила из C0 ; из нескольких вариантов, возникающих из-за возможного недетерминизма в использовании правил из P , на самом деле, выбирается лишь один.
364
8. Универсальность и конечные H-системы
Рассмотрим теперь «эволюцию геномов». Определим множества Ai , i > 0, следующим образом. Первоначальное множество A0 задано. Для x ∈ V ∗ и данного множества правил сплетения R и для i > 0 определим δi (x, R) = 1, если существуют y ∈ Ai ∪ Ac и r ∈ R, такие, что (x, y)|=r (w, z) или (y, x)|=r (w, z) при некоторых w, z ∈ V ∗ , δi (x, R) = 0 в противном случае. Кроме того, определим Ri (Ai ) = {w ∈ V ∗ |(x, y) |=r (w, z) или (x, y) |=r (z, w) для r ∈ Ri , x, y ∈ Ai ∪ Ac , {x, y} ∩ Ai 6= ∅},
i > 0.
Тогда Ai = {x ∈ Ai−1 | δi−1 (x, Ri−1 ) = 0} ∪ Ri−1 (Ai−1 ), i > 1. (Как и в начале этого раздела, можно сказать, что Ri = Rule(Ri−1 , Ai−1 ) и Ai = String(Ri−1 , Ai−1 ).) Другими словами, Ai состоит из всех строк из Ai−1 , которые не могут участвовать в сплетении с другой строкой из Ai−1 или Ac по правилу из текущего множества Ri−1 , а также из всех строк, полученных с помощью таких операций сплетения. Заметим, что строка, уже использованная в операции сплетения, не сохраняется, ее больше не существует в следующем множестве Ai . Если ни одно из доступных в данный момент правил сплетения не может быть применено к строкам из текущего множества Ai (и к аксиомам из Ac ), все строки из Ai неизмененными переходят на следующий этап, т. е. Ai+1 = Ai . Язык, порожденный γ, определяется равенством [ L(γ) = ( Ai ) ∩ T ∗ . i>0
В главе 6 (теорема 6.2) мы видели, что можно охарактеризовать RE, используя правила вставки вида (u, λ/α, v) при |u|, |v| 6 2, и правил удаления вида (u, λ/α, v) при |u|, |v| 6 1, и некотором символе α. Комбинируя этот результат с результатом из леммы 7.16 (тщательно перестраивая в соответствии с
8.4. Программируемые и развертывающиеся системы
365
условиями работы расширенной H-системы с локально развертывающимися правилами сплетений), мы получаем характеризацию RE в новых терминах. При этом способе мы используем правила сплетения произвольной длины, что, вообще говоря, плохо с практической точки зрения. К счастью, характеризация RE остается верной и для довольно частного случая H-систем с локально развертывающимися правилами. Расширенная H-система с локально развертывающимися правилами сплетения γ = (V, T, A0 , Ac , E, C0 , P ) называется ограниченной, если card(A0 ) = 1, card(C0 ) = 1. Таким образом, в каждой момент времени мы имеем ровно одно правило сплетения. Обозначим через EH2 (F IN, rle[m]), m > 1, семейство языков L(γ), порожденных ограниченными локально развертывающимися H-системами с правилами сплетения радиуса, не больше m, m > 1. Теорема 8.6. EH2 (F IN, rle[4]) = RE. Доказательство. Мы должны доказать только включение RE ⊆ EH2 (F IN, rle[4]). Рассмотрим грамматику G = (N, T, S, P0 ) типа 0 в нормальной форме Куроды, т. е. с правилами вида 1. 2. 3. 4.
AB → CD, для A, B, C, D ∈ N, A → BC, для A, B, C ∈ N , A → a, для A ∈ N, a ∈ T , A → λ, для A ∈ N .
Как обычно, считаем, что правила из P0 пронумерованы. Построим ограниченную расширенную H-систему с локально развертывающимися правилами сплетения γ = (V, T, A0 , Ac , E, C0 , P ), где 1. V = N ∪ T ∪ {X, Y, Z, B0 }, 2. A0 = {XB0 SY },
366
8. Универсальность и конечные H-системы
3. Ac = {ZY }∪{ZvY | u → v ∈ P0 }∪{XαZ | α ∈ N ∪T ∪{B0 }}, 4. E = N ∪ T ∪ {X, Y, Z, B0 , c1 , c2 , d1 , d2 , d3 , e1 , e2 , f1 , f2 , g1 , g2 , h1 , h2 } ∪ {[r, 1], [r, 2] | r ∈ P0 }, 5. C0 = (c1 #Y $Z#), и множеством P , содержащим следующие правила для точечных мутаций; чтобы проверить правильность построения, мы представляем эти правила вместе с текущим конфигурационным множеством Ri , состоящим ровно из одного правила сплетения (которое, тем не менее, не всегда производится детерминированно). 1. Производство правил сплетения для имитации переписывающих правил из P0 : A. Для каждого правила r : AB → CD ∈ P0 мы рассматриваем следующие правила вставки-удаления: 0. − − − − − −−
c1 #Y $Z#,
1. (c1 #, λ/[r, 1], Y ),
c1 #[r, 1]Y $Z#,
2. (λ, c1 /λ, #[r, 1]),
#[r, 1]Y $Z#,
3. (#, λ/A, [r, 1]),
#A[r, 1]Y $Z#,
4. (#A, λ/B, [r, 1]),
#AB[r, 1]Y $Z#,
5. (AB[r, 1]Y $Z#, λ/[r, 2], λ),
#AB[r, 1]Y $Z#[r, 2],
6. (λ, [r, 1]/λ, Y $Z#[r, 2]),
#ABY $Z#[r, 2],
7. (#, λ/C, [r, 2]),
#ABY $Z#C[r, 2],
8. (#C, λ/D, [r, 2]),
#ABY $Z#CD[r, 2],
9. (CD, λ/Y, [r, 2]),
#ABY $Z#CDY [r, 2],
10. (Y, [r, 2]/λ, λ),
#ABY $Z#CDY.
Полученное правило сплетения — первое в вышеуказанной последовательности, которое может быть применено к строкам вида XwY и к аксиомам из Ac (символы c1 , [r, 1], [r, 2] не появляются в V , а значит, и в строках, производимых из A0 и Ac ). Заметим, что правило вставки 5 можно повторять, вводя несколько экземпляров символа [r, 2], и, следовательно, производя строки вида #AB[r, 1]Y $#[r, 2]k при k > 2, но символы
8.4. Программируемые и развертывающиеся системы
367
C, D и Y будут присутствовать лишь перед самым левым символом [r, 2]; затем при наличии Y все символы [r, 2] удаляются (в противном случае получаемое текущее правило сплетения не может быть использовано). B. Для каждого правила r : A → BC ∈ P0 мы рассматриваем следующие правила мутаций: 0. − − − − − −−
c1 #Y $Z#,
1. (c1 #, λ/[r, 1], Y ),
c1 #[r, 1]Y $Z#,
2. (λ, c1 /λ, #[r, 1]),
#[r, 1]Y $Z#,
3. (#, λ/A, [r, 1]),
#A[r, 1]Y $Z#,
4. (A[r, 1]Y $Z#, λ/[r, 2], λ),
#A[r, 1]Y $Z#[r, 2],
5. (λ, [r, 1]/λ, Y $Z#[r, 2]),
#AY $Z#[r, 2],
6. (#, λ/B, [r, 2]),
#AY $Z#B[r, 2],
7. (#B, λ/C, [r, 2]),
#AY $Z#BC[r, 2],
8. (BC, λ/Y, [r, 2]),
#AY $Z#BCY [r, 2],
9. (Y, [r, 2]/λ, λ),
#AY $Z#BCY.
C. Любому правилу вида r : A → a ∈ P0 мы сопоставляем правила мутаций 1–5 из группы B, а также следующие три правила вставки-удаления: 6. (#, λ/a, [r, 2]),
#AY $Z#a[r, 2],
7. (a, λ/Y, [r, 2]),
#AY $Z#aY [r, 2],
8. (Y, [r, 2]/λ, λ),
#AY $Z#aY.
D. Наконец, для любого правила r : A → λ ∈ P0 мы вводим правила 1–5 из группы B, дополняя их такими правилами: 6. (#, λ/Y, [r, 2]),
#AY $Z#Y [r, 2],
7. (Y, [r, 2]/λ, λ),
#AY $Z#Y.
Во всех случаях только на последнем шаге (после использования правила B9, C8 или D7 соответственно) мы можем получить правило сплетения, не содержащее ни одного из символов c1 , [r, 1], [r, 2] и, следовательно, применимое к строкам, получаемых путем сплетения из A0 , Ac .
368
8. Универсальность и конечные H-системы
Вообще, обозначим соответствующее правило из P0 через u → v. Полученное правило сплетения — #uY $Z#vY , следовательно, можно выполнить сплетение (Xw|uY, Z|vY ) |= (XwvY, ZuY ). Строка XwvY — результат имитации правила u → v — будет использована далее, как только возникнет применимое к ней правило сплетения. При использовании ZuY терминальная строка не возникнет никогда из-за невозможности устранить символ Z (мы увидим это ниже). После применения правила #uY $Z#vY мы, продолжив его редактирование, вернемся к шаблонному правилу c1 #Y $Z#. Это делается благодаря использованию следующих правил точечных мутаций: A0 . 0. − − − − − −−
#ABY $Z#CDY,
1. ($Z#CD, λ/e1 , )Y,
#ABY $Z#CDe1 Y,
2. (e1 , Y /λ, λ),
#ABY $Z#CDe1 ,
3. (λ, α/λ, e1 ),
#ABY $Z#e1 ,
4. (λ, λ/e2 , Y $Z#e1 ),
#ABe2 Y $Z#e1 ,
5. (e2 Y $Z#, e1 /λ, λ),
#ABe2 Y $Z#,
6. (λ, α/λ, e2 ),
#e2 Y $Z#,
7. (λ, λ/c1 , #e2 ),
c1 #e2 Y $Z#,
8. (c1 #, e2 /λ, λ),
c1 #Y $Z#.
α ∈ N ∪ T,
α ∈ N,
Мы вернулись к правилу сплетения из C0 . То же самое без изменений произойдет и в случае B (с CD, стоящим справа в соответствующем правиле P0 , и правилом 6, применяемым лишь однажды). Для случая C нужно заменить правило 1 на 10 . ($Z#a, λ/e1 , Y ),
#AY $Z#ae1 Y,
а в случае D — на 100 . ($Z#, λ/e1 , Y ),
#AY $Z#e1 Y.
Последующие правила мутаций 2–8 везде действуют одинаково, производя правило сплетения c1 #Y $Z#; ни одно проме-
8.4. Программируемые и развертывающиеся системы
369
жуточное правило сплетения не может быть применено ни к строке, полученной на предыдущем шаге, ни к аксиоме из Ac из-за управляющих символов e1 , e2 . 2. Производство правил сплетения для переброски в текущей строке: E. Для каждого символа α ∈ N ∪ T ∪ {B0 } мы рассматриваем следующие правила мутаций (создаем правило сплетения, отрезающее символ α с правого конца строки): 0. − − − − − −−
c1 #Y $Z#,
1. (c1 #, λ/d1 , Y ),
c1 #d1 Y $Z#,
2. (λ, c1 /λ, #d1 ),
#d1 Y $Z#,
3. (#, λ/α, d1 ),
#αd1 Y $Z#,
4. (αd1 Y $Z#, λ/c2 , λ),
#αd1 Y $Z#c2 ,
5. (λ, d1 /λ, Y $Z#c2 ),
#αY $Z#c2 ,
6. (#, λ/Y, c2 ),
#αY $Z#Y c2 ,
7. (Y, c2 /λ, λ),
#αY $Z#Y.
Полученное правило сплетения не содержит ни одного регулирующего символа c1 , d1 , c2 , следовательно, может быть использовано для отсечения α с правого конца текущей строки: (Xw|αY, Z|Y ) |= (XwY, ZαY ). Строка XwY вступит в соединение на первом же шаге, как только будет построено применимое правило сплетения, в то же время ZαY никогда не приведет к терминальной строке. F. Для каждого символа α ∈ N ∪ T ∪ {B0 } мы рассмотрим также следующие правила мутаций (создаем правило сплетения, вписывающее символ α с левого конца данной строки): 0. − − − − − −−
#αY $Z#Y,
1. (Z, λ/d2 , #Y ),
#αY $Zd2 #Y,
2. (d2 #, Y /λ, λ),
#αY $Zd2 #,
3. (λ, Z/λ, d2 ),
#αY $d2 #,
4. (λ, λ/d3 , Y $d2 ),
#αd3 Y $d2 #,
370
8. Универсальность и конечные H-системы
5. (d3 Y $, λ/X, d2 ),
#αd3 Y $Xd2 #,
6. ($X, d2 /λ, λ),
#αd3 Y $X#,
7. (d3 Y, λ/Z, $),
#αd3 Y Z$X#,
8. (d3 , Y /λ, Z$),
#αd3 Z$X#,
9. (λ, λ/X, #αd3 ),
X#αd3 Z$X#,
10. (X, λ/α, #αd3 ),
Xα#αd3 Z$X#,
11. (Xα#, α/λ, d3 ),
Xα#d3 Z$X#,
12. (Xα#, d3 /λ, Z),
Xα#Z$X#.
Можно применить полученное правило сплетения: (Xα|Z, X|wY ) |= (XαwY, XZ), таким образом, в строке был циклически переставлен один символ. (Заметим, что при таком способе работы γ, трансформирующем правило сплетения от шага к шагу, мы больше не нуждаемся в регулирующих символах типа X 0 , Yα , α ∈ N ∪T ∪{B0 } из доказательства леммы 8.2.) G. (Возврат к шаблонному правилу сплетения c1 #Y $Z#; здесь α ∈ N ∪ T ∪ {B0 }): 0. − − − − − −−
Xα#Z$X#,
1. (α#Z$, λ/f1 , λ),
Xα#Z$f1 X#,
2. (f1 , X/λ, #),
Xα#Z$f1 #,
3. (f1 , λ/Z, #),
Xα#Z$f1 Z#,
4. (Z, λ/f2 , $f1 Z),
Xα#Zf2 $f1 Z#,
5. (f2 $, f1 /λ, λ),
Xα#Zf2 $Z#,
6. (#, Z/λ, f2 ),
Xα#f2 $Z#,
7. (#f2 , λ/Y, $),
Xα#f2 Y $Z#,
8. (λ, λ/c1 , Xα#f2 Y ),
c1 Xα#f2 Y $Z#,
9. (c1 X, α/λ, #f2 ),
c1 X#f2 Y $Z#,
10. (c1 , X/λ, #f2 ),
c1 #f2 Y $Z#,
11. (c1 #, f2 /λ, λ),
c1 #Y $Z#.
8.4. Программируемые и развертывающиеся системы
371
Мы не только вернулись к c1 #Y $Z#, но и впервые получили возможность применить снова правила A1, B1, C1, D1, E1 (имеющие первой слева подстроку c1 #Y ). Таким образом, мы можем продолжить с помощью любого из этих правил, либо снова моделируя правило из P0 , либо перебрасывая еще один символ α с правого конца строки, ограниченной X, Y , на левый. 3. Окончание работы системы: H. (удаление префикса XB0 ): 0. − − − − − −−
c1 #Y $Z#,
1. (c1 #, λ/g1 , Y ),
c1 #g1 Y $Z#,
2. (c1 , λ/X, #g1 ),
c1 X#g1 Y $Z#,
3. (λ, c1 /λ, X#g1 ),
X#g1 Y $Z#,
4. (X, λ/B0 , #g1 ),
XB0 #g1 Y $Z#,
5. (g1 , Y /λ, $),
XB0 #g1 $Z#,
6. (g1 $Z, λ/g2 , #),
XB0 #g1 $Zg2 #,
7. (λ, g1 /λ, $Zg2 ),
XB0 #$Zg2 #,
8. ($, Z/λ, g2 #),
XB0 #$g2 #,
9. ($g2 #, λ/Y, λ),
XB0 #$g2 #Y,
10. (g2 #, λ/Z, Y ),
XB0 #$g2 #ZY,
11. (λ, g2 /λ, #ZY ),
XB0 #$#ZY.
Лишь последнее правило сплетения может быть применено: (XB0 |wY, |ZY ) |= (XB0 ZY, wY ). J. (удаление ограничителя Y ): 0. − − − − − −−
XB0 #$#ZY,
1. ($, λ/h1 , #ZY ),
XB0 #$h1 #ZY,
2. (h1 #Z, Y /λ, λ),
XB0 #$h1 #Z,
3. (h1 #, Z/λ, λ),
XB0 #$h1 #,
4. (h1 , λ/Y, #),
XB0 #$h1 Y #,
5. (h1 , λ/Z, Y #),
XB0 #$h1 ZY #,
6. (λ, λ/h2 , #$h1 ZY ),
XB0 h2 #$h1 ZY #,
372
8. Универсальность и конечные H-системы
7. (h2 #$, h1 /λ, λ),
XB0 h2 #$ZY #,
8. (λ, B0 /λ, h2 ),
Xh2 #$ZY #,
9. (λ, X/λ, h2 ),
h2 #$ZY #,
10. (h2 #, λ/Y, $),
h2 #Y $ZY #,
11. (λ, h2 /λ, #Y $),
#Y $ZY #.
Итак, мы можем сплести (w|Y, ZY |) |= (w, ZY Y ). Если строка w терминальная, она лежит в L(G); если нет — участвовать в дальнейших сплетениях она не сможет из-за отсутствия ограничителей X, Y , а никакие дополнительные правила сплетения производиться далее не будут. Легко видеть, что использование правил мутаций в «ошибочных» направлениях (например, при использовании правила 11 в предыдущей группе перед правилами 8,9, в результате чего возникает правило сплетения α#Y $ZY # при α ∈ {X, B0 , XB0 }), не приводит к созданию терминальной строки (в нашем примере текущая строка либо не содержит X и B0 , если ранее применялось правило XB0 #$#ZY , либо если такой символ появляется, никакое сплетение далее не выполняется, значит, эта строка либо — XB0 Y , и мы получаем λ, либо в ней остается X, и ни одна терминальная строка не возникает). Читатель может легко проверить такие варианты. Правило #Y $ZY # изменено быть не может, и здесь работа γ останавливается. Следовательно, получаем L(γ) = L(G). Самые длинные строки u1 , u2 , u3 , u4 из правил сплетения u1 #u2 $u3 #u4 , произведенных как указано выше, появляются в правилах, полученных на шагах A4, A5, A9, B8, A0 4, A0 5, и эта длина равна четырем. Итак, RE ⊆ EH2 (F IN, rle[4]). Заметим, что в предыдущем построении мы использовали только правила вставки и удаления (всегда только одного символа), и ни одного правила вида (u, α/β, v) для α 6= λ 6= β включено не было. Используя и последние, можно немного упростить конструкцию.
8.5. H-системы, основанные на двойном сплетении
373
Также весьма вероятно, что радиус системы можно уменьшить по крайней мере до двух, как это происходит во всех предыдущих случаях. Это, однако, сделает приведенную конструкцию еще более сложной, поэтому мы не станем здесь двигаться в этом направлении. Мы не обращали внимания на длину контекстов в правилах вставки-удаления. Например, самые длинные здесь — правила из группы A5 вида (u, λ/α, v) при v = λ и |u| = 7. Безусловно, этот параметр может быть улучшен; весьма вероятно, что достаточно правил вида (u, α/β, v) при |u| 6 2, |v| 6 2. С другой стороны, обеспечить постоянное присутствие строк из Ac , по крайней мере, для системы из последнего доказательства можно «внутренним» способом. Каждая строка из Ac имеет вид Zx или xZ. Правила сплетения Z#x$Z#x и x#Z$x#Z заставляют эти строки переходить с одного шага на другой неизмененными, воспроизводя их путем сплетений. Постоянно же получать указанные правила сплетения можно следующим образом. В случае Z#x$Z#x нужно в C0 добавить правила Z#x$Z#x, Z#x$c3 Z#x, и, кроме того, рассмотреть правила мутаций ($, λ/c3 , Z), ($, c3 /λ, Z). Тогда два данных правила сплетения будут воспроизводиться на каждом шаге, и наличие Z#x$Z#x будет гарантировано. То же самое может быть сделано для правил вида x#Z$x#Z. Темой для исследования остаются другие варианты развертывающихся H-систем, когда изменение правил зависит также и от доступных в данный момент (или сплетаемых) строк.
8.5
H-системы, основанные на двойном сплетении
Теперь мы займемся классом H-систем, которые можно считать аналогами матричных грамматик в теории регулируемых переписывающих систем. Однако здесь мы имеем дело не с последовательностью заранее определенных правил сплетения, а
374
8. Универсальность и конечные H-системы
только с требованием, чтобы работа H-системы происходила в два шага: две строки, получаемые в результате одного сплетения, сразу же вступали во второе. Правила, используемые на этих двух этапах, никак не зависят друг от друга. Кроме того, получаемые при двойном сплетении строки не связаны с исходными термами следующих двойных сплетений. Рассмотрим обычную расширенную H-систему γ = (V, T, A, R) с конечным множествами A и R. Для x, y, w, z ∈ V ∗ и r1 , r2 ∈ R мы имеем (x, y) |=r1 ,r2 (w, z) тогда и только тогда, когда (x, y) |=r1 (u, v) и (u, v) |=r2 (w, z) при u, v ∈ V ∗ . Для языка L ⊆ V ∗ определим σd (L) = {w | (x, y) |=r1 ,r2 (w, z) или (x, y) |=r1 ,r2 (z, w) при x, y ∈ L, r1 , r2 ∈ R}, σd∗ (L)
=
[
σdi (L), где
i>0 0 σd (L) = L, σdi+1 (L) = σdi (L)
∪ σd (σdi (L)), i > 0.
Далее, мы свяжем с γ язык Ld (γ) = σd∗ (A) ∩ T ∗ . Через EH2 (F IN, d[k]) обозначим семейство Ld (γ) языков, порожденных, как и ранее, расширенными H-системами γ = (V, T, A, R) радиуса не больше k, k > 1. Пример. Рассмотрим расширенную H-систему γ = ({a, b, c, d, e}, {a, b, c, d}, {cabd, caebd}, R), при R, содержащем правила сплетения r1 = c#a$ca#ebd, r2 = ce#bd$b#d. Возьмем строку вида can bn d, n > 1; одна из аксиом имеет такой же вид при n = 1. Единственно возможное сплетение, включа-
8.5. H-системы, основанные на двойном сплетении
375
ющее эту строку, — (c|an bn d, ca|ebd) |=r1 (cebd, can+1 bn d). По определению операции, мы должны продолжить; единственная возможность для этого (ce|bd, can+1 bn |d) |=r2 (ced, can+1 bn+1 d). Следовательно, (can bn d, caebd) |=r1 ,r2 (ced, can+1 bn+1 d). Эту операцию можно повторить. Другая возможность — начать с двух экземпляров аксиомы caebd: (c|aebd, ca|ebd) |=r1 (ce|bd, caaeb|d) |=r2 (ced, caaebbd). Мы можем продолжить, но символ e будет присутствовать во всех получаемых строках; эти строки не смогут участвовать в сплетениях с строками вида can bn d, и значит, они не приведут к терминальным строкам. Итак, получаем Ld (γ) = {can bn d | n > 1}, — язык, не являющийся регулярным. Следовательно, возможности двойного сплетения превосходят возможности простого сплетения. Это высказывание получит ниже сильнейшее подтверждение: возможности расширенных H-систем, использующих операцию двойного сплетения, совпадают с возможностями грамматик 0-типа. Теорема 8.7. RE = EH2 (F IN, d[2]). Доказательство. Мы докажем только включение ⊆. Обратное включение можно установить непосредственным построением грамматики типа 0, имитирующей основанную на операции двойного сплетения расширенную H-систему (или же ссылкой на тезис Черча–Тьюринга). Доказательство состоит из двух этапов. (1) Рассмотрим грамматику G = {S, B1 , B2 , B3 , B4 }, T , S, P ∪ {B1 B2 → λ, B3 B4 → λ} в нормальной форме Гефферта, задаваемой в теореме 3.5(2), т. е. с P , содержащим правила
376
8. Универсальность и конечные H-системы
вида S → uSv, S → x, при u, v, x ∈ (T ∪ {B1 , B2 , B3 , B4 })+ . Построим расширенную H-систему γ = (V, T, A, R) при: V = T ∪ {S, B1 , B2 , B3 , B4 , X, Y, Z, Z 0 }, A = {SxS | S → x ∈ P, x ∈ (T ∪ {B1 , B2 , B3 , B4 })∗ } ∪ {SuZvS | S → uSv ∈ P } ∪ {Z 0 , XY }, R = {S#$Su#ZvS, SZ#vS$#S | S → uSv ∈ P } ∪ {S#$#Z 0 , SZ 0 #$#S} ∪ {B1 #B2 $X#Y, #B1 Y $XB2 #} ∪ {B3 #B4 $X#Y, #B3 Y $XB4 #}. Идея этой конструкции такова. Правила сплетения вида S#$Su#ZvS, SZ#vS$#S имитируют контекстно-свободные правила S → uSv из P , а правила сплетения B1 #B2 $X#Y, #B1 Y $XB2 #, B3 #B4 $X#Y, #B3 Y $XB4 # — правила B1 B2 → λ, B3 B4 → λ соответственно; терминальные правила G имитируются с помощью аксиом SxS из A. Контекстно-свободные выводы в G имитируются в γ в обратном порядке, начиная с центра производимой строки (с подстроки, введенной правилом S → x) по направлению к концам. Например, предположим, что имеется строка вида SwS при w ∈ (T ∪ {B1 , B2 , B3 , B4 })∗ ; аксиомы SxS — того же типa. Если применить правило сплетения r1 = S#$Su#ZvS, связанное с некоторым правилом S → uSv ∈ P , получим (S|wS, Su|ZvS) |=r1 (SZvS, SuwS). Мы должны продолжить; поскольку не присутствует ни один из символов X, Y, Z 0 , единственная возможность — воспользоваться правилом r2 = SZ#vS$#S, связанным с тем же самым правилом S → uSv ∈ P : (SZ|vS, Suw|S) |=r2 (SZS, SuwvS). Двойное сплетение (SwS, SuZvS) |=r1 ,r2 (SZS, SuwvS)
8.5. H-системы, основанные на двойном сплетении
377
имитировало использование правила S → uSv в обратном порядке. (Читатель может проверить, что начало (SwS|, Su|ZvS) |=r1 (SwSZ|vS, |Su) |=r2 (SwSZSu, vS) не приводит к терминальным строкам.) Если к строке SwS применить правило r1 = S#$#Z 0 , то продолжить нужно по правилу r2 = SZ 0 #$#S: (S|wS, |Z 0 ) |=r1 (SZ 0 |, w|S) |=r2 (SZ 0 S, w). С концов строки удалены символы S (это означает, что впредь невозможно смоделировать в γ дополнительно ни одного правила вида S → uSv ∈ P , начав со строки w). Если к строке w, ограниченной или не ограниченной символами S, применить правило сплетения r1 = B1 #B2 $X#Y (при условии, что подстрока B1 B2 есть в w, т. е. w = xB1 B2 y), то продолжить нужно по правилу r2 = #B1 Y $XB2 # (никакое другое правило не применимо к промежуточным строкам), следовательно, мы получим: (xB1 |B2 y, X|Y ) |=r1 (x|B1 Y, XB2 |y) |=r2 (xy, XB2 B1 Y ). Вхождение подстроки B1 B2 устраняется из исходной строки. То же утверждение остается в силе, если сначала применить правило B3 #B4 $X#Y ; удаляется вхождение подстроки B3 B4 . Строки SZS, SZ 0 S не могут участвовать в сплетениях, приводящих к терминальным строкам, и это легко увидеть. Если строка XB2 B1 Y илиXB4 B3 Y снова войдет в сплетения, то они не произведут ничего нового. Например, при r = #B1 Y $XB2 # получаем: (XB2 |B1 Y, XB2 |B1 Y ) |=r (XB2 |B1 Y, XB2 |B1 Y ) |=r (XB2 B1 Y, XB2 B1 Y ). Никакие двойные сплетения других типов не могут привести к терминальным строкам. Обратно, двойные операции в γ соответствуют применению контекстно-свободных правил из P , удалению двух символов S с концов строки или применению стирающих правил B1 B2 → λ, B3 B4 → λ. Порядок использования этих правил не важен. Следовательно, L(G) = Ld (γ).
378
8. Универсальность и конечные H-системы
(2) Предыдущая конструкция позволяет модифицировать «линейные» правила S → uSv из P , заменив их правилами вида D → αEβ, где α, β ∈ T ∪ {B1 , B2 , B3 , B4 } и |αβ| = 1. Таким образом возникает грамматика, эквивалентная G, но содержащая только правила с правой стороной длины два. Кроме того, можно предположить, что для всех правил D → αEβ выполняется D 6= E. Теперь нетерминальный алфавит больше, используются новые символы. Линейная грамматика с несколькими нетерминальными символами может быть имитирована с помощью расширенной H-системы, использующей операции двойного сплетения, аналогично тому, как имитировались контекстно-свободные правила грамматики G в предыдущей конструкции. Более точно, рассмотрим линейную грамматику G = (N, T, S, P ) и построим расширенную H-систему γ = (V, T, A, R) при V = N ∪ T ∪ {Z, Z 0 }, A = {DxD | D → x ∈ P, x ∈ T ∗ } ∪ {DαZβD | D → αEβ ∈ P, где D, E ∈ N, α, β ∈ T ∪ {λ}} ∪ {Z 0 }, R = {E#$Dα#Zβ, EZ#βD$#E | D → αEβ ∈ P, D, E ∈ N, α, β ∈ T ∪ {λ}} ∪ {S#$#Z 0 , SZ 0 #$#S}. Читатель может легко проверить, что выводы в G имитируются в γ в обратном порядке, начинаясь со строк DxD, соответствующих терминальным правилам D → x, и возвращаясь назад к строке вида SzS, после чего символы S могут быть убраны. Следовательно, L(G) = Ld (γ). Ясно, что rad(γ) = 2. Комбинируя эту идею со способом имитации стирающих правил вида Bi Bj → λ (заметим, что радиус правил сплетения, связанных с ними, равен 1) получаем расширенную Hсистему радиуса 2.
8.6. Мультимножества
8.6
379
Мультимножества
В определении операций сплетения обоих типов ` и |=, использовавшихся в предыдущих разделах, после сплетения двух строк x, y и получения двух (в случае |=) возможно новых строк z, w, разрешается снова использовать x или y в качестве термов сплетения. Эти строки не утрачиваются в результате сплетения, более того, можно соединять x или y с z или w, т. е. сплетать строки из одного «поколения» со строками из другого «поколения». Кроме того, предполагается, что для каждой из новых строк z и w возникает неограниченное число их копий. Предположение, что у доступной строки имеется сколь угодно много ее копий, вполне реалистично, поскольку обычно для каждой строки используется большое число ее копий. Более того, производство большого числа копий последовательности ДНК легко осуществимо с помощью метода полимеразной цепной реакции (ПЦР). Это тоже уменьшает сложность: вычисление может выполняться параллельно на большом числе процессоров-строк. Тем не менее, существование нескольких копий каждой строки поднимает сложную проблему защиты от ошибочных операций. Например, после разрезания нескольких экземпляров строки x на фрагмент x1 , x2 и изменения (в части копий) x1 , x2 на некоторые x01 , x02 в пробирке будут находиться строки всех четырех видов, x1 , x2 , x01 , x02 ; может стать возможной рекомбинация x1 с x02 или x01 с x2 , приводящая к возникновению нелегальных строк, «похожих» на легальные строки x1 x2 или x01 x02 . Можно избежать этой трудности, используя, по крайней мере для некоторых строк определенное число копий, и следя за этими числами во время работы системы. Это приводит нас к рассмотрению мультимножеств, т. е. множеств, с каждым элементом которых связана некоторая кратность. Формально мультимножество над множеством абстрактных элементов X — это отображение M : X −→ N ∪ {∞}; M (x) — число экземпляров x ∈ X в мультимножестве M .
380
8. Универсальность и конечные H-системы
Если M (x) = ∞, то копий x неограниченное число. Множество {x ∈ X | M (x) > 0} называется носителем M и обозначается через supp(M ). Обычное множество S ⊆ X можно воспринимать как мультимножество, определяемое равенствами S(x) = 1 для x ∈ S и S(x) = 0 для x ∈ / S. Для двух мультимножеств M1 , M2 над X мы определим их объединение равенством (M1 ∪ M2 )(x) = M1 (x) + M2 (x), а их разность — (M1 −M2 )(x) = M1 (x)−M2 (x), если x ∈ X, M1 (x) > M2 (x) и оба числа M1 (x), M2 (x) конечны, если же x ∈ X, а M1 (x) = ∞, положим (M1 − M2 )(x) = ∞; для других строк x ∈ X разность M1 − M2 не определена. Обычно мультимножество с конечным носителем M представляется как множество пар (x, M (x)) для x ∈ supp(M ). Например, M1 = {(ab, 3), (abb, 1), (aa, ∞)} — мультимножество над {a, b}∗ с носителем, состоящим из трех слов ab, abb, aa; первое появляется в трех экземплярах, второе — лишь в одном, а для aa присутствует неограниченное число копий. Если, кроме того, взять M2 = {(ab, 1), (abb, 1), (aa, 17)}, то разность M1 − M2 определена и равна {(ab, 2), (aa, ∞)}. Расширенная µH-система — это четверка γ = (V, T, A, R), в которой V — алфавит, T ⊆ V (терминальный алфавит), A — мультимножество над V + с конечным supp(A) (аксиомы), R — конечное множество правил сплетения над V . Для такой µH-системы и двух мультимножеств M1 , M2 над V ∗ мы определяем M1 =⇒γ M2 тогда и только тогда, когда существуют x, y, z, w ∈ V ∗ , такие, что (i) M1 (x) > 1, (M1 − {(x, 1)})(y) > 1, (ii) x = x1 u1 u2 x2 , y = y1 u3 u4 y2 , z = x1 u1 u4 y2 , w = y1 u3 u2 x2 при x1 , x2 , y1 , y2 ∈ V ∗ , u1 #u2$u3 #u4 ∈ R, (iii) M2 = (M1 − {(x, 1)}) − {(y, 1)} ∪ {(z, 1)} ∪ {(w, 1)}.
8.6. Мультимножества
381
В пункте (iii) мы имеем дело с операциями над мультимножествами. Подразумевается, что записанное выше распространяется и на случай x = y (тогда должно выполняться M1 (x) > 2 и нужно вычесть 2 из M1 (x)) или z = w (тогда мы должны прибавить 2 к M2 (z)). Когда понятно, о какой системе γ идет речь, мы пишем =⇒ вместо =⇒γ . Проще говоря, при переходе от M1 к M2 в соответствии с γ кратность двух элементов из M1 , x и y, уменьшается на 1, а кратность получающихся слов z и w увеличивается на 1. Кратность всех остальных элементов из supp(M1 ) не меняется. Получаемое мультимножество и есть M2 . Язык, порожденный расширенной µH-системой γ, состоит из всех слов, содержащих только терминальные символы и чья кратность во время работы γ не меньше единицы. Формально, мы определяем этот язык равенством: L(γ) = {w ∈ T ∗ | w ∈ supp(M ) для некоторого M, такого, что A =⇒∗γ M }. Расширенная H-система γ = (V, T, A, R), определенная в разделе 7.4, может быть интерпретирована как расширенная µH-система с A(x) = ∞ для всех x ∈ A и с M (x) = ∞ для всех мультимножеств M , чей носитель составлен из строк x, выведенных из A. Такие мультимножества, в которых M (x) = ∞ тогда и только тогда, когда M (x) > 0, называются ω-мультимножествами, а соответствующие H-системы могут быть названы ωH-системами. Семейство языков, порожденных расширенными µH-системами γ = (V, T, A, R) с card(supp(A)) 6 n и rad(R) 6 m, n, m > 1, обозначаются через EH2 (µ[n], [m]). Если n или m не ограничены, мы заменяем [n], [m] на F IN . Аналогично, семейства EH2 (F L1 , F L2 ) можно записывать как EH2 (ωF L1 , F L2 ), чтобы подчеркнуть тот факт, что мы работаем с ω-мультимножествами. Обратим внимание на то, что запись M (x) = ∞ для строки из supp(M ) не означает, что мы действительно располагаем бесконечным числом экземпляров x, а лишь подчеркивает, что
382
8. Универсальность и конечные H-системы
мы не считаем копии x: мы получаем их в любой момент, когда они требуются. Для ДНК это значит, что в случае необходимости мы создаем дополнительные экземпляры данной последовательности, например, с помощью операции размножения. Использование мультимножеств, т. е. подсчет числа вхождений (некоторых) используемых строк, обеспечивает нас возможностями для регулирования работы H-систем и позволяет дать очередную характеризацию семейства RE. Мы разделим доказательство этого утверждения на несколько лемм. В первой из них выполняется основная часть работы — моделирование грамматики типа 0 с помощью расширенной µH-системы. Лемма 8.10. RE ⊆ EH2 (µF IN, [5]). Доказательство. Рассмотрим грамматику Хомского G = (N, T, S, P ) типа 0 с правилами в P вида u → v при 1 6 |u| 6 2, 0 6 |v| 6 2, u 6= v (например, можно взять G в нормальной форме Куроды). Предположим также, что правила в P пронумерованы. Через U обозначим множество N ∪ T и построим расширенную µH-систему γ = (V, T, A, R), где 1) V = N ∪ T ∪ {X1 , X2 , Y, Z1 , Z2 } ∪ {(r), [r] | r ∈ P }, 2) мультимножество A содержит слово w0 = X12 Y SX22 , кратности A(w0 ) = 1 и следующие слова бесконечной кратности: wr = (r)v[r] для r : u → v ∈ P, wα = Z1 αY Z2 для α ∈ U, wα0 = Z1 Y αZ2 для α ∈ U, wt = Y Y. 3) Множество R содержит следующие правила сплетения: 1. δ1 δ2 Y u#β1 β2 $(r)v#[r] для r : u → v ∈ P , β1 , β2 ∈ U ∪ {X2 }, δ1 , δ2 ∈ U ∪ {X1 }, 2. Y #u[r]$(r)#vα для r : u → v ∈ P , α ∈ U ∪ {X2 },
8.6. Мультимножества
383
3. δ1 δ2 Y α#β1 β2 $Z1 αY #Z2 , для α ∈ U , β1 , β2 ∈ U ∪ {X2 }, δ1 , δ2 ∈ U ∪ {X1 }, 4. δ#Y αZ2 $Z1 #αY β для α ∈ U , δ ∈ U ∪ {X1 }, β ∈ U ∪ {X2 }, 5. δαY #β1 β2 β3 $Z1 Y α#Z2 для α ∈ U , β1 ∈ U , β2 , β3 ∈ U ∪ {X2 }, δ ∈ U ∪ {X1 }, 6. δ#αY Z2 $Z1 #Y αβ для α ∈ U , δ ∈ U ∪ {X1 }, β ∈ U ∪ {X2 }, 7. #Y Y $X12 Y #w для w ∈ {X22 } ∪ T {X22 } ∪ T 2 {X2 } ∪ T 3 , 8. #X22 $Y 3 #. Идея этой конструкции такова. Правила в группах 1 и 2 имитируют при наличии символа Y правила из P . Правила из групп 3 и 4 переносят символ Y направо, а правила из групп 5 и 6 — налево. «Главная» аксиома — w0 . Во все правила из групп 1–6 входит слово, полученное из w0 и содержащее благодаря этой аксиоме такой символ Y . Следовательно, в них может использоваться лишь одна аксиома, отличная от w0 . В определенный момент мы будем иметь два вхождения X1 в начале слова и два вхождения X2 в конце слова (возможно, того же самого). Правила из групп 1, 3 и 5 разделяют слова вида X12 zX22 на два слова X12 z1 , z2 X22 , каждое кратности один; в правилах из групп 2 и 4, 6 эти слова сводятся вместе, и возникает слово вида X12 z 0 X22 . Правила из групп 7 и 8 удаляют вспомогательные символы X1 , X2 , Y . Если остающееся слово терминальное, то оно из L(G). Символы (r), [r] связаны с правилами из P , а Z1 и Z2 — с операциями переноса. Воспользовавшись этими пояснениями, читатель легко проверит, что каждый вывод в G можно смоделировать в γ, а значит, L(G) ⊆ L(γ). (Можно провести индукцию по длине вывода, но мы опускаем простые и несколько утомительные детали. Кроме того, в дальнейшем обсуждении будет неявно продемонстрировано, как сымитировать терминальный вывод в грамматике G операциями в γ.) Подробно рассмотрим обратное включение. Утверждается, что если A =⇒∗γ M и w ∈ T ∗ , M (w) > 0, то w ∈ L(G). Как уже отмечалось, путем прямой проверки можно убедиться, что нельзя сплести никакие две из аксиом wr , wα , wα0 ,
384
8. Универсальность и конечные H-системы
wt . (Например, символы δ и β по правилам из группы 4 и 6 препятствуют сплетению wα с wα0 , α ∈ U .) На первом шаге мы должны начать с w0 , w0 = X12 Y SX22 , A(w0 ) = 1. Теперь предположим, что мы имеем слово X12 w1 Y w2 X22 кратности 1 (слово w0 — как раз такое). Если в начале w2 стоит левая часть какого-нибудь правила из P , можно применить к нему правило типа 1. Предположим, что мы находимся именно в такой ситуации. Слово имеет вид X12 w1 Y uw3 X22 для некоторого правила r : u → v ∈ P . Используя аксиому (r)v[r] из A, получаем (X12 w1 Y u|w3 X22 , (r)v|[r]) |= (X12 w1 Y u[r], (r)vw3 X22 ). Ни одно из правил групп 1 и 3–8 не применимо к полученным словам. Из группы 2 можно использовать правило Y #u[r]$(r)#vα, включающее в себя оба этих слова. Имеем (X12 w1 Y |u[r], (r)|vw3 X22 ) |= (X12 w1 Y vw3 X22 , (r)u[r]). Слово (r)u[r] не может участвовать в новом сплетении, поскольку предполагалось, что u 6= v в правиле r : u → v из P . Кратность X12 w1 Y u[r] и (r)vw3 X12 снова сократилась до 0 (и, значит, эти слова больше недоступны), кратность X12 w1 Y vw3 X22 равна 1. Таким образом, мы перешли от X12 w1 Y uw3 X22
к
X12 w1 Y vw3 X22 ,
сохранив кратность 1. Это соответствует применению правила r : u → v из P . Более того, видно, что в каждый момент в текущем мультимножестве имеется лишь одно слово, содержащее X12 и одно (возможно то же самое) слово, содержащее X22 . Если к X12 w1 Y αw3 X22 применить правило типа 3, получим (X12 w1 Y α|w3 X22 , Z1 αY |Z2 ) |= (X12 w1 Y αZ2 , Z1 αY w3 X22 ). Ни одно из правил групп 1–3 и 5–8 к полученным словам неприменимо. По правилу же из группы 4 получаем (X12 w1 |Y αZ2 , Z1 |αY w3 X22 ) |= (X12 w1 αY w3 X22 , Z1 Y αZ2 ). Первое из полученных слов заменило X12 w1 Y αw3 X22 , кратность которого теперь стала равна 0 (значит, мы переставили Y с α), второе — аксиома.
8.6. Мультимножества
385
Аналогично можно заметить, что после правила из группы 5 должно быть применено соответствующее правило типа 6, а это приведет к перестановке символа Y с его левым соседом. Итак, в каждый момент времени в нашем мультимножестве либо одно слово X12 w1 Y w2 X22 , либо два X12 z1 , z2 X22 , каждое кратности 1. Лишь в первом случае, если w1 = λ, можно удалить X12 Y , применив правило группы 7; затем с помощью правила группы 8 мы сможем убрать и X22 . Это единственный способ стереть указанные нетерминальные символы. Если полученное слово окажется терминальным, то дальнейшая его обработка будет невозможной из-за отсутствия символа Y . Таким образом, мы можем только имитировать выводы из G и свободно двигать Y в слове кратности один. Отсюда L(γ) ⊆ L(G). Заметим, что радиус γ равен 5, и достигается это значение в правилах группы 1, где |δ1 δ2 Y u| = 5 при |u| = 2. Замечание 8.3. Оценим требуемое число копий для каждой из аксиом. По построению, A(w0 ) = 1 (и это существенно для правильной имитации G с помощью γ). Для всех w типа wr , wα , wα0 , wt мы определили A(w) = ∞. На самом деле, как можно заметить, для каждого r ∈ P нам требуется столько копий wr , сколько раз r используется в выводе в G. Далее, wα и wα0 нужны для каждой операции перемещения Y налево или направо. Слово wt используется лишь однажды правилом типа 7 в конце работы γ. Таким образом, и здесь можно положить A(wt ) = 1. Кроме того, как мы уже видели, в каждый момент времени имеется в точности одно или два слова с контролируемой кратностью, которая равна 1. Таким образом мы не должны «заниматься подсчетами», различая, скажем, кратности n и n + 1 при больших n. Достаточно различать кратности 0 и 1 и максимум для двух слов; при этом наша система устроена так, что это различение будет происходить автоматически. Нужно позаботиться только о том, чтобы предотвратить возникновение дополнительных копий этих слов. Учитывая этот факт, а также то, что при помощи техники ПЦР можно «копировать» необходимые слова, мы видим, что с этой точки зрения наша конструкция достаточно реалистична.
386
8. Универсальность и конечные H-системы
Лемма 8.11. EH2 (µF IN, [m]) ⊆ EH2 (µ[2], [m]) при всех m > 1. Доказательство. Возьмем расширенную µH-систему γ = (V, T, A, R) с конечным supp(A). Пусть w1 , w2 , . . . , wn — слова из supp(A), такие, что A(wi ) < ∞, 0 6 i 6 n, а z1 , . . . , zm — слова из supp(A) с A(zi ) = ∞, 0 6 i 6 m. Мы построим расширенную µH-систему γ 0 = (V ∪ {c, d1 , d2 }, T, A0 , R0 ), где A0 содержит слово w = (w1 c)A(w1 ) (w2 c)A(w2 ) . . . (wn c)A(wn ) кратности 1 и слово z = d1 cz1 cz2 c . . . czm cd2 бесконечной кратности. Если n = 0, то w не строится, если m = 0, то z = d1 cd2 . Кроме того, R0 = R ∪ {#c$d2 #, #d1 $c#, c#$#d1 }. Слово z можно использовать, чтобы отрезать каждое wi и zj от w и z соответственно. Например, для того чтобы получить zj , сплетем z с z, воспользовавшись c#$#d1 для c, стоящего слева от zj , т. е. (d1 cz1 c . . . zj−1 c|zj c . . . czm cd2 , |z) |= (d1 cz1 c . . . czj−1 cz, zj c . . . czm cd2 ), затем сплетем второе слово с z, снова применив #c$d2 #, и получим (zj |c . . . czm cd2 , z|) |= (zj , zczj+1 . . . czm cd2 ). Можно произвести сколько угодно экземпляров слова zj , поскольку A0 (z) = ∞. Для того, чтобы получить слова wi , 1 6 i 6 n, мы начнем с левого конца строки w, применив #c$d2 # к w и z. Получим w1 и zc(w1 c)A(w1 )−1 (w2 c)A(w2 ) . . . (wn c)A(wn ) , оба кратности 1. Воспользовавшись правилом #d1 $c# для z и второго из только что построенных слов, получим zcz и (w1 c)A(w1 )−1 (w2 c)A(w2 )
8.6. Мультимножества
387
. . . (wn c)A(wn ) , снова оба кратности 1. Из первого слова можно выделить аксиомы zj , 1 6 j 6 m, но это не нужно, поскольку они уже появились с бесконечной кратностью. Со вторым словом можно продолжить ту же работу, что и раньше, снова отрезав префикс w1 . Таким путем, будет произведено ровно A(w1 ) копий w1 ; аналогичным образом можно поступить и в отношении других аксиом w2 , . . . , wn , получив в точности A(wi ) копий wi , i = 2, . . . , n. Использование нетерминальных символов c, d1 и d2 обеспечивает то, что только аксиомы бесконечной кратности будут произведены по правилам из R0 − R в произвольном числе копий, в то время как каждая аксиома wi конечной кратности будет произведена только в A(wi ) экземплярах. Если воспользоваться правилом из R для слов вида x1 cx2 , т. е. содержащих нетерминальный символ c, то в конце концов, чтобы получить терминальное слово, мы должны будем разрезать подобное слово, применив правила из R0 − R. Мы начинаем с аксиом γ, отделенных друг от друга символом c. Они имеют требуемую кратность, что обусловлено строением слов w и z. В силу этого, процесс будет соответствовать корректному сплетению в γ. Следовательно, L(γ 0 ) = L(γ). Лемма 8.12. EH2 (µ[1], F IN ) ⊆ REG. Доказательство. Возьмем расширенную µH-систему γ = (V, T, A, R) с supp(A) = {w}. Если A(w) < ∞, то L(γ), очевидно, — конечный язык (каждое слово в L(γ) имеет длину не выше, чем |w| · A(w)). Если A(w) = ∞, то L(γ) ∈ EH2 ([1], F IN ) ⊆ EH2 (F IN, F IN ) = REG. Следовательно, EH2 (µ[1], F IN ) ⊆ REG. Лемма 8.13. REG ⊆ EH2 (ω[1], [2]). Доказательство. В лемме 7.18 было доказано, что REG ⊆ EH1 (F IN, F IN ). Легко увидеть, что на самом деле REG ⊆ EH2 (F IN, [2]) (система из доказательства леммы 7.18 имела
388
8. Универсальность и конечные H-системы
радиус равный двум). Пусть γ = (V, T, A, R) — полученная Hсистема. Теперь, воспользовавшись той же самой конструкцией, что и в доказательстве леммы 8.11 (радиус при этом не меняется), мы сможем собрать все аксиомы из A бесконечной кратности в одну, w, и значит, получим REG ⊆ EH2 (ω[1], [2]). Теорема 8.8. REG = EH2 (µ[1], [2]) = EH2 (µ[1], F IN ) ⊂ EH2 (µ[2], F IN ) = EH2 (µ[2], [m]) = RE для всех m > 5. Доказательство. Для удобства читателя, напомним отношения, установленные ранее в четырех леммах: Лемма Лемма Лемма Лемма
8.10: 8.11: 8.12: 8.13:
RE ⊆ EH2 (µF IN, [5]). EH2 (µF IN, [m]) ⊆ EH2 (µ[2], [m]) для всех m > 1. EH2 (µ[1], F IN ) ⊆ REG. REG ⊆ EH2 (ω[1], [2]).
Из определений следует EH2 (ω[n], [m]) ⊆ EH2 (µ[n], [m]) для всех n, m > 1, а также при замене [n], [m] на F IN . Таким образом, из лемм 8.12 и 8.13 получаем REG = EH2 (µ[1], [2]) = EH2 (µ[1], F IN ). Лемма 8.10 и лемма 8.11 означают RE ⊆ EH2 (µF IN, [m]) ⊆ EH2 (µ[2], [m]), m > 5. Доказав напрямую или использовав тезис Черча, будем, кроме того, иметь EH2 (µ[2], [m]) ⊆ RE, для всех m > 5. Это завершает доказательство. В разделах 8.1–8.5 мы охарактеризовали семейство RE, накладывая на операцию сплетения в расширенных H-системах некие ограничения. Навеяны эти ограничения были, главным образом, теорией регулируемых переписываний. Они имеют небиохимическую природу, и следовательно, будут представлять серьезные трудности для современных лабораторных
8.7. Результаты об универсальности
389
методов при попытке их реализации. Точнее, подобные ограничения, вероятно, можно осуществить, регулируя сплетение вручную (например, изменением температуры, кислотности или других условий реакции, оказывая предпочтение или подавляя определенные ферменты, пользуясь методом праймеров из замечания 8.2 и т. д.). Однако такой подход уничтожит некоторые из главных преимуществ ДНК-вычисления: скорость, энергетическую эффективность, недетерминизм параллельных реакций. В частности, катастрофически упадет скорость процесса. Остается надеяться, что регулирование этого процесса можно будет осуществить встроенными биохимическими средствами. Это потребует значительного прогресса биохимической техники. К сожалению, метод мультимножеств также имеет серьезный недостаток: вероятность того, что две строки имеют кратность 1 и к тому же сплетутся, чрезвычайно низка. Для того чтобы вступить в реакцию сшивки, две строки должны быть достаточно близки друг к другу. Как этого добиться реальным путем и за короткий промежуток времени (не говоря уже о эффективном времени) — открытая проблема. Например, можно прочно закрепить две строки (такая техника хорошо изучена, см., например, [149, 182, 206]), чтобы, сделав их более близкими, увеличить вероятность сплетения. Но насколько эта операция осуществима и эффективна для строк большой длины, — это вопрос биоинженерии, выходящий за рамки данной книги.
8.7
Результаты об универсальности
В предыдущих пяти разделах было доказано, что семейство рекурсивно перечислимых языков может быть охарактеризовано с помощью расширенных H-систем, регулируемых 1) 2) 3) 4) 5)
разрешающими контекстами, запрещающими контекстами, локальными или глобальными языками-мишенями, отображениями годности, отображениями правил next,
390
8. Универсальность и конечные H-системы
6) точечными мутациями, которые редактируют доступные в настоящий момент правила сплетения, 7) двойным сплетением, 8) мультимножествами. Итак, расширенные H-системы этих типов являются вычислительно полными, т. е. по своим возможностям они эквивалентны машинам Тьюринга (грамматикам Хомского типа 0). Однако таких результатов недостаточно для того, чтобы гарантировать программируемую вычислимость моделей («компьютеров»), основанных на операции сплетения. Для этой цели должны быть найдены универсальные H-системы рассмотренных типов, т. е. системы с постоянными компонентами, которые могли бы сымитировать любую конкретную H-систему из соответствующего класса при введении ее кода в универсальную систему. Было бы естественным присоединять этот код в качестве дополнительной аксиомы к множеству аксиом универсальной системы. Таким образом, мы приходим к следующему общему определению. Рассмотрим алфавит T и класс расширенных H-систем H (скажем, класс расширенных H-систем с разрешающими контекстами или с мультимножествами и т. д.). Элемент из H вида γu = (Vu , T, Au , Ru ), где Vu — алфавит, такой, что T ⊆ Vu , Au ⊆ Vu∗ , и Ru — множество правил сплетения над Vu , будем называть универсальным в классе H, если для каждой γ ∈ H существует строка wγ ∈ Vu∗ , такая, что L(γ) = L(γu0 ), а γu0 = (Vu , T, Au ∪ {wγ }, Ru ). Другими словами, wγ , или код γ, — это «программа», выполняя которую γu имитирует действия γ. Набор аксиомы Au можно трактовать как «операционную систему» нашего «компьютера» γu . Ограничение, связанное с использованием данного терминального алфавита, можно снять, кодируя T элементами фиксированного алфавита, состоящего, например, всего из двух символов a, b. Обозначая это кодирование через h, h : T ∗ −→ {a, b}∗ , мы можем сказать, что γu — универсальна, если L(γ) =
8.7. Результаты об универсальности
391
h(L(γu0 )) для любой данной системы γ. Мы не рассматриваем здесь этот случай, поскольку уже предполагается, что алфавит ограничен четырьмя буквами алфавита ДНК (а значит, нам уже требовалось кодирование для работы с произвольными алфавитами). Начав доказательства лемм 8.2, 8.3, 8.5, 8.8, следствия 8.3, теорем 8.5, 8.6, 8.7 и леммы 8.10 с универсальной грамматики Хомского типа 0, мы получим H-системы нужных типов, компоненты которых зависят только от универсальных грамматик, а значит, постоянны. Более того, эти H-системы обладают определенным выше свойством универсальности. Этот результат важен для ДНК-вычислений, и мы докажем его довольно подробно. Кроме того, мы увидим, что при переходе от (универсальной) грамматики типа 0 к расширенной H-системе упомянутых типов понадобятся всего два вспомогательных символа. Более точно, верен следующий общий результат. Лемма 8.14. По данной расширенной H-системе γ одного из восьми указанных выше типов 1–8 с общим алфавитом V и терминальным алфавитом T (и конечными множествами аксиом и правил сплетения) можно построить расширенную Hсистему γ 0 того же типа с общим алфавитом T ∪ {c1 , c2 } и терминальным алфавитом T , такую, что L(γ) = L(γ 0 ). Доказательство. Если V − T = {Z1 , . . . , Zn }, рассмотрим морфизм h : V ∗ −→ (T ∪ {c1 , c2 })∗ , определенный равенствами h(Zi ) = c1 ci2 c1 для 1 6 i 6 n, h(a) = a для a ∈ T. Построим систему γ 0 с общим алфавитом T ∪ {c1 , c2 } и другими компонентами, полученными путем стандартного применения морфизма h к компонентам γ. (Например, для каждой аксиомы x из γ в γ 0 в качестве аксиомы вводится h(x), а для каждого правила сплетения u1 #u2 $u3 #u4 из γ — правило сплетения h(u1 )#h(u2 )$h(u3 )#h(u4 ). Аналогично поступаем с разрешающими или запрещающими контекстами, языками-мишенями, правилами точечных мутаций в развертывающихся Hсистемах — в последнем случае старые маркеры c1 , c2 из до-
392
8. Универсальность и конечные H-системы
казательства теоремы 8.6 не должны быть спутаны с новыми символами c1 , c2 .) Равенство L(γ) = L(γ 0 ) следует из того, что во всех компонентах системы γ 0 (независимо от ее типа) блоки c1 ci2 c1 , 1 6 i 6 n никогда не разбиваются при операциях сплетения (или редактирующих операциях в случае развертывающихся систем) и ведут себя так же, как и соответствующие символы Zi . Заметим, что в доказательстве этой леммы мы переходим от символов Zi к строкам c1 ci2 c1 , а значит, получаем систему γ 0 с большим радиусом, чем у γ (но с тем же числом аксиом). Кроме того, в случае разрешающих или запрещающих контекстов контексты — больше не символы, а строки (ограниченной длины). Именно поэтому при определении расширенных H-систем с разрешающими или запрещающими контекстами мы вводим условия-строки, а не символы, которых было достаточно для доказательства теорем 8.1, 8.2. Способ проверки из замечания 8.2 переносится без особых затруднений (по крайней мере, в случае коротких проверяемых строк) и на такие условия. С другой стороны, работать можно не с двумя вспомогательными символами, а с несколькими. Таким путем можно уменьшить длину кодировок для нетерминальных символов в γ. Соотношение между числом нетерминальных символов и длинами их кодировок представляет практический интерес, и значит, будет зависеть от конкретных обстоятельств. Теперь мы готовы привести один из главных c точки зрения ДНК-вычислений результатов данной главы. Для точности в деталях и ссылках мы явно формулируем его для µH-систем, но аналогичные результаты верны для всех типов H-систем, исследовавшихся ранее. Теорема 8.9. Для каждого данного алфавита T существует расширенная µH-система (µ[1], F IN ) типа лишь с двумя вспомогательными символами, являющаяся универсальной в классе расширенных µH-систем типа (µF IN, F IN ) с терминальным алфавитом T .
8.7. Результаты об универсальности
393
Доказательство. Рассмотрим алфавит T и два разных символа c1 , c2 , не лежащих в T . В главе 3 уже говорилось о том, что для класса грамматик Хомского типа 0 с данным терминальным алфавитом существуют универсальные грамматики, т. е. такие структуры Gu = (Nu , T, Pu ), что для любой данной грамматики G = (N, T, S, P ) существует слово w(G) ∈ (Nu ∪ T )+ («код» G), такое, что L(G0u ) = L(G) для G0u = (Nu , T, w(G), Pu ). (Язык L(G0u ) состоит из всех терминальных слов z, таких, что w(G) =⇒∗ z при использовании правил из Pu .) Для данной универсальной грамматики Gu = (Nu , T, Pu ) типа 0, мы следуем конструкции из доказательства леммы 8.10, получая расширенную µH-систему γ1 = (V1 , T, A1 , R1 ), в которой не рассматривается аксиома (кратности 1) w0 = X12 Y SX22 . Заметим, что все остальные аксиомы в A1 (и имеющие бесконечную кратность), а также правила из R1 зависят только от Nu , T , и Pu , и значит, постоянны. Теперь, как и в доказательстве леммы 8.11, перейдем от γ1 к γ2 = (V2 , T, A2 , R2 ). Поскольку A1 содержит только аксиомы бесконечной кратности, A2 содержит лишь одно слово, определяемое в доказательстве леммы 8.11 с помощью z и имеющее бесконечную кратность. Следуя доказательству леммы 8.14, кодируем все символы из V2 − T словами над {c1 , c2 }. Возникающая система γu = ({c1 , c2 } ∪ T, T, Au , Ru ) и является искомой универсальной µH-системой. Действительно, возьмем произвольную расширенную µHсистему γ0 = (V, T, A, R). Поскольку L(γ0 ) ∈ RE, существует грамматика типа 0 G0 = (N0 , T, S0 , P0 ), такая, что L(γ0 ) = L(G0 ). Построим w(G0 ) — код G0 , который используется в определении универсальной грамматики типа 0. Рассмотрим слово w00 = X12 Y w(G0 )X22 , соответствующее аксиоме w0 из доказательства леммы 8.10 и закодируем его над {c1 , c2 }∪T точно так же, как ранее аксиомы
394
8. Универсальность и конечные H-системы
γ2 . Обозначим полученное слово через w(γ0 ). Тогда L(γu0 ) = L(γ0 ) для γu0 = ({c1 , c2 } ∪ T, T, {(w(γ0 ), 1)} ∪ Au , Ru ). Можно легко в этом убедиться. В доказательстве леммы 8.10 система γ моделирует работу G, начиная с аксиомы S из G, записанной в виде X12 Y SX22 . Если вместо S взять произвольное слово x над алфавитом из G, то в γ мы получим в точности язык терминальных слов y, таких, что x =⇒∗ y в G. Если начать с универсальной грамматики Gu , а S заменить кодом w(G0 ) грамматики G0 типа 0, эквивалентной γ0 , то система γu , связанная указанным образом с универсальной грамматикой Gu , будет имитировать работу Gu , начиная с w(G0 ). Следовательно, L(γu0 ) = L(G0u ) = L(G0 ) = L(γ0 ) для G0u = (Nu , T, w(G0 ), Pu ). Очевидно, Au содержит только одну строку, и значит, γu — система типа (µ[1], F IN ). Заметим, что универсальная µH-система γu , предлагаемая в доказательстве теоремы 8.9, имеет лишь одну аксиому (то же утверждение верно для систем с запрещающими контекстами, с локальными или глобальными мишенями, с отображениями годности и для программируемых систем; в случае развертывающихся H-систем, A0 будет пустым и здесь потребуется добавить строку XB0 w(G0 )Y , содержащую «программу» γ0 , вместо строки XB0 SY в доказательстве теоремы 8.6). Более того, и запускаемая на нашем «компьютере» «программа» также состоит только из одной строки-аксиомы. Существование универсальных H-систем с разрешающими контекстами дает частичный ответ для третьей открытой проблемы, сформулированной после следствия 8.1: существует такое число n, при котором верен результат вида RE = EH2 ([n], p[2]). Это можно доказать следующим образом. Начнем построение в доказательствах лемм 8.2 и 8.3 с универсальной грамматики типа 0. Получим H-систему с постоянными компонентами, а значит, с постоянным числом аксиом и постоянным множеством правил сплетения. Для того чтобы породить данный язык L ∈ RE, мы должны ввести еще одну аксиому типа XBw(G)Y , где G — грамматика типа 0,
8.7. Результаты об универсальности
395
порождающая L, а w(G) – код G. Радиус правил остается неизмененным, а число аксиом ограничено. Таким образом, вопрос можно переформулировать так: каково наименьшее n, при котором RE = EH2 ([n], p[2])? Доказательство теоремы 8.9 эффективно, так как в нем конструктивно строится расширенная µH-система, универсальная для класса µH-систем или, непосредственно, для класса грамматик Хомского типа 0 или машин Тьюринга. Начав с универсальной машины Тьюринга, мы получим таким способом универсальную расширенную µH-систему. Мы не будем явно выписывать универсальную систему, а оценим число правил сплетения, получающихся при применении конструкции из доказательства теоремы 8.9. Рассмотрим универсальную машину Тьюринга M из класса U T M (m, n) (см. раздел 3.3), имеющую p переходов. Для каждого перехода машины M (заданного в виде переписывающего правила, как в разделе 3.3, или другим подходящим способом) мы строим в доказательстве леммы 8.10 примерно (n + m)4 правил типа 1 и (n + m) правил типа 2. Мы получаем в общей сложности N1 = p (n + m)4 + n + m правил (в качестве алфавита рассматриваются только ленточные символы и состояния машины Тьюринга, хотя могут потребоваться дополнительные вспомогательные символы). Кроме того, мы используем примерно N2 = (n + m)5 + (n + m)3 + (n + m)5 + (n + m)3 правил типа 3, 4, 5, 6. Всего получается приблизительно N3 = p((n + m)4 + n + m) + 2(n + m)5 + 2(n + m)3 правил. В следующей таблице указаны конкретные оценки для трех универсальных машин, указанных в разделе 3.3: m 7 5 4
n 4 5 6
p 26 29 22
N3 705716 492290 222220
396
8. Универсальность и конечные H-системы
Эти цифры несомненно лежат вне пределов досягаемости при любой практической попытке реализации такой универсальной µH-системы. Отметим, однако, что при доказательстве упомянутых результатов мы были заинтересованы не в том, чтобы минимизировать размеры получающейся конструкции, а в том, чтобы упростить доказательство ее правильности. Таким образом, вопрос о построении небольших универсальных H-систем различных типов остается открытой исследовательской проблемой. Для этой цели требуется прямое построение, минующее обращение к грамматикам и машинам Тьюринга.
8.8
Комментарии к библиографии
Расширенные H-системы с разрешающими или запрещающими контекстными условиями введены в [95], но ограниченные виды операции сплетения впервые рассматривались в [257], где исследованы, правда, лишь неитеративные операции. Такие операции сплетения в соответствии с бесконечными (регулярными) множествами правил изучались в [160]. В основе раздела 8.2 использована работа [95]; часть результатов представлена также и в [53]. Лемма 8.4 взята из [37], где было высказано предположение, что H-системы с разрешающим контекстом радиуса 1 и с односторонними контекстами (в каждом правиле (r; C1 , C2 ) одно из множеств C1 или C2 пусто) характеризуют линейные языки. Эта гипотеза опровергнута в [250], где доказано, что системы с пустыми множествами C2 могут породить все контекстносвободные языки. Более подробно H-системы с разрешающими контекстами при небольших радиусах изучены в [230] и [233]: вместо радиуса там рассматривается вес правила u1 #u2 $u3 #u4 как четверка (|u1 |, |u2 |, |u3 |, |u4 |); вес системы γ — это четверка (n1 , n2 , n3 , n4 ), каждая компонента которой есть максимум соответствующих компонент в весах правил из γ. В рамках этого подхода в [233] для локальных мишеней усилена теорема 8.4, а именно, показано, что RE = EH2 ([1], lt[1]). Этот результат оптимален для числа аксиом и, вероятно, для радиуса и де-
8.8. Комментарии к библиографии
397
монстрирует большие возможности контроля при помощи локальных языков-мишеней. Операции сплетения с языками-мишенями рассматриваются в [257]. Раздел 8.3 основан на статье [247]. Программируемые и развертывающиеся H-системы изучаются в [259], а H-системы с двойным сплетением были введены в [252]. Мультимножества впервые применены в [73], где с их помощью порождаются нерекурсивные языки. В [240] рекурсивно перечислимые языки представляются как образы морфизмов, отображающих языки из EH2 (µF IN, F IN ). В [95] этот результат был улучшен и приобрел вид приведенной нами теоремы 8.8. Раздел 8.7 также основан на [95]. Явные конструкции универсальных H-системы были предложены в [9] (c бесконечными регулярными множествами правил сплетения в духе доказательства основной леммы об универсальности) и в [94] (с мультимножествами; конструкция использует машину Минского из U T M (7, 4) и вариант конструкции из леммы 8.10). В [94] построена — с помощью компьютерной программы — универсальная µH-система с 56 типами правил сплетения, каждое из которых включает одну, две или три переменные, пробегающие пятиэлементные области. Таким образом, система содержит несколько тысяч правил, что лучше предыдущих оценок, но все еще абсолютно нереалистично. В [87] сделана другая попытка явного построения универсальной H-системы, снова с мультимножествами. Результатом явилась универсальная H-система с числом аксиом, не превышающим 17n2 + 225n + 784, и числом правил сплетения, не превышающим 29n2 + 405n + 1414, где n — мощность терминального алфавита. Эти оценки сопоставимы с оценками из [94].
Глава 9 Сплетение циклических строк В определенных обстоятельствах, например, у некоторых бактерий, молекулы ДНК имеют вид кольцевой последовательности. Поэтому можно рассмотреть общую ситуацию, когда имеются как линейные, так и кольцевые последовательности ДНК. Рекомбинация в результате реакции сшивки будет происходить и в этом случае, поскольку рестрикционные ферменты могут разрезать как линейные, так и кольцевые двухцепочечные последовательности. Возникает множество вариантов, так как рекомбинировать могут и две кольцевые строки, и кольцевая с линейной, к тому же в результате могут получаться и две кольцевые строки, и две линейные, и кольцевая и линейная строки вместе. С математической точки зрения подобные варианты будут выглядеть не столь изящно, как линейный случай из предыдущих глав. Однако такой подход позволит значительно упростить некоторые из рассматриваемых ранее конструкций, хотя бы потому, что в доказательствах, основанных на идее переброски и имитации, переброска больше не потребуется.
9.1
Варианты операции сплетения для циклических строк
Рассмотрим алфавит V . Циклическая строка над V — это последовательность x = a1 a2 . . . an при ai ∈ V , 1 6 i 6 n, в предположении, что a1 следует за an . Другими словами, x можно представить любой циклической перестановкой слова a1 a2 . . . an , например, ai+1 . . . an a1 . . . ai , для произвольного 1 6 i 6 n − 1. Таким образом, циклическая строка над V — это класс эквивалентности, состоящий из всех строк, равных по модулю циклической перестановки. Обозначим через x ˆ циклическую
9.1. Варианты операции сплетения
399
строку, соответствующую линейной строке x ∈ V ∗ , а через V — множество всех циклических строк над V . Любое подмножество V назовем циклическим языком. С каждым обычным языком L ⊆ V ∗ можно связать циклический язык Cir(L) = {ˆ x | x ∈ L}. (В случае одноэлементных языков будем писать Cir(x) = x ˆ.) И наоборот, каждому циклическому языку L ⊆ V можно сопоставить полную линеаризацию Lin(L) = {x | x ˆ ∈ L}. Язык L1 ⊆ V ∗ называется линеаризацией циклического языка L2 ⊆ V , если Cir(L1 ) = L2 . Имея семейство языков F L, можно построить его циклический аналог, F L = {Cir(L) | L ∈ F L}. Таким образом, можно говорить о F IN , REG , RE и так далее. Для циклических языков также можно определить операции объединения, пересечения, пересечения с регулярными циклическими языками, прямые и обратные морфизмы, но не операции произведения или замыкания Клини. Лемма 9.1. Если FL — семейство языков, замкнутое относительно циклической перестановки, то L ∈ F L тогда и только тогда, когда Lin(L) ∈ F L. Доказательство. Обозначим через cp(L) множество всех циклических перестановок строк из L. Ясно, что Lin(Cir(L)) = cp(L) для любого языка L. Теперь, если L0 ∈ F L , то по определению F L имеем L0 = Cir(L) для некоторого L ∈ F L. Поскольку Lin(L0 ) = Lin(Cir(L)) = cp(L), а F L замкнуто относительно циклической перестановки, получаем Lin(L0 ) ∈ F L. Обратно, если L ⊆ V таков, что Lin(L) ∈ F L, то в силу равенства L = Cir(Lin(L)), имеем L ∈ F L . Следствие 9.1. Пусть FL — семейство языков, замкнутое относительно циклической перестановки. Тогда, если FL замкнуто относительно объединения, прямых морфизмов, обратных морфизмов, пересечения с регулярными языками, то и F L также замкнуто относительно объединения, прямых морфизмов, обратных морфизмов, пересечения с регулярными циклическими языками соответственно.
400
9. Сплетение циклических строк
Заметим, что все семейства FIN, REG, CF, CS, RE замкнуты относительно циклической перестановки, в то же время LIN не замкнуто: множество cp({an bn | n > 1}) ∩ a+ b+ a+ = {an bn+m am | n, m > 1} не является линейным языком. Определим теперь для циклических строк некоторые естественные операции сплетения. Рассмотрим алфавит V и правило сплетения r = u1 #u2 $u3 #u4 над V . Для x ˆ, yˆ, zˆ ∈ V и v, w ∈ V ∗ , запишем: (ˆ x, yˆ) |=1r zˆ тогда и только тогда, когда x = x1 u1 u2 , y = y1 u3 u4 , z = x1 u1 u4 y1 u3 u2 при некоторых x1 , y1 ∈ V ∗ , x ˆ |=2r (ˆ y , zˆ) тогда и только тогда, когда x = x1 u1 u2 x2 u3 u4 , y = x1 u1 u4 , z = x2 u3 u2 при некоторых x1 , x2 ∈ V ∗ , (ˆ x, v) |=3r w тогда и только тогда, когда x = x1 u1 u2 , v = v1 u3 u4 v2 , w = v1 u3 u2 x1 u1 u4 v2 при некоторых x1 , v1 , v2 ∈ V ∗ , v |=4r (ˆ x, w) тогда и только тогда, когда v = v1 u1 u2 v2 u3 u4 v3 , x = u2 v2 u3 , w = v1 u1 u4 v3 при некоторых v1 , v2 , v3 ∈ V ∗ . В случае |=1 две циклические строки разрезаются в сайтах u1 u2 , u3 u4 соответственно, а затем склеиваются, образовывая новую циклическую строку. В случае |=2 из одной циклической строки создается две новые, для этого исходная строка разрезается в двух сайтах u1 u2 , u3 u4 , а затем склеиваются концы двух получающихся фрагментов. Операция |=3 разрезает циклическую строку в сайте u1 u2 , линейную — в сайте u3 u4 , затем линейная строка, полученная в результате разрезания циклической, связывается с двумя фрагментами, на которые была разделена линейная строка. Короче говоря, определенная линеаризация циклической строки вставляется внутрь линейной строки на участке, определенном правилом сплетения. Наконец, с помощью |=4 мы переходим от одной линейной строки, разрезаемой в двух сайтах u1 u2 и u3 u4 , к циклической и линейной строкам. Рис. 9.1 иллюстрирует эти варианты. Еще один будет рассмотрен в следующем разделе.
9.1. Варианты операции сплетения
401
yˆ
x ˆ ' $ ' $ u1 - u4 u2 - u3
x1
|=1
y1
=⇒
zˆ '
H
$
u1 u 4
u y1
x1
u2
3
& % & %
&
u1 x ˆ'
'$ 'zˆ $
u2
$
66
x1
|=2
x2 &
v1
v
%
??
u4
u3
u3
u4
=⇒
yˆ
u1 u2
x1
x2
& u% 4 u3& %
v1
v2
@ @ R
3 |=
3 u4 HuH H HH u1 u2 H
u1
v2
u2
=⇒
%
w
x ˆ x1
v1 u1
x1 u4
v3
-
v
6 v1 u1 u2 v2 u3 ?u4 6
?
v3
|=4
=⇒
v2
u2
w
u3
Рис. 9.1. Сплетение циклических строк (I).
Заметим, что во всех случаях, так же как и в предыдущих главах, используется только одно правило сплетения: мы делаем разрез в сайтах u1 u2 , u3 u4 , а затем рекомбинируем липкие концы так, чтобы получить подстроки u1 u4 , u3 u2 . Для алфавита V , подмножество L в V ∗ ∪ V называется смешанным языком. Для обычной H-схемы σ = (V, R) с R ⊆ V ∗ #V ∗ $V ∗ #V ∗ и смешанного языка L ⊆ V ∗ ∪ V определим ∗ (L) как наименьший смешанный язык, смешанный язык σmix содержащий L и замкнутый относительно всех четырех опре-
402
9. Сплетение циклических строк
деленных выше операций |=i , i = 1, 2, 3, 4,. При использовании ∗ (L), где только некоторых из операций мы будем писать σM M ⊆ {1, 2, 3, 4} — множество индексов i, участвующих в работе операций |=i . Рассмотрим несколько примеров. σ = ({a, b}, {a#b$b#a}), L = {Cir(ab)}. Нетрудно увидеть, что ∗ σ{1} (L) = {Cir(an bn ) | n > 1}, ∗ σ{1,2} (L) = {ˆ y | y = an , или y = bn , или y = an bn , n > 1}, ∗ ∗ σ{1} (L) = σM (L) для всех M = {1} ∪ M 0 , M 0 ⊆ {3, 4}, ∗ ∗ σ{1,2} (L) = σM (L) для всех M = {1, 2} ∪ M 0 , M 0 ⊆ {3, 4}.
Для той же H-схемы и L0 = {ba, Cir(ba)}, получаем ∗ σ{3} (L0 ) = {Cir(ba)} ∪ {bn an | n > 1}.
Следовательно, во всех этих случаях конечные H-схемы приводят конечные языки к нерегулярным (обычным или циклическим) языкам. Это не так в случае линейных строк (лемма 7.14), что делает сплетение циклических строк интересным с точки зрения ДНК-вычислений: неограниченное сплетение в соответствии с конечным множеством правил, даже начинающееся с конечных языков, приводит к нерегулярным языкам. В случае смешанного сплетения результат о сохранении регулярности можно получить для для особого класса H-схем. Более точно, H-схема σ = (V, R) называется рефлексивной, если вместе с u1 #u2 $u3 #u4 ∈ R всегда u1 #u2 $u1 #u2 ∈ R и u3 #u4 $u3 #u4 ∈ R. Доказательство следующего аналога леммы 7.15 можно найти в [139]. Теорема 9.1. Пусть FL является полным AFL, замкнутым относительно циклической перестановки. Тогда, если σ = (V, R) — рефлексивная H-схема с конечным множеством
9.2. Еще один вариант
403
R, а L — такой смешанный язык над V, что L ∩ V ∗ ∈ F L и ∗ (L) ∩ V ∗ ∈ F L и σ ∗ (L) ∩ V ∈ F L . L ∩ V ∈ F L , то σmix mix Таким образом, чтобы получать более сильные, нежели конечные автоматы, модели вычислимости, основанные на нерегулируемом смешанном сплетении, мы должны использовать нерефлексивные H-схемы. Если в приведенном выше примере мы к σ добавим правила a#b$a#b и b#a$b#a, то получим H-схему σ 0 , такую, что ∗
σ 0 {1} (L) = {ˆ y | y ∈ {a, b}+ , |y|a = |y|b }, ∗
σ 0 {1,2} (L) = {ˆ y | y ∈ {a, b}+ }. Используя только отношение |=1 , мы все еще получаем нерегулярный циклический язык, но в другом случае, благодаря равенству σ 0 ∗{1,2} (L) = σ 0 ∗mix (L) (σ 0 не содержит ни одной линейной строки) применима теорема 9.1, согласно которой циклический язык σ 0 ∗{1,2} (L) регулярен. Точное описание возможностей основанных на сплетении циклических строк (расширенных) H-систем различных рассматривавшихся выше типов или (расширенных) H-систем, основанных на смешанном сплетении — важная тема для исследования.
9.2
Еще один вариант и его возможности
Идея еще одной операции сплетения циклических строк продиктована двумя соображениями. Первое из низ идет от идеи переброски и имитации, которая используется при доказательстве некоторых характеризаций RE в предыдущих главах. На этапах переброски мы начинаем со строк XwαY при w ∈ V ∗ , α ∈ V для данного алфавита V и двух специальных символов X, Y . Мы удаляем α с правого конца, получая XwY 0 (обычно, Y 0 = Yα для запоминания удаляемого символа), затем мы добавляем α с левого конца, создавая XαwY 0 ; наконец, мы возвращаем Y вместо Y 0 , производя XαwY . Поскольку Cir(wα) = Cir(αw), мы можем считать, что не α перебрасывается в Cir(XwαY ), а блок Y X
404
9. Сплетение циклических строк
переставляется с α при помощи перестановки вида αY X → Y Xα. Таким образом, можно одинаково относиться и к имитируемым нами правилам грамматики u → v, и к перебрасывающим шагам: и в тех и в других некая подстрока циклической строки заменяется на другую. Для сохранения контролирующего блока Y X, возможно, в качестве единого символа, нам понадобятся переставляющие правила αY X → Y Xα. Но на самом деле умение заменять одни подстроки циклической строки другими позволяет вообще отказаться от переброски. Правда, нам потребуется дополнительный шаг линеаризации или соглашение о «линейном» прочтении циклических строк. Другая мотивировка для рассмотрения операции сплетения, способной производить подстановку в циклических строках, скрыта в характеризации семейства RE с помощью итерированных ОПМ. Итерация ОПМ нужна для того, чтобы после разбора строки перейти от последнего символа к первому и снова запустить данный процесс. В циклическом же случае начало и конец строки соединены, так что можно считать, что ОПМ просто продолжает разбор, двигаясь вдоль циклической строки. Операцию замены подстрок в циклической строке, которая требуется в приведенных ситуациях, можно определить следующим образом. Для правила сплетения r = u1 #u2 $u3 #u4 над некоторым алфавитом V и x ˆ, yˆ ∈ V , z, w ∈ V ∗ , пишем (ˆ x, z) |=5r (ˆ y , w) тогда и только тогда, когда x = x1 u1 u2 x2 u3 u4 ,
z = u 2 z1 u 3 ,
y = x1 u1 u2 z1 u3 u4 ,
w = u2 x2 u3
∗.
при некоторых x1 , x2 , z1 ∈ V Эту операцию иллюстрирует рис. 9.2. Видно, как строки x ˆи z меняются подстроками x2 и z1 . Циклическая строка разрезается в двух местах, при этом из нее высвобождается подслово u2 x2 u3 . Концы линейной строки соответствуют концам остав-
9.2. Еще один вариант
u2
z u
z1 u
1 2 '
405
u3
x2 u3
u2 u4
|=5
u
u
1 2 =⇒ ' $ Z
x2
u3
z1 u 3
%&
x1
u4
$
yˆ
x ˆ &
w
x1
%
Рис. 9.2. Сплетение циклических строк (II).
шейся части циклической строки, поэтому можно произвести новую циклическую строку. Взяв эту операцию за основу, определим порождающий языки механизм. Расширенная циклическая H-система — это структура γ = (V, T, A1 , A2 , R1 , R2 ), в которой V — алфавит, T ⊆ V (терминальный алфавит), A1 ⊆ V , A2 ⊆ V ∗ — конечные множества (аксиом), а R1 , R2 — конечные множества правил сплетения над V . Для такой системы и L1 ⊆ V , L2 ⊆ V ∗ мы определяем σ{5} (L1 , L2 ) = (L01 , L02 ) где L01 = {ˆ y | (ˆ x, z) |=5r (ˆ y , w) при некоторых x ˆ ∈ L1 , z ∈ L2 , r ∈ R1 }, L02
= {w | (ˆ x, z) |=5r (ˆ y , w) при некоторых x ˆ ∈ L1 , z ∈ L2 , r ∈ R1 }.
Далее, 0 σ{5} (L1 , L2 ) = (L1 , L2 ), i+1 i i σ{5} (L1 , L2 ) = σ{5} (L1 , L2 ) ∪ σ{5} (σ{5} (L1 , L2 )), i > 0, [ ∗ i σ{5} (L1 , L2 ) = σ{5} (L1 , L2 ), i>0
406
9. Сплетение циклических строк
где объединение производится покомпонентно. Для правила r = u1 #u2 $u3 #u4 из R2 и x ˆ ∈ V , y, z ∈ V ∗ , мы пишем x ˆ |=6r (y, z) тогда и только тогда, когда x = x1 u1 u2 x2 u3 u4 ,
y = u4 x1 u1 ,
z = u2 x2 u3
при некоторых x1 , x2 ∈ V ∗ . (Циклическая строка разрезается на участках u1 u2 , u3 u4 и возникают две линейные строки.) Затем для L ⊆ V мы определяем σ{6} (L) = {y ∈ V ∗ | x ˆ |=6r (y, z) или x ˆ |=6r (z, y), при некоторых x ˆ ∈ L и r ∈ R2 }. Язык, порождаемый γ, задается равенством L(γ) = σ{6} (L1 ) ∩ T ∗ , ∗ (A , A ) = (L , L ) при некотором L ⊆ V ∗ . где σ{5} 1 2 1 2 2 Таким образом, начав с двух множеств аксиом, мы итеративно сплетаем циклические строки с линейными с помощью операции |=5 по правилам из R1 . После этого полученные циклические строки разрезаются с помощью операции |=6 по правилам из R2 . В порождаемом языке содержатся только строки, составленные из терминальных символов. Мы не знаем, насколько мощными являются расширенные циклические H-системы. Но простое ограничение операций сплетения |=5 , |=6 приводит по модулю некоторой проекции к характеризации RE. Эта проекция стирает служебные маркеры, используемые в процессе порождения строки. Скажем, что γ = (V, T, A1 , A2 , R1 , R2 ) — ограниченная расширенная циклическая H-система, если с правилами r ∈ R1 ∪R2 ассоциированы строки vr ∈ V ∗ ( мы представляем правила в виде пар (r, vr )), а операции |=5 , |=6 определены следующим образом: для r = u1 #u2 $u3 #u4 , (r, vr ) ∈ R1 ∪ R2 , и x ˆ, yˆ ∈ V , z, w ∈ V ∗ , записываем 0
(ˆ x, z) |=5r (ˆ y , w) тогда и только тогда, когда x = x1 u1 u2 x2 u3 u4 , z = u2 z1 u3 , y = x1 u1 u2 z1 u3 u4 , w = u2 x2 u3 , при некоторых x1 , x2 , z1 ∈ V ∗ , таких, что vr ∈ Sub(x2 ), а u1 u2 x2 u3 u4 не
9.2. Еще один вариант
407
может быть записана в виде x01 u1 u2 x02 u3 u4 x03 при |x02 | < |x2 |, vr ∈ Sub(x02 ), 0 x ˆ |=6r (y, z) тогда и только тогда, когда x = x1 u1 u2 x2 u3 u4 , y = u4 x1 u1 , z = u2 x2 u3 при некоторых x1 , x2 ∈ V ∗ , таких, что vr ∈ Sub(x2 ) и u1 u2 x2 u3 u4 не может быть записано в виде x01 u1 u2 x02 u3 u4 x03 при |x02 | < |x2 |, vr ∈ Sub(x02 ). Иначе говоря, участки u1 u2 , u3 u4 должны располагаться в x вокруг подстроки x2 , в которую по крайней мере один раз входит строка vr , и x2 — минимальная с этим свойством, т. е. ни одна собственная подстрока в x2 , содержащая vr , не может быть ограничена участками u1 u2 , u3 u4 . Таким образом, строки vr играют для правил сплетения роль «якорей», влияние которых проявляется локально от первого слева от них вхождения u1 u2 до первого справа после них вхождения u3 u4 . Использование такой информации о строке x2 , заменяемой 0 на z1 при помощи операции |=5 , — весьма мощный фактор: благодаря этой операции мы снова сможем охарактеризовать рекурсивно перечислимые языки. Обозначим через EH2 (cF IN, rF IN ) семейство языков, порожденных ограниченными расширенными циклическими Hсистемами («c» перед первым FIN указывает на то, что мы начинаем с циклических аксиом, а «r» перед вторым FIN — на то, что сплетения ограничены в смысле, определенном выше). Теорема 9.2. Каждый рекурсивно перечислимый язык есть проекция подходящего языка из семейства EH2 (cF IN, rF IN ). Доказательство. Рассмотрим язык L ∈ RE, L ⊆ T ∗ . В силу теоремы 3.14 этот язык можно записать в виде L = g ∗ (a0 ) ∩ T ∗ , для некоторых ОПМ g = (K, V, V, s0 , F, P ) и a0 ∈ V . Мы построим следующую ограниченную расширенную циклическую H-систему γ = (V 0 , T 0 , A1 , A2 , R1 , R2 ). Рассмотрим новый символ E и добавим к P все правила вида sf E → Es0 для sf ∈ F . Полученное таким способом множество обозначим через P 0 . Предположим, что P 0 = {r1 , . . . , rn }, где
408
9. Сплетение циклических строк
ri : qi bi → ci,1 . . . ci,ti qi0 , при ti > 0, qi , qi0 ∈ K, bi ∈ V ∪ {E}, ci,1 ∈ V ∪ {E}, ci,j ∈ V , 2 6 j 6 ti , 1 6 i 6 n. Рассмотрим также новые символы d0 , d1 , . . . , dn . Положим V 0 = V ∪ K ∪ {E, d0 , d1 , . . . , dn }, T 0 = T ∪ {d0 , d1 , . . . , dn }, A1 = {Cir(d1 d2 . . . dn d0 s0 d0 a0 d1 d2 . . . dn d0 E)}, A2 = {di+1 . . . dn d0 ci,1 d1 d2 . . . dn d0 ci,2 d1 d2 . . . dn d0 . . . ci,ti d1 d2 . . . dn d0 qi0 d0 | 1 6 i 6 n}, R1 = {(d1 d2 . . . di #di+1 . . . dn d0 $d0 #, qi d0 bi ) | 1 6 i 6 n}, R2 = {(#d1 d2 . . . dn d0 $d0 #, qf d0 E) | qf ∈ F }. Посмотрим, как работает эта система. Пусть имеется циклическая строка x ˆ для некоторого x = x1 bd1 d2 . . . dn d0 qd0 ad1 d2 . . . dn d0 cx2 при x1 , x2 ∈ (V ∪ {d0 , d1 , . . . , dn })∗ , a, b, c ∈ V ∪ {E}, q ∈ K. Первоначально x1 = λ, x2 = λ, q = s0 , a = a0 , c = E, а b отсутствует. Если qa соответствует правилу ri из P 0 , т. е. q = qi , a = bi , то в R1 существует правило сплетения d1 d2 . . . di #di+1 . . . dn d0 $d0 #. Благодаря ограниченной форме применения этих правил мы вырезаем из x подстроку x3 = di+1 . . . dn d0 qi d0 bi d1 . . . dn d0 (в x3 появляется подстрока qi d0 bi и x3 минимальная с этим свойством). В A2 есть только одна строка, начинающаяся с di+1 . . . dn d0 и заканчивающаяся d0 , а именно di+1 . . . dn d0 ci,1 d1 d2 . . . dn d0 ci,2 . . . ci,ti d1 d2 . . . dn d0 qi0 d0 . Подставляя ее в x вместо вырезанной ранее строки x3 , мы получаем циклическую строку yˆ, где y = x1 bd1 . . . dn d0 ci,1 d1 . . . dn d0 ci,2 . . . ci,ti d1 . . . dn d0 qi0 d0 cx2 . Таким образом, все циклические строки x ˆ, возникающие при использовании правил из R1 , обладают такими свойствами: 1) лишь одно состояние q ∈ K появляется в x в подстроке вида qd0 a, при a ∈ V ∪ {E}, 2) каждые два последовательных вхождения символов из V ∪ {E} разделены блоком d1 d2 . . . dn d0 ,
9.2. Еще один вариант
409
3) q также отделен от его левого соседа из V ∪ {E} блоком d1 d2 . . . d n d0 . Предыдущая операция сплетения имитировала применение правила ri на циклической строке. Попутно возникающая линейная строка x3 может быть использована только как неделимая вставка в циклическую строку при сплетении по тому же правилу (d1 . . . di #di+1 . . . dn d0 $d0 #, qi d0 bi ). При этом ни циклическая строка, ни строка x3 не меняются. Следовательно, применяя правила из R1 , мы можем имитировать работу g, начав с a0 и итерируя ОПМ благодаря наличию в P 0 правил qf E → Es0 . При возникновении циклической строки x ˆ с x вида x = x1 ad1 d2 . . . dn d0 qf d0 Ed1 d2 . . . dn d0 bx2 при x1 , x2 ∈ (V ∪ {d0 , d1 , . . . , dn })∗ , a, b ∈ V ∪ {λ}, q0 ∈ F , можно применить соответствующее правило из R2 . Мы получим две линейные строки y = d1 d2 . . . dn d0 qf d0 Ed1 d2 . . . dn d0 , z = bx2 x1 a. В первой строке есть нетерминальные символы qf и E. Вторая же допускается языком L(γ), если содержит только символы из T ∪ {d0 , d1 , . . . , dn }. Мы рассекли циклическую строку x ˆ, руководствуясь положением маркера E, отмечающим конец строки из g ∗ (a0 ). Поэтому полученная строка — это строка из g ∗ (a0 ) в правильной циклической перестановке, но с символами, разделенными блоками d1 d2 . . . dn d0 . Рассмотрим теперь проекцию prT : (T ∪ {d0 , d1 , . . . , dn })∗ −→ T ∗ , определяемую равенствами prT (a) = a при a ∈ T, prT (di ) = λ при 0 6 i 6 n. Получаем L = prT (L(γ)), что и завершает доказательство.
410
9. Сплетение циклических строк
Способ реализации ограниченных операций сплетения ти0 па |=5 из предыдущей системы γ мог бы быть следующим. Рассмотрим кодирование h : (V ∪K ∪{E})∗ −→ {А, Ц, Г, Т}∗ (элементов из V ∪ K ∪ {E} строками над алфавитом ДНК). Для каждого правила ri ∈ R1 мы рассматриваем реh i ui zi v i стрикционный фермент enzi , характеризуемый схемой u¯i z¯i v¯i . (Здесь вновь используются обозначения, введенные в главе 4.) Согласно этой схеме, последовательность, содержащая h i ui zi v i подпоследовательность u¯i z¯i v¯i , будет разрезана так, чтобы h i h vi i λ zi возникли липкие концы uu¯ii и z¯i λ v¯i соответственно. Обозначим через αi строку ui zi vi , появляющуюся в верхней цепочке схемы, ассоциированной с enzi , 1 6 i 6 n. Возьмем еще один рестрикционный фермент enz0 , характеh i u0 z0 v 0 ризуемый схемой u¯0 z¯0 v¯0 . Обозначим, α0 = u0 z0 v0 . Последовательности αi соответствуют символам di , 0 6 i 6 n. Далее, элементы γ строятся следующим образом: (I) циклическая аксиома: circ(h(s0 )α0 h(a0 )α1 α2 . . . αn α0 h(E)α1 α2 . . . αn α0 ) , λ (II) для каждого правила ri : sa → xs0 ∈ P или ri : sf E → Es0 , 1 6 i 6 n, мы вводим zi+1 λ 1) вспомогательную строку wi = u¯i z¯λi v¯i u ¯i+1 λ λ λ z0 λ λ z0 λ zn λ . . . u¯n v¯n v¯0 λ u¯0 λ h(s)¯ u0 λ v¯i+1 λ λ z1 λ zn λ λ λ λ v¯1 . . . u ¯n λ v¯n u ¯0 z¯0 v¯0 , v¯0 h(a)¯ u1 2) аксиому xs0 при x = b1 b2. . . bk , bi ∈ V , 1 6 i 6 k, 1 ...αn α0 h(b2 )α1 k > 1, в виде wi0 = ziλvi αi+1 ...αn α0 h(b1 )α h i λ αn α0 ...αo h(bk )α1 ...αn α0 h(s0 ) u0 λ ... u ¯0 z¯0 , λ h i 0 λ wi00 = ziλvi αi+1 ...αλn α0 h(s ) uu¯00 z¯0 , если x = λ, (III) для каждого sf ∈ F также вспомогательная вводится λ λ λ z2 λ zn строка w(sf ) = u¯1 z¯1 v¯1 . . . u ¯2 λ v¯2 u ¯n λ
9.2. Еще один вариант
411
ui zi vi ui+1 zi+1vi+1
#
...
u0 z0 v0 h(s) u0 z0 v0 h(a) u1
z1 v1
...
...
un zn vn u0 z0 v0 h(a0 )
...
...
Рис. 9.3. Частичный (выборочный) отжиг вспомогательной строки.
λ v¯n
λ v¯1
λ u ¯0
...
z0 λ λ
u ¯n−1
λ
λ λ z0 λ v¯0 v¯0 h(sf )¯ u0 zn−1 λ λ v¯n−1 u ¯n z¯n v¯n , λ
λ h(E)¯ u1
z1 λ
(IV) вместо правил сплетения из R1 ∪ R2 в пробирку добавляются ферменты enz1 , . . . , enzn , enz0 . Предположим теперь, что мы имеем одноцепочечную циклическую строку w, содержащую коды h(a) нескольких букв a ∈ V , код концевого маркера E, а также код состояния s ∈ K. Любые два кода h(a), h(a0 ), h(E), a, a0 ∈ V разделены блоком α1 α2 . . . αn α0 . Код h(s) от кода левого соседа отделен таким же блоком α1 α2 . . . αn α0 , а от кода правого соседа — только α0 . Ферменты не могут разрезать одноцепочечные последовательности. Если h(s)α0 h(s) соответствует правилу ri : sa → xs0 из P ∪ {sf E → Es0 | sf ∈ F }, то строка wi тоже присутствует в пробирке. Она присоединится к одноцепочечной строке w, так, что возникнет циклическое слово со сдвоенными кусками в позициях αi слева от h(s), позициях всех строк uj , vj между этим αi и строкой α0 справа от h(a), в позициях h(s), h(a) и позиции α0 справа от h(a). Части zi не присоединены, поскольку они те же самые в wi , что и в w (они некомплементарны). Эту ситуацию иллюстрирует рис. 9.3.
412
9. Сплетение циклических строк
ui−1 zi−1 vi−1 ui zi
z0 v0
h(a0 )
&
% Рис. 9.4. Результат разрезающей операции.
αi−1 ui
...
α0
zi
vi αi+1
x
...
α0 h(s0 ) u0
z0
v0 h(a0 ) α1
&
% Рис. 9.5. Результат сшивки.
Следовательно, имеется лишь два участка, где рестрикционные ферменты могут распознать какие-нибудь схемы и сделать разрез: с левой стороны части, изображенной на рис. 9.3, где разрез может сделать enzi , и с правой стороны, где разрез может сделать enz0 . После выполнения разреза мы h получим i ситуацию, показан h v0 i ui λ z0 ную на рис. 9.4: один конец есть u¯i , а другой — z¯i λ v¯0 . Это в точности концы, соответствующие wi0 или wi00 . Благодаря сшивке снова возникнет циклическое слово типа изображенного на рис. 9.5 (мы не отметили части x, h(bi ) и блоки α1 . . . αn α0 между ними). Теперь имеется два двухцепочечных участка, один из которых соответствует ui zi (а значит, не всему αi целиком), другой — α0 . Фермент enz0 может выполнить разрез снова, но
9.2. Еще один вариант
413
тогда строка пропадет, ибо из нее нельзя будет выделить терминальную строку из-за невозможности удалить h(s0 ). Мы вернулись к циклическому слову практически того же вида, что и у слова, с какого мы начали (разница лишь в наличии упомянутых двухцепочечных участков). Мы удаляем их (нам не известно, как это можно сделать без денатурирования двойных последовательностей из A1 ∪ A2 ) и повторяем данную процедуру. При встрече с маркером E мы либо продолжаем, либо присоединяем строку w(sf ). Это создает циклическую последовательность, аналогичную последовательности на рис. 9.3, делая возможным рассечение u1 z1 v1 с помощью enz1 слева от блока h(sf )α0 h(E), а un zn vn с помощью enzn справа от h(sf )α0 h(E). Никакая сшивка невозможна: мы получаем две линейные строки, которые не могут участвовать в последующих отжигах со вспомогательными символами, а значит, работа системы здесь прекращается. Строки, содержащие только блоки h(a), a ∈ T , и α0 , α1 , . . . , αn отбираются (фильтруются). Итог вычислений — это строки, получаемые из отобранных вычеркиванием блоков α0 , α1 , . . . , αn . Конечно, приведенная процедура — просто теоретический план, в котором предполагается, что отжиг и сшивка происходят без ошибок, а две сплетаемые строки расположены линейно, никак не свернуты, и следовательно, комплементарные фрагменты в этих двух строках расположены на одних и тех же расстояниях. Как уйти от этого сильного предположения (заменив его использованием неустойчивых отжигов, когда спариваемые фрагменты недостаточно длинны, или другой техники способом) — вопрос непростой.
9.3
Комментарии к библиографии
Проблема сплетения циклических строк сформулирована в [131]. Материал раздела 9.1 основан на [270, 271]. Циклические строки, кроме того, рассматриваются в [314, 352]. В основе раздела 9.2 лежит работа [229], в которой исследуется аналогичная операция.
Глава 10 Распределенные H-системы Один из существенных недостатков моделей, рассматривавшихся в предыдущих главах, заключается в том, что каждая из них использует несколько правил сплетения. Правило соответствует двум рестрикционным ферментам, а каждый фермент, в свою очередь, нуждается в определенной температуре, кислотности, солености и других условиях реакций. В принципе это означает, что при переходе от одного правила сплетения к другому мы должны менять соответствующие условия. Подобная процедура в смысле длительности катастрофически уменьшает эффективность вычисления, и следовательно, должна быть, по возможности, исключена из процесса. Помощь в этом вопросе могут оказать идеи из области грамматических систем: использование распределенных архитектур, выделение из модели частей, которые могли бы работать независимо (предпочтительно параллельно), организация способов взаимодействия между этими частями и синтез результата вычисления из частичных результатов, получаемых в отдельных компонентах. Это подводит нас к структурам, аналогичным параллельным взаимодействующим грамматическим системам.
10.1
Сплетающие грамматические системы
Первая модель, которую мы здесь рассмотрим, напоминает параллельную взаимодействующую грамматическую систему: компоненты — обычные контекстно-свободные грамматики, работающие с собственными сентенциальными формами независимо и синхронно и соединяющие их в соответствии с данным множеством правил сплетения. Таким образом, мы имеем гибридную модель, включающую в себя как переписы-
10.1. Сплетающие грамматические системы
415
вающие операции, так и правила сплетения. Это, конечно, не вполне осуществимо в категориях биохимии, но, с другой стороны, построение смешанных систем, содержащих как ДНКмодули и операции, так и классические электронные модули, могло бы стать более реалистичным подходом к молекулярным вычислениям, чем ограничение систем только биохимическими рамками. С точки зрения порождаемости наши системы, называемые как сплетающие грамматические системы, оказываются вычислительно полными даже при достаточно простом устройстве компонент. Сплетающая грамматическая система (степени n > 1) — это структура Γ = (N, T, (S1 , P1 ), (S2 , P2 ), . . . , (Sn , Pn ), R), где (i) N , T — непересекающиеся алфавиты, Si ∈ N , и Pi , (1 6 i 6 n), — конечные множества переписывающих правил над N ∪ T , (ii) R — конечное подмножество в (N ∪ T )∗ #(N ∪ T )∗ $(N ∪ T )∗ #(N ∪ T )∗ , где #, $ — два различных символа, не лежащих в N ∪ T . Множества Pi называются компонентами Γ. Для двух n-кортежей (мы называем их конфигурациями) x = (x1 , x2 , . . . , xn ) и y = (y1 , y2 , . . . , yn ), xi , yi ∈ (N ∪ T )∗ , 1 6 i 6 n, мы пишем x =⇒ y тогда и только тогда, когда выполняется одно из следующих двух условий: (i) для каждого 1 6 i 6 n либо xi =⇒Pi yi , либо xi = yi ∈ T ∗ , (ii) существуют 1 6 i, j 6 n, такие, что xi = x0i u1 u2 x00i , xj = x0j u3 u4 x00j , yi = x0i u1 u4 x00j , yj = x0j u3 u2 x00i для u1 #u2 $u3 #u4 ∈ R; для всех k 6= i, j мы имеем yk = xk . В данном выше определении пункт (i) определяет переписывающий этап, а пункт (ii) — этап сплетения, соответствующий этапу связи в параллельных взаимодействующих грамматических системах. Заметим, что все эти операции равноправ-
416
10. Распределенные H-системы
ны. В случае (ii) мы обозначаем переход от (xi , xj ) к (yi , yj ), как обычно, через (xi , xj ) |= (yi , yj ). Язык, порожденный системой Γ, — это язык, порожденный ее первой компонентой, т. е. L(Γ) = {x1 ∈ T ∗ | (S1 , . . . , Sn ) =⇒∗ (x1 , . . . , xn ), xj ∈ (N ∪ T )∗ , 2 6 j 6 n}. Мы обозначаем через SGSn (X) семейство языков L(Γ), порожденных сплетающими грамматическими системами степени не выше n, n > 1, с компонентами типа X. Здесь X берется из множества {REG, RL, CF }, причем для REG мы используем регулярные правила в ограниченном смысле, RL указывает на использование право-линейных правил, а CF — λ-свободных контекстно-свободных правил. Если на количество компонент не накладывается никаких ограничений, мы заменяем индекс n на ∗. Заметим, что в определении отношения =⇒ между конфигурациями сплетающих грамматических систем мы неявно используем кратности строк, поскольку каждая компонента системы в любой момент времени, и после этапа переписывания, и после этапа сплетения, имеет в точности одну текущую строку. Строки произвольной кратности не используются. Как это ни удивительно (аналогичный результат неизвестен для параллельных взаимодействующих грамматических систем), мы можем охарактеризовать RE с помощью таких систем лишь с двумя λ-свободными контекстно-свободными компонентами. Теорема 10.1. RE = SGSn (CF ) = SGS∗ (CF ) для всех n > 2. Доказательство. Включения SGSn (CF ) ⊆ SGSn+1 (CF ) ⊆ SGS∗ (CF ) ⊆ RE, n > 1, очевидны. Мы должны доказать только включение RE ⊆ SGS2 (CF ). Рассмотрим язык L ⊆ T ∗ , L ∈ RE, и возьмем грамматику G = (N, T, S, P ) в нормальной форме Гефферта, определенной в теореме 3.5(1): N = {S, A, B, C} и P содержат контекстносвободные правила вида S → x, x ∈ ({S, A, B, C}∪T )+ , а также
10.1. Сплетающие грамматические системы
417
правило ABC → λ. Обозначим через P 0 множество контекстно-свободных правил из P . Построим сплетающую грамматическую систему Γ = (N ∪ {X, Y, Z, S2 }, T, (S, P1 ), (S2 , P2 ), R) с P1 = P 0 ∪ {A → A}, P2 = {S2 → Y XXABCZ, X → XX, X → X}, R = {#ABC$Y X#XABC, #XABC$Y XABC#}. Утверждается, что L(G) = L(Γ). Исследуем работу Γ. Поскольку P 0 ⊆ P1 , каждая терминальная строка w, выводимая из S по правилам из P 0 , лежит в L(Γ). (Так как P2 содержит правило X → X, никаких ограничений на длину выводов не накладывается.) Кроме того, каждая строка w ∈ (N ∪ T )∗ , такая, что S =⇒∗P 0 w, может быть воспроизведена в Γ в компоненте P1 . Нам остается решить проблему имитации в Γ стирающего правила ABC → λ из P . Рассмотрим шаг вывода, на котором впервые применяется сплетающее правило. Текущая конфигурация имеет вид (uABCv, Y X i ABCZ) при некотором i > 2. Поскольку X не встречается в uABCv, применено может быть только первое правило сплетения. Это возможно, если только i = 2 (и значит, правило X → XX не использовалось во второй компоненте). Мы получаем (u|ABCv, Y X|XABCZ) |= (uXABCZ, Y XABCv). Случай 1. Продолжаем, применяя второе правило сплетения. Получаем: (u|XABCZ, Y XABC|v) |= (uv, Y XABCXABCZ). Подстрока ABC была удалена из uABCv. Отметим, что во второй компоненте мы получили строку с префиксом Y XABC, и значит, применив правило X → XX из P2 , мы можем получить Y XXABC, т. е. ту же самую строку, с какой мы начинали, продолженную суффиксом c последним символом Z. (При
418
10. Распределенные H-системы
этом, если в первой компоненте еще не построена терминальная строка, можно использовать A → A из P1 .) В общем случае мы имеем конфигурацию (uABCv, Y XXABCwZ) с w ∈ (X + ABC)∗ . Сначала w = λ, после удаления одного подслова ABC мы имеем w = X j ABC, для некоторого j > 1. С помощью двух указанных выше сплетений мы получаем (u|ABCv, Y X|XABCwZ) |= (u|XABCwZ, Y XABC|v) |= (uv, Y XABCXABCwZ). После применения правил X → XX из P2 и A → A из P1 возникает конфигурация (uv, Y XXABCXABCwZ). Вид конфигурации сохранен, а значит, эта операция может повторяться, пока из строки первой компоненты не будут удалены все вхождения ABC. Если какие-нибудь переписывающие шаги вклиниваются между сплетениями, то переписывания в P1 либо соответствуют переписываниям в G, в которых правила из P 0 применяются к префиксу u, либо используют правило A → A, и следовательно, ничего не меняют в первой компоненте. Использование правила X → X ничего не меняет и во второй компоненте. Применение правила X → XX обсуждается ниже в случае 2. Следовательно, таким образом мы можем породить каждую строку из L(G), т. е. L(G) ⊆ L(Γ). Второе упомянутое сплетение может быть выполнено и для подстроки XABC из w: (uXABCw1 |XABCw2 Z, Y XABC|v) |= (uXABCw1 v, Y XABCXABCw2 Z). Для того чтобы удалить символ X из первой строки (или из строки, получаемой после переписывания первой строки по правилам из P 0 ), мы должны, в конечном счете, воспользоваться вторым правилом сплетения, разрезающим строку перед X. Предположим, что мы выполняем эту операцию для предыдущей конфигурации (результат аналогичен и для конфигурации, выведенной из нее). Имеем
10.1. Сплетающие грамматические системы
419
(u|XABCw1 v, Y XABC|XABCw2 Z) |= (uXABCw2 Z, Y XABCXABCw1 v). Символ X (также, как и Z) снова присутствует в первой компоненте. Следовательно, нетерминальный X невозможно устранить, и вывод никогда не приведет к терминальной строке. Случай 2. После применения первого правила сплетения выполняем шаг вывода, в котором P2 использует X → XX. Рассмотрим общий вид конфигурации, при которой может появиться эта операция: (u|ABCv, Y X|XABCwZ) |= (uXABCwZ, Y XABCv) =⇒ (u0 XABCwZ, Y XXABCv). Возможно, u0 = u, если в P1 было использовано правило A → A, или же u =⇒ u0 по правилу из P 0 . Если в P2 снова применить X → XX, то дальнейшие сплетения станут невозможными, и следовательно, никакая терминальная строка получена быть не может. Предположим, что мы выполнили несколько переписывающих шагов и теперь хотим снова выполнить сплетение, используя первое правило. Перед нами две возможности: (2.1.) Сплетение для некоторого вхождения ABC в u0 : (u1 |ABCu2 XABCwZ, Y X|XABCv) |= (u1 XABCv, Y XABCu2 XABCwZ). Как мы видели в конце обсуждения случая 1, символ X невозможно устранить из строки первой компоненты. (2.2.) Сплетение для некоторого вхождения ABC в w: (u0 XABCw1 X|ABCw2 Z, Y X|XABCv) |= (u0 XABCw1 XXABCv, Y XABCw2 Z). Если w2 6= λ, то w2 содержит по крайней мере один символ X, который затем невозможно будет устранить из строки первой
420
10. Распределенные H-системы
компоненты. Если w2 = λ, и мы сплетаем (u0 XABCw1 X|XABCv, Y XABC|Z) |= (u0 XABCw1 XZ, Y XABCXABCv), то в дальнейшем X всегда будет присутствовать в первой компоненте. Такой же вывод будет сделан и в случае сплетения в сайте XABC в w1 . Если w2 = λ, и мы удалим первое вхождение X из первой компоненты, получим: (u0 |XABCw1 XXABCv, Y XABC|Z) |= (u0 Z, Y XABCXABCw1 XXABCv). Нетерминальный Z теперь можно удалить, только воспользовавшись первым правилом сплетения. Предположим, мы выполняем (u01 |ABCu02 Z, Y X|XABCw0 v) |= (u01 XABCw0 v, Y XABCu02 Z). Для того чтобы убрать символ X из строки в первой компоненте, мы снова введем Z. При таком выводе терминальная строка никогда не будет произведена ни в одной из компонент. Этим завершается обсуждение случая 2, доказывающее, что ни одна строка помимо строк L(G) произведена быть не может, а значит, L(Γ) ⊆ L(G). Следовательно, L(Γ) = L(G). Замечание 10.1. Мы можем определить язык, соответствующий сплетающей грамматической системе Γ, «более демократичным» способом, как объединение всех терминальных строк, порождаемых всеми компонентами Γ. Более точно, если Li (Γ) — язык, порожденный S i-й компонентой Γ, то мы можем рассмотреть язык Lt (Γ) = ni=1 Li (Γ). В приведенном доказательстве L1 (Γ) = Lt (Γ), поскольку L2 (Γ) = ∅ (с левого конца в строках второй компоненты этой системы всегда присутствует нетерминальный Y ). Следовательно, и для языка Lt (Γ) мы можем, как и в теореме 10.1, получить характеризацию RE. Предыдущий результат оптимален относительно числа компонент. Оптимален ли он и в смысле типа переписывающих
10.1. Сплетающие грамматические системы
421
правил, используемых в его компонентах? Что можно сказать о системах с регулярными или право-линейными правилами? У этих систем также довольно большие возможности. Доказательства двух следующих включений можно найти в [113]: LIN ⊆ SGS2 (REG), CF ⊆ SGS3 (REG). Оба эти включения являются собственными. Действительно, рассмотрим сплетающую грамматическую систему Γ = ({S1 , S2 , A, B, C}, {a, b, c, d}, (S1 , P1 ), (S2 , P2 ), R) с P1 = {S1 → aS1 , S1 → aA, B → cB, C → c}, P2 = {S2 → dB, B → bB, A → cA, A → cC}, R = {a#A$b#B, c#B$d#b}. Выводы в Γ происходят следующим образом. После начальной переписывающей фазы, (S1 , S2 ) =⇒ (aS1 , dB) =⇒∗ (an+1 S1 , dbn B) =⇒ (an+2 A, dbn+1 B), n > 0, или состоящей только из одного шага, (S1 , S2 ) =⇒ (aA, dB), мы должны выполнить сплетение в соответствии с первым правилом. Это единственный способ достичь терминальной строки, поскольку переписывания не могут избавить от A первую компоненту, а от B — вторую. Во втором случае ни одно сплетение не может быть выполнено. В первом же мы получаем (an+2 |A, dbn+1 |B) |= (an+2 B, dbn+1 A). Нужно сделать, по крайней мере, один переписывающий шаг, поскольку сейчас нельзя использовать ни одно правило спле-
422
10. Распределенные H-системы
тения: (an+2 B, dbn+1 A) =⇒∗ (an+2 cm B, dbn+1 cm A), m > 1. Если снова сплести, применив второе правило, то в первую компоненту будет введен символ A, что заблокирует работу системы: (an+2 cm |B, d|bn+1 cm A) |= (an+2 cm bn+1 cm A, dB). Следовательно, мы должны переписать A на cC во второй компоненте. Символ C не может быть переписан в P2 , значит, должно быть немедленно выполнено сплетение, после чего C в первой компоненте будет заменен на c: (an+2 cm B, dbn+1 cm A) =⇒ (an+2 cm+1 |B, d|bn+1 cm+1 C) |= (an+2 cm+1 bn+1 cm+1 C, dB) =⇒ (an+2 cm+1 bn+1 cm+2 , dbB). Следовательно, L(Γ) = {an+1 cm bn cm+1 | n > 1, m > 2}. Ясно, что этот язык не является контекстно-свободным. На самом деле сплетающие грамматические системы с тремя регулярными компонентами «почти характеризуют» рекурсивно перечислимые языки. Теорема 10.2. Каждый язык L ⊆ T ∗ , L ∈ RE, может быть представлен в виде L = L0 ∩ T ∗ для некоторого L0 ∈ SGS3 (REG). Доказательство. Возьмем L, как и в доказательстве теоремы 10.1, порожденный грамматикой в нормальной форме Гефферта G = (N, T, S, P ) с N = {S, A, B, C}. Мы построим сплетающую грамматическую систему, для которой символы из N будут считаться терминальными. Рассмотрим систему Γ = (N 0 , T 0 , (S1 , P1 ), (S2 , P2 ), (S3 , P3 ), R), где N 0 = {S1 , S2 , S3 , X, X 0 , Y, Z, Z 0 , Z 00 }, T 0 = {S, A, B, C} ∪ T ∪ {d0 , d1 , d2 , d3 },
10.1. Сплетающие грамматические системы
423
P1 = {S1 → SY, Y → d0 Y, X → d0 X 0 , Z → d0 Z 0 }, P2 = {S2 → d1 X, X → d3 Z, Y → d0 Y, Z 0 → d3 Z, Z 0 → d3 Z 00 } ∪ {X → αX | α ∈ {S, A, B, C} ∪ T }, P3 = {S3 → d2 X, X 0 → d2 X, X → d2 X}, R = {#S$d1 #xX | S → x ∈ P } ∪ {#d0 X 0 $d1 S#, d1 #Sd0 $d2 #X, #ABC$d3 #Z, #d0 Z 0 $d3 ABC#, #d0 d0 $Z 00 #}. Идея этой конструкции состоит в следующем. Каждый вывод в Γ имеет две фазы: в первой имитируется использование правил S → x из P , а во второй — правила ABC → λ. На переход от первой фазы к второй указывает замена X на Z во второй компоненте. В первой фазе P2 недетерминированным путем порождает строку d1 xX при некотором x ∈ ({S, A, B, C}∪T )∗ . Такая строка может быть использована в сплетении, если только S → x — правило из P . Таким образом, P2 играет роль производителя правых частей для правил из P . С помощью правил сплетения из R, не содержащих символа Z и его штрихованных вариантов, мы можем далее имитировать применение правила S → x для переписывания в первой компоненте единственного вхождения S. Переписывающие шаги необходимы между операциями сплетения именно для изменения нетерминальных символов. Во время таких переписываний в P1 и P2 вводится фиктивный терминальный символ d0 , а в P3 — символ d2 . Для того чтобы повторять этот процесс, не производя строк-паразитов (здесь имеются в виду строки из (L(Γ) ∩ T ∗ ) − L), нам требуется третья компонента. Ее роль состоит в «очистке» второй компоненты (см. объяснения ниже). После введения символа Z мы начинаем имитацию правила ABC → λ. Эта имитация осуществляется так же, как и в доказательстве теоремы 10.1. Ни одно правило S → x из P не может быть смоделировано во время этой фазы. Это не является ограничением общности, поскольку вывод в грамматике в нормальной форме Гефферта может без ущерба для порожда-
424
10. Распределенные H-системы
емой строки быть переделан так, чтобы сначала применялись контекстно-свободные правила, а затем стирающее правило. Исследуем подробно работу Γ. Мы начинаем с (S1 , S2 , S3 ) =⇒ (SY, d1 X, d2 X). Никакое сплетение не может быть выполнено (1) до получения во второй компоненте строки x, такой, что S → x ∈ P , или (2) до введения символа Z. Для сплетения в случае (2) нам в строке первой компоненты нужна, по крайней мере, подстрока ABC. Следовательно, мы должны продолжать по случаю (1): (SY, d1 X, d2 X) =⇒∗ (Sdn0 Y, d1 xX, dn+1 X), n = |x| > 1. 2 Процесс блокируется, когда x нельзя увеличить этим способом так, чтобы получить строку xx0 с S → xx0 ∈ P (x0 может быть пустой строкой). Предположим, что S → x ∈ P . Тогда мы можем выполнить сплетение: (|Sdn0 Y, d1 |xX, dn+1 X) |= (xX, d1 Sdn0 Y, dn+1 X). 2 2 Если мы продолжим (xX, d1 |Sdn0 Y, dn+1 |X) |= (xX, d1 X, dn+1 Sdn0 Y ), 2 2 то система окажется блокированной, никакое переписывание или сплетение невозможно. Мы должны вместо этого переписать, а затем сплести: Y, dn+2 X) (xX, d1 Sdn0 Y, dn+1 X) =⇒ (x|d0 X 0 , d1 S|dn+1 0 2 2 Y, d1 Sd0 X 0 , dn+2 X). |= (xdn+1 0 2 Единственное возможное продолжение — снова сплетение: (xdn+1 Y, d1 |Sd0 X 0 , dn+2 |X) |= (xdn+2 Y, d1 X, dn+2 Sd0 X 0 ). 0 2 0 2 Мы вернулись к конфигурации с нетерминальными Y, X в первых двух компонентах и с «очищенной» строкой во второй компоненте, снова равной d1 X. Можно повторить этот процесс. Продемонстрируем произвольный шаг такого вида. В случае фиктивных символов d0 , d2 мы будем записывать d∗0 , d∗2 , чтобы указать на присутствие некоторого числа их копий, конкретное значение которого нам не важно. Подобная запись ка-
10.1. Сплетающие грамматические системы
425
сается блоков d∗2 Sd0 в третьей компоненте. Итак, мы имеем: (u|Svd∗0 Y, d1 |xX, (d∗2 Sd0 )∗ X) |= (uxX, d1 Svd∗0 Y, (d∗2 Sd0 )∗ X) =⇒ (ux|d0 X 0 , d1 S|vd∗0 Y, (d∗2 Sd0 )∗ d2 X) |= (uxvd∗0 Y, d1 |Sd0 X 0 , (d∗2 Sd0 )∗ d2 |X)
(∗)
|= (uxvd∗0 Y, d1 X, (d∗2 Sd0 )∗ d2 Sd0 X 0 ) =⇒∗ (uxvd∗0 Y, d1 yX, (d∗2 Sd0 )(d2 Sd0 )d∗2 X). Процесс идет так же, как описано выше в общем случае. Заметим, что в конфигурации (∗) можно также сплести строки второй и третьей компонент при условии v = λ, но после такой операции система будет блокирована, никакое переписывание (из-за Y в третьей компоненте) или сплетение осуществить будет невозможно. Если во второй компоненте присутствует X, мы тоже можем воспользоваться правилом X → d3 Z, определяющим переход к второй фазе вывода, в которой подстроки ABC могут быть удалены из строки первой компоненты: (uABCvd∗0 Y, d1 wX, −X) =⇒ (uABCvd∗0 Y, d1 wd3 Z, −X) (в дальнейшем, третья компонента не играет никакой роли, и мы будем игнорировать ее строку, только проставляя нетерминальный X, и имея в виду, что ни одно сплетение не может задействовать эту строку; переписывающие же операции могут выполняться когда угодно, т.е. никаких ограничений на длину вывода не накладывается). Мы должны сплести (u|ABCvd∗0 Y, d1 wd3 |Z, −X) |= (uZ, d1 wd3 ABCvd∗0 Y, −X). Никакое дальнейшее сплетение невозможно, мы вынуждены переписывать =⇒ (ud0 Z 0 , d1 wd3 ABCvd∗0 Y, −X). Теперь мы должны сплетать: (u|d0 Z 0 , d1 wd3 ABC|vd∗0 Y, −X) |= (uvd∗0 Y, d1 wd3 ABCd0 Z 0 , −X). (∗∗)
426
10. Распределенные H-системы
После переписывания =⇒ (uvd∗0 Y, d1 wd3 ABCd0 d3 Z, −X) во второй компоненте вновь появляется подстрока d3 Z, присутствующая во второй компоненте. Если в uv есть еще вхождения ABC, то можно удалить их, снова осуществляя сплетение. Заметим, что при каждом таком повторе выполняются два переписывания, и значит, строка в первой компоненте имеет вид uvdi Y при некотором i > 2. Таким образом могут быть удалены все подстроки ABC. Однако на каком-то этапе при достижении конгруэнции вида (∗∗), может быть применено правило Z 0 → d3 Z 00 из P2 . Это подготавливает удаление нетерминального символа в первой компоненте: (uvdi0 Y, zZ 0 , −X) =⇒ (uvdj0 |dk0 Y, zd3 Z 00 |, −X) |= (uvdj0 , zd3 Z 00 dk0 Y, −X). Возникает терминальная (с точки зрения Γ) строка. Заметим, что правило #d0 d0 $Z 00 # не может быть применено для сплетения строк в третьей и второй компонентах, поскольку строка в третьей компоненте не содержит подстроку d0 d0 (это можно легко проверить путем исследования выводов, обсуждавшихся выше). Теперь ясно, что если все подстроки ABC были удалены, а последнее сплетение было осуществлено перед суффиксом di0 Y (и значит, j = 0 в предыдущей записи), то мы получаем строку из L(G). Следовательно, L(G) = L(Γ) ∩ T ∗ . Следствие 10.1. Для каждого семейства F L из RE, замкнутого относительно пересечения с регулярными множествами, имеем SGS3 (REG) − F L 6= ∅. Этими свойствами обладают многие важные семейства из основной иерархии Хомского, области регулируемых переписываний и теории Линденмайера: языки, порожденные матричными грамматиками с проверкой вхождений или без нее, но без использования λ-правил, языки, порожденные матрич-
10.2. Взаимодействующие распределенные H-системы
427
ными грамматиками с λ-правилами и без проверки вхождений, ET 0L, CS, рекурсивные и т. д. Семейство SGS3 (REG) содержит языки, отличающиеся от каждого из них, что еще раз демонстрирует возможности кооперации в духе параллельных взаимодействующих грамматических систем, объединяемой с возможностями операции сплетения. Мы не знаем, выполняется ли для некоторого n равенство RE = SGSn (REG). Тем не менее, если мы позволим применять цепные правила X → Y и правила вида X → xY для нетерминальных символов X, Y и терминальной строки x, то сможем получить характеризацию RE. Доказательство следующего результата можно найти в [113]. Теорема 10.3. RE = SGS4 (RL). Мы рассмотрели сплетающие грамматические системы смешанного типа. Распределенные H-системы, использующие только операции сплетения (и не использующие при этом операции переписывания), будут представлены в следующих трех разделах.
10.2
Взаимодействующие распределенные H-системы
Модель, рассматриваемая нами в этом разделе, — аналог параллельных грамматических систем с передачей по команде: компоненты работают на основе сплетения, а связываются, посылая друг другу строчки, которые проходят некие заранее определенные фильтры. Взаимодействующая распределенная H-система (степени n > 1) — это структура Γ = (V, T, (A1 , R1 , V1 ), . . . , (An , Rn , Vn )), где 1. 2. 3. 4.
V — алфавит, T ⊆V, Ai — конечные языки над V , Ri — конечные множества правил сплетения над V , а
428
10. Распределенные H-системы
5. Vi ⊆ V , 1 6 i 6 n. Каждая тройка (Ai , Ri , Vi ), 1 6 i 6 n, называется компонентой Γ; Ai , Ri , Vi соответственно — множество аксиом, множество правил сплетения и селектор (или фильтр) компоненты i; T — терминальный алфавит системы. Положим n [ ∗ B=V − Vi∗ . i=1
Пара σ (i) = (V, Ri ) — основная H-схема, ассоциированная c i-й компонентой системы. Конфигурацией системы называется n-кортеж (L1 , . . . , Ln ), Li ⊆ V ∗ , 1 6 i 6 n. Язык Li будем называть содержимым i-й компоненты, воспринимая компоненты как пробирки, где выполняются операции сплетения. Для двух конфигураций (L1 , . . . , Ln ), (L01 , . . . , L0n ), мы определяем (L1 , . . . , Ln ) =⇒ (L01 , . . . , L0n ) тогда и только тогда, когда n [ (j)∗ (i)∗ 0 Li = (σ2 (Lj ) ∩ Vi∗ ) ∪ (σ2 (Li ) ∩ B) j=1
для каждого i, 1 6 i 6 n. Иными словами, содержимое каждой компоненты сплетается в соответствии с ассоциированным (i)∗ множеством правил (мы переходим от Li к σ2 (Li ), 1 6 i 6 n), и результат перераспределяется среди n компонент, согласно селекторам V1 , . . . , Vn . Часть, которая не может быть передана (которая не принадлежит никакому Vi∗ , 1 6 i 6 n) остается в компоненте. Никаких ограничений на алфавиты Vi не накладывается. В частности, они могут пересекаться, при этом, если (j)∗ некая строка из σ2 (Lj ) принадлежит нескольким языкам Vi∗ , то копии этой строки будут распределены по всем компонентам i с таким свойством.
10.2. Взаимодействующие распределенные H-системы
429
Язык, порождаемый Γ, определяется следующим образом: L(Γ) = {w ∈ T ∗ |w ∈ L1 для некоторых L1 , . . . , Ln ⊆ V ∗ , таких, что (A1 , . . . , An ) =⇒∗ (L1 , . . . , Ln )}. Другими словами, первая компонента системы предназначена на роль главной, и язык Γ есть множество всех терминальных строк, порожденных ею (или собранных в ней посредством передач). Мы обозначаем через CDHn семейство языков, порожденных взаимодействующими распределенными H-системами степени не выше n, n > 1. Если n не определено, мы заменяем нижний индекс n на ∗. Можно рассмотреть другой вариант, в котором в качестве языка, порождаемого Γ, берется объединение всех языков, порождаемых ее компонентами. Подобный подход обсуждался в замечании 10.1, но здесь исследовать его мы не будем. Взаимодействующие распределенные H-системы характеризуют RE. Прежде чем доказать этот результат, исследуем пример. Рассмотрим систему Γ = ({a, b, c, d, e}, {a, b, c}, (A1 , R1 , V1 ), (A2 , R2 , V2 )), A1 = {cabc, ebd, dae}, R1 = {b#c$e#bd, da#e$c#a}, V1 = {a, b, c}, A2 = {ec, ce}, R2 = {b#d$e#c, c#e$d#a}, V2 = {a, b, d}. Единственно возможные сплетения в первой компоненте таковы: (x1 b|c, e|bd) |= (x1 bbd, ec) для x1 ∈ {a, b, c, d, e}∗ , (da|e, c|ax2 ) |= (daax2 , ce) для x2 ∈ {a, b, c, d, e}∗ . К строкам x1 bc, cax2 добавляется таким образом еще по одному символу b и a соответственно (при этом в обоих случаях c
430
10. Распределенные H-системы
заменяется на d). Мы начинаем с cabc. Из второй компоненты передаются строки над {a, b, c}. Из первой же можно передавать во вторую только строки над {a, b, d}. Это означает, что, начав со строки can bm c, n, m > 1 (первоначально, n = m = 1), мы произведем в первой компоненте dan+1 bm+1 d. Больше ничего сплести мы здесь не можем, и строка передается во вторую компоненту. При этом должны быть применены оба правила из R1 , иначе из строки не исчезнет символ c. Во второй компоненте можно выполнить: (αai bj |d, e|c) |= (αai bj c, ed), i j
i j
(c|e, d|a b α) |= (ca b α, de),
α ∈ {c, d}, α ∈ {c, d}.
Строку cai bj c разрешено передавать в первую компоненту, и значит, процесс можно повторить. Таким образом, мы получаем язык L(Γ) = {can bn c | n > 1}, не являющийся регулярным языком. Следовательно, CDH2 − REG 6= ∅. Теорема 10.4. RE = CDHn = CDH∗ для всех n > 3. Доказательство. Включения CDHn ⊆ CDHn+1 ⊆ CDH∗ ⊆ RE, n > 1, очевидны. Мы должны доказать лишь включение RE ⊆ CDH3 . Рассмотрим грамматику G = (N, T, S, P ) типа 0. Возьмем новый символ B и обозначим для удобства N ∪ T ∪ {B} = {D1 , D2 , . . . , Dn }. Так как N 6= ∅, T 6= ∅, имеем n > 3. Построим взаимодействующую распределенную H-систему Γ = (V, T, (A1 , R1 , V1 ), (A2 , R2 , V2 ), (A3 , R3 , V3 )) с V = N ∪ T ∪ {X, Y, X 0 , Y 0 , Z, B} ∪ {Xi , Yi | 0 6 i 6 2n}, A1 = {XBSY } ∪ {ZvY | u → v ∈ P }
10.2. Взаимодействующие распределенные H-системы
431
∪ {X2i Di Z | 1 6 i 6 n} ∪ {X2i Z | 0 6 i 6 n − 1} ∪ {ZY2i | 0 6 i 6 n}, R1 = {#uY $Z#vY | u → v ∈ P } ∪ {#Di Y $Z#Y2i , X#$X2i Di #Z | 1 6 i 6 n} ∪ {#Y2i+1 $Z#Y2i , X2i+1 #$X2i #Z | 0 6 i 6 n − 1}, V1 = N ∪ T ∪ {B, X, Y } ∪ {X2i+1 , Y2i+1 | 0 6 i 6 n − 1}, A2 = {ZY2i−1 , X2i−1 Z | 1 6 i 6 n} ∪ {ZZ}, R2 = {#Y2i $Z#Y2i−1 , X2i #$X2i−1 #Z | 1 6 i 6 n} ∪ {X 0 B#$#ZZ, #Y 0 $ZZ#}, V2 = N ∪ T ∪ {B, X 0 , Y 0 } ∪ {X2i , Y2i | 1 6 i 6 n}, A3 = {ZY, XZ, ZY 0 , ZX 0 }, R3 = {#Y0 $Z#Y, X0 #$X#Z, #Y0 $Z#Y 0 , X0 #$X 0 #Z}, V3 = N ∪ T ∪ {B, X0 , Y0 }. Исследуем работу Γ. В ее основе — уже знакомая нам идея имитации и переброски. Начав со строки вида XwY (такой вид имеет аксиома XBSY ), первая компонента может либо смоделировать в суффиксе w правило из P , использовав для этого правила #uY $Z#vY , u → v ∈ P , либо начать ротацию строки. В первом случае возникающая строка вновь ограничена маркерами X, Y , и значит, процесс может быть повторен. При удалении символа Di с правого конца w (w = w1 Di , 1 6 i 6 n) символ Y заменяется на Y2i : (Xw1 |Di Y, Z|Y2i ) |= (Xw1 Y2i , ZDi Y ). (Заметим, что B может быть удален наряду с любым символом из N ∪ T .) Строки, содержащие Z, не могут быть переброшены из одной компоненты в другую. А из двух таких строк получить путем сплетения новую, а тем более терминальную, строку невозможно. Рассмотрим, например, строку ZDi Y . Снова применяя
432
10. Распределенные H-системы
правило #Di Y $Z#Y2i , мы получаем строки ZY2i , ZDi Y . Аналогичный результат будет верен и во всех остальных случаях. Строку Xw1 Y2i передать нельзя, но в первой компоненте возможно следующее сплетение: (X|w1 Y2i , X2j Dj |Z) |= (XZ, X2j Dj w1 Y2i ) для некоторого 1 6 j 6 n. Две эти операции можно выполнить и в обратном порядке, результат останется прежним. Строки, ограниченные маркерами Xr , Ys с четными r, s, нельзя ввести в новые сплетения, зато можно передать во вторую компоненту. Здесь осуществимы два сплетения, уменьшающие на единицу каждый из индексов у X и Y . При выполнении только одного сплетения, передача невозможна. Таким образом, получаем: (X2j |Dj w1 Y2i , X2j−1 |Z) |= (X2j Z, X2j−1 Dj w1 Y2i ), (X2j−1 Dj w1 |Y2i , Z|Y2i−1 ) |= (X2j−1 Dj w1 Y2i−1 , ZY2i ). Снова порядок этих двух операций не важен. Строка с нечетными индексами концевых маркеров может быть возвращена в первую компоненту. Эти действия могут и должны быть повторены, иного способа избавиться от нетерминальных символов не существует. Строка с нулевым индексом концевого маркера перейти во вторую компоненту не может. Поэтому если индекс только одного из концевых маркеров X, Y равен 0, то строка будет «потеряна»: ее нельзя ни передавать, ни вводить в новые сплетения. Если оба маркера имеют индекс 0, то строку можно передать третьей компоненте. В третьей компоненте строка вида X0 wY0 может быть превращена в одну из строк: XwY (эта строка переносится в первую компоненту, что позволяет повторять процесс имитации правил из P или ротации строки), в строку X 0 wY 0 или же в строку со смешанным типом маркеров X, Y — со штрихом и без штриха. В последнем случае, она снова оказывается «потерянной».
10.2. Взаимодействующие распределенные H-системы
433
Строка вида X 0 wY 0 может быть передана только во вторую компоненту, где возможны лишь два сплетения: (X 0 B|w1 Y 0 , |ZZ) |= (X 0 BZZ, w1 Y 0 ), (w1 |Y 0 , ZZ|) |= (w1 , ZZY 0 ), при условии, что w = Bw1 (которое гарантирует, что эта строка имеет ту же перестановку, что и соответствующая строка, производимая G). Строка без концевых маркеров не может вступать в новые сплетения. Если она терминальная, то ее можно передать первой компоненте, а значит, это элемент L(Γ). В противном случае она «потеряна». Итак, индексы двух маркеров X, Y должны достигнуть нулевых значений одновременно. Это возможно, если только они изначально были одинаковыми. Как и в рассмотренном ранее случае, мы должны иметь i = j. Это означает, что символ Di , стертый с правого конца w, нужно одновременно ввести с левого конца w. Таким образом, этап переброски выполняется корректно, а значит, могут быть получены все циклические перестановки данной строки. Следовательно, все выводы в G можно имитировать в Γ, и обратно, только строки из L(G) могут быть в качестве терминальных посланы в первую компоненту Γ. Таким образом, L(G) = L(Γ). Взаимодействующие распределенные H-системы степени 1 не используют передачу, и значит, являются расширенными конечными H-системами. Ввиду результатов главы 7, мы можем записать CDH1 = REG ⊂ CDH2 (то, что второе включение собственное, доказано примером перед теоремой 10.4). Вопрос, можно ли включение CDH2 ⊆ CDH3 заменить равенством, и, следовательно, может ли быть усилена до n = 2 теорема 10.4, до сих пор открыт. Мы ожидаем, что ответ будет отрицательным, более того, мы предполагаем, что CDH2 ⊂ CF . Этот вопрос более интересен с математической точки зрения, и гораздо менее — для ДНК-вычислений: поводом к рассмотрению распределенных H-систем послужило
434
10. Распределенные H-системы
желание уменьшить число правил сплетения в каждой компоненте. Интуитивно понятно, что малое число компонент должно компенсироваться их большими размерами, а это противоречит нашей цели. Рассмотрим теперь саму проблему, которая послужила причиной введения распределенных H-систем — ограничение числа правил, работающих вместе. Для взаимодействующей распределенной H-системы Γ = (V, T, (A1 , R1 , V1 ), . . . , (An , Rn , Vn )) мы обозначим через deg(Γ) степень Γ (число компонент n), через rad(Γ) — максимум радиусов правил в Γ, и size(Γ) = max{card(Ri ) | 1 6 i 6 n}. Видоизменив конструкцию из доказательства теоремы 10.4, мы сможем охарактеризовать семейство RE с помощью взаимодействующих распределенных H-систем минимального размера, равного единице (конечно, это получается за счет снятия ограничений на число компонент). Теорема 10.5. Для каждой грамматики G = (N, T, S, P ) типа 0 существует взаимодействующая распределенная H-система Γ, такая, что L(G) = L(Γ), и deg(Γ) = 2(card(N ∪ T ) + 1) + card(P ) + 9, size(Γ) = 1, rad(Γ) = card(N ∪ T ) + 2. Доказательство. Для грамматики G = (N, T, S, P ) типа 0 рассмотрим новый символ B, и обозначим для удобства N ∪ T ∪ {B} = {D1 , D2 , . . . , Dn }. Поскольку N 6= ∅, T 6= ∅, имеем n > 3. Предположим, что правила из P пронумерованы r1 , . . . , rm , где m = card(P ). Мы построим взаимодействующую распределенную H-систему Γ с алфавитом V = N ∪ T ∪ {X, X 0 , X 00 , Y, Y 0 , Y 00 , Z, B, C, E}, терминальным алфавитом T , и с компонентами, описанными ниже. Мы пронумеруем эти компоненты элементами α из множества M = {1, 2, 3, 4, 5, 6, 7, 8, 9}
10.2. Взаимодействующие распределенные H-системы
435
∪ {Di , Di0 | 1 6 i 6 n} ∪ {ri | 1 6 i 6 m}, а именно α = ri :
Aα = {XBSY, Zvi Y }, Rα = {#ui Y $#vi Y }, для ri : ui → vi ∈ P, Vα = N ∪ T ∪ {X, Y, B}, где i = 1, 2, . . . , m;
α = Di : Aα = {ZC i Y }, Rα = {#Di Y $Z#C i Y 0 }, Vα = N ∪ T ∪ {X, Y, B}, где i = 1, 2, . . . , n; α=1:
Aα = {ZY 00 }, Rα = {#CY 0 $Z#Y 00 }, Vα = N ∪ T ∪ {X, Y 0 , B, C};
α=2:
Aα = {X 0 CZ}, Rα = {X#$X 0 C#Z}, Vα = N ∪ T ∪ {X, Y 00 , B, C};
α=3:
Aα = {ZY 0 }, Rα = {#Y 00 $Z#Y 0 }, Vα = N ∪ T ∪ {X 0 , Y 00 , B, C};
α=4:
Aα = {XZ}, Rα = {X 0 #$X#Z}, Vα = N ∪ T ∪ {X 0 , Y 0 , B, C};
α = Di0 : Aα = {X 00 Di Z}, Rα = {XC i #$X 00 Di #Z}, Vα = N ∪ T ∪ {X, Y 0 , B, C}, где i = 1, 2, . . . , n; α=5:
Aα = {ZY }, Rα = {#Y 0 $Z#Y }, Vα = N ∪ T ∪ {X 00 , Y 0 , B};
α=6:
Aα = {XZ}, Rα = {X#Z$X 00 #}, Vα = N ∪ T ∪ {X 00 , Y, B};
436
10. Распределенные H-системы
α=7:
Aα = {ZE}, Rα = {#Y $Z#E}, Vα = T ∪ {X, Y, B};
α=8:
Aα = {ZZ}, Rα = {#ZZ$XB#}, Vα = T ∪ {X, E, B};
α=9:
Aα = {ZZ}, Rα = {#E$ZZ#}, Vα = T ∪ {E}.
Работа в Γ происходит следующим образом. Ни одна терминальная строка не может вступить в сплетение, так как правила из Rα , α ∈ M, содержат контрольные символы X, X 0 , X 00 , Y, Y 0 , Y 00 , Z. Компоненты, пронумерованные α = ri , 1 6 i 6 m, используются для имитации правил из P . Это делается на правом конце текущей строки вида XwY , при w ∈ (N ∪ T ∪ {B})∗ (только такие строки допускаются фильтрами этих компонент): (Xw1 |ui Y, Z|vi Y ) |= (Xw1 vi Y, Zui Y ). Строка Xw1 vi Y имеет тот же тип (содержит подобные символы), что и входная строка Xw1 ui Y . Побочный продукт, строка Zui Y , может войти в новое сплетение указанного типа, если только ui = vi (следовательно, ничего нового произведено не будет) или (с тем же эффектом) в сплетении типа (Z|ui Y, Z|vi Y ) |= (Zvi Y, Zui Y ). Строку вида XwY , с w, состоящим только из символов из N ∪ T ∪ {B}, можно передать в компоненту с номером α = Di , 1 6 i 6 n. В ней символ Di , стоящий на правом конце w, заменяется на C i : (Xw1 |Di Y, Z|C i Y 0 ) |= (Xw1 C i Y 0 , ZDi Y ). Строка ZDi Y может вступить только в сплетение вида (Z|Di Y, Z|C i Y 0 ) |= (ZC i Y 0 , ZDi Y ),
10.2. Взаимодействующие распределенные H-системы
437
не произведя ничего нового. Первую строку можно передать как компоненте с индексом α = 1, так и компоненте с α = Dj0 , 1 6 j 6 n. Во втором случае никакое сплетение невозможно. Компоненты, соответствующие α = 1, 2, 3, 4, перемещают символ C с правого конца строки на левый: (XC s wC t |CY 0 , Z|Y 00 ) |= (XC s wC t Y 00 , ZCY 0 ), (X|C s wC t Y 00 , X 0 C|Z) |= (XZ, X 0 CC s wC t Y 00 ), (X 0 C s+1 wC t |Y 00 , Z|Y 0 ) |= (X 0 C s+1 wC t Y 0 , ZY 00 ), (X 0 |C s+1 wC t Y 0 , X|Z) |= (X 0 Z, XC s+1 wC t Y 0 ). В результате один символ C переносится с правого конца строки XC s wC t+1 Y 0 , s, t > 0, на левый. Эту операцию можно повторять, поскольку возникающая строка снова содержит символы из N ∪T ∪{X, Y 0 , B, C}. «Основная строка», ограниченная X, Y или же их штрихованными версиями, должна циркулировать по пути 1, 2, 3, 4 и обратно в 1. Строки же, получаемые во время данных шагов и содержащие символ Z, могут участвовать лишь в сплетениях, не производящих ничего нового. В любой момент строка XC s wC t Y 0 , s, t > 0, произведенная компонентой с α = 4, может быть передана в любую компоненту с индексом α = Di0 , 1 6 i 6 n. Если i 6 s, мы получаем (XC i |C s−i wC t Y 0 , X 00 Di |Z) |= (XC i Z, X 00 Di C s−i wC t Y 0 ). Если s > i или t > 1, строку X 00 Di C s−i wC t Y 0 нельзя передать ни в одну компоненту, поскольку фильтры не пропускают строки, содержащие X 00 и C одновременно. Дальнейшее сплетение в компоненте с α = Di0 для строк, начинающихся с X 00 , невозможно. Поэтому мы должны иметь s = i и t = 0. Это означает, что, заменяя символ Di на C i , мы обязаны заново ввести его с левого конца строки. Таким образом, изменения строки сводятся к циклической перестановке, которая делает возможным применение правил из G в любом месте строки, порождаемой G (моделируемой в Γ). Теперь компоненты, пронумерованные α = 5, 6, заменяют 0 Y на Y и X 00 на X, чтобы и имитацию правил из G, и ротацию
438
10. Распределенные H-системы
строки можно было повторить. Детали мы оставляем читателю. В любой момент любая строка, содержащая только символы из T ∪ {B}, может быть передана в компоненту с индексом α = 7, которая введет символ E. Единственное продолжение теперь состоит в удалении вспомогательных символов. Важно отметить, что мы можем удалить B только вместе с X, а значит, лишь тогда, когда вводимая строка имеет ту же перестановку, что и в G. Операции, выполняемые последними тремя компонентами нашей системы, таковы: (XBx|Y, Z|E) |= (XBxE, ZY ), (|ZZ, XB|xE) |= (xE, XBZZ), (x|E, ZZ|) |= (x, ZZE). Заметим, что при всех этих операциях мы имеем x ∈ T ∗ . Маршрут следования строки вида XwY , возможно, с штрихованными версиями X или Y , приведен на рис. 10.1. Блок A содержит компоненты, выполняющие имитацию правил из P , блок B — компоненты, выполняющие циклическую перестановку строки, а блок C — компоненты, заканчивающие процесс. Благодаря предшествующему обсуждению, нетрудно заметить, что каждый вывод в G может быть имитирован в Γ, и наоборот, все терминальные строки, достигающие первой компоненты Γ, есть строки из L(G). Следовательно, L(G) = L(Γ). Легко видеть, что Γ содержит m+2n+9 компонент (напомним, что n = card(N ∪ T ∪ {B})), а rad(Γ) = n + 1 (эта величина достигается из-за Rα при α = Di ). Каждая компонента содержит только одно правило сплетения, т. е. deg(Γ) = 1. Замечание 10.2. Можно рассмотреть еще один параметр акс(Γ) — наибольшее число аксиом в компонентах Γ. Тогда для предыдущей конструкции акс(Γ) = 1. Ценой увеличения количества компонент, мы также можем ограничить и радиус получаемой системы.
10.2. Взаимодействующие распределенные H-системы
? r1 ?
439
-? ? ? ?
?A r2 . . . rm ?
? ?
? ? ? D2 . . . Dn
? D1 ?
? ? ? 1 - 2 - 3 - 4 ? D10
? ? ? D20 . . . Dn0
?
?
? ? 6 5
B 9
8
? 7
? C
Рис. 10.1. Движение строк в Γ.
Теорема 10.6. Для каждой грамматики G = (N, T, S, P ) типа 0 можно построить взаимодействующую распределенную H-систему Γ, такую, что: 1) 2) 3) 4)
L(G) = L(Γ), deg(Γ) 6 3(card(N ∪ T ) + 1) + 2 · card(P ) + 4, размер (Γ) = 1, rad(Γ) = 2.
Доказательство. Изменим конструкцию системы Γ в доказательстве теоремы 10.5 следующим образом. Во-первых, удалим те компоненты в блоке B на рис. 10.1, которые совершают в строке перестановку, и рассмотрим следующие компоненты для всех i = 1, 2, . . . , n:
440
10. Распределенные H-системы
α = Di :
Aα = {ZYi }, Rα = {#Di Y $Z#Yi }, Vα = N ∪ T ∪ {X, Y, B},
α=
Di0
:
Aα = {X 0 Di Z}, Rα = {X#$X 0 Di #Z}, Vα = N ∪ T ∪ {X, Yi , B};
α = Di00 : Aα = {ZY }, Rα = {#Yi $Z#Y }, Vα = N ∪ T ∪ {X 0 , Yi , B}; α=1:
Aα = {XZ}, Rα = {X 0 #$X#Z}, Vα = N ∪ T ∪ {X 0 , Y, B}.
Теперь переброска осуществляется следующим образом: (Xw|Di Y, Z|Yi ) |= (XwYi , ZDi Y ), (X|wYi , X 0 Di |Z) |= (XZ, X 0 Di wYi ), (X 0 Di w|Yi , Z|Y ) |= (X 0 Di wY, ZYi ), (X 0 |Di wY, X|Z) |= (X 0 Z, XDi wY ). Во-вторых, изменим имитирующие компоненты в блоке A из рис. 10.1. Более точно, мы начнем с грамматики G в нормальной форме Куроды (с правилами вида C → x, C ∈ N , x ∈ (N ∪ T )∗ , |x| 6 2, и CD → EF при C, D, E, F ∈ N ), предположив при этом, что правила G пронумерованы. Для каждого правила r : C → x мы введем в Γ компоненту α = r : Aα = {Zx}, Rα = {#CY $Z#x}, Vα = N ∪ T ∪ {X, Y, B}, а для каждого правила r : CD → EF — компоненты α=r:
Aα = {ZYr }, Rα = {C#DY $Z#Yr },
10.3. Двухуровневые распределенные H-системы
441
Vα = N ∪ T ∪ {X, Y, B}, α=
r0
: Aα = {ZEF Y }, Rα = {#CYr $Z#E}, Vα = N ∪ T ∪ {X, Yr , B}.
Использование символов Yr гарантирует правильную имитацию не контекстно-свободных правил из P . Завершающие компоненты (α = 7, 8, 9 в доказательстве теоремы 10.5) остаются неизмененными. Как и в доказательстве теоремы 10.5, можно увидеть, что полученная система эквивалентна G. Кроме того, ее радиус равен двум, размер — единице, а содержит она самое большее 3n + 2m + 4 компонент, где n = card(N ∪ T ∪ {B}) и m = card(P ). Доказательства теорем 10.4, 10.5 и 10.6 конструктивны и обеспечивают нас универсальными взаимодействующими распределенными H-системами. Для этого нужно начинать с универсальной грамматики типа 0 в обычном понимании универсальности. «Программа» конкретной распределенной H-системы вводится в универсальную в множество аксиом второй компоненты, вместо аксиомы XBSY . Как и в разделе 8.7, символ S заменяется кодом моделируемой системы.
10.3
Двухуровневые распределенные H-системы
Распределенные H-системы из предыдущего раздела существенно используют взаимодействие, делающее их неэффективными с биохимической точки зрения: из одной компоненты в другую требуется перебрасывать множество строк, осуществляя при этом проверку фильтрующих условий. Перемещение (длинных) последовательностей ДНК из одного места в другое требует времени и может разрушить молекулы, а проверка фильтрующих условий при современных лабораторных технологиях может быть выполнена только вручную, что плохо с точки зрения эффективности.
442
10. Распределенные H-системы
В модели, которую мы определяем ниже, такое взаимодействие не используется. Двухуровневая распределенная H-система (степени n, n > 1) — это структура Γ = (V, T, (w1 , A1 , I1 , E1 ), . . . , (wn , An , In , En )), где V — алфавит, T ⊆V, wi ∈ V ∗ , Ai ⊆ V ∗ , а Ii , Ei ⊆ V ∗ #V ∗ $V ∗ #V ∗ при #, $ ∈ / V. Все множества Ai , Ii , Ei , 1 6 i 6 n, конечны; T — терминальный алфавит, (wi , Ai , Ii , Ei ) — i-я компонента системы, wi — активная аксиома, Ai — множество не столь активных (мы говорим, пассивных) аксиом, 9) Ii — множество внутренних правил сплетения, а 10) Ei — множество внешних правил сплетения компоненты i, 1 6 i 6 n. 1) 2) 3) 4) 5) 6) 7) 8)
Можно представлять двухуровневую H-систему в виде комплекса, который содержит n (активных) ДНК-последовательностей z1 , . . . , zn (первоначально, это w1 , . . . , wn ), с жестко закрепленными на стенде левыми концами. Каждая из них окружена произвольным числом копий пассивных строк (первоначально из множеств A1 , . . . , An соответственно) и обладает как «сильными» рестрикционными ферментами, которые могут «видеть» только активные строки, так и «слабыми», действующими только локально на zi и на ассоциированную строку из пассивного множества. В результате локального сплетения возникает строка с префиксом, совпадающим с префиксом zi , и значит, снова закрепленная на стенде, и строка, которая добавляется к окружающему множеству пассивных строк. Внешнее сплетение имеет приоритет над внутренним. При его выполнении по правилу из множества Ei соответ-
10.3. Двухуровневые распределенные H-системы
443
ствующая строка zi становится первым термом сплетения, и значит, получается новая строка, фиксированная на стенде и имеющая общий префикс с zi ; второй терм сплетения, некоторая zj , j 6= i, остается после этой операции неизмененным (можно считать, что для участия в сплетении была произведена и послана к компоненте i копия zj ). Формально, эти операции определяются следующим образом. Содержимое компоненты i, 1 6 i 6 n, описывается парой (xi , Mi ), где xi ∈ V ∗ — активная строка, а Mi ⊆ V ∗ — множество пассивных строк. Кортеж из n элементов π = [(x1 , M1 ), . . . , (xn , Mn )] называется конфигурацией системы. Для данного 1 6 i 6 n и выписанной конфигурации π мы определяем µ(xi , π) = внешнее, если существуют r ∈ Ei и xj , j 6= i, такие, что (xi , xj ) |=r (u, v) для некоторых u, v ∈ V ∗ , µ(xi , π) = внутреннее в противном случае. Далее, для двух конфигураций π = [(x1 , M1 ), . . . , (xn , Mn )] и π 0 = [(x01 , M10 ), . . . , (x0n , Mn0 )] мы записываем π =⇒внеш π 0 , если выполняются следующие условия: 1) существует i, 1 6 i 6 n, такое, что µ(xi , π) = внешнее, 2) для каждого i, 1 6 i 6 n, с µ(xi , π) = внешнее имеем (xi , xj ) |=r (x0i , zi ) при некотором j, 1 6 j 6 n, j 6= i, r ∈ Ei , и zi ∈ V ∗ ; кроме того, Mi0 = Mi ∪ {zi }, 3) для каждого i, 1 6 i 6 n, с µ(xi , π) = внутреннее мы имеем (x0i , Mi0 ) = (xi , Mi ). Для двух конфигураций π и π 0 мы записываем π =⇒внут π 0 , если выполняются следующие условия: 1) для всех i, 1 6 i 6 n, мы имеем µ(xi , π) = внутреннее, 2) для каждого i, 1 6 i 6 n, либо (xi , z) |=r (x0i , z 0 ) при некоторых z ∈ Mi , z 0 ∈ V ∗ , r ∈ Ii , и Mi0 = Mi ∪ {z 0 }, либо 3) ни одно правило r ∈ Ii не может быть применено к (xi , z) при любом z ∈ Mi и тогда (x0i , Mi0 ) = (xi , Mi ). Отношение =⇒внеш определяет внешнее сплетение, а отношение =⇒внут — внутреннее. Заметим, что в обоих случаях
444
10. Распределенные H-системы
все операции сплетения выполняются параллельно, а компоненты, в которых нельзя использовать правило сплетения, не меняют своего содержимого. Еще раз подчеркнем, что внешнее сплетение имеет преимущество перед внутренним, а во всех операциях роли первых термов играют активные строки. Первая строка, получаемая в результате сплетения, становится новой активной строкой соответствующей компоненты, а вторая строка — элементом множества пассивных строк этой компоненты. Мы пишем =⇒ как для =⇒внеш , так и для =⇒внут . Язык, порожденный двухуровневой распределенной H-системой Γ, определяется равенством L(Γ) = {w ∈ T ∗ | [(w1 , A1 ), . . . , (wn , An )] =⇒∗ [(x1 , M1 ), . . . , (xn , Mn )] при w = x1 , xi ∈ V ∗ , 2 6 i 6 n, и Mi ⊆ V ∗ , 1 6 i 6 n}. Мы обозначаем через LDHn семейство языков, порожденных двухуровневыми распределенными H-системами с не более, чем n компонентами, n > 1. Если на число компонент не накладывается никаких ограничений, мы пишем LDH∗ . Пример. Рассмотрим систему Γ = {a, b, C, D}, {a, b}, (w1 , A1 , I1 , E1 ), (w2 , A2 , I2 , E2 ) , где w1 = aD, A1 = {aD, Da}, I1 = {b#C$#aD, b#C$D#a}, E1 = {a#D$D#b}, w2 = DbC, A2 = {bC}, I2 = {b#C$#bC}, E2 = ∅.
10.3. Двухуровневые распределенные H-системы
445
Вычисление в Γ осуществляется следующим образом: [(a|D, {aD, Da}), (D|bC, {bC})] =⇒внеш [(ab|C, {|aD, Da, DD}), (Db|C, {|bC})] =⇒внут [(aba|D, {aD, Da, DD, C}), (D|b2 C, {bC, C})] =⇒внеш [(abab2 |C, {|aD, Da, DD, C}), (Db2 |C, {|bC, C})] =⇒внут [(abab2 aD, {aD, Da, DD, C}), (Db3 C, {bC, C})] =⇒∗ . . . =⇒внеш [(abab2 . . . abk |C, {aD, D|a, DD, C}), (Dbk |C, {b|C, C})] =⇒внут [(abab2 . . . abk a, {aD, Da, DD, C, DC}), (Dbk+1 C, {bC, C})]
при некотором k > 1. В результате чередующейся последовательности внешних и внутренних сплетений активная строка компоненты 1 станет равной abab2 . . . abk C, после чего можно будет произвести терминальную строку, заменив C на a. Следовательно, L(Γ) = {abab2 . . . abk a | k > 1}. Этот язык не является полулинейным, а значит, и контекстно-свободным. В следующем варианте приведенной модели уровни имеют более существенные различия. Разделенная двухуровневая распределенная H-система — это структура Γ = (V, T, (w1 , A1 , I1 ), . . . , (wn , An , In ), E), где 1. 2. 3. 4. 5.
V — алфавит, T ⊆ V (терминальный алфавит), wi ∈ V ∗ (активная аксиома), Ai ⊆ V ∗ (пассивные аксиомы), Ii , 1 6 i 6 n, и E — множества правил сплетения над V .
Все множества Ai , Ii , E конечны. Элементы Ii называются внутренними правилами сплетения, 1 6 i 6 n, а элементы E — внешними; (wi , Ai , Ii ) — i-я компонента Γ, 1 6 i 6 n. Язык, порождаемый Γ и обозначаемый через L(Γ), — это в точности язык, порождаемый двухуровневой H-системой Γ0 =
446
10. Распределенные H-системы
(V, T, (w1 , A1 , I1 , E), . . . , (wn , An , In , E)). Мы обозначаем через SLDHn , n > 1, семейство языков, порожденных разделенными двухуровневыми H-системами степени, не больше n. Если n не определено, мы пишем SLDH∗ . Теорема 10.7. RE = SLDHn = LDHn = SLDH∗ = LDH∗ для всех n > 3. Доказательство. Включения SLDHn ⊆ LDHn , n > 1, SLDH∗ ⊆ LDH∗ , LDHn ⊆ LDHn+1 , SLDHn ⊆ SLDHn+1 , n > 1, следуют из определений, включение LDH∗ ⊆ RE очевидно. Следовательно, мы должны доказать только включение RE ⊆ SLDH3 . Рассмотрим грамматику G = (N, T, S, P ) типа 0. Мы построим разделенную двухуровневую распределенную H-систему Γ = (V, T, (w1 , A1 , I1 ), (w2 , A2 , I2 ), (w3 , A3 , I3 ), E) с V = N ∪ T ∪ {X, Z, Zs , Zl , Zr , Y, C1 , C2 , C3 }, w1 = SXXC1 , A1 = {ZvXZs | u → v ∈ P } ∪ {ZXXαZl , ZαXXZr | α ∈ N ∪ T }, I1 = {#uXZ$Z#vXZs | u → v ∈ P } ∪ {#αXZ$Z#XXαZl , #XZ$Z#αXXZr | α ∈ N ∪ T }, w2 = C2 Z, A2 = {C2 Y }, I2 = {C2 #Y $C2 #Z}, w3 = C3 Z, A3 = {C3 Y }, I3 = {C3 #Z$C3 #Y, C3 #Y $C3 #Z}, E = {C2 #Z$X#X, X#X$C3 #Z, X#Zs $C2 #X,
10.3. Двухуровневые распределенные H-системы
447
C2 #X$C3 #Y, #XXC1 $C2 Z#} ∪ {XXα#Zl $C2 X#, αXX#Zr $C2 Xα# | α ∈ N ∪ T }. Идея, скрывающаяся за этой конструкцией, состоит в следующем. Мы моделируем работу G на активных строках в первых двух компонентах. Более точно, подстрока XX активной строки первой компоненты указывает место, где происходит моделирование — непосредственно слева от XX. Для этой цели активная строка первой компоненты разрезается между двумя вхождениями X, префикс остается в первой компоненте, а суффикс сохраняется во второй. Делается это с помощью внешних сплетений, выполняемых одновременно в первой и во второй компонентах. Моделирование осуществляется путем внутреннего сплетения в первой компоненте. Затем, при наличии символа Zs (индекс s устанавливается для «имитации») две строки связываются снова посредством внешнего сплетения. Подстроку XX можно перемещать через один символ влево и аналогичным способом вправо. Контролируют эту операции символы Xl , Xr (l = лево, r = право). После удаления подстроки XX, а вместе с ней и символа C1 , никакие сплетения произведены быть не могут. Исследуем подробно работу Γ. Рассмотрим конфигурацию [(w1 XXw2 C1 , M1 ), (C2 Z, M2 ), (C3 Z, M3 )].
(∗)
Первоначально мы имеем w1 = S, w2 = λ, M1 = A1 , M2 = A2 , M3 = A3 . Мы должны сплести активные строки по правилам C2 #Z$X#X, X#X$C3 #Z из E. Получим конфигурацию: [(w1 XZ, M10 = M1 ∪ {C3 Xw2 C1 }), (C2 Xw2 C1 , M20 = M2 ∪ {w1 XZ}), (C3 Z, M3 )]. Никакое внешнее сплетение невозможно, и мы выполняем внутренние сплетения в первой и третьей компонентах. Существует три возможности: 1) Если w1 = w10 u для некоторого u → v ∈ P , мы можем применить правило #uXZ$Z#vXZs в компоненте 1 и
448
10. Распределенные H-системы
C3 #Z$C3 #Y — в компоненте 3. Тогда [(w10 vXZs , M100 = M10 ∪ {ZuXZ}), (C2 Xw2 C1 , M20 ), (C3 Y, M30 = M3 ∪ {C3 Z})]. Можно осуществить внешние сплетения, воспользовавшись правилами X#Zs $C2 #X, C2 #X$C3 #Y . Это приведет к конфигурации [(w10 vXXw2 C1 , M1000 = M100 ∪ {C2 Zs }), (C2 Y, M200 = M20 ∪ {C3 Xw2 C1 }), (C3 Y, M30 )]. Теперь внешнее сплетение невозможно, а в первой компоненте невозможно и внутреннее. Но мы можем выполнить внутренние сплетения в компонентах 2 и 3, придя к следующему: [(w10 vXXw2 C1 , M1000 ), (C2 Z, M2000 = M200 ∪ {C2 Y }), (C3 Z, M300 = M30 ∪ {C3 Y })]. Мы вернулись к конфигурации того же вида, что и первоначальная (∗). Новые пассивные строки, произведенные во время этих операций, не будут вступать в новые сплетения в компонентах 1 и 2, они всегда совпадают с C3 Y, C3 Z и находятся в третьей компоненте. 2) Если w1 = w10 α при некотором α ∈ N ∪ T , мы можем применить правило #αXZ$Z#XXαZl в компоненте 1 и правило C3 #Z$C3 #Y в компоненте 3. Получаем: [(w10 XXαZl , M100 = M10 ∪ {ZαXZ}), (C2 Xw2 C1 , M20 ), (C3 Y, M30 = M3 ∪ {C3 Z})]. Теперь нужно осуществить внешние сплетения, воспользовавшись правилами XXα#Zl $C2 X# и C2 #X$C3 #Y . Это приведет к следующему: [(w10 XXαw2 C1 , M1000 = M100 ∪ {C2 XZl }), (C2 Y, M200 = M20 ∪ {C3 Xw2 C1 }), (C3 Y, M30 )].
10.3. Двухуровневые распределенные H-системы
449
В первой компоненте ни внешнее, ни внутреннее сплетение невозможны, но мы можем выполнить внутренние сплетения в других компонентах. Получим такую конфигурацию [(w10 XXαw2 C1 , M1000 ), (C2 Z, M2000 = M20 ∪ {C2 Y }), (C3 Z, M300 = M30 ∪ {C3 Y })]. Мы вернулись к конфигурации типа (∗). 3) Если в конфигурации (∗) w2 = αw20 для некоторого α ∈ N ∪ T , можно поступить следующим образом: применив правило #XZ$Z#αXXZr в первой компоненте и C3 #Z$C3 #Y в третьей, произвести сначала [(w1 αXXZr , M100 = M10 ∪ {ZXZ}), (C2 Xw2 C1 , M20 ), (C3 Y, M30 = M3 ∪ {C3 Z})]. Далее нужно выполнить внешние сплетения по правилам αXX#Zr $C2 Xα#, C2 #X$C3 #Y , что приведет к [(w1 αXXw20 C1 , M1000 = M100 ∪ {C2 XαZr }), (C2 Y, M200 = M20 ∪ {C3 Xw2 C1 }), (C3 Y, M30 )]. В первой компоненте ни внешнее, ни внутреннее сплетение невозможно. С помощью внутренних сплетений в других компонентах мы получаем [(w1 αXXw20 C1 , M1000 ), (C2 Z, M2000 = M200 ∪ {C2 Y }), (C3 Z, M300 = M30 ∪ {C3 Y })]. И снова мы вернулись к конфигурации типа (∗). В случае 1 при наличии XX моделировалось правило u → v. В случае 2 XX переносится через символ влево, в случае 3 — через символ вправо. Приведенные выше операции могут быть повторены сколько угодно раз. Меняя таким способом расположение XX, мы можем моделировать правила G в любом месте слова. Если мы имеем конфигурацию вида [(wXXC1 , M1 ), (C2 Z, M2 ), (C3 Z, M3 )],
450
10. Распределенные H-системы
то внешнее сплетение можно осуществить, применив правила #XXC1 $C2 Z#, C2 #Z$X#X, и придя к следующему [(w, M10 = M1 ∪ {C2 ZXXC1 }), (C2 XC1 , M20 = M2 ∪ {wXZ}), (C3 Z, M3 )]. В первой компоненте невозможно ни внешнее, ни внутреннее сплетение. Если w — терминальная строка, то она допускается языком, порождаемым Γ, если нет — она никогда не приведет к терминальной строке. Следовательно, имеем L(G) = L(Γ). Неизвестно, является ли оптимальным порог 3 в предыдущей теореме. Начав в доказательстве теоремы 10.7 построение с универсальной грамматики типа 0, мы получим универсальную разделенную двухуровневую распределенную H-систему. «Программа» для выполнения на таком «компьютере» вводится как активная аксиома w1 вместо SXXC1 .
10.4
Распределенные H-системы, изменяющиеся во времени
Распределенная архитектура, которую мы рассмотрим в этом разделе, имеет отношение к программируемым и развертывающимся H-системам, исследовавшимся в разделе 8.4: в разные моменты времени будут использоваться различные множества правил сплетения. Переход от одного множества правил к другому теперь будет определяться в цикле. Таким образом, новая модель соответствует как периодически изменяющимся во времени грамматикам из области регулируемых переписывающих систем, так и контролируемым табличным системам Линденмайера. Мы также можем интерпретировать эти системы как аналоги кооперирующихся распределенных грамматических систем, порядок включения компонент в которых регулируется графом, имеющим форму кольца. Имеется и биохимическая подоплека введения такой модели: предполагается, что работа ферментов, соответствующих
10.4. Распределенные H-системы, изменяющиеся во времени
451
правилам сплетения, существенно зависит от внешних условий. Следовательно, в любой момент времени активно лишь некоторое подмножество множества доступных правил. Если окружающая среда периодически меняется, то меняются и активные ферменты. Изменяющаяся во времени распределенная H-система (степени n, n > 1) — это структура Γ = (V, T, A, R1 , R2 , . . . , Rn ), где 1) 2) 3) 4)
V — алфавит, T ⊆ V (терминальный алфавит), A — конечное подмножество V ∗ (аксиомы) и Ri — конечные множества правил сплетения над V , 1 6 i 6 n. Множества Ri , 1 6 i 6 n, называются компонентами системы.
В момент k = n · j + i при j > 0, 1 6 i 6 n, для сплетения доступных в этот момент строк используется компонента Ri . Более точно, мы определяем L1 = A, (i)
Lk+1 = σ2 (Lk ) для i ≡ k(mod n), k > 1, где σ (i) = (V, Ri ), 1 6 i 6 n. Таким образом, с шага k на следующий шаг k + 1 передается только результат сплетений строк из Lk , выполненных по правилам из Ri , где i ≡ k(mod n). Строки из Lk , которые не могут вступить в сплетение, уничтожаются. Язык, порождаемый Γ, определяется равенством [ L(Γ) = ( Lk ) ∩ T ∗ . k>1
Мы обозначаем через V DHn , n > 1, семейство языков, порожденных изменяющимися во времени распределенными Hсистемами степени не больше n, а через V DH∗ — семейство всех языков этого типа.
452
10. Распределенные H-системы
Мощность таких порождающих механизмов чрезвычайно высока. Это объясняется тем, что с одного шага на другой передается только результат операций сплетения, выполненных на предыдущем шаге, а строки разных «поколений» сплетены быть не могут. Для примера рассмотрим следующую систему степени 1 Γ = ({a, b, c}, {a, b, c}, {cab}, {a#b$c#a}). Имеем L1 = {cab}, L2 = {caab, cb} из (ca|b, c|ab) |= (caab, cb), L3 = {ca4 b, cb} из (caa|b, c|aab) |= (ca4 b, cb), ............... Lk = {ca2
k−1
b, cb}, k > 1.
Следовательно, n
L(Γ) = {ca2 b | n > 0} ∪ {cb}. Этот язык не является контекстно-свободным, и даже не лежит в семействе M AT λ . Каждый регулярный язык может быть порожден изменяющейся во времени H-системой степени 1. Это нетрудно установить, воспользовавшись конструкцией из доказательства леммы 7.18 и добавив к ней правила сплетения, передающие аксиомы с шага на шаг. Простой вид аксиом делает эту задачу легко осуществимой. Таким образом, верна Лемма 10.1. REG = EH2 (F IN, F IN ) ⊂ V DH1 ⊆ V DH2 ⊆ · · · ⊆ V DH∗ ⊆ RE. Иерархия из леммы 10.1 «схлопывается» самое большее на седьмом уровне. Теорема 10.8. RE = V DHn = V DH∗ , n > 7. Доказательство. Рассмотрим грамматику G = (N, T, S, P ) типа 0 с N ∪ T = {α1 , . . . , αn−1 }, n > 3, и P = {ui → vi | 1 6 i 6 m}. Пусть αn = B — новый символ. Мы построим изменяющу-
10.4. Распределенные H-системы, изменяющиеся во времени
453
юся во времени распределенную H-систему Γ = (V, T, A, R1 , . . . , R7 ) с V = N ∪ T ∪ {X, Y, Y 0 , Z, B} ∪ {Yi , Yi0 , Xi | 0 6 i 6 n}, A = {XBSY, ZY, ZY 0 , ZZ, XZ} ∪ {Zvi Y | 1 6 i 6 m} ∪ {ZYj , ZYj0 , Xj Z | 0 6 j 6 n} ∪ {Xj αj Z | 1 6 j 6 n} и следующими множествами правил сплетения: R1 = {#ui Y $Z#vi Y | 1 6 i 6 m} ∪ {#Y $Z#Y, Z#$Z#} ∪ {#Yj $Z#Yj | 1 6 j 6 n}, R2 = {#αj Y $Z#Yj | 1 6 j 6 n} ∪ {#Y $Z#Y 0 , Z#$Z#} ∪ {#Yj $Z#Yj0 | 1 6 j 6 n}, R3 = {X#$Xj αj #Z | 1 6 j 6 n} ∪ {#Y 0 $Z#Y, Z#$Z#} ∪ {#Yj0 $Z#Yj | 1 6 j 6 n}, R4 = {#Yj $Z#Yj−1 | 1 6 j 6 n} ∪ {#Y $Z#Y, Z#$Z#}, R5 = {Xj #$Xj−1 #Z | 1 6 j 6 n} ∪ {#Y $Z#Y, Z#$Z#}, R6 = {#Y0 $Z#Y, #Y0 $ZZ#, #Y $Z#Y 0 , Z#$Z#} ∪ {#Yj $Z#Yj0 | 1 6 j 6 n}, R7 = {X0 #$X#Z, X0 B#$#ZZ, #Y 0 $Z#Y, Z#$Z#} ∪ {#Yj0 $Z#Yj | 1 6 j 6 n}. Эта система работает следующим образом. Рассмотрим строку вида XwY , w ∈ (N ∪ T ∪ {B})∗ (в частности, для аксиомы XBSY w = BS). Если w = w0 ui , 1 6 i 6 m, то первая компонента может смоделировать правило ui → vi ∈ P в суффиксе w. Строку XwY можно передать в R2 и неизмененной благодаря правилу #Y $Z#Y . Аналогично, используя правило Z#$Z#, можно любую аксиому, и вообще, любую строку, содержащую Z, передать из R1 в R2 . То же самое верно для всех пар последовательных компонент. Строка XwY в R2 может вступить в два сплетения: (Xw0 |αj Y, Z|Yj ) |= (Xw0 Yj , Zαj Y ) для w = w0 αj , 1 6 j 6 n, (Xw|Y, Z|Y 0 ) |= (XwY 0 , ZY ).
454
10. Распределенные H-системы
Строка Xw0 Yj может вступить только в одно сплетение в R3 : (X|w0 Yj , Xi αi |Z) |= (XZ, Xi αi w0 Yj )
(∗)
при некотором i, 1 6 i 6 n. Строка вида Xi xYj , 1 6 i, j 6 n, войдет в R4 , R5 в сплетения, которые на единицу уменьшат как i, так и j, произведя таким образом Xi−1 xYj−1 . Строка Xi xYj , 1 6 i, j 6 n, преобразуется в R6 в Xi xYj0 , и далее в R7 — в Xi xYj . Компонента R1 , не изменив, передаст эту строку в R2 , где Yj снова будет заменен на Yj0 , а R3 вернет его обратно, произведя Xi xYj . Компоненты R4 , R5 снова на единицу уменьшат индексы X и Y . В конечном счете индекс одного из X, Y достигнет 0. Имеется три возможности. 1) R6 получает строку X0 xYj при j > 1. Единственное применимое правило — #Yj $Z#Yj0 . Строка X0 xYj0 передается в R7 , где принимает прежний вид X0 xYj . Снова Yj заменяется на Yj0 , затем R3 возвращается к строке X0 xYj , которая и попадает в R4 . Компонента R4 производит X0 xYj−1 . В R5 ни одно сплетение с этой строкой неосуществимо, следовательно, таким способом получить терминальную строку невозможно. 2) R6 получает строку Xi xY0 при i > 1. Если Y0 заменить на Y , то строка Xi xY не сможет вступить в сплетение в R7 . То же самое произойдет и при удалении Y0 . Таким способом ни одну терминальную строку произвести невозможно. 3) R6 получает строку X0 xY0 . (Это означает, что у строки Xi αi w0 Yj , возникающей после сплетения (∗), i = j, значит, символ αj , удаленный с правого конца строки, был затем введен с левого конца.) Если R6 заменит Y0 на Y , то единственное продолжение в R7 будет состоять в замене X0 на X, и следовательно, можно будет повторить весь процесс в целом. Если R6 удалит Y0 , а R7 заменит X0 на X, то полученная строка не сможет пройти через R1 , и значит, окажется потерянной. Если же R6 удалит Y0 , а R7 — X0 B, то возникшая строка без маркеров не сможет вступить в дальнейшие сплетения. Если она терминальная,
10.4. Распределенные H-системы, изменяющиеся во времени
455
то принадлежит L(Γ), в противном случае, оказывается потерянной. Таким образом, с помощью стандартной процедуры имитации и переброски можно смоделировать в Γ любой вывод из G. Следовательно, L(G) ⊆ L(Γ). Предположим теперь, что в R2 была создана строка XwY 0 . Если R3 заменит Y 0 на Y , то строка XwY неизмененной пройдет через R4 и R5 . Затем R6 произведет XwY 0 , а R7 вернется к XwY , и мы прибудем обратно в R1 с XwY . Если XwY 0 сплетется в R3 по правилу X#$Xj αj #Z, 1 6 j 6 n, возникнет строка Xj αj wY 0 . Она будет задержана в R4 , где никакое сплетение с ней неосуществимо. Строки, полученные при упоминавшихся выше сплетениях и содержащие Z, могут пройти от одной компоненты до другой благодаря правилам Z#$Z# (а также правилам, использующим символы Y, Y 0 и т. п.). Если строки этого вида и вступают в дальнейшие сплетения, то лишь с другими строками, содержащими Z: с аксиомами или со строками, являющимися побочным продуктом других сплетений. Таким образом, возникшие строки будут содержать Z, а значит, ни одну терминальную строку получить этим путем невозможно. Например, после сплетения в R2 согласно правилу #αj Y $Z#Yj , 1 6 j 6 n, мы получим строку Zαj Y . Через R3 − R7 она сможет пройти неизмененной. В R1 можно выполнить (Z|αj Y, Z|vi Y ) |= (Zvi Y, Zαj Y ), если αj → vi есть i-е правило P . Видно, что при этом воспроизводятся те же строки. Читатель может проследить за эволюцией других строк типа Zαj Y . Результат будет аналогичным: невозможно создать ни одной терминальной строки, не лежащей в L(G). Таким образом, L(G) = L(Γ). Константа 7 в равенстве RE = V DH7 вероятно может быть уменьшена. Мы не пытаемся продвигаться в этом направлении, помня о желании уменьшить размеры компонент. Как и в случае взаимодействующих распределенных H-систем, эта
456
10. Распределенные H-системы
цель может быть достигнута: в компонентах изменяющихся во времени распределенных H-систем достаточно иметь только по три правила сплетения. Теорема 10.9. Каждый рекурсивно перечислимый язык может быть порожден изменяющейся во времени распределенной H-системой, компоненты которой содержат не более трех правил сплетения. Доказательство. Рассмотрим грамматику G = (N, T, S, P ) типа 0 с N ∪ T = {α1 , . . . , αn−1 }, n > 3, и P = {ui → vi | 1 6 i 6 m}. Введем новый символ αn = B. Мы построим изменяющуюся во времени распределенную H-систему Γ = (V, T, A, R1 , . . . , R2n+m+2 ), в которой V = N ∪ T ∪ {X, Y, Y 0 , Z, B}, A = {XBSY, ZY, ZY 0 , ZZ} ∪ {ZvY | u → v ∈ P } ∪ {Xαi Z | 1 6 i 6 n}, а множества правил сплетения таковы: Ri = {#ui Y $Z#vi Y, #Y $Z#Y, Z#$Z#}, 1 6 i 6 m, Rm+2j−1 = {#αj Y $Z#Y, #Y $Z#Y 0 , Z#$Z#}, 1 6 j 6 n, Rm+2j = {Xαj #Z$X#, #Y 0 $Z#Y, Z#$Z#}, 1 6 j 6 n, Rm+2n+1 = {XB#$#ZZ, #Y $Z#Y 0 , Z#$Z#}, Rm+2n+2 = {#Y $ZZ#, #Y 0 $Z#Y, Z#$Z#}. За этой конструкцией вновь скрывается идея имитации и переброски. Компоненты Ri , 1 6 i 6 m, применяют на правом конце строк вида XwY , начиная с XBSY , правила из P . Компоненты Rm+2j−1 , 1 6 j 6 n, удаляют одно вхождение соответствующего символа αj с правого конца строк, в то время как парные им компоненты Rm+2j , 1 6 j 6 n, заново вводят его с левого конца. Таким образом, компоненты Ri , m + 1 6 i 6 m + 2n, циклически переставляют строки, делая возможным имитацию правил из P в любой желаемой позиции. Компоненты Rm+2n+1 , Rm+2n+2 удаляют концевые маркеры X (только при наличии B, а значит, в правильной перестановке) и Y . Во
10.4. Распределенные H-системы, изменяющиеся во времени
457
всех компонентах содержатся правила, используемые только для перехода неизмененных строк на следующий шаг. Это правила — #Y $Z#Y в Ri , 1 6 i 6 m, #Y $Z#Y 0 и #Y 0 $Z#Y , чередующиеся в Rm+2j−1 , Rm+2j , 1 6 j 6 n, и Rm+2n+1 , Rm+2n+2 , а также правила Z#$Z#, присутствующие во всех компонентах и применяемые для передачи с шага на шаг аксиом. Роль Y 0 состоит в том, чтобы предотвращать неправильные сплетения, вводящие символ αj в строку, из которой не был ранее удален символ αj . Мы перечислили идейные моменты данной конструкции, и теперь подробно проследим за их реализацией. Рассмотрим строку XwY и предположим, что с ней работает компонента R1 . Правило #Y $Z#Y не изменяет ничего, оно только передает строку следующей компоненте. К строке, попавшей в компоненту Ri , 1 6 i 6 n, можно применить правило #ui Y $Z#vi Y , при этом ограничивающие маркеры X, Y в строке сохранятся. Достигнув Rm+1 , строка вида XwY может вступить в сплетение (Xw|Y, Z|Y 0 ) |= (XwY 0 , ZY ) или, если w = w0 α1 , в сплетение (Xw0 |α1 Y, Z|Y ) |= (Xw0 Y, Zα1 Y ). В первом случае XwY 0 может войти в следующей компоненте Rm+2 в два разных сплетения : (Xw|Y 0 , Z|Y ) |= (XwY, ZY 0 ), (Xα1 |Z, X|wY 0 ) |= (Xα1 wY 0 , XZ). Благодаря первому мы возвращаемся к XwY , переходящей в следующую компоненту. Получаемая при втором сплетении строка Xα1 wY 0 тоже передается в следующую компоненту, но ни одного правила, применимого к ней, там нет. Таким образом, Xα1 wY 0 исключается из дальнейшего процесса, и это предотвращает производство «неправильных» строк: символ α1 был введен слева от w, а самый правый в w α1 до этого стерт не был.
458
10. Распределенные H-системы
Во втором случае, когда α1 был удален из w0 α1 , строка Xw0 Y достигает Rm+2 , где возможно единственное сплетение: (Xα1 |Z, X|w0 Y ) |= (Xα1 w0 Y, XZ). Строка Xα1 w0 Y — корректная циклическая перестановка Xw0 α1 Y , снова ограниченная X, Y . Следовательно, мы передаем в Rm+3 строку вида XzY . Случай j = 1 аналогичен случаю произвольного j, 1 6 j 6 n, значит, компоненты Rm+2j−1 , Rm+2j либо выполняют требуемую ротацию, либо, не изменяя, передают строки в Rm+2n+1 . Строка вида XwY может участвовать в Rm+2n+1 в двух сплетениях: (Xw|Y, Z|Y 0 ) |= (XwY 0 , ZY ), (XB|w0 Y, |ZZ) |= (XBZZ, w0 Y ), если w = Bw0 . В первом случае в Rm+2n+2 возможно только одно сплетение: (Xw|Y 0 , Z|Y ) |= (XwY, ZY 0 ). Следовательно, мы неизмененной передаем строку XwY в R1 , завершая цикл. Во втором случае тоже можно воспользоваться лишь одним правилом в Rm+2n+2 : (w0 |Y, ZZ|) |= (w0 , ZZY ). Строка w0 не помечена X, Y , и значит, не сможет вступить в новые сплетения при ее передаче в R1 . В случае нетерминальности она теряется. Следовательно, любой вывод из G можно воспроизвести в Γ, следуя обычной процедуре имитации и переброски. Как и в доказательствах предыдущих разделов, из «побочных продуктов» сплетений, не имеющих вида XwY, XwY 0 , терминальные строки, не лежащие в L(G), возникнуть не могут. Таким образом, L(G) = L(Γ). Для завершения доказательства остается заметить, что каждая компонента системы Γ содержит ровно три правила сплетения.
10.5. Вычислительно полные H-системы
10.5
459
Классы вычислительно полных H-систем
Здесь мы перечислим те классы H-систем, которые, как было доказано в главах 8, 9, 10, характеризуют рекурсивно перечислимые языки, используя только конечные множества аксиом и правил сплетения. Мы собрали их в четыре группы: A. Управление типа регулируемого переписывания: 1) 2) 3) 4) 5) 6) 7)
расширенные H-системы с разрешающими контекстами, расширенные H-системы с запрещающими контекстами, расширенные H-системы с локальными мишенями, расширенные H-системы с глобальными мишенями, программируемые расширенные H-системы, расширенные H-системы с двойным сплетением, упорядоченные H-системы.
B. Другие управляющие механизмы: 1) расширенные H-системы, использующие мультимножества, 2) развертывающиеся расширенные H-системы, 3) расширенные H-системы с отображением годности. C. Распределенные архитектуры: 1) 2) 3) 4)
сплетающие грамматические системы, взаимодействующие распределенные H-системы, двухуровневые распределенные H-системы, изменяющиеся во времени распределенные H-системы.
D. Использование циклических строк: 1) расширенные циклические H-системы.
10.6
Комментарии к библиографии
Сплетающие грамматические системы из раздела 10.1 были введены в [61], где характеризуется семейство RE. Для этого используются системы с тремя контекстно-свободными компонентами. Теоремы 10.1 и 10.2 взяты из [244]. Теорема 10.3 —
460
10. Распределенные H-системы
из [113], где к тому же можно найти родственные результаты (LIN ⊆ SGS2 (REG), CF ⊆ SGS3 (REG)). Распределенные H-системы из раздела 10.2 были в нерасширенном случае введены в [54]. Первые компоненты там использовались только для отбора терминальных строк, произведенных другими компонентами. (При таком подходе в теореме 10.4, к примеру, потребуется еще одна дополнительная компонента). В [54] доказано, что CDH∗ = RE. В [355] этот результат улучшается до CDH9 = RE, далее в [248] доказывается, что CDH6 = RE. Усиление до трех компонент (теорема 10.4) получено в [274]. Доказательство теоремы 10.4 взято из [252] (оно немного проще, чем доказательство в [274]). Теоремы 10.5 и 10.6 — из [253]. Двухуровневые распределенные H-системы неразделенного типа вводятся в [251], где для них доказывается результат, аналогичный теореме 10.7. Случай разделенных систем рассматривается в [248]. Там же доказана теорема 10.7. Изменяющиеся во времени распределенные H-системы также вводятся в [248], где можно найти доказательство теоремы 10.9. Теорема 10.8 взята из [252]. Недавно в [200] было сообщено, что семейство рекурсивно перечислимых языков характеризуются изменяющимися во времени H-системами степени 2. Это значительно улучшает результат теоремы 10.8. В [208] введена некая разновидность распределенных H-систем. Они соответствуют кооперирующимся распределенным грамматическим системам из [50, 51] и используют вместо |= отношение 1-сплетения `. На каждом этапе строка, полученная на предыдущем шаге, соединяется с аксиомой. Компоненты разблокируются до некоторой степени недетерминировано и работают в максимальном режиме: будучи активной, компонента работает столько, сколько сможет (это — t-режим вывода в грамматических системах, [50, 51]). Расширенные распределенные H-системы этого типа с тремя компонентами характеризуют рекурсивно перечислимые языки, но неизвестно, верен ли подобный результат для систем с двумя компонентами.
Глава 11 И вновь о сплетении Наряду с разновидностями операции сплетения, обсуждавшимися в предыдущих главах (в особенности в главе 8), и различными основанными на сплетении порождающими механизмами, в литературе исследовались и некоторые другие варианты таких операций и механизмов. Эти исследования касались главным образом математических аспектов, не затрагивая задачи построения (универсальных) вычислительных моделей. В настоящей главе мы представим некоторые из таких вариантов в надежде, что читателя может заинтересовать задачу построения соответствующих вычислительных моделей.
11.1
Ограниченное сплетение. Неитеративный случай
В главе 8 мы рассматривали регулируемые варианты операции сплетения, использующие разрешающие и запрещающие контексты, языки-мишени, отображения годности и порядки на множестве правил сплетения. Мы были вынуждены вводить ограничения, поскольку иначе с помощью сплетений, действующих в соответствии с конечным множеством правил, выйти за рамки регулярных языков невозможно. Здесь мы введем для операции сплетения, точнее для `, некие новые ограничения. Возврат к 1-сплетению вызван прежде всего тем, что некоторые из этих вариантов не подходят для 2-сплетения (|=). С другой стороны, здесь мы в большей степени интересуемся математическими свойствами объектов, поэтому предпочитаем находиться в наиболее общей математической ситуации, изучая, как и в разделе 7.2, только неитеративный случай. Вопрос, приводят ли данные ограничения
462
11. И вновь о сплетении
к регулируемым H-системам, характеризующим семейство рекурсивно перечислимых языков, ждет своего исследователя. Рассмотрим алфавит V и правило сплетения r = u1 #u2 $u3 #u4 над V . Для x, y ∈ V ∗ , мы определяем: (x, y) `pr r z ⇐⇒ (x, y) `r z и x ∈ P ref (z), x 6= z, (x, y) `in r z ⇐⇒ (x, y) `r z и |z| > max{|x|, |y|}, 0 0 ∗ (x, y) `mi r z ⇐⇒ (x, y) `r z и |z| > |z | для всех z ∈ V ,
таких, что (x, y) `r z 0 . В первом случае результат сплетения должен быть нетривиальным продолжением первого терма сплетения, во втором — строкой, строго более длинной, чем каждый из двух исходных термов, в третьем случае результат должен оказаться одним из самых длинных среди возможных. Обозначения pr, in, mi означают «префикс» («prefix»), «возрастание» («increasing»), «максимальное возрастание» («most increasing»). Эти ограничения введены на уровне самой операции сплетения. Кроме того, мы можем определить ограниченные схемы сплетения, где условия формулируются для целого множества правил или термов сплетения. К первому типу относится, например, ограничение упорядочения, обсуждавшееся в конце раздела 8.2. Мы введем здесь класс ограничений второго типа, разрешающих сплетение только среди сходных строк. Могут рассматриваться различные степени сходства. Во всех случаях ниже мы имеем дело с H-схемами с конечными множествами правил. H-схема с кластерами — это тройка σ = (V, R, C), где (V, R) — схема сплетения, а C — разбиение V ∗ . Для r ∈ R и x, y, z ∈ V ∗ , мы пишем (x, y) `cl r z тогда и только тогда, когда (x, y) `r z и x, y принадлежит одному и тому же классу разбиения C.
11.1. Ограниченное сплетение
463
Если C — конечное множество регулярных языков, мы пиcl шем `rc r вместо `r . Если C состоит из одноэлементных клас∗ сов, {x}, x ∈ V , мы пишем `sf r , а если C состоит из классов Ci = {x ∈ V ∗ | |x| = i}, i > 0, то мы пишем `sl r . Мы обозначаем через D множество указателей {pr, in, mi, rc, sf, sl}, для определенных выше вариантов операции сплетения. Для схемы сплетения σ с алфавитом V и множеством правил R, и для L ⊆ V ∗ , g ∈ D, мы определяем σg (L) = {z ∈ V ∗ | (x, y) `gr z для x, y ∈ L, r ∈ R}. Поскольку в разделе 7.2 мы уже занимались свободным сплетением `, мы будем исследовать теперь связи между операциями `g , g ∈ D, и обычными операциями с языками. Наша цель — установить свойства замкнутости относительно новых операций ограниченного сплетения для семейств из иерархии Хомского. Лемма 11.1. Если семейство языков FL замкнуто относительно объединения с одноэлементными языками, приписывания символов, взятия левой производной, перетасовки символов и какой-нибудь операции сплетения из D − {in}, то FL замкнуто относительно операции Suf взятия суффиксов. Доказательство. Возьмем L ∈ F L, L ⊆ V ∗ , и рассмотрим символы a, b, не лежащие в V . Для схемы сплетения σ = (V ∪ {a, b}, {a#$b#}), мы имеем Suf(L) = ∂al (σg (L0 )), где L0 = {a} ∪ (L ⊥ t {b}) для g ∈ {pr, mi}. Действительно, единственно возможное сплетение должно включать строку a и строку xby для xy ∈ L, x, y ∈ V ∗ . Существует лишь одно место, где можно применить правило из σ, а значит, и результат единственен, ay. Указатель g может равняться и rc, если считать, что разбиение из σ состоит из одного кластера (V ∪ {a, b})∗ .
464
11. И вновь о сплетении
Для случаев sf, sl мы заменяем L0 на L00 = {a}L ⊥ t {b}. Сплетая axby с ее же копией единственно возможным способом, мы получаем ay. В общем случае для axby и ax0 by 0 мы имеем лишь одну возможность сплетения, при которой получается ay 0 . Следовательно, мы можем получить все элементы Suf(L) и только их. Лемма 11.2. Если семейство языков FL замкнуто относительно объединения, приписывания символов, слабого кодирования и какой-нибудь операции сплетения `g , g ∈ D −{sf }, то FL замкнуто относительно произведения. Доказательство. Возьмем два языка L1 , L2 ∈ F L, L1 , L2 ⊆ V ∗ , рассмотрим два символа a, b, не лежащих в V , и схему сплетения σ = (V ∪ {a, b}, {a#$#b}). Имеем L1 L2 = h(σg (L0 )), где h — слабое кодирование, определяемое равенствами h(a) = h(b) = λ и h(c) = c для c ∈ V , L0 = L1 {a} ∪ {b}L2 , а g ∈ {pr, in, mi}. Также как и в доказательстве леммы 11.1, сюда легко включается и случай g = rc. Для g = sl мы заменяем L0 на L00 = L1 {a}+ ∪ {b}+ L2 . Начиная со строк xan , bm y с n = |y| и m = |x|, мы получаем |xan | = |bm y| и (xai |an−i , bm−j |bj y) `sl xai bj y для всех i, j > 1. Таким образом, L1 L2 = h(σsl (L00 )). Лемма 11.3. Если семейство языков FL замкнуто относительно приписывания символов, слабого кодирования и самосплетения, то FL замкнуто относительно дублирования (операции, приводящей от L к d(L) = {xx | x ∈ L}). Доказательство. Для L ∈ F L, L ⊆ V ∗ , и a, b ∈ / V , рассмотрим схему сплетения σ = (V ∪ {a}, {b#$#a}). Мы получим d(L) = h σsf ({a}L{b}) при h, задаваемом равенствами h(a) = h(b) = λ и h(c) = c для всех c ∈ V .
11.1. Ограниченное сплетение
465
Единственно возможное сплетение — (axb|, |axb) axbaxb, в силу чего и выполняется равенство.
`sf r
Лемма 11.4. Если семейство языков FL замкнуто относительно объединения, приписывания символов, взятия правой и левой производных и префиксного сплетения, то FL замкнуто относительно пересечения. Доказательство. Возьмем L1 , L2 ∈ F L, L1 , L2 ⊆ V ∗ , и рассмотрим не лежащие в V символы a, b, c. Для схемы сплетения σ = (V ∪ {a, b, c}, {a#$b#}) r σ (L ) , где L имеем L1 ∩ L2 = ∂al ∂cc pr 0 0 = {a}L1 {c} ∪ {b}L2 {cc}. Действительно, из-за вида правила из σ возможно только сплетение строки axc со строкой bycc при x ∈ L1 , y ∈ L2 . Поскольку результат обязан продолжать вправо axc, должно выполняться равенство x = y. Следовательно, σpr (L0 ) = {a}(L1 ∩ L2 ){cc}. Лемма 11.5. Если семейство языков FL замкнуто относительно перетасовки, приписывания регулярных языков, нестирающих ОПМ отображений и ограниченных морфизмов, то FL замкнуто относительно возрастающих сплетений. Доказательство. Возьмем язык L ∈ F L, L ⊆ V ∗ , и символ c∈ / V . Для каждого a ∈ V рассмотрим новые символы a0 , a00 , а также кодирование h1 , определенное равенствами h1 (a) = a0 , a ∈ V . Возьмем, кроме того, схему сплетения σ = (V, R). С каждым правилом r ∈ R свяжем два символа dr , d0r . Рассмотрим следующие регулярные языки: L1 = {xu1 dr u2 y | x, y ∈ V ∗ , r = u1 #u2 $u3 #u4 ∈ R}, L2 = {xu3 d0r u4 y | x, y ∈ V ∗ , r = u1 #u2 $u3 #u4 ∈ R}. Положим также L01 = L1 ∩ (
[
(L ⊥ t {dr })),
r∈R
L02 = h1 (L2 ∩ (
[
r∈R
(L ⊥ t {d0r }))),
466
11. И вновь о сплетении
где h1 продолжено согласно равенству h1 (d0r ) = d0r . Оба этих языка лежат в F L, поскольку кодирование h1 , так же как и пересечение с регулярными языками, может быть получено при помощи нестирающих ОПМ отображений. Рассмотрим теперь язык L3 = (L01 c∗ ⊥ t c∗ L02 ) ∩ L4 , где L4 = {ac | a ∈ V }+ {ab0 | a, b ∈ V }∗ {dr d0r | r ∈ R}{ab0 | a, b ∈ V }∗ {ca0 | a ∈ V }+ . Язык L3 также лежит в F L. Пересечение с L4 выберет из L01 c∗ ⊥ t c∗ L02 строки вида a1 c . . . ak cak+1 b01 . . . ak+j b0j dr d0r ak+j+1 b0j+1 . . . ak+j+i b0j+i cb0j+i+1 . . . cb0j+i+l , (∗) (k > 1, j > 0, i > 0, l > 1), соответствующие строкам x = a1 a2 . . . ak+j+i ∈ L, y = b1 b2 . . . bj+i+l ∈ L. Имеем (x, y) `in r a1 . . . ak+j bj+1 . . . bj+i+l = z. Длина полученных строк k + j + i + l, что строго больше, чем |x| и |y|. Мы можем легко построить ОПМ g, которая способно пройти строку w вида (∗) и выполнить следующие операции: 1) оставить неизмененным префикс a1 c . . . ak c, 2) от последнего вхождения символа c в префиксе до dr оставить неизмененными символы ak+1 , . . . , ak+j , а каждый символ b01 , . . . , b0j заменить символом c, 3) заменить dr d0r на cc, 4) от d0r до следующего вхождения c заменить каждый ak+j+1 , . . . , ak+j+i на c, а каждый b0j+1 , . . . , b0j+i на bj+1 , . . . , bj+i соответственно, 5) в суффиксе cb0j+i+1 . . . cb0j+i+l заменить штрихованные символы их нештрихованными вариантами.
11.1. Ограниченное сплетение
467
Таким образом, мы получим строку z, перетасованную с |z| + 2 вхождениями символа c. С помощью ограниченного морфизма h2 мы можем стереть c, оставив другие символы неизмененными. Поэтому σin (L) = h2 g(L3 ) , откуда σin (L) ∈ F L. Лемма 11.6. Если семейство языков FL замкнуто относительно произведения и произвольных ОПМ отображений, то FL замкнуто относительно максимально возрастающих сплетений. Доказательство. Имеем σmi (L) = g(L{c}L) для ОПМ g, которое проверяет наличие подстрок u1 u2 , u3 u4 из правил σ в строках из L{c}L, удаляет те части, которые должны быть удалены, и в то же время следит, чтобы u1 u2 было взято из самой правой возможной позиции перед c, а u3 u4 — из самой левой возможной позиции после c, обеспечивая тем самым производство наибольшей строки. Детальное построение такого ОПМ мы оставляем читателю. Лемма 11.7. Если семейство языков замкнуто относительно операции дублирования и произвольных ОПМ-отображений, то оно замкнуто относительно само-сплетения. Доказательство. Для L ⊆ V ∗ , c ∈ / V , и σ = (V, R) мы имеем σsf (L) = g d(L{c}) , где g — ОПМ, которое, как в предыдущем доказательстве, моделирует применение правил из R. Лемма 11.8. Если семейство языков FL замкнуто относительно перетасовки и произвольных ОПМ отображений, то FL замкнуто относительно префикс-сплетения. Доказательство. Возьмем σ = (V, R), L ⊆ V ∗ , L ∈ F L, и кодирование h : V −→ {a0 | a ∈ V }, определенное равенствами h(a) = a0 , a ∈ V. Возьмем язык L0 = L ⊥ t h(L) и построим ОПМ g, выполняющее следующие операции: 1) просмотреть префикс x1 ∈ V ∗ и оставить его неизмененным,
468
11. И вновь о сплетении
2) выбрать правило r = u1 #u2 $u3 #u4 из R, u1 , u2 , u3 , u4 ∈ V ∗ ; выделить строку u1 и оставить ее неизмененной, 3) выделить подстроку h(y1 u3 ) при y1 ∈ V ∗ и удалить ее, 4) проверить, что далее следует строка вида a1 a01 a2 a02 . . . ak a0k для ai ∈ V , 1 6 i 6 k, таких, что a1 a2 . . . ak = u2 x2 при некотором x2 ∈ V ∗ ; при этом проверить, стоит ли a1 a01 a2 a02 . . . ak a0k перед a0k+1 . . . a0k+s , s > 1, такими, что a01 a02 . . . a0k a0k+1 . . . a0k+s = h(u4 y2 ) для некоторого y2 ∈ V ∗ . Во время этой фазы стереть все символы ai , а все a0i заменить соответствующими ai . Конструкция g достаточно прозрачна. Равенство σpr (L) = g(L0 ) очевидно. Для завершения доказательства остается заметить, что кодирование h можно реализовать с помощью ОПМ. Лемма 11.9. Если семейство языков замкнуто относительно объединения, пересечения с регулярными множествами и свободного сплетения, то оно также замкнуто и относительно кластерного сплетения при разбиении на конечное число регулярных множеств. Доказательство. Рассмотрим схему сплетения σ = (V, R, C) с разбиением C = {C1 , . . . , Cn }, Ci ∈ REG, 1 6 i 6 n, заданным на множестве V ∗ . Тогда для каждого L ⊆ V ∗ , L ∈ F L, мы получаем n [ σrc (L) = σ1 (L ∩ Ci ). i=1
Поскольку L ∩ Ci ∈ F L, имеем σ1 (L ∩ Ci ) ∈ F L для всех i, и значит, σrc (L) ∈ F L. Теперь мы готовы установить свойства замыкания относительно `g , g ∈ D для семейств из иерархии Хомского. Теорема 11.1. Выполняются свойства замкнутости из таблицы 11.1, где для каждой пары (g, F L), g ∈ D, на пересечении строки g и столбца F L проставлено наименьшее семейство F L0 (среди рассматриваемых здесь пяти семейств), для которого σg (L) ∈ F L0 при всех L ∈ F L. (Если F L0 = F L, то
11.1. Ограниченное сплетение
469
семейство F L замкнуто относительно сплетения типа g, и наоборот, F L 6= F L0 указывает на незамкнутость.) Варианты сплетения pr in mi rc sf sl
REG REG REG REG REG CS LIN
LIN RE CS CF CF RE RE
CF RE CS CF CF RE RE
CS RE CS RE RE RE RE
RE RE RE RE RE RE RE
Таблица 11.1. Свойства замыкания для семейств иерархии Хомского. Доказательство. Положительные ответы на вопрос о замкнутости REG возникают: для pr из леммы 11.8, для in из леммы 11.5, для mi из леммы 11.6 и для rc из леммы 11.9. Для CF они следуют: для mi из леммы 11.6, а для rc — из леммы 11.9. Единственный положительный ответ в случае CS, а именно замкнутость относительно сплетения, увеличивающего длину, вытекает из леммы 11.5. Замкнутость RE относительно всех указанных операций следует либо из тезиса Черча–Тьюринга, либо из приведенных нами лемм. Существование языка L ∈ REG, для которого σsf (L) ∈ / CF , n m установлено в лемме 11.3 (к примеру, d({a b | n, m > 1}) = {an bm an bm | n, m > 1} ∈ / CF ). С другой стороны, если σ = (V, R) и L ∈ REG, то σsf (L) ∈ CS. Это можно заметить следующим образом. Если L ∈ REG, то d(L{c}) является праволинейным простым матричным языком (см. [66]). Это семейство замкнуто относительно произвольных ОПМ-отображений и строго включается в CS, следовательно, σsf (L) ∈ CS. Если язык L ⊆ V ∗ обладает при всех n > 0 свойством card(V n ∩ L) 6 1 (такой язык называется тонким, см. [260]), а σ — схема сплетения, то σsf (L) = σsl (L). Следовательно, благодаря лемме 11.3 мы приходим к заключению, что замкнутость
470
11. И вновь о сплетении
REG относительно sl-сплетения подразумевала бы выполнение d(L) ∈ REG для всех тонких регулярных языков L. Это, однако, не так: d({an b | n > 1}) = {an ban b | n > 1} ∈ / REG, в то время как язык {an b | n > 1} тонкий. Тем не менее, если L ∈ REG, L ⊆ V ∗ , а σ = (V, R) — схема сплетения, то σsl (L) ∈ LIN . Действительно, возьмем a, c ∈ / V и рассмотрим язык L1 = (L{c}L ⊥ t {an can | n > 1}) ∩ (V {a})+ {cc}(V {a})+ . Он лежит в LIN , поскольку {an can | n > 1} линеен, L{c}L регулярен, а LIN замкнуто и относительно перетасовки с регулярными множествами и относительно пересечения с регулярными множествами. Все строки L1 имеют вид b1 ab2 a . . . bn accd1 ad2 a . . . dn a при x = b1 b2 . . . bn ∈ L, y = d1 d2 . . . dn ∈ L. С помощью ОПМ g мы можем теперь имитировать сплетение строк x, y ∈ L, отобранных в L1 , т. е. g(L1 ) = σsl (L). Следовательно, σsl (L) ∈ LIN . Существование линейных языков L, для которых σg (L) ∈ / CF при g ∈ {pr, in, sf, sl}, доказывается следующим образом: для pr это следует из леммы 11.4 (есть языки L1 , L2 ∈ LIN , для которых L1 ∩ L2 ∈ / CF ), для sf — из леммы 11.3, для sl — из леммы 11.3, примененной к тонким линейным языкам аналогично случаю тонких регулярных языков (L = {an bn | n > 1} является тонким и линейным, но d(L) ∈ / CF ). В случае in мы рассмотрим новый пример. Для σ = ({a, b, c}, {b#c$a#c}) и L = {an bn c | n > 1} ∪ {an cn | n > 1} мы получаем σin (L) = {an bn cm | 2 6 m < 2n}. Действительно, возможно лишь сплетение типа (an bn |c, am |cm ) `r an bn cm .
11.1. Ограниченное сплетение
471
В случае увеличивающего длину режима мы должны иметь 2n + m > 2n + 1 (и значит, m > 2), а также 2n + m > 2m (и значит, m < 2n). Данный язык контекстно-свободным не является. Все свойства незамкнутости CS следуют из леммы 11.1. Таким образом, все утверждения, представленные в таблице 11.1, доказаны. Стоит особо отметить следующие факты из таблицы 11.1: 1) две разновидности сплетения «прорывают» барьер регулярности и пять из них — барьер контекстной свободы, 2) ни одна из рассмотренных выше операций не сохраняет линейные языки; это, главным образом, происходит потому, что с помощью сплетения (и полу-AFL операций, относительно которых LIN замкнуто) мы можем смоделировать операцию произведения, 3) ни одна из предыдущих операций, за исключением сплетения, увеличивающего длину, не сохраняет контекстность языков; это, в основном, обусловлено тем, что с помощью сплетения мы можем стирать префиксы и суффиксы произвольной длины. Остается открытым вопрос, могут ли быть усилены утверждения, касающиеся семейств LIN, CF в строках pr, sf и sl. Более точно, непонятно, справедливы ли для данной схемы сплетения σ и языка L ∈ LIN (или L ∈ CF ) отношения σg (L) ∈ CS, g ∈ {pr, sf, sl}, или же, как и в таблице 11.1, выполняется более слабое включение σg (L) ∈ RE. Во всяком случае представляется, что семейства Sg (LIN, F IN ) = {σg (L) | L ∈ LIN }, g ∈ {pr, sf, sl}, очень велики. Теорема 11.2. Каждый язык L ∈ RE может быть представлен как образ языка из Spr (LIN, F IN ) при некотором морфизме. Доказательство. Благодаря следствию 3.3 мы знаем, что каждый рекурсивно перечислимый язык L ⊆ V ∗ может быть представлен в виде L = h1 (L1 ∩ L2 ), где h1 — некоторый морфизм,
472
11. И вновь о сплетении
а L1 , L2 ∈ LIN . Рассмотрим символы a, b, c, не лежащие в V . Как и в доказательстве леммы 11.4, положим σ = (V ∪ {a, b, c}, {a#$b#}), L0 = {a}L1 {c} ∪ {b}L2 {cc}. Для L0 = σpr (L0 ) и h : (V ∪ {a, c})∗ −→ V ∗ , определяемом равенствами h(a) = h(c) = λ и h(d) = h1 (d) при d ∈ V , мы получаем L = h(L0 ). Следствие 11.1. Для каждого семейства языков FL, строго лежащего в RE и замкнутого относительно произвольных морфизмов, выполняется Spr (LIN, F IN ) − F L 6= ∅. Изучение расширенных H-систем, основанных на определенных выше операциях `g , g ∈ D, остается темой для исследования. В частности, интересен случай g = rc, который может иметь некие «реалистичные» интерпретации. К примеру, кластеры могут быть заданы в соответствии с определенным отношением сходства, помогающим некоторым ферментам работать со строками одного и того же класса.
11.2
Системы репликаций
В разделе 9.1 мы рассмотрели следующую операцию, производившую из циклической строки x ˆ и линейной строки v линейную строку w: (ˆ x, v) |=3r w тогда и только тогда, когда x = x1 u1 u2 , v = v1 u3 u4 v2 , w = v1 u3 u2 x1 u1 u4 v2 для некоторых x1 , v1 , v2 ∈ V ∗ , и правила сплетения r = u1 #u2 $u3 #u4 над V . Иначе говоря, между u3 , u4 в v вставлялась строка, получаемая при рассечении x ˆ между u1 и u2 . Это было возможно, так как мы знали, что u1 u2 , u3 u4 описывают парные липкие концы. Такую операцию можно рассмотреть и для двух линейных строк, считая что строка-вставка —
11.2. Системы репликаций
473
подстрока линейной строки. Для того чтобы получить ее, нам потребуется сделать разрез в двух местах. Таким образом, мы приходим к следующему общему определению. Система репликаций степени n, n > 1 — это структура γ = (V, A, C1 , C2 , . . . , Cn ), где 1. V — алфавит, 2. A — конечный язык над V , а 3. Ci , 1 6 i 6 n, — конечные подмножества V ∗ #V ∗ . Элементы языков A называются аксиомами, а элементы подмножеств Ci , 1 6 i 6 n, — разрезающими правилами. Для x, y, z ∈ V ∗ и 1 6 i 6 n мы пишем (x, y) Bi z тогда и только тогда, когда x = x1 u1 v1 x2 , y = y1 u2 v2 y2 u3 v3 y3 , z = x1 u1 v2 y2 u3 v1 x2 при u1 #v1 , u2 #v2 , u3 #v3 ∈ Ci и x1 , x2 , y1 , y2 , y3 ∈ V ∗ . Другими словами, мы вставляем подстроку v2 y2 u3 строки y между u1 , v1 в x, зная, что схемы u1 v1 , u2 v2 , u3 v3 соответствуют при работе рестрикционных ферментов парным липким концам. На это указывает то, что три разрезающих правила берутся из одного множества Ci . Теперь мы можем продолжить, как и в случае операции сплетения. Для системы репликаций γ = (V, A, C1 , C2 , . . . , Cn ) и языка L ⊆ V ∗ мы определяем σ(L) = {z ∈ V ∗ | (x, y) Bi z, для x, y ∈ L, 1 6 i 6 n}, σ 0 (L) = L, σ i+1 (L) = σ i (L) ∪ σ(σ i (L)), i > 0, [ σ ∗ (L) = σ i (L). i>0
474
11. И вновь о сплетении
Далее, язык, порожденный γ, определяется равенством L(γ) = σ ∗ (A) (мы начинаем с аксиом A и итеративно выращиваем строки с помощью репликаций, использующих разрезающие правила из C1 , . . . , Cn ). Скажем, что разрезающее правило u#v имеет радиус p, если p = max{|u|, |v|}. Систему репликаций будем называть системой радиуса p, если p — максимальный радиус его разрезающих правил. Мы обозначаем через REPn ([m]) семейство языков, порожденных системами репликаций с не больше чем n компонентами, n > 1, и радиуса не выше m, m > 1. Если число компонент не ограничено, индекс n заменяется на ∗, если же не ограничен радиус, мы заменяем [m] на F IN . Таким образом, [ [ REP∗ (F IN ) = REPn ([m]) n>1 m>1
=
[
REPn (F IN ).
n>1
Поскольку мы всегда увеличиваем длину строк, верен следующий результат. Лемма 11.10. REP∗ (F IN ) ⊆ CS. Системы репликаций γ = (V, A, C1 , . . . , Cn ), такие, что card(Ci ) = 1, 1 6 i 6 n, называются однородными. (Определяя (x, y) Bi z, мы используем одно и то же разрезающее правило и для x, и для y: x = x1 uvx2 , y = y1 uvy2 uvy3 и z = x1 uvy2 uvx2 .) В определении отношения B делается два важных выбора: (1) строки для вставки и (2) места, где эта вставка осуществляется. В каждом случае можно рассмотреть несколько вариантов. В качестве темы для исследования мы оставляем изучение этих вариантов для систем репликаций общего вида, определенного выше. Здесь же мы исследуем лишь некоторые возможности, появляющиеся при ответе на первый вопрос. А именно, мы рассмотрим простые системы репликаций,, т. е.
11.2. Системы репликаций
475
однородные системы радиуса 1, степени 1 и обладающие лишь одной аксиомой. Итак, простая система репликаций — это структура γ = (V, w, a#b), где V — алфавит, w ∈ V + (аксиома) и a, b ∈ V . Более того, мы разрешаем репликацию лишь для одинаковых строк, т.е. саморепликацию (в любом случае на первом шаге работы системы доступно только w, поэтому мы должны выполнить операцию типа (w, w) B z). Специально для простой системы репликаций γ = (V, w, a#b) и x, y ∈ V ∗ мы записываем x
y
тогда и только тогда, когда (1) x = x1 abx2 , x1 , x2 ∈ V ∗ , (2) y = x1 azbx2 при z = bz 0 = z 00 a, z 0 , z 00 ∈ V ∗ , (3) z ∈ Sub(x). Никаких ограничений не накладывается ни на положение подстроки ab в x (условие (1)), ни на способ выбора z из Sub(x) (условие (3)). Мы обсудим здесь десять возможностей, возникающих при попытке уточнить условие (3). Вместо (3) можно рассмотреть следующие более жесткие условия (во всех случаях z = bz 0 = z 00 a): 1. z = x (тотально ; t), 2. z ∈ Pref(x) (произвольный префикс; ap), 3. z ∈ Pref(x) и z максимальный (если x = z1 u1 , z1 = bz10 = z100 a, то |z| > |z1 |) (максимальный префикс; Mp), 4. z ∈ Pref(x) и z минимальный (если x = z1 u1 , z1 = bz10 = z100 a, то |z| 6 |z1 |) (минимальный префикс; mp), 5. z ∈ Sub(x) и z самая левая (если x = u1 zu2 , x = u01 z1 u02 , z1 = bz10 = z100 a, то |u1 | 6 |u01 |) (произвольная самая левая; al), 6. z ∈ Sub(x), z самая левая и максимальная (x = u1 zu2 и если x = u01 z1 u02 , z1 = bz10 = z100 a, то |u1 | 6 |u01 |; более того,
476
11. И вновь о сплетении
если x = u1 zu2 = u1 z1 u02 , z1 = bz10 = z100 a, то |z| > |z1 |) (максимальная самая левая; Ml), 7. z ∈ Sub(x), z самая левая и минимальная (x = u1 zu2 и если x = u01 z1 u02 , z1 = bz10 = z100 a, то |u1 | 6 |u01 |; более того, если x = u1 zu2 = u1 z1 u02 , z1 = bz10 = z100 a, то |z| 6 |z1 |) (минимальная самая левая; ml), 8. z ∈ Sub(x) и z максимальная (если x = u1 zu2 и x = u01 z1 u02 , z1 = bz10 = z100 a, |u01 | 6 |u1 |, |u02 | 6 |u2 |, то z = z1 ) (произвольная максимальная; aM), 9. z ∈ Sub(x) и z минимальная (если x = u1 zu2 и x = u01 z1 u02 , z1 = bz10 = z100 a, |u01 | > |u1 |, |u02 | > |u2 |, то z = z1 ) (произвольная минимальная; am). Отношение
соответствует случаю
10. z ∈ Sub(x) (любая подстрока, свободная; af). Мы обозначаем через D множество только что определенных режимов выбора вставляемой строки {t, ap, Mp, mp, al, Ml, ml, af, aM, am}. Еще раз подчеркнем, что во всех случаях 1 — 10, z — это строка вида z = bz 0 = z 00 a. (При a = b возможно равенство z = a, но при a 6= b, |z| > 2.) При репликации, выбирающей вставляемую строку в режиме g ∈ D, мы пишем x g y. Через ∗g мы обозначаем рефлексивное и транзитивное замыкание отношения g , g ∈ D. (Мы называем его репликационной цепочкой.) Далее, язык, порожденный системой репликаций γ = (V, w, a#b) в режиме g ∈ D, определяется равенством Lg (γ) = {z ∈ V ∗ | w ∗g z}. Через SREP (g) мы обозначаем семейство языков вида Lg (γ), где g ∈ D, а γ — простая система репликаций. Возникает десять семейств языков. Мы кратко исследуем соотношения между ними и связи с семействами Хомского. Начнем с рассмотрения двух примеров. Пример 11.1. Рассмотрим репликационную систему γ1 = ({a, b}, baba, a#b).
11.2. Системы репликаций
477
Во всех случаях получаемые строки содержатся в (ba)+ : мы i начинаем с (ba)2 при (ba)n g y, вставляем строку b(ab) a, i > 0, между двумя символами ab, и, следовательно, строка y принимает вид (ba)m , m > n. Имеем Lg (γ1 ) = (ba)+ ba при g ∈ {ap, mp, al , ml , af , am}. Действительно, при любом минимальном режиме (префикс, самый левый, произвольный) мы должны вставить строку ba. Во всех свободных режимах мы можем вставить ba. Следовательно, (ba)+ ba ⊆ Lg (γ1 ). Выше было отмечено обратное включение. Кроме того, n
Lg (γ1 ) = {(ba)2 | n > 1} для g ∈ {Mp, Ml , aM , t}. Максимальный префикс (максимальная самая левая подстрока, максимальная подстрока) вида z = bz 0 a в строке (ba)n совпадает с (ba)n , а значит, x g y для указанного g означает y = x2 . Это и доказывает равенство. Пример 11.2. Рассмотрим теперь систему γ2 = ({a, b}, abb, b#b). Получаем + при g ∈ {al, ml, af, am}, ab b abb при g ∈ {ap, mp, M p, t}, Lg (γ2 ) = n {ab2 | n > 1} при g ∈ {aM, M l}. Для того чтобы построить контрпримеры, мы рассмотрим серию необходимых условий. Лемма 11.11. (i) Любой репликационный язык либо одноэлементен, либо бесконечен. (ii) Для любого репликационного языка L ⊆ V ∗ имеем card(Pref(L) ∩ V ) = 1, card(Suf(L) ∩ V ) = 1. Доказательство. (i) Рассмотрим репликационную систему γ = (V, w, a#b). Если к w невозможно применить операцию репликации (либо в w нет подстроки ab, либо w не содержит подходящей подстроки z = bz 0 = z 00 a), тогда Lg (γ) = {w}.
478
11. И вновь о сплетении
Если w g w0 , то w = w1 abw2 , и в Sub(w) имеется z = bz 0 = z 00 a, удовлетворяющая соответствующему g условию, и w0 = w1 azbw2 . Ясно, что w0 снова содержит подстроку ab, так же как и подстроки, начинающиеся с b, а заканчивающиеся a (такова, например, z). Следовательно, мы снова можем провести репликацию. Это очевидно при всех режимах g ∈ {al, ml, M l, af, am, aM }. Если z ∈ Pref(w), и значит, w = zw3 , то w0 = w1 azbw2 , и найдется x ∈ Pref(w0 ), такой, что x = bx0 = x00 a. Действительно, так как z = bz 0 ∈ Pref(w) и w1 a ∈ Pref(w), мы имеем b ∈ Pref(w1 a) ⊆ Pref(w0 ). Поскольку z = z 00 a и w0 = w1 az 00 abw2 , префикс w1 az 00 a оканчивается на a. Следовательно, можно снова повторить репликацию в любом режиме g ∈ {ap, mp, M p}. В случае t мы имеем w = z и w0 = w1 awbw2 . Как и раньше, мы получаем w0 = bw00 a. Следовательно, повторная репликация возможна и в этом случае. Этот процесс может повторяться во всех режимах, следовательно, будет построен бесконечный язык. (ii) Непосредственно из определений операций репликации g мы замечаем, что первый и последний символы строки не изменяются, они остаются теми же, что и у аксиомы. Лемма 11.12. Если L ∈ SREP (g) для g ∈ {ap, mp, M p, t} — бесконечный язык с b = Pref(L) ∩ V , то для каждого n > 1 существует x ∈ L, такой, что |x|b > n. Доказательство. Возьмем γ = (V, w, a#b) с бесконечным Lg (γ) = L для g указанного типа. Поскольку L бесконечно, 0 существует такая строка w0 , что w g w . Отсюда следует, что w начинается с b, и значит, b = Pref(L) ∩ V . Более того, репликацию можно повторять сколько угодно раз, используя на каждом шаге префикс текущей строки (или строку целиком в случае g = t). При каждой репликации вводится дополнительный экземпляр символа b: если x g y, x = x1 abx2 , то y = x1 azbx2 при z ∈ Pref(x), z = bz 0 . Следовательно, число вхождений символа b неограниченно.
11.2. Системы репликаций
479
Лемма 11.13. Если L ∈ SREP (t) — бесконечный язык, то для a = Suf(L) ∩ V , b = Pref(L) ∩ V и каждого n > 1, найдется x ∈ L, такой, что |x|a > n, |x|b > n. Доказательство. Мы поступаем в точности так, как и в предыдущем доказательстве, учитывая первый и последний символы w (репликация оставляет их на своих местах, а количество их вхождений в текущей строке неограниченно возрастает). Лемма 11.14. Для любого бесконечного языка L ∈ SREP (t) с V = alph(L) имеем ΨV (L) = {π · 2n | n > 0} при некотором π ∈ Nk , k = card(V ). Доказательство. Если L = Lt (γ) для некоторой γ = (V, w, a#b), и L бесконечный, то существуют сколь угодно длинные репликационные цепочки ρ : w = w1
t
w2
t
w3
t
...
Ясно, ΨV (wi+1 ) = 2 · ΨV (wi ), i > 1. Значит, ΨV (wi ) = 2i−1 · ΨV (w1 ), i > 1, и это верно для всех цепочек ρ. Следовательно, ΨV (L) = {ΨV (w) · 2n | n > 0}, т. е. π в лемме суть ΨV (w). Лемма 11.13 является очевидным следствием леммы 11.14. Лемма 11.15. Для любого бесконечного языка L ∈ SREP (g), g ∈ {M p, M l, aM }, с V = alph(L), существуют π1 , π2 ∈ Nk , k = card(V ), такие, что ΨV (L) = {π1 + π2 · 2n | n > 0}. Доказательство. Возьмем γ = (V, w, a#b), такую, что L = Lg (γ), и исследуем репликационную цепочку произвольной длины ρ : w = w1
g
w2
g
w3
g
...
Предположим, что w1 = x1 abx2 , w2 = x1 az1 bx2 для z1 максимальной в w1 вида z1 = bz10 = z100 a. Это означает, что в w1 = y1 z1 y2 подстрока z1 начинается с самого левого в w1 символа b, а заканчивается самым правым в w1 символом a. Если w1 = y1 by10 и это — самое левое в w1 вхождение b, то снова w2 = y1 by100 . Действительно, если место вставки расположено справа от этого символа b, то префикс y1 b строки w1
480
11. И вновь о сплетении
появляется в w2 неизмененным. Если же оно находится слева от b, то, поскольку этот символ b самый левый, вставка осуществляется сразу перед ним. Следовательно, y1 оканчивается на a, и мы получаем w2 = y1 z1 bx2 = y1 bz10 bx2 , т. е. префикс y1 b опять же сохраняется. Аналогично, если символ a из w1 = y20 ay2 — самый правый в w1 , то суффикс ay2 появляется и в w2 . Следовательно, w1 = y1 z1 y2 , w2 = y1 z2 y2 , где строка z2 начинается с b, заканчивается a, и является максимальной с этими свойствами в w2 . Кроме того, |z2 | = |w2 | − |y1 y2 | = |w1 z1 | − |y1 y2 | = |y1 z1 y2 | + |z1 | − |y1 y2 | = 2|z1 |. Таким образом, на каждом шаге ρ мы получаем строку вида y1 zi y2 с ΨV (zi+1 ) = 2 · ΨV (zi ), i > 1. При π1 = ΨV (y1 y2 ) и π2 = ΨV (z1 ), выполняется утверждение леммы (ясно, что если zi ∈ Pref(wi ), то zi+1 ∈ Pref(wi+1 )). Контраст с двумя предыдущими леммами составляет Лемма 11.16. Для любого g ∈ {af, am, ap, mp, al, ml} и бесконечного языка L ∈ SREP (g) существует такая константа k, что для любого x ∈ L можно подобрать y ∈ L, при котором x g y и |x| < |y| 6 |x| + k. Доказательство. Возьмем γ = (V, w, a#b) и z ∈ Sub(w), такое что w g w0 , w = w1 abw2 , w0 = w1 azbw2 . При g =af мы можем снова вставить z. При g = am мы можем вставить z, если z — минимум, или более короткую строку в противном случае. Если z ∈ Pref(w), то z ∈ Pref(w1 az) ⊆ Pref(w0 ), и значит, при g = ap мы снова можем использовать z, а для g = mp можем использовать z или более короткий префикс. Такие же утверждения будут верны и при самых левых вариантах выбора строки для вставки. Этот аргумент можно повторять, и следовательно, на каждом шаге x g y при w ∗g x мы имеем |x| < |y| 6 |x| + |w|. Полагая k = |w|, приходим к требуемому утверждению.
11.2. Системы репликаций
481
Читатель сможет легко найти языки, не удовлетворяющие этим необходимым условиям. Из примера 11.1 (каждое семейство SREP (g) содержит бесконечные языки) и леммы 11.11 (существуют конечные языки, не лежащие в SREP (g) при любом g ∈ D) мы получаем следующий результат. Теорема 11.3. Семейство FIN несравнимо с любым из семейств SREP (g), g ∈ D. Благодаря примеру 11.1 мы, кроме того, знаем, что все семейства SREP (g), g ∈ {M p, M l, aM, t}, содержат не контекстно-свободные языки. На самом деле верен более сильный результат. Теорема 11.4. Любое из семейств SREP (g), g ∈ {M p, M l, aM, t}, несравнимо с каждым подсемейством M AT λ , содержащим по крайнем мере один неодноэлементный конечный язык. Доказательство. Для системы γ = ({a}, aa, a#a) получаем n
Lg (γ) = {a2 | n > 1} при каждом g ∈ {M p, M l, aM, t}. Согласно [129], этот язык не лежит в семействе M AT λ . С другой стороны, в SREP (g) нет неодноэлементных конечных языков при любом g ∈ D. Некоторые другие репликационные семейства содержат только регулярные языки. Теорема 11.5. SREP (g) ⊆ REG, g ∈ {am, mp}. Доказательство. Возьмем репликационную систему γ = (V, w, a#b). Предположим, что w = a1 a2 . . . an при ai ∈ V , 1 6 i 6 n, n > 1. Рассмотрим строку w0 = s0 a1 s1 a2 . . . sn−1 an sn , где s0 , s1 , . . . , sn — новые символы. Выделим в w все позиции подстроки ab. Пусть 1 6 i1 < i2 < · · · < ir < n — номера этих позиций:
482
11. И вновь о сплетении
aiq = a, aiq +1 = b, 1 6 q 6 r. Выписанные номера указывают все места вставок. Теперь парами (j1 , k1 ), . . . , (jt , kt ) обозначим все минимальные подстроки w вида zl = bzl0 = zl00 a. Другими словами, zl = ajl ajl +1 . . . akl , 1 6 l 6 t. Для каждой такой строки zl и каждой определенной выше позиции для вставки iq рассмотрим строку (l,q)
(l,q)
(l,q)
(l,q)
zl,q = sjl −1 ajl sjl ajl +1 . . . skl −1 akl skl , (l,q)
где sh — новые символы, ассоциированные с h, zl и iq . Обозначим через K множество всех символов si , 0 6 i 6 n, (l,q) и sh , 1 6 l 6 t, jl − 1 6 h 6 kl , 1 6 q 6 r. Построим конечный недетерминированный автомат (c λ-переходами) M = (K, V, s0 , {sn }, δ), где δ определено, как предложено на рис. 11.1. Таким образом, оно учитывает все связи в w0 , в строках zl , а также связи, возникающие в результате вставок строк zl в w0 в соответствующие позиции: si = δ(si−1 , ai ) при 1 6 i 6 n, (l,q)
sh
(l,q)
(l,q)
∈ δ(sh−1 , ah ) при jl 6 h 6 kl , 1 6 l 6 t, 1 6 q 6 r, (l,q)
sjl −1 ∈ δ(siq , λ), siq ∈ δ(skl , λ) при 1 6 l 6 t, 1 6 q 6 r. Докажем, что Lam (γ) = L(M ). Включение L(M ) ⊆ Lam (γ) очевидно: мы начинаем с w ∈ Lam (γ) и вставляем в правильные позиции правильные подстроки. Обратно, рассмотрим строку x ∈ Lam (γ). Если x = w, то x ∈ L(M ). Если w x, то w = w1 abw2 , x = w1 aybw2 am при некоторой минимальной y ∈ Sub(w), y = by 0 = y 00 a. Из определения δ имеем x ∈ L(M ). Будучи минимальной, y не содержит подстроку ab, и значит, места вставок в x — это либо места вставок из w1 , w2 , либо два новых, полученных благодаря внедрению y, поскольку ayb = aby 0 b = ay 00 ab. Каждое из
11.2. Системы репликаций
483
a iq b
w
Y H MBB@HH
B @ HHH
B @ HH @
B H HH R @ - -B . . .@ -
z1,q
z2,q
zt,q
Рис. 11.1. Действие конечного автомата M из доказательства теоремы 11.5. этих двух подслов ab из ayb включает один символ, уже существующий в w. Если строка z = bz 0 = z 00 a подходит для вставки в x в одном из этих мест, то это возможно также и в автомате A (см. рис. 11.1). Индукцией по длине репликационной цепочки мы устанавливаем, что в каждой строке x, такой, что w ∗am x, места вставки соответствуют местам вставки из w. Следовательно, если x ∈ L(M ) и x am x0 , то x0 ∈ L(M ). Таким образом, Lam (γ) ⊆ L(M ). Эти рассуждения проходят также и при g = mp: в этом случае мы имеем t = 1 (для вставки подходит только одна строка), в остальном же аргументация остается прежней. Заметим, что в конструкции автомата M можно использовать «минимальные циклы» из-за минимальности вставок. Однако, как мы увидим в следующей теореме, некая модификация этой конструкции сможет функционировать и при свободном режиме. Теорема 11.6. SREP (g) ⊆ REG, g ∈ {ml, af}. Доказательство. Мы воспользуемся той же конструкцией, что и в доказательстве предыдущей теоремы, внеся следующие изменения. В случае g = ml мы должны рассмотреть в w (единственную) минимальную самую левую подстроку z вида z = bz 0 = z 00 a вместо строк z1 , . . . , zt , рассматривавшихся ранее. Так как репликационный режим — минимальный самый левый, только эта строка может вставляться в произвольное слово из Llm (γ).
484
11. И вновь о сплетении
(Заметим, что z может не быть минимальной в am смысле. Рассмотрим, например, w = cbcbab при контексте вставки (a, b). В режиме выбора самой левой минимальной строки мы должны взять z = bcba, в то время как для am режима, эта строка не будет минимальной, поскольку содержит подстроку ba. Именно по этой причине предложенное ранее доказательство не распространяется автоматически на случай g =ml.) При g = af считаем, что z1 , z2 , . . . , zt из доказательства предыдущей теоремы суть все подстроки w вида zl = bzl0 = zl00 a, не содержащие подстроку ab. В то же время zl0 может содержать b, а zl00 — a. (И строки zl0 , zl00 , и t могут быть другими, чем в предыдущей теореме.) Пусть y — подстрока w, которая может быть вставлена на некотором этапе вывода. Тогда мы можем записать y = zi1 zi2 . . . zim , где zij — вышеуказанные строки. Допустим, мы хотим вставить строку y в позицию iq . Из определения δ видно, что из siq можно дойти до состояния перед каждым zij , 1 6 j 6 m, и вернуться к siq . Значит, существует путь через состояния M , охватывающие строку zi1 zi2 . . . zim = y. Включение Laf (γ) ⊆ L(M ) верно и в этом случае. Контраст с предыдущими теоремами составляет Теорема 11.7. Семейства SREP (ap) и SREP (al) содержат не контекстно-свободные языки. Доказательство. Рассмотрим репликационную систему γ = ({a, b, c, d}, bcabda, a#b). В обоих режимах ap и al все порождаемые строки начинаются с символа b, следовательно, два этих режима совпадают, Lap (γ) = Lal (γ). Рассмотрим регулярный язык R = (bca)+ (bda)+ . Обозначим V = {a, b, c, d} (с данным упорядочением символов). Если Lap (γ) — контекстно-свободный язык, то язык L = Lap (γ) ∩ R
11.2. Системы репликаций
485
— тоже контекстно-свободный, следовательно, ΨV (L) — полулинейное множество. Возьмем полулинейное множество T = {(n, m, p, p) | n, m, p > 1}. Семейство полулинейных множеств векторов замкнуто относительно пересечения. Поэтому, из Lap (γ) ∈ CF следует, что ΨV (L) ∩ T — полулинейное множество. Мы, однако, утверждаем, что ΨV (L) ∩ T = {(2n+1 , 2n+1 , 2n , 2n ) | n > 1}.
(∗)
Последнее же множество, безусловно, полулинейным не является. Докажем равенство (∗). Пусть мы породили строку x = (bca)i (bda)i (первоначально i = 1), и теперь x используем в качестве строки-вставки между a и b в середине x. Тогда y = (bca)2i (bda)2i . Можно повторять этот процесс, и значит, каждая j j строка вида z = (bca)2 (bda)2 , j > 0, лежит в Lap (γ). Такие строки лежат в R, и, следовательно, в L. Поскольку ΨV (z) = (2j+1 , 2j+1 , 2j , 2j ), мы имеем включение ⊇. Обратно, исследуем строки y ∈ L при каждом ΨV (y) ∈ T . Будучи элементом L, y имеет вид y = (bca)i (bda)j , i, j > 1. Должно выполняться равенство i = j, так как ΨV (y) ∈ T . Поэтому мы должны рассматривать строки из Lap (γ) вида y = (bca)i (bda)i , i > 1. Поскольку мы работаем в ap режиме, мы обязаны при репликации строки (bca)k (bda)k , k > 1, выбрать строку вида z1 = (bca)r , r 6 k, или вида z2 = (bca)k (bda)s , s 6 k. Поэтому в каждый момент мы получаем строку y 0 с |y 0 |c > |y 0 |d . Если |y 0 |c > |y 0 |d , то ни для одной строки y 00 с условием y 0 ∗ap y 00 равенство |y 00 |c = |y 00 |d выполняться не будет. Из строки y 0 , не лежащей в (bca)+ (bda)+ , и значит, имеющей вид u1 du2 cu3 , вывести строку y 00 (y 0 ∗ap y 00 ), принадлежащую (bca)+ (bda)+ , невозможно. Итак, для производства строк вида y = (bca)i (bda)i , мы должны использовать только строки этого же вида и на каждом репликационном шаге в качестве вставки брать текущую
486
11. И вновь о сплетении
строку целиком. Отсюда следует, что каждая репликация дублирует целую строку, а значит, для степени i выполняется равенство i = 2n , n > 0. Это доказывает включение ⊆ в отношении (∗). Следствие 11.2. Семейства SREP (ap) и SREP (al) не сравнимы с любым из подсемейств CF, содержащим по крайней мере один неодноэлементный конечный язык. Поскольку MAT содержит не полулинейные языки, предыдущая теорема, в противоположность теореме 11.4, не дает оснований утверждать, что в SREP (ap) и SREP (al) есть языки, не лежащие в семействе MAT или M AT λ . Различие между режимами ap, al и af, am, ml, mp оказывается достаточно неожиданным (af и am ведут себя одинаково, а ap и mp, или al и ml — не похоже). Из лемм 11.14 и 11.15 мы находим, что для системы γ1 в примере 11.1 языки Lg (γ1 ) при g ∈ {ap, mp, al, ml, af, am} не лежат в SREP (g 0 ) при g 0 ∈ {M p, M l, aM, t}, следовательно, верна Лемма 11.17. SREP (g) − SREP (g 0 ) 6= ∅ при всех g ∈ {ap, mp, al, ml, af, am}, g 0 ∈ {M p, M l, aM, t}. Из леммы 11.16 мы находим, что Lg (γ1 ) ∈ / SREP (g 0 ) при 0 g ∈ {M p, M l, aM, t}, g ∈ {af, am, al, ml, ap, mp}, следовательно, верна Лемма 11.18. SREP (g) − SREP (g 0 ) 6= ∅ при всех g ∈ {M p, M l, aM, t}, g 0 ∈ {af, am, al, ml, ap, mp}. Из примера 11.2 и леммы 11.12 мы получаем следующий результат. Лемма 11.19. SREP (g) − SREP (g 0 ) 6= ∅ при всех g ∈ {al, ml, af, am, aM, M l}, g 0 ∈ {ap, mp, M p, t}. Лемма 11.20. SREP (M l) = SREP (aM ). Доказательство. Возьмем γ = (V, w, a#b) и рассмотрим репликационный шаг z aM z 0 . Имеем z = z1 abz2 и z 0 = z1 axbz2 при x ∈ Sub(z), z = x1 xx2 , x = bx0 = x00 a, и x — максимальная
11.2. Системы репликаций
487
подстрока в z, т. е. никакая надстрока y строки x не может быть представлена в виде y = by 0 = y 00 a. Если x не является самой левой в z, то z = x01 bx02 и |x01 | < |x1 |. Тогда x не максимальна: z = x01 yx2 для y = by 0 = y 00 a, |y| > |x|, и значит, x ∈ Sub(y), противоречие. Поэтому и z M l z 0 , т. е. LaM (γ) ⊆ LM l (γ). 0 0 Обратно, легко видеть, что z aM z , M l z влечет z и, следовательно, LM l (γ) ⊆ LaM (γ). Таким образом, LM l (γ) = LaM (γ), и значит, SREP (aM ) ⊆ SREP (M l). Обратное включение может быть получено тем же путем. Лемма 11.21. SREP (t) ⊂ SREP (g), g ∈ {M l, M p, aM }. Доказательство. Возьмем репликационную систему γ = (V, w, a#b). Если Lt (γ) = {w}, то Lt (γ) = Lg (γ 0 ) для γ 0 = (V ∪ {c}, w, c#c), и c ∈ / V , при всех g из условия. Если Lt (γ) 6= {w}, то w = bw0 a, и все z, такие, что w ∗g z, имеют вид z = bz 0 a при всех g. Следовательно, в каждый момент репликационной цепочки получаемая строка является одновременно максимальным префиксом, максимальной самой левой, и произвольной максимальной вида bya. Поэтому Lt (γ) = Lg (γ) для всех g ∈ {M l, M p, aM }. Мы получаем SREP (t) ⊆ SREP (g) для g из условия леммы. Из леммы 11.17 мы знаем, что для g ∈ {aM, M l} эти включения собственные. Для g = Mp рассмотрим систему γ = ({a, b}, aab, a#a). Получаем
n
LM p (γ) = {a2 b | n > 1}. Согласно леммам 11.13 и 11.14, этот язык не принадлежит семейству SREP (t). Лемма 11.22. SREP (g) − SREP (g 0 ) 6= ∅, g ∈ {am, ml, mp}, g 0 ∈ {aM, t, M p, ap, al, M l, af }. Доказательство. Рассмотрим репликационную систему γ = ({a, b}, aabaa, a#a).
488
11. И вновь о сплетении
Для g из условия строка-вставка всегда совпадает с a, следовательно, Lg (γ) = a+ aba+ a. Предположим, для системы γ 0 = (V, aabaa, c#d) выполняется Lg (γ) = Lg0 (γ 0 ) при каком-нибудь из указанных g 0 . (Самая короткая строка в языке — это всегда порождающая его аксиома репликационной системы.) Ясно, что c, d ∈ {a, b}. Если один из c, d равен b, то при каждом z g0 z 0 вводится один новый символ b, что приводит к появлению «паразитических» строк. Поэтому (c, d) = (a, a). При всех режимах g 0 мы можем взять для вставки текущую строку целиком (а при g 0 ∈ {aM, t, Mp, Ml} это обязательно). В результате снова удваивается число вхождений символа b. Равенство Lg (γ) = Lg0 (γ 0 ) невозможно. Лемма 11.23. SREP (g) − SREP (g 0 ) 6= ∅ для всех g ∈ {af, ap, al}, g 0 ∈ {am, mp, ml}. Доказательство. Рассмотрим снова систему γ = ({a, b}, aabaa, a#a). При всех указанных режимах g мы можем провести репликацию aabaa g a(aabaa)abaa = z (мы вставляем целую строку между первыми двумя вхождениями a). Предположим, что Lg (γ) = Lg0 (γ 0 ) при некотором γ 0 = (V, aabaa, c#d). Если (c, d) = (a, a), то мы должны вставлять a (это минимальная подстрока вида x = ax0 = x00 a), следовательно, число вхождений b не увеличивается, и указанную строку z получить невозможно. Если (c, d) = (a, b), то строка для вставки — ba, и значит, мы получаем Lg0 (γ 0 ) = a(ab)+ aa. Если (c, d) = (b, a), то вставляемая строка равна ab, и мы получаем Lg0 (γ 0 ) = aa(ba)+ a.
11.2. Системы репликаций
489
Ни в одном из возникающих случаев указанную строку z мы не получим, а значит, равенство Lg (γ) = Lg0 (γ 0 ) невозможно. Лемма 11.24. SREP (M p) ⊂ SREP (M l). Доказательство. Если γ = (V, w, a#b) — репликационная система и LM p (γ) = {w}, то, очевидно, LM p (γ) ∈ SREP (M l). Если LM p (γ) бесконечен, то w имеет вид w = zw1 , z = bz 0 = 00 z a, и все строки в LM p (γ) начинаются с символа b. Следовательно, самая левая подстрока, выбираемая для вставки, есть всегда префикс текущей строки, и значит, LM p (γ) = LM l (γ), т. е. SREP (M p) ⊆ SREP (M l). n Это включение собственное, так как язык L = {ba2 | n > 1} не лежит в семействе SREP (M p) (лемма 11.12), но L = LM l (γ) при γ = ({a, b}, baa, a#a). Лемма 11.25. SREP (mp) ⊂ SREP (ml), SREP (ap) ⊂ SREP (al). Доказательство. Включения получаются так же, как и в предыдущем доказательстве: если γ = (V, w, a#b), то Lmp (γ) = Lml (γ) и Lap (γ) = Lal (γ). Строгость следует из леммы 11.19. Лемма 11.26. SREP (g) − SREP (am) 6= ∅, g ∈ {mp, ml}. Доказательство. Рассмотрим систему γ = ({a, b, c}, bcabacbca, a#b). И при g = mp, и при g = ml строка-вставка всегда должна равняться bca. Вид аксиомы γ, bcabacbca, не оставляет выбора: bcabacbca
g
(bca)2 bacbca.
Следовательно, в результате n вставок мы порождаем строку (bca)n bacbca. Поэтому для каждой строки x из Lg (γ) выполняется |x|a = |x|b = |x|c . Предположим теперь, что Lg (γ) = Lam (γ 0 ) при некоторой 0 γ = (V, w, d#e). Тогда bcabacbca, будучи самой короткой строкой Lg (γ), является аксиомой и для γ 0 , т. е. w = bcabacbca. Предположим, что d 6= e. Очевидно, они лежат в {a, b, c}. Для любой такой пары d, e в w есть подстрока ed, которую в
490
11. И вновь о сплетении
силу ее минимальности можно взять в качестве вставки. Для получаемой в результате такой репликации строки w0 выполняется |w0 |d = |w0 |e = |w0 |f + 1 при {a, b, c} = {d, e, f }. Следовательно, w0 не лежит в Lg (γ), противоречие. Если d = e, то строка для вставки есть d = e. Она только увеличивает число вхождений d = e, снова приводя к паразитическим строкам. Лемма 11.27. SREP (g) − SREP (af ) 6= ∅, g ∈ {ap, al}. Доказательство. Возьмем снова систему γ = ({a, b, c}, bcabacbca, a#b) из предыдущего доказательства. И при g =ap, и при g =al строка-вставка начинается с bca, префикса аксиомы. Более того, префикс bca сохраняется при любой репликации, поэтому он обязан входить в любую строку-вставку. Следовательно, ни при каких d, e ∈ {a, b, c} и константе k нельзя указать последовательность строк из Lg (γ) w1 , w2 , . . . , для которой |wi |d строго возрастает с ростом i, в то время как |wi |e 6 k. Предположим теперь, что Lg (γ) = Laf (γ 0 ) для некоторого γ 0 = (V, w, d#e). Ясно, что w = bcabacbca. Независимо от того, чему равны символы d, e, подстрока ed появляется в w (а также во всех строках, получаемых при помощи репликации). Поэтому Laf (γ 0 ) содержит строки со сколь угодно большим числом вхождений d, e и ограниченным числом вхождений f = {a, b, c} − {d, e}. Такие строки не лежат в Lg (γ), противоречие. Лемма 11.28. SREP (af ) − SREP (al) 6= ∅, SREP (am) − SREP (ml) 6= ∅. Доказательство. Рассмотрим систему γ = ({a, b, c}, w, a#b) с w = bcacbab. В обоих режимах выбора строки-вставки af и am мы можем выбрать в w подстроку ba, следовательно, мы можем получить строки, содержащие сколь угодно много a и b, но ограниченное число символов c. Для того чтобы порождать такие строки при помощи системы γ 0 = (V, w, d#e) в одном из режимов al, ml, мы должны иметь {d, e} = {a, b}. Если
11.2. Системы репликаций
491
(d, e) = (a, b), то строка-вставка будет начинаться с префикса bca. Если (d, e) = (b, a), то она будет начинаться с самого левого вхождения a (на третьей позиции каждой порождаемой строки) и содержать соседнее вхождение c. В обоих случаях число вхождений a, b, c увеличивается одновременно, и значит, мы не можем породить ранее упоминавшиеся строки из Laf (γ), Lam (γ). Суммируя эти леммы, мы получаем следующий результат. Теорема 11.8. Все семейства SREP (g), g ∈ D, попарно несравнимы, исключения составляют следующие строгие включения и равенство: SREP (mp) ⊂ SREP (ml), SREP (ap) ⊂ SREP (al), SREP (t) ⊂ SREP (M p) ⊂ SREP (M l) = SREP (aM ). Следствие 11.3. SREP (g), g ∈ D, строго содержатся в CS. Леммы 11.14 – 11.16 обеспечивают для языка L ⊆ V ∗ необходимые условия принадлежности семейству SREP (g) в терминах свойств множества Париха ΨV (L), ассоциированного с L. Это подталкивает к более систематическому изучению для репликационных языков как данного множества, так и множества длин length(L) = {|x| | x ∈ L}. Кроме того, в случае, когда L порождается детерминированным способом, вдоль последовательности w0 w1 w2 ... при некотором γ = (V, w0 , a#b) (и значит, L = L(γ) = {w0 , w1 , w2 , . . . }), можно рассмотреть функцию роста L, growthL (n) = |wn |, n > 0. В случае детерминированных репликационных систем изучение функции роста интересно и не только с математической точки зрения, поскольку это характеризует возможности системы. Мы приведем здесь без доказательств некоторые результаты о функциях роста и множествах длин репликационных языков различных типов. Доказательства и дополнительные детали можно найти в [220].
492
11. И вновь о сплетении
1. Последовательность u(n) неотрицательных целых чисел является функцией роста для репликационной системы γ с режимом репликации t тогда и только тогда, когда u(n) — геометрическая прогрессия со знаменателем 2 и первым элементом, не равным 1. 2. Последовательность u(n) неотрицательных целых чисел является функцией роста для репликационной системы γ с режимом репликации g, где g ∈ {M p, M l, aM }, тогда и только тогда, когда u(n) имеет вид u(n) = l + 2n k, где k > 2, l > 0. 3. Последовательность u(n) неотрицательных целых чисел является функцией роста для репликационной системы γ с режимом репликации g, где g ∈ {mp, ml}, тогда и только тогда, когда u(n) — арифметическая прогрессия u(n) = l + nk с 1 6 k < l. 4. Множество неотрицательных целых чисел N ⊆ N является множеством длин для репликационной системы γ с режимом репликации am тогда и только тогда, когда либо (1) существуют неотрицательные целые числа l, r и k1 , k2 , Pr . . . kr > 2, l > i=1 ki , такие, что N = {l + c1 k1 + c2 k2 + · · · + cr kr | c1 , . . . , cr ∈ N}, либо (2) существует l ∈ N, l > 2, такое, что N = {n | n > l}. 5. Линейное множество H = {v0 + c1 v1 + · · · + cr vr | ci ∈ N}, где vi ∈ Np , при любом i, 0 6 i 6 r, а p > 1, является множеством Париха репликационной системы с режимом P репликации am, тогда и только тогда, когда v0 > ri=1 vi , и существуют s ∈ {1, 2} и j1 , . . . , js , 1 6 j1 < · · · < js 6 p, такие что для любого i, 1 6 i 6 r, vi (j1 ) = · · · = vi (js ) = 1 и, кроме того, если s = 1, то v0 (j1 ) > 2. 6. Пусть γ = (V, w, a#b) — репликационная система. Тогда множество Париха языка L, порожденного γ с режимом репликации af , линейно, т. е. ΨV (L) = {v0 +c1 v1 +· · ·+cr vr | ci ∈ N, 1 6 i 6 r} для некоторых r > 1 и v0 , . . . , vr ∈ Np , где p = card(V ).
11.2. Системы репликаций
493
Таким образом, функции роста (соответственно множества длин, множества Париха) простых репликационных систем, изучавшихся выше, являются либо экспоненциальными, либо линейными. Было бы интересно указать модели с полиномиальным нелинейным ростом.
11.3
Комментарии к библиографии
Ограниченные варианты операции сплетения, включая разрешающие и запрещающие контексты, языки-мишени, приоритетные условия, рассматриваются в [257] (для конечных множеств правил сплетения, как и в разделе 11.1) и далее — в [160], где, кроме того, исследуются и регулярные множества правил. В обеих этих работах изучается лишь неитеративное сплетение. H-системы с самосплетением вида γ = (V, {w}, R) с одной аксиомой и конечным множеством правил сплетения рассматриваются в [63], где, к примеру, доказано, что такие системы порождают семейство языков, являющееся анти-AFL, несравнимое с REG, CF , и несколькими семействами L языков. Там же установлена неразрешимость проблемы порождаемости контекстно-свободных языков H-системами с самосплетением. Простые репликационные системы вводятся и исследуются в работе [219], легшей в основу раздела 11.2. Дополнительные результаты можно найти в [222], где рассматриваются однородные репликационные системы с конечным числом аксиом степени один, радиуса один, а также репликация как операция с формальными языками, и в [220], посвященной порождающим возможностям и функциям роста. Среди других работ, касающихся операции сплетения, Hсистем и смежных понятий, отметим, например, [86], где даются характеризации REG, CF, RE с помощью систем Поста и неких родственных классов расширенных H-систем. Сплетение на графах изучается в [90]. Вариант H-систем, близкий к исходному виду операции сплетения, введенной Хэдом, и использующий, как и в репликационных системах, разрезающие правила, рассматривается в
494
11. И вновь о сплетении
[91, 100]. Здесь разрезающие правила связывают с маркерами, которые определяют пары разрезающих схем, производящие подходящие друг другу концы. Две строки сначала разрезаются, затем фрагменты рекомбинируются, если это разрешено соответствующими маркерами. Проблема изучения H-систем исследуется в [167, 318]. В [168] дается доказательство леммы о сохранении регулярности, содержащее очень подробное построение на языке конечных автоматов. Существует родственная сплетению операция над цепочками ДНК — кроссинговер: даются две строки x, y, мы переходим от x к y, обратно к x, и так далее, некоторое количество раз (заданное или нет). При этом объединяются подслова строк x и y, определяемые позициями прыжков из одной строки в другую. 1-сплетение — это частный случай такой операции, когда происходит лишь один прыжок от x к y. Когда количество прыжков заранее не задано, операцию кроссинговера можно смоделировать с помощью итерируемого сплетения. Интересный случай возникает, когда число прыжков фиксировано заранее (и места, где эти прыжки происходят, упорядочены, так что мы объединяем подстроки, возникающие одна за другой слева направо в x и y). Результаты, касающиеся такой операции, содержатся в [18, 152, 224]. Рекомбинация строк в качестве основной операции возникает также в «развивающихся грамматиках» из [62]. Обзоры результатов и библиографическую информацию, касающуюся операции сплетения, H-систем и вычисления с помощью сплетения, можно найти в [139, 242, 245, 261, 262].
Список литературы Сборники статей [AMC] N. Jonoska, Gh. P˘aun, G. Rozenberg, eds. Aspects of Molecular Computing, Lect. Notes Computer Sci., 2950, Berlin: Springer 2004. [CBTE] Gh. P˘ aun, ed. Computing with Bio-Molecules. Theory and Experiments, Berlin: Springer, 1998. [CTCS] Gh. P˘ aun, G. Rozenberg, A. Salomaa, eds. Current Trends in Theoretical Computer Science. Entering the 21st Century, Singapore: World Scientific, 2001. [DNA1] R. J. Lipton, E. B. Baum, eds. DNA Based Computers. Proc. DIMACS Workshop held at Princeton Univ., Princeton, NJ, 1995, DIMACS: Series in Discrete Math. and Theoretical Computer Sci., 27, Providence, RI: Amer. Math. Soc., 1996. [DNA2] E. B. Baum, L. F. Landweber, eds. DNA Based Computers. Proc. 2nd Annual Meeting held at Princeton Univ., Princeton, NJ, 1996, DIMACS: Series in Discrete Math. and Theoretical Computer Sci., 44, Providence, RI: Amer. Math. Soc., 1998. [DNA3] H. Rubin, D. H. Wood, eds. Proc. 3rd DIMACS Workshop on DNA Based Computers held at the Univ. of Pennsylvania, Philadelphia, 1997, DIMACS: Series in Discrete Math. and Theoretical Computer Sci., 48, Providence, RI: Amer. Math. Soc., 1999. [DNA4] L. Kari, H. Rubin, D. H. Wood, eds. Proc. 4th DIMACS Workshop on DNA Based Computers held at the Univ. of Pennsylvania, Philadelphia, 1998, том 52 журнала BioSystems, 1999. [DNA5] E. Winfree, D. K. Gifford, eds. Proc. 5th DIMACS Workshop on DNA Based Computers held at the Massachusetts Institute of Technology, Cambridge, MA, 1999, DIMACS: Series in Discrete Math. and Theoretical Computer Sci., 54, Providence, RI: Amer. Math. Soc., 2000.
496
Список литературы
[DNA6] A. Condon, G. Rozenberg, eds. DNA Computing, 6th Intern. Workshop on DNA Based Computers, Leiden, 2000, Lect. Notes Computer Sci., 2054, Berlin: Springer, 2001. [DNA7] N. Jonoska, N.C. Seeman, eds. DNA Computing, 7th Intern. Workshop on DNA Based Computers, Tampa, FL, 2001, Lect. Notes Computer Sci., 2340, Berlin: Springer, 2002. [DNA8] M. Hagiya, A. Obuchi, eds. DNA Computing, 8th Intern. Workshop on DNA Based Computers, Sapporo, 2002, Lect. Notes Computer Sci., 2568, Berlin: Springer, 2003. [DNA9] J. Chen, J. H. Reif, eds. DNA Computing, 9th Intern. Workshop on DNA Based Computers, Madison, WI, 2003, Lect. Notes Computer Sci., 2943, Berlin: Springer, 2004. [EC97] IEEE Intern. Conf. on Evolutionary Computing, Indianapolis, 1997. [FNC] W. Brauer, H. Egrig, J. Karhum¨aki, A. Salomaa, eds. Formal and Natural Computing, Lect. Notes Computer Sci., 2300, Berlin: Springer, 2002. [GCB] R. Hofestadt, T. Lengauer, M. Loffler, D. Schomburg, eds. Proc. German Conf. on Bioinformatics, Leipzig, 1996, Lect. Notes Computer Sci., 1278, Berlin: Springer, 1997. [HFL] G. Rozenberg, A. Salomaa, eds. Handbook of Formal Languages. 3 volumes. Berlin: Springer, 1997. [INBS] IEEE Conf. on Intelligence in Neural and Biologic Systems, Herndon-Washington, 1995. [MCLB] C. Martin-Vide, V. Mitrana, eds. Where Mathematics, Computer Science, Linguistics, and Biology Meet, Dordrecht: Kluwer, 2001. [PCB1] L. Hunter, T. E. Klein, eds. Proc. First Annual Pacific Symp. on Biocomputing, Hawaii, 1996, Singapore: World Scientific, 1996. [PCB2] R. B. Altman, et al., eds. Proc. 2nd Pacific Conf. on Biocomputing, Hawaii, 1997, Singapore: World Scientific, 1997. [PCB3] R. B. Altman, A. K. Dunker, L. Hunter, T. E. Klein, eds. 3rd Annual Pacific Conf. on Biocomputing, Hawaii, 1998, Singapore: World Scientific, 1998. [UMC1] C. S. Calude, J. Casti, M. J. Dinneen, eds. Unconventional Models of Computation, Berlin: Springer, 1998. [UMC2] I. Antoniou, C. S. Calude, M. J. Dinneen, eds. Unconventional Models of Computation, UMC’2K, Berlin: Springer 2001.
Список литературы
497
[UMC3] C. S. Calude, M. J. Dinneen, F. Peper, eds. Unconventional Models of Computation, UMC’02, Lect. Notes in Comput. Sci., 2509, Berlin: Springer, 2002,
Статьи, диссертации, монографии [1] Б. С. Галюкшов. Полуконтекстуальные грамматики. Матем. логика и матем. лингвистика, Таллинский ун-т, 1981, 38–50. [2] L. M. Adleman. Molecular computation of solutions to combinatorial problems. Science, 226 (1994), 1021–1024. [3] L. M. Adleman. On the potential of molecular computing — reply. Science, 268 (1995), 483–484. [4] L. M. Adleman. On constructing a molecular computer. [DNA1], 1–22. [5] L. M. Adleman. Computing with DNA. Scientific American, 279, 2 (1998), 54–61. [6] L. M. Adleman, P. W. K. Rothemund, S. Roweis, E. Winfree. On applying molecular computation to the Data Encryption Standard. [DNA2], 28–48, см. также J. Computational Biology, 6 (1999), 53– 63. [7] A. V. Aho, J. D. Ullman. The Theory of Parsing, Translation, and Compiling. Englewood Cliffs: Prentice Hall, Vol. I: 1971, Vol. II: 1973 [Русский перевод: А. Ахо, Дж. Ульман. Теория синтаксического анализа, перевода и компиляции. В 2-х томах. М.: Мир, 1979]. [8] B. Alberts, et al. Molecular Biology of the Cell. 3rd ed. New York: Garland Publishing, 1994. [9] G. Alford. An explicit construction of a universal extended H system. [UMC1], 108–117. [10] M. Amos. DNA Computation. PhD Thesis, Univ. of Warwick, Dept. of Computer Sci., 1997. [11] M. Amos. Theoretical and experimental DNA computation. Bull. EATCS, 67 (1999), 125–138, см. также [CTCS], 614–630. [12] M. Amos. Theoretical and Experimental DNA Computation. Berlin: Springer, 2004. [13] M. Amos, et al. Practical implementation of DNA computations. [UMC1], 1–18. [14] M. Amos, Gh. P˘ aun, G. Rozenberg, A. Salomaa. Topics in the theory of DNA computing. Theoretical Computer Sci., 287 (2002), 3–38.
498
Список литературы
[15] E. Anderson, et al. Solution of a problem in DNA computing, Theoretical Computer Sci., 287 (2002), 387–391. [16] M. Arita, M. Hagiya, A. Suyama. Joining and rotating data with molecules. [EC97], 243–248. [17] P. Arsenics, K. Grabowski, J. J. Mulawka. Optimal sequence design for DNA computing. Proc. 4th Polish Conf. Evolutionary Algorithms and Global Optimization, 2000, 245–254. [18] A. Atanasiu. On the free crossovering operation. Ann. Univ. Buc., Matem.-Inform. Series, 45 (1996), 3–8. [19] C. Baiocchi. Three small universal Turing machines. Proc. MCU’2001 (M. Margenstern, Yu. Rogozhin, eds.), Lect. Notes Computer Sci. 2055, Berlin: Springer, 2001, 1–10. [20] B. Baker, R. Book. Reversal-bounded multipushdown machines. J. Computer System Sci., 8 (1974), 315–332. [21] R. Barua, J. Misra. Binary arithmetic for DNA computers. [DNA8], 124–132. [22] E. B. Baum. A DNA associative memory potentially larger than the brain. [DNA1], 23–28. [23] R. Beene, ed. RNA-Editing: The Alteration of Protein Coding Sequences of RNA. Chichester: Ellis Horwood, 1993. [24] Y. Benenson, et al. Programmable and autonomous computing machine made of biomolecules, Nature, 414 (2001), 430–434. [25] Y. Benenson, et al. DNA molecule provides a computing machine with both data and fuel. Proc. National Acad. Sci. USA, 100 (2003), 2191–2196. [26] A. J. Blumberg. Parallel computation on a DNA substrate. [DNA3], 275–289. [27] D. Boneh, C. Dunworth, R. J. Lipton. Breaking DES using a molecular computing. [DNA1], 37–66. [28] D. Boneh, C. Dunworth, R. J. Lipton, J. Sgall. On the computational power of DNA. Discrete Appl. Math., 71 (1996), 79–94. [29] P. Bonizzoni, C. de Felice, G. Mauri, R. Zizza. DNA and circular splicing. [DNA6], 117–129. [30] P. Bonizzoni, G. Mauri, C. Ferretti, R. Zizza. Separating some splicing models. Inform. Processing Letters, 76 (2001), 255–259. [31] R. S. Braich, et al. Solution of a satisfiability problem on a gelbased DNA computer. [DNA6], 27–42. [32] F. J. Brandenburg. Representations of language families by homomorphic equality operations and generalized equality sets. Theoretical Computer Sci., 55 (1987), 183–263.
Список литературы
499
[33] A. Brenneman, A. Condon. Strand design for bio-molecular computation. Theoretical Computer Sci., 287 (2002), 39–58. [34] C. Calude, J. Hromkovic. Complexity: A language-theoretic point of view. [HFL], Vol. 2, 1–60. [35] C. Calude, Gh. P˘ aun. Global syntax and semantics for recursively enumerable languages. Fundamenta Informaticae, 4 (1981), 245– 254. [36] J. Castellanos, C. Martin-Vide, V. Mitrana, J. Sempere. Solving NP-complete problems with networks of evolutionary processors. Proc. 6th Intern. Work-Conf. Artificial and Natural Neural Networks, IWANN’2001 (J. Mira, A. Prieto, eds.), Lect. Notes Computer Sci., 2048, Berlin: Springer, 2001, 621–628. [37] V. T. Chakaravarthy, K. Krithivasan. A note on extended H systems with permitting/forbidding contexts of radius one. Bull. EATCS, 62 (1997), 208–213. [38] R. Ceterchi. Marcus contextual languages and their cut-and-paste properties, Intern. Conf. on Rough Sets and Current Trends in Computing (L. Polkowski, A. Skowron, eds.), Var¸sovia, 1998, Lect. Notes in AI, 1424, Berlin: Springer, 1998, 99–106. [39] R. Ceterchi. Modeling DNA recombinant behavior with fixed-point equations, [CBTE], 340–352. [40] J. Chen, R. J. Deaton, Y.-Zh. Wang. A DNA-based memory with in vitro learning and associative recall. [DNA9] 145–156. [41] J. Chen, D. H. Wood. A new DNA separation technique with low error rate. [DNA3], 43–56. [42] J. Chen, D. H. Wood. Computation with biomolecules, Proc. National Acad. Sci. USA, 97 (2000), 1328–1330. [43] K. Chen, V. Ramachandran. A space-efficient randomized DNA algorithm for k-SAT. [DNA6], 199–208. [44] J. Collado-Vides. The search for a grammatical theory of gene regulation is formally justified by showing the inadequacy of context-free grammars. CABIOS, 7 (1991), 321–326. [45] A. Condon, R. M. Corn, A. Marathe. On combinatorial DNA word design. J. Computational Biology, 8 (2001), 201–220. [46] M. Conrad. Information processing in molecular systems. Currents in Modern Biology, 5 (1972), 1–14. [47] M. Conrad. On design principles for a molecular computer, Comm. ACM, 28 (1985), 464–480. [48] M. Conrad. The price of programmability. The Universal Turing Machine: A Half-Century Survey (R. Herken, ed.), Hamburg: Kammerer & Unverzagt, 1988, 285–307.
500
Список литературы
[49] M. Conrad, K.-P. Zauner. Design for a DNA conformational processor. [DNA3], 290–295. [50] E. Csuhaj-Varju, J. Dassow. On cooperating distributed grammar systems. J. Inf. Process. Cybern., EIK, 26, 1–2 (1990), 49–63. [51] E. Csuhaj-Varju, J. Dassow, J. Kelemen, Gh. P˘aun. Grammar Systems. A Grammatical Approach to Distribution and Cooperation. London: Gordon and Breach, 1994. [52] E. Csuhaj-Varju, R. Freund, F. Wachtler. Test tube systems with cutting/recombination operation. [PCB2]. [53] E. Csuhaj-Varju, R. Freund, L. Kari, Gh. P˘aun. DNA computing based on splicing: universality results. [PCB1], 179–190. [54] E. Csuhaj-Varju, L. Kari, Gh. P˘aun. Test tube distributed systems based on splicing. Computers and AI, 15 (1996), 211–232. [55] E. Csuhaj-Varju, J. Kelemen, Gh. P˘aun. Grammar systems with WAVE-like communication. Computers and AI, 15 (1996), 419– 436. [56] E. Csuhaj-Varju, V. Mitrana. Evolutionary systems: A language generating device inspired by evolving communities of cells. Acta Informatica, 36 (2000), 913–926. [57] E. Csuhaj-Varju, G. Vaszil. Test tube systems with objects, Romanian J. Inform. Sci. and Technology, 4 (2001). [58] K. Culik II. A purely homomorphic characterization of recursively enumerable sets. J. ACM, 26 (1979), 345–350. [59] K. Culik II, T. Harju. Splicing semigroups of dominoes and DNA. Discrete Appl. Math., 31 (1991), 261–277. [60] R. Dassen, H. J. Hoogeboom, N. van Vugt. A characterization of non-iterated splicing with regular rules. [MCLB], 319–327. [61] J. Dassow, V. Mitrana. Splicing grammar systems. Computers and AI, 15 (1996), 109–122. [62] J. Dassow, V. Mitrana. Evolutionary grammars: A grammatical model for genome evolution. [GCB], 199–209. [63] J. Dassow, V. Mitrana. Self cross-over systems. [CBTE], 283–294. [64] J. Dassow, V. Mitrana. On some operations suggested by genome evolution. [PCB2], 97–108. [65] J. Dassow, V. Mitrana, A. Salomaa. Context-free evolutionary grammars and the structural language of nucleic acids. Biosystems, 43 (1997) 169–177. [66] J. Dassow, Gh. P˘ aun. Regulated Rewriting in Formal Language Theory. Berlin: Springer-Verlag, 1989.
Список литературы
501
[67] J. Dassow, Gh. P˘aun. Remarks on operations suggested by mutations in genomes. Fundamenta Informaticae, 36 (1998), 183– 200. [68] J. Dassow, Gh. P˘aun, A. Salomaa. Grammars with controlled derivation. [HFL], Vol. 2, 101–154. [69] M. D. Davis, E. J. Weyuker. Computability, Complexity, and Languages. New York: Academic Press, 1983. [70] M. T. Dawson, R. Powell, F. Gannon. Gene Technology. Oxford: BIOS Scientific Publishers, 1996. [71] R. Deaton, et al. A DNA based implementation of an evolutionary search for good encodings for DNA computation. [EC97], 267–271. [72] A. De Luca, A. Restivo. A characterization of strictly locally testable languages and its applications to subsemigroups of a free semigroup. Inform. Control, 44 (1980), 300–319. [73] K. L. Denninghoff, R. W. Gatterdam. On the undecidability of splicing systems. Intern. J. Computer Math., 27 (1989), 133–145. [74] S. D´ıaz, J. L. Esteban, M. Ogihara. A DNA-based random walk method for solving k-SAT. [DNA6], 209–219. [75] V. Diekert, M. Kudlek. Small deterministic Turing machines. Papers on Automata and Languages, Dept. Math., Univ. Economics, Budapest, 188-4 (1989), 77–87. [76] K. Drlica. Understanding DNA and Gene Clonig. A Guide for the CURIOUS. New York: John Wiley and Sons, 1992. [77] P. Duris, J. Hromkovic. One-way simple multihead finite automata are not closed under concatenation. Theoretical Computer Sci., 27 (1983), 121–125. [78] A. Ehrenfeucht, et al. Formal systems for gene assembly in ciliates. Theoretical Computer Sci., 292 (2003), 199–219. [79] A. Ehrenfeucht, et al. Computation in Living Cells: Gene Assembly in Ciliates, Berlin: Springer, 2004. [80] A. Ehrenfeucht, Gh. P˘aun, G. Rozenberg. On representing recursively enumerable languages by internal contextual languages. Theoretical Computer Sci., 205 (1998), 61–83. [81] S. Eilenberg. Automata, Languages, and Machines. New York: Academic Press, Vol. A: 1974, Vol. B: 1976. [82] T. L. Eng. Linear DNA self-assembly with hairpins generate the equivalent of linear context-free grammars. [DNA3], 296–301. [83] J. Engelfriet. Reverse twin-shuffles. Bull. EATCS, 60 (1996), 144. [84] J. Engelfriet, G. Rozenberg. Fixed point languages, equality languages, and representations of recursively enumerable languages. J. ACM, 27 (1980), 499–518.
502
Список литературы
[85] D. Faulhammer, A. R. Cukras, R. J. Lipton, L. F. Landweber. When the knight falls: On constructing an RNA computer. [DNA5], 1–8. [86] C. Ferretti, S. Kobayashi, T. Yokomori. DNA splicing systems and Post systems. [PCB1], 288–299. [87] C. Ferretti, G. Mauri, S. Kobayashi, T. Yokomori. On the universality of Post and splicing systems. Theoretical Computer Sci., 231 (2000), 157–170. [88] C. Ferretti, G. Mauri, C. Zandron. Nine test tubes generate any RE language. Theoretical Computer Sci., 231 (2000), 171–180. [89] R. P. Feynman. There’s plenty of room at the bottom. Miniaturization (D. H. Gilbert, ed.), New York: Reinhold, 1961, 282–296 [90] R. Freund. Splicing systems on graphs. [INBS], 189–195. [91] R. Freund, F. Freund. Test tube systems or “how to bake a DNA cake.” Acta Cybernetica, 12 (1997), 445–459. [92] R. Freund, F. Freund. Test tube systems with controlled applications of rules. [EC97], 237–242. [93] R. Freund, F. Freund. Test tube systems: when two tubes are enough. Proc. Intern. Conf. Developments in Language Theory, DLT’99, Aachen, 1999, 275–286. [94] R. Freund, F. Freund, M. Oswald. Universal H systems using multisets, manuscript, 1997. [95] R. Freund, L. Kari, Gh. P˘aun. DNA computing based on splicing. The existence of universal computers. Theory of Computing Systems, 32 (1999), 69–112. [96] R. Freund, V. Mihalache. Molecular computations on circular and linear strings. [UMC1], 201–217. [97] R. Freund, Gh. P˘ aun, G. Rozenberg, A. Salomaa. Bidirectional sticker systems. [PCB3], 535–546. [98] R. Freund, Gh. P˘aun, G. Rozenberg, A. Salomaa. Watson-Crick finite automata. [DNA3], 305–317. [99] R. Freund, Gh. P˘aun, G. Rozenberg, A. Salomaa. Watson-Crick automata. Techn. Report 97-13, Dept. of Computer Sci., Leiden Univ., 1997. [100] R. Freund, F. Wachtler. Universal systems with operations related to splicing. Computers and AI, 15 (1996), 273–293. [101] P. Frisco. Diophantine equations and splicing: a new demonstration of the generative capability of H systems, [DNA6], 43–52. [102] P. Frisco, C. Zandron, On variants of communicating distributed H systems, Fundamenta Informaticae, 48 (2001), 9–20.
Список литературы
503
[103] A. G. Frutos, et al. Demonstration of a word design strategy for DNA computing on surfaces. Nucleic Acids Research, 25 (1997), 4748. [104] A. G. Frutos, L. M. Smith, R. M. Corn. Enzymatic ligation reactions of DNA “words” on surfaces for DNA computing. J. Am. Chem. Soc., 120 (1998), 10277. [105] B. Fu, R. Beigel. On molecular approximation algorithms for NPoptimization problems. [DNA3], 93–101. [106] Y. Gao, et al. DNA implementation of nondeterminism. [DNA3], 204–211. [107] M. H. Garzon, K. V. Bobba, A. Neel. Efficiency and reliability of semantic retrieval in DNA-based memories. [DNA9], 157–169. [108] M. H. Garzon, Ch. Oehmen. Biomolecular computation in virtual test tubes. [DNA7], 117–128. [109] R. W. Gatterdam. Splicing systems and regularity. Intern. J. Computer Math., 31 (1989), 63–67. [110] R. W. Gatterdam. Algorithms for splicing systems. SIAM J. Comput., 21 (1992), 507–520. [111] R. W. Gatterdam. DNA and twist free splicing systems. Words, Languages, Combinatorics, II (M. Ito, H. J¨ urgensen, eds.), Singapore: World Scientific, 1994, 170–178. [112] V. Geffert. Normal forms for phrase-structure grammars. RAIRO. Theoretical Inform. and Appl., 25 (1991), 473–496. [113] G. Georgescu. On the generative capacity of splicing grammar systems. New Trends in Formal Languages. Control, Cooperation, and Combinatorics (Gh. P˘aun, A. Salomaa, eds.), Lect. Notes in Computer Sci., 1218, Berlin: Springer, 1997, 330–345. [114] A. Gibbons, M. Amos, D. Hodgson. Models of DNA computing. Proc. 21st MFCS Conf., Cracow, 1996, Lect. Notes Computer Sci., 1113, Berlin: Springer, 1996, 18–36. [115] S. Ginsburg. The Mathematical Theory of Context-free Languages, New York: McGraw Hill, 1966 [Русский перевод: С. Гинзбург. Математическая теория контекстно-свободных языков. М.: Мир, 1970] [116] S. Ginsburg. Algebraic and Automata-Theoretic Properties of Formal Languages. North-Holland, Amsterdam, 1975. [117] N. Gnanamalar David, K. G. Subramanian, D. Gnanaraj Thomas. A note on graph splicing languages. [DNA7], 381–390. [118] E. Goode, D. Pixton. Semi-simple splicing systems. [MCLB], 343– 352.
504
Список литературы
[119] E. Goode, D. H. Wood, J. Chen. DNA implementation of a Royal Road fitness evaluation. [DNA6], 247–262. [120] C. Graciani-D´ıaz, F. J. Mart´ın-Mateos, M. J. P´erez-Jim´enez. Specification of Adleman’s restricted model using an automated reasoning system: Verification of Lipton’s experiment. [UMC3], 126–136. [121] J. Gruska. Descriptional complexity of context-free languages. Proc. MFCS Symp., 1973, 71–83. [122] F. Guarnieri, M. Fliss, C. Bancroft. Making DNA add. Science, 273 (1996), 220–223. [123] V. Gupta, S. Parthasarathy, M. J. Zaki. Arithmetic and logic operations with DNA. [DNA3], 212–220. [124] M. Hagiya, New trends in DNA computing, J. Japan Society for AI, 15 (2000), 43–50. [125] M. Hagiya. From molecular computing to molecular programming. [DNA6], 89–102. [126] M. Harrison. Introduction to Formal Language Theory. Reading: Addison-Wesley, 1978. [127] J. Hartmanis. About the nature of computer science. Bull. EATCS, 53 (1994), 170–190. [128] J. Hartmanis. On the weight of computation. Bull. EATCS, 55 (1995), 136–138. [129] D. Hauschild, M. Jantzen. Petri nets algorithms in the theory of matrix grammars. Acta Informatica, 31 (1994), 719–728. [130] T. Head. Formal language theory and DNA: An analysis of the generative capacity of specific recombinant behaviors. Bull. Mathematical Biology, 49 (1987), 737–759. [131] T. Head. Splicing schemes and DNA. Lindenmayer Systems; Impacts on Theoretical Computer Science and Developmental Biology (G. Rozenberg, A. Salomaa, eds.), Berlin: Springer, 1992, 371–383. [132] T. Head. Splicing representations of strictly locally testable languages. Discrete Appl. Math., 87 (1998), 139–147. [133] T. Head. Splicing systems and molecular processes. [EC97], 203– 205. [134] T. Head. Circular suggestions for DNA computing. Pattern Formation in Biology, Vision and Dynamics (A. Carbone, M. Gromow, P. Prusinkiewicz, eds.), Singapore: World Scientific, 2000, 325–335. [135] T. Head, et al. Aqueous solutions of algorithmic problems: Emphasizing knights on a 3 × 3. [DNA7], 191–202.
Список литературы
505
[136] T. Head, S. Gal. Aqueous computing: writing into fluid memory. Bull. EATCS, 75 (2001), 190–198. [137] T. Head, D. Pixton, E. Goode. Splicing systems: regularity and below. [DNA8], 262–268. [138] T. Head, M. Yamamura, S. Gal. Aqueous computation. Writing on molecules. Proc. IEEE Congress on Evolutionary Computing, Piscataway, NJ, 1999, 1006–1010. [139] T. Head, Gh. P˘aun, D. Pixton. Language theory and molecular genetics. Generative mechanisms suggested by DNA recombination. [HFL], Vol. 2, 295–360. [140] G. T. Herman, G. Rozenberg. Developmental Systems and Languages. Amsterdam: North-Holland, 1975. [141] J. Hertz, A. Krogh, R. G. Palmer. Introduction to the Theory of Neural Computation. Reading: Addison-Wesley, 1991. [142] T. Hinze, U. Hatnik, M. Sturm. An object oriented simulation of real occurring molecular biological processes for DNA computing and its experimental verification. [DNA7], 1–13. [143] H. J. Hoogeboom, N. van Vugt. Fair sticker languages. Acta Informatica, 37 (2000) 213–225. [144] H. J. Hoogeboom, N. van Vugt. Upper bounds for restricted splicing. [FNC], 361–375. [145] J. E. Hopcroft, J. D. Ullman. Introduction to Automata Theory, Languages and Computation. Reading: Addison-Wesley, 1979. [146] J. Hromkovic. One-way multihead deterministic finite automata. Acta Informatica, 19 (1983), 377–384. [147] H. Hug, R. Schuler. DNA-based parallel computation of simple arithmetic. [DNA7], 321–328. [148] H. Hug, R. Schuler. Implementation of a random walk method for solving 3-SAT on circular DNA molecules. [DNA7], 133–142. [149] L. Hunter. Molecular biology for computer scientists. Artificial Intelligence and Molecular Biology (L. Hunter, ed.), AAAI Press/MIT Press, Menlo Park, Calif., 1993, 1–46. [150] S. Hussini, L. Kari, S. Konstantinidis. Coding properties of DNA languages. [DNA7], 57–69. [151] O. H. Ibarra, C. E. Kim. On 3-head versus 2-head finite automata. Inform. Control, 4 (1975), 193–200. [152] L. Ilie, V. Mitrana. Crossing-over on languages. A formal representation of the chromosome recombination. [GCB], 202– 204. [153] N. Jonoska, S. A. Karl. Ligation experiments in computing with DNA. [EC97], 261–265.
506
Список литературы
[154] A. Kameda, et al. Conformational addressing using the hairpin structure of single-strand DNA. [DNA9], 219–223. [155] L. Kari. On Insertion and Deletion in Formal Languages. Ph.D. Thesis, Univ. of Turku, 1991. [156] L. Kari. DNA computing: tomorrow’s reality. Bull. EATCS, 59 (1996), 256–266, см. также [CTCS], 811–829. [157] L. Kari, R. Kitto, G. Gloor, A computer scientist’s guide to molecular biology, Soft Computing, 5 (2001), 95–101. [158] L. Kari, A. P˘ aun. String operations suggested by DNA biochemistry: the balanced cut operation. Words, Semigroups, Transducers (M. Ito, Gh. P˘aun, S. Yu, eds.), Singapore: World Scientific, 2001, 275–288. [159] L. Kari, Gh. P˘ aun, G. Rozenberg, A. Salomaa, S. Yu. DNA computing, sticker systems, and universality. Acta Informatica, 35 (1998), 401–420. [160] L. Kari, Gh. P˘ aun, A. Salomaa. The power of restricted splicing with rules from a regular set. J. Universal Computer Sci., 2 (1996), 224–240. [161] L. Kari, Gh. P˘ aun, G. Thierrin, S. Yu. At the crossroads of DNA computing and formal languages: Characterizing RE using insertion-deletion systems. [DNA3], 318–333. [162] L. Kari, G. Thierrin. Contextual insertion/deletion and computability. Inform. Computation, 131 (1996), 47–61. [163] S. Kashiwamura, et al. Towards optimization of PCR protocol in DNA computing. [DNA7], 14–22. [164] S. Kashiwamura, et al. Hierarchical DNA memory based on nested PCR. [DNA8], 112–123. [165] J. Khodor, D. K. Gifford. Design and implementation of computational systems based on programmed mutagenesis. BioSystems 52 (1999), 93–97. [166] J. Khodor, D. K. Gifford. Programmed mutagenesis is a universal model of computation. [DNA7], 300–307. [167] S. M. Kim. Identifying genetically spliced languages. [EC97], 231– 235. [168] S. M. Kim. Computational modeling for genetic splicing systems. SIAM J. Computing, 26 (1997), 1284–1309. [169] S. Kobayashi, T. Yokomori, G. Sampei, K. Mizobuchi. DNA implementation of simple Horn clause computation. [EC97], 213– 217. [170] J. H. Koza, J. P. Rice. Genetic Algorithms: The Movie. Cambridge: MIT Press, 1992.
Список литературы
507
[171] K. Krithivasan, V. T. Chakaravarthy, R. Rama. Array splicing systems. New Trends in Formal Languages. Control, Cooperation, and Combinatorics (Gh. P˘aun, A. Salomaa, eds.), Lect. Notes in Computer Sci. 1218, Berlin: Springer, 1997, 346–365. [172] M. Kudlek, Yu. Rogozhin. A universal Turing machine with 3 states and 9 symbols. Developments in Language Theory. 5th Intern. Conf. (W. Kuich, G. Rozenberg, A. Salomaa, eds.), Lect. Notes Computer Sci. 2295, Berlin: Springer, 2002, 311–318. [173] S. Landau. Standing the test of time: the Data Encryption Standard. Notices AMS, 47 (2000), 341–349. [174] M. Latteux, B. Leguy, B. Ratoandromanana. The family of onecounter languages is closed under quotient. Acta Informatica, 22 (1985), 579–588. [175] L. F. Landweber, R. J. Lipton. DNA to DNA: A potential “killer app”? [DNA3], 161–172. [176] E. Laun, K. J. Reddy. Wet splicing systems. [DNA3], 73–82. [177] I.-H. Lee, et al. DNA implementation of theorem proving with resolution refutation in propositional logic. [DNA8], 156–167. [178] J. Y. Lee, et al. Temperature gradient-based DNA computing for graph problems with weighted edges. [DNA8], 73–84. [179] T. H. Leete, J. P. Klein, H. Rubin. Bit operations using a DNA template. [DNA3] (Preproceedings version), 159–171. [180] A. Leier, Ch. Richter, W. Banzhaf, H. Rauhe. Cryptography with DNA binary strands. Biosystems, 57 (2000), 13–22. [181] M. Li, H. J. Lee, A. E. Condon, R. M. Corn. A DNA word design strategy for creating sets of non-interacting oligonucleotides for DNA microarrays. Langmuir, 73 (2002), 805–812. [182] W.-H. Li, D. Graur. Fundamentals of Molecular Evolution. Sunderland: Sinauer Ass., 1991. [183] H.-W. Lim, et al. Version space learning with DNA molecules. [DNA8], 143–155. [184] R. J. Lipton. Using DNA to solve NP-complete problems. Science, 268 (1995), 542–545. [185] R. J. Lipton. Speeding up computations via molecular biology. [DNA1], 67–74. [186] Q. Liu, et al. DNA computing on surfaces. Nature, 403 (2000), 175–179. [187] M. S. Livstone, L. F. Landweber. Mathematical considerations in the design of microreactor-based DNA computers. [DNA8], 180– 189.
508
Список литературы
[188] M. Lothaire. Combinatorics on Words. Reading: Addison-Wesley, Mass., 1983. [189] M. Mali¸ta, Gh. S ¸ tefan. DNA computing with the connex memory. [EC97], 225–229. [190] V. Manca. Logical splicing in natural languages. Issues in Mathematical Linguistics (C. Martin-Vide, ed.), Amsterdam: John Benjamins, 1999, 131–143. [191] V. Manca. On some forms of splicing. [MCLB], 387–398. [192] V. Manca. DNA and membrane algorithms for SAT. Fundamenta Informaticae, 49 (2002), 205–221. [193] V. Manca, C. Martin-Vide, Gh. P˘aun. New computing paradigms suggested by DNA computing: Computing by carving. Biosystems, 52 (1999), 47–54. [194] V. Manca, Gh. P˘aun. Arithmetically controlled H systems. Computer Sci. J. Moldova, 6 (1998), 103–118. [195] V. Manca, C. Zandron. A clause string DNA algorithm for SAT. [DNA7], 172–181. [196] G. Manganaro, J. P. deGyvez. DNA computing based on chaos. [EC97], 255–260. [197] S. Marcus. Contextual grammars. Rev. Roum. Math. Pures Appl., 14 (1969), 1525–1534. [198] S. Marcus. Linguistic structures and generative devices in molecular genetics. Cah. Ling. Th. Appl., 11 (1974), 77–104. [199] S. Marcus. Language at the crossroad of computation and biology. [CBTE], 1–35. [200] M. Margenstern, Y. Rogozhin. Time-varying distributed H systems of degree 2 generate all RE languages. [MCLB], 399–407. [201] M. Margenstern, Y. Rogozhin. An universal time-varying distributed H system of degree 2. Biosystems, 52 (1999), 73–80. [202] M. Margenstern, Y. Rogozhin. About time-varying distributed H systems, [DNA6], 53–62. [203] M. Margenstern, Y. Rogozhin. A universal time-varying distributed H system of degree 1. [DNA7], 371–380. [204] M. Margenstern, Y. Rogozhin, S. Verlan. Time-varying distributed H systems of degree 2 can carry out parallel computations. [DNA8], 326–336. [205] M. Margenstern, Y. Rogozhin, S. Verlan. Time-varying distributed H systems with parallel computations: The problem is solved. [DNA9], 48–53.
Список литературы
509
[206] A. F. Markham, et al. Solid phase phosphotriester synthesis of large oligodeoxyribonucleotides on a polyamide support. Nucleic Acids Research, 8 (1980), 5193–5205. [207] F. J. Mart´ın-Mateos, J. A. Alonso, M. J. P´erez-Jim´enez. Molecular computation models in ACL2: A simulation of Lipton’s SAT experiment in the Adleman’s restricted model. Proc. 3rd Intern. Workshop on the ACL2 Theorem Prover and Its Applications, 2002, 175–187. [208] C. Martin-Vide, Gh. P˘aun. Cooperating distributed splicing systems. J. Automata, Languages and Combinatorics, 4 (1999), 3–16. [209] C. Martin-Vide, Gh. P˘aun, G. Rozenberg, A. Salomaa. Universality results for finite H systems and for Watson–Crick finite automata. [CBTE], 200–220. [210] C. Martin-Vide, Gh. P˘aun, A. Salomaa. Characterizations of recursively enumerable languages by means of insertion grammars. Theoretical Computer Sci., 205 (1998), 195–205. [211] A. Mateescu. Splicing on routes: A framework for DNA computation. [UMC1], 273–285. [212] A. Mateescu, Gh. P˘aun, G. Rozenberg, A. Salomaa. Simple splicing systems. Discrete Appl. Math., 84 (1998), 145–163. [213] A. Mateescu, Gh. P˘aun, A. Salomaa. Variants of twin-shuffle languages, manuscript, 1998. [214] J. S. McCaskill. Optically programming DNA computing in microflow reactors. Biosystems, 59 (2001), 125–138. [215] J. S. McCaskill, et al. Steady flow micro-reactor module for pipelined DNA computations. [DNA6], 263–270. [216] J. S. McCaskill, U. Niemann. Graph replacement chemistry for DNA processing. [DNA6], 103–116. [217] R. McNaughton, S. Papert. Counter-Free Automata. Cambridge: MIT Press, 1971. [218] V. Mihalache. Prolog approach to DNA computing. [EC97], 249– 254. [219] V. Mihalache, Gh. P˘aun, G. Rozenberg, A. Salomaa. Generating strings by replication: a simple case. Report TUCS No. 17, Turku, Finland, 1996. [220] V. Mihalache, A. Salomaa. Growth functions and length sets of replicating systems. Acta Cybern., 12, 3 (1996), 235–247. [221] V. Mihalache, A. Salomaa. Lindenmayer and DNA: Watson– Crick D0L systems. Bull. EATCS, 62 (1997), 160–175, см. также [CTCS], 740–751.
510
Список литературы
[222] V. Mihalache, A. Salomaa. Language-theoretic aspects of DNA complementarity. Theoretical Computer Sci., 250 (2001), 163–178. [223] M. Minsky. Computation. Finite and Infinite Machines. Englewood Cliffs: Prentice Hall, 1967. [224] V. Mitrana. On the interdependence between shuffle and crossingover operations. Acta Informatica, 34 (1997), 257–266. [225] N. Morimoto, M. Arita, A. Suyama. Solid phase DNA solution to the Hamiltonian path problem. [DNA3], 193–206. [226] N. Nitta, A. Suyama. Autonomous biomolecular computer modeled after retroviral replication. [DNA9], 203–207. [227] M. Ogihara, A. Ray. DNA-based parallel computation by “counting”. [DNA3], 265–274. [228] M. Ogihara, A. Ray. The minimum DNA computation model and its computational power. [UMC1], 309–322. [229] J. Parkkinen, S. Parkkinen, Gh. P˘aun. Computing by splicing: gsm’s working on circular words, manuscript, 1996. [230] A. P˘ aun. Extended H systems with permitting contexts of small radius. Fundamenta Informaticae, 31 (1997), 185–193. [231] A. P˘ aun. On time-varying H systems. Bull. EATCS, 67 (1999), 157–164. [232] A. P˘ aun. On the diameter of various classes of H systems. J. Automata, Languages and Combinatorics, 5 (2000), 315–324. [233] A. P˘ aun, M. P˘ aun. Controlled and distributed H systems of small radius. [CBTE], 239–254. [234] A. P˘ aun, M. P˘ aun. State and transition complexity of Watson– Crick finite automata. Fundamentals of Computation Theory, FCT’99, Ia¸si, Lect. Notes Computer Sci.. 1684, Berlin: Springer, 1999, 409–420. [235] Gh. P˘ aun. On the iteration of gsm mappings. Revue Roum. Math. Pures Appl., 23 (1978), 921–937. [236] Gh. P˘ aun. On semicontextual grammars. Bull. Math. Soc. Sci. Math. Roumanie, 28(76) (1984), 63–68. [237] Gh. P˘ aun. Two theorems about Galiukschov semicontextual grammars. Kybernetika, 21 (1985), 360–365. [238] Gh. P˘ aun. A characterization of recursively enumerable languages. Bull. EATCS, 45 (1991), 218–222. [239] Gh. P˘ aun. On the splicing operation. Discrete Appl. Math., 70 (1996), 57–79. [240] Gh. P˘ aun. On the power of the splicing operation. Intern. J. Computer Math., 59 (1995), 27–35.
Список литературы
511
[241] Gh. P˘ aun. The splicing as an operation on formal languages. [INBS], 176–180. [242] Gh. P˘ aun. Splicing. A challenge to formal language theorists. Bull. EATCS, 57 (1995), 183–194, см. также [CTCS], 830–844. [243] Gh. P˘ aun. Regular extended H systems are computationally universal. J. Automata, Languages, Combinatorics, 1 (1996), 27– 36. [244] Gh. P˘ aun. On the power of splicing grammar systems. Ann. Univ. Buc., Matem.-Inform. Series, 45 (1996), 93–106. [245] Gh. P˘ aun. Five (plus two) universal DNA computing models based on the splicing operation. [DNA2], 67–86. [246] Gh. P˘ aun. Computing by splicing: How simple rules? Bull. EATCS, 60 (1996), 145–150. [247] Gh. P˘ aun. Splicing systems with targets are computationally complete. Inform. Processing Letters, 59 (1996), 129–133. [248] Gh. P˘ aun. DNA computing; Distributed splicing systems. Structures in Logic and Computer Science. A Selection of Essays in Honor of A. Ehrenfeucht (J. Mycielski, G. Rozenberg, A. Salomaa, eds.), Lect. Notes Computer Sci. 1261, Springer, Berlin, 1997, 351– 370. [249] Gh. P˘ aun. Marcus Contextual Grammars. Boston: Kluwer, 1997. [250] Gh. P˘ aun. Controlled H systems and Chomsky hierarchy. Fundamenta Informaticae, 30 (1997), 45–57. [251] Gh. P˘ aun. Two-level distributed H systems. Proc. 3rd Conf. Developments in Language Theory, Thessaloniki, 1997 (S. Bozapalidis, ed.), Aristotle Univ. of Thessaloniki, 1997, 309–327. [252] Gh. P˘ aun. DNA computing based on splicing: universality results. Proc. 2nd Intern. Colloq. Universal Machines and Computations, Metz, 1998, Vol. I, 67–91. [253] Gh. P˘ aun. Distributed architectures in DNA computing based on splicing: Limiting the size of components. [UMC1], 323–335 [254] Gh. P˘ aun. (DNA) Computing by carving. Soft Computing, 3 (1999), 30–36. [255] Gh. P˘ aun, Membrane Computing. An Introduction. Berlin: Springer, 2002. [256] Gh. P˘ aun, G. Rozenberg. Sticker systems. Theoretical Computer Sci., 204 (1998), 183–203. [257] Gh. P˘ aun, G. Rozenberg, A. Salomaa. Restricted use of the splicing operation. Intern. J. Computer Math., 60 (1996), 17–32. [258] Gh. P˘ aun, G. Rozenberg, A. Salomaa. Computing by splicing. Theoretical Computer Sci., 168, 2 (1996), 321–336.
512
Список литературы
[259] Gh. P˘ aun, G. Rozenberg, A. Salomaa. Computing by splicing. Programmed and evolving splicing systems. [EC97], 273–277. [260] Gh. P˘ aun, A. Salomaa. Thin and slender languages. Discrete Appl. Math., 61 (1995), 257–270. [261] Gh. P˘ aun, A. Salomaa. From DNA recombination to DNA computing. [GCB], 210–220. [262] Gh. P˘ aun, A. Salomaa. DNA computing based on the splicing operation. Mathematica Japonica, 43 (1996), 607–632. [263] Gh. P˘ aun, L. Sˆ antean. Parallel communicating grammar systems: the regular case. Ann. Univ. Buc., Series Matem.-Inform., 38 (1989), 55–63. [264] R. Penchovsky, J. S. McCaskill. Cascadable hybridisation transfer of specific DNA between microreactor selection modules. [DNA7], 46–56. [265] M. Penttonen. One-sided and two-sided contexts in formal grammars. Inform. Control, 25 (1974), 371–392. [266] M. J. P´erez-Jim´enez, F. Sancho-Caparrini. Solving Knapsack problems in a sticker based model. [DNA7], 161–171. [267] M. C. Pirrung, et al. The arrayed primer extension method for DNA microchip analysis. Molecular computation of satisfaction problems. J. Am. Chem. Soc., 122 (2000), 1873. [268] N. Pisanti. DNA computing: a survey. Bull. EATCS, 64 (1998), 188–216. [269] D. Pixton. Regular splicing systems, manuscript, 1995. [270] D. Pixton. Linear and circular splicing systems. [INBS], 181–188. [271] D. Pixton. Regularity of splicing languages. Discrete Appl. Math., 69 (1996), 101–124. [272] D. Pixton. Splicing in abstract families of languages. Technical Report of SUNY Univ. at Binghamton, New York, 1997. [273] L. Priese. A note on nondeterministic reversible computations. Technical Report 26/97, Univ. Koblenz-Landau, Institut f¨ ur Informatik, 1997. [274] L. Priese, Y. Rogozhin, M. Margenstern. Finite H systems with 3 tubes are not predictable. [PCB3], 547–558. [275] P. Pudlak. Complexity theory and genetics. Proc. 9th Conf. on Structure in Complexity Theory, 1994, 183–195. [276] G. Rahonis. Splicing on trees: the iterated case. J. Universal Computer Sci., 5 (1999), 599–609. [277] J. H. Reif. Local parallel biomolecular computation. [DNA3], 243– 264.
Список литературы
513
[278] J. H. Reif. Paradigms for biomolecular computation. [UMC1], 72– 93. [279] J. H. Reif. The emerging discipline of biomolecular computing in US. New Generation Computing, 20 (2002), 217–236. [280] J. H. Reif, et al. Experimental construction of very large scale DNA databases with associative search capability. [DNA6], 231–247. [281] J. H. Reif, Th. H. LaBean. Computationally inspired biotechnologies: Improved DNA synthesis and associative search using error-correcting codes and vector-quantization. [DNA6], 145–172. [282] J. H. Reif, Th. H. LaBean, N. C. Seeman. Challenges and applications for self-assembled DNA nanostructures. [DNA6], 173– 198 [283] M. P. Robertson, A. D. Ellington. New directions in nucleic acid computing: Selected robozymes that can implement re-write rules. [DNA3], 69–73. [284] Y. Rogozhin. Small universal Turing machines. Theoretical Computer Sci., 168 (1996), 215–240. [285] J. A. Rose, R. J. Deaton. The fidelity of annealing-ligation: A theoretical analysis. [DNA6], 231–246. [286] J. A. Rose, R. J. Deaton, M. Hagiya, A. Suyama. PNA-mediated whiplash PCR. [DNA7], 104–116. [287] J. A. Rose, R. J. Deaton, M. Hagiya, A. Suyama. The fidelity of the tag-antitag system. [DNA7], 138–149. [288] A. L. Rosenberg. On multihead finite automata. IBM J. R. and D., 10 (1966), 388–394. [289] P. W. K. Rothemund. A DNA and restriction enzyme implementation of Turing machines. [DNA1], 75–120 [290] B. Rovan. A framework for studying grammars. Proc. MFCS’81 (Lect. Notes Computer Sci., 118), Berlin: Springer, 1981, 473–482. [291] S. Roweis, et al. A sticker based architecture for DNA computation. [DNA2], 1–27, см. также J. Computational Biology, 5 (1998) 615– 629. [292] G. Rozenberg, A. Salomaa. The Mathematical Theory of L Systems. New York: Academic Press, 1980. [293] G. Rozenberg, A. Salomaa. Cornerstones of Undecidability. New York: Prentice Hall, 1994. [294] G. Rozenberg, A. Salomaa. Watson-Crick complementarity, universal computations and genetic engineering. Techn. Report 9628, Dept. Computer Science, Leiden Univ., 1996.
514
Список литературы
[295] Q. Quyang, P. D. Kaplan, L. Shumao, A. Libchaber. DNA solution of the maximal clique problem. Science, 278 (1997), 446–449. [296] Y. Sakakibara. Population computation and majority inference in test tube. [DNA7], 82–91. [297] Y. Sakakibara, C. Ferretti. Splicing on tree-like structures. [DNA3], 1997, 348–358 [298] Y. Sakakibara, T. Hohsaka. In vitro translation-based computations. [DNA9], 197–202. [299] Y. Sakakibara, H. Imai. A DNA-based computational model using a specific type of restriction enzyme. [DNA8], 315–325. [300] K. Sakamoto, et al. State transitions by molecules. BioSystems 52 (1999), 81–91. [301] K. Sakamoto, et al. Molecular computation by DNA hairpin formation. Science, 288 (2000), 1223–1226. [302] A. Salomaa. Theory of Automata. Oxford: Pergamon, 1969. [303] A. Salomaa. On the index of context-free grammars and languages. Inform. Control, 14 (1969), 474–477. [304] A. Salomaa. Formal Languages. New York: Academic Press, 1973. [305] A. Salomaa. Computation and Automata. Cambridge: Cambridge Univ. Press, 1985. [306] A. Salomaa. Equality sets for homomorphisms of free monoids. Acta Cybernetica, 4 (1978), 127–139. [307] A. Salomaa. Jewels of Formal Language Theory. Rockville: Computer Science Press, 1981 [Русский перевод: А. Саломаа. Жемчужины теории формальных языков. М.: Мир, 1986]. [308] A. Salomaa. Public-Key Cryptography. 2nd enlarged edition, Berlin: Springer, 1996 [Русский перевод 1-го издания: А. Саломаа. Криптография с открытым ключом. М.: Мир, 1996]. [309] A. Salomaa. Turing, Watson–Crick, and Lindenmayer. Aspects of DNA complementarity. [UMC1], 94–107. [310] M. Sakthi Balan, K. Krithivasan, Y. Sivasubrmanyam: Peptide computing — universality and complexity. [DNA7], 290–299. [311] M. P. Sch¨ utzenberger. On finite monoids having only trivial subgroups. Inform. Control, 8 (1965), 190–194. [312] D. B. Searls. The linguistics of DNA. American Scientist, 80 (1992), 579–591. [313] C. E. Shannon. A universal Turing machine with two internal states. Automata Studies, Annals of Mathematical Studies, 34, Princeton Univ. Press, 1956, 157–165.
Список литературы
515
[314] R. Siromoney, K. G. Subramanian, V. R. Dare. Circular DNA and splicing systems. Parallel Image Analysis, Lect. Notes Computer Sci. 654, Springer, Berlin, 1992, 260–273. [315] W. Smith. DNA computers in vitro and in vivo. [DNA1], 121–186. [316] W. M. Sofer. Introduction to Genetic Engineering. Boston: Butterworth–Heinemann, 1991. [317] C. C. Squier. Semicontextual grammars: an example. Bull. Math. Soc. Sci. Math. Roumanie, 32(80) (1988), 167–170. [318] Y. Takada, R. Siromoney. On identifying DNA splicing systems from examples. Proc. AII’92, Lect. Notes in AI, 642, Berlin: Springer, 1992, 305–319. [319] A. Takahara, T. Yokomori. On the computational powers of insertion-deletion systems. [DNA8], 269–280. [320] Y. Takenaka, A. Hashimoto. Shortening the computational time of the fluorescent DNA computing. [DNA8], 85–94. [321] F. Tanaka, et al. Developing support system for sequence design in DNA computing. [DNA7], 129–137. [322] P. Turakainen. A unified approach to characterizations of recursively enumerable languages. Bull. EATCS, 45 (1991), 223– 228. [323] A. M. Turing. On computable numbers, with an application to the Entscheidungsproblem. Proc. London Math. Soc., Ser. 2, 42 (1936), 230–265; a correction, 43 (1936), 544–546. [324] A. M. Turing. Computing machinery and intelligence. Mind, 59 (1950), 433–460. [325] H. Uejima, M. Hagiya. Secondary structure design of multi-state DNA machines based on sequential structure transitions. [DNA9], 74–85. [326] H. Uejima, M. Hagiya, S. Kobayashi. Horn clause computation by self-assembly of DNA molecules. [DNA7], 308–320. [327] D. van Noort, F.-U. Gast, J. S. McCaskill. DNA computing in microreactors. [DNA7], 33–45. [328] D. van Noort, L. F. Landweber. Towards a re-programmable DNA computer. [DNA9], 190–197. [329] K. Wakabayashi, M. Yamamura. A realization of information gate by using Enterococcus faecalis pheromone system. [DNA7], 269– 278. [330] M. R. Walker, R. Rapley. Route Maps in Gene Technology. Oxford: Blackwell Science, 1997. [331] L. Wang, et al. Multiple word DNA computing on surfaces. J. Am. Chem. Soc., 122 (2000), 7435–7440.
516
Список литературы
[332] P. W¸asiewicz, et al. DNA computing: Implementation of data flow logical operations. Future Generation Computer Systems, 17 (2001), 361–378. [333] P. W¸asiewicz, J. J. Mulawka. Molecular genetic programming. Soft Computing, 5 (2001), 106–113. [334] E. Winfree. Complexity of restricted and unrestricted models of molecular computability. [DNA1], 187–198. [335] E. Winfree. On the computational power of DNA annealing and ligation. [DNA1], 199–210. [336] E. Winfree, T. Eng, G. Rozenberg. String tile models for DNA computing by self-assembly. [DNA6], 63–88 [337] E. Winfree, X. Yang, N. Seeman. Universal computation via selfassembly of DNA; some theory and experiments. [DNA2], 172– 190. [338] D. Wood. Iterated a-NGSM maps and Γ-systems. Inform. Control, 32 (1976), 1–26. [339] D. Wood. Theory of Computation. New York: Harper and Row, 1987. [340] D. H. Wood, et al. In vitro selection for a OneMax DNA evolutionary computation. [DNA5], 23–38. [341] D. H. Wood, et al. DNA starts to learn poker. [DNA7], 92–103. [342] D. H. Wood, C. L. Taylor Clelland, C. Bancroft. Universal biochip readout of directed hamiltonian path problems. [DNA8], 168–181. [343] M. Yamamoto, et al. A study on the hybridization process in DNA computing. [DNA5], 101–110. [344] M. Yamamoto, et al. Solutions of shortest path problems by concentration control. [DNA7], 203–212. [345] M. Yamamoto, Y. Hiroto, T. Motoba. Another realization of aqueous computing with peptide nucleic acid. [DNA7], 213–222. [346] T. Yoichi, H. Akihiro. A proposal of DNA computing on beads with application to SAT problems. [DNA7], 182–190. [347] T. Yokomori. YAC: Yet another computation model of selfassembly. [DNA5], 153–168. [348] T. Yokomori. Molecular computing paradigm – toward freedom from Turing’s charm. Natural Computing, 1 (2002), 333–390. [349] T. Yokomori, M. Ishida, S. Kobayashi. Learning local languages and its application to protein α-chain identification. Proc. 27th Hawaii Intern. Conf. System Sci., Vol. V, 1994, 113–122. [350] T. Yokomori, S. Kobayashi. DNA evolutionary linguistics and RNA structure modeling: a computational approach. [INBS], 38–45.
Список литературы
517
[351] T. Yokomori, S. Kobayashi. DNA-EC: A model of DNA computing based on equality checking. [DNA3], 334–347. [352] T. Yokomori, S. Kobayashi, C. Ferretti. On the power of circular splicing systems and DNA computability. [EC97], 219–224. [353] T. Yokomori, Y. Sakakibara, S. Kobayashi. A magic pot: selfassembly computation revised. [FNC], 418–429. [354] H. Yoshida, A. Suyama. Solution to 3-SAT by breadth first search. [DNA3], 9–22. [355] C. Zandron, C. Ferretti, G. Mauri. A reduced distributed splicing system for RE languages. New Trends in Formal Languages. Control, Cooperation, Combinatorics (Gh. P˘aun, A. Salomaa, eds.), Lect. Notes Computer Sci. 1218, Berlin: Springer, 1997, 346– 366. [356] C. Zandron, G. Mauri, C. Ferretti, P. Bonizzoni. Splicing systems using merge and separate operations. [MCLB], 435–446. [357] K.-H. Zimmermann. On applying molecular computation to binary linear codes. IEEE Trans. on Inform. Theory, 48 (2002) 505–509.
518
Глоссарий
Глоссарий биохимических терминов In vitro — вне живого организма, в пробирке. In vivo — в живом объекте. Агарозный гель — гель, образованный из продуктов частичного гидролиза крахмала. Аденин — азотистое основание из группы пуринов. Азотистое основание — гетероциклическое химическое соединение, составная часть нуклеотидов. Водородная связь — слабая химическая связь, возникающая за счет притяжения электроотрицательного атома кислорода одной гидроксильной группы с электроположительным атомом водорода другой гидроксильной группы. Гель-электрофорез — вид электрофореза, при котором в качестве носителя, в котором происходит разделение молекул, используются гели. Гибридизация — создание гибридов, в молекулярной биологии — создание гибридных молекул, например, гибридных ДНК. Гуанин — азотистое основание из группы пуринов. Дезоксирибонуклеиновая кислота (ДНК) — биополимер, мономерами которого являются дезоксирибонуклеотиды. Дезоксирибонуклеотид — мономер ДНК, состоящий из азотистого основания, сахара (дезоксирибозы) и фосфатной группы. Денатурация — нарушение структуры биополимеров, в частности, нарушение структуры ДНК, ее разделение на одиночные цепи. Дидезоксиферментный метод — метод секвенирования ДНК с использованием модифицированных нуклеотидов — дидезоксинуклеотидов, предложен Ф. Сэнгером в 1975 г. ДНК-нуклеаза — фермент, расщепляющий ДНК. Ковалентная связь — прочная химическая связь, при которой электроны взаимодействующих атомов образуют единое электронное облако, в большей или меньшей степени смещенное в отношении одного атома.
Глоссарий
519
Комплементарность — свойство соответствия пуриновых нуклеотидов пиримидиновым, их способность образовывать водородные связи между собой. Лигаза — фермент, осуществляющий сшивание молекулы ДНК, устранение насечек. Липкие концы — выступающие одноцепочечные концы молекулы ДНК, образовавшиеся в результате действия рестриктаз. Метод Сэнгера — см. дидезоксиферментный метод. Модифицирующий фермент — фермент, изменяющий химическую структуру ДНК, присоединяющий или удаляющий химические группы. Молекула-зонд — молекула, комплементарная молекуле-мишени. Молекула-мишень — определенная молекула, в отношении которой производятся некоторые действия. Насечка — зазор между соседними нуклеотидами в цепи ДНК, отсутствие фосфодиэфирной связи между ними. Нуклеотид — химическое соединение, образованное присоединением пятиуглеродного сахара (рибозы или дезоксирибозы) и фосфатной группы к азотистому основанию. Олигонуклеотид — короткая (состоящая из нескольких нуклеотидов), одноцепочечная молекула, синтезированная химическим путем. Пиримидины — группа азотистых оснований (гуанин, цитозин и др.). Полиакриламидный гель — гель, образованный из акриламида и его производного метиленбисакриламида с добавлением «сшивающих» агентов. Полимераза — фермент, осуществляющий реакции полимеризации, т. е. синтеза полимеров из мономеров. Полимеразная цепная реакция (ПЦР) — метод получения копий исходной молекулы ДНК или ее фрагментов. Праймер — затравка, фрагмент нуклеиновой кислоты, необходимый для действия фермента полимеразы, состоит из нескольких последовательно связанных друг с другом нуклеотидов. Праймирование — образование праймера на молекуле ДНК. Пурины – группа азотистых оснований (аденин, тимин, урацил и др.).
520
Глоссарий
Ренатурация — восстановление структуры биополимеров, в частности, восстановление структуры ДНК в виде двойной спирали. Рестриктаза — эндонуклеаза, расщепляющая только двуцепочечные ДНК в строго определенном месте. Рибоза — пятиуглеродный сахар. Рибонуклеиновая кислота (РНК) — биополимер, мономерами которого являются рибонуклеотиды. Рибонуклеотид — нуклеотид, в состав которого входит сахар рибоза. Сайт узнавания — место связывания фермента рестриктазы. Сахар — растворимый углевод. Секвенирование — установление последовательности нуклеотидов в молекуле биополимера, в частности, ДНК. Сшивание — образование фосфодиэфирных связей между соседними нуклеотидами в молекуле ДНК, в частности, закрытие насечки. Тимин — азотистое основание из группы пиримидинов. Урацил — азотистое основание из группы пиримидинов. Фермент — биологический катализатор белковой природы. Фосфатная группа — остаток фосфорной кислоты. Фосфодиэфирная связь — ковалентная связь, образующаяся между фосфатной группой одного нуклеотида и гидроксильной группой другого. Цитозин — азотистое основание из группы пиримидинов. Экзонуклеаза — фермент, расщепляющий ДНК путем удаления нуклеотидов с конца молекулы. Электрофорез — метод разделения смеси молекул при их движении в электрическом поле. Эндонуклеаза — фермент, расщепляющий внутренние фосфодиэфирные связи молекулы ДНК.
Предметный указатель 1-сплетение, 286 2-сплетение, 286 AFL, 107 полное, 107 Data Encryption Standard, 73, 82, 95 H-система, 313 k-простая, 332 взаимодействующая распределенная, 427 двухуровневая распределенная, 442 разделенная, 445 изменяющаяся во времени, 451 простая, 323 расширенная, 313 программируемая, 358 развертывающаяся, 358 с глобальной мишенью, 351 с запрещающими контекстами, 346 с локально развертывающимися правилами, 362 с локальными мишенями, 351 с мультимножествами, 380 с отображением годности, 355 с разрешающими контекстами, 336 упорядоченная, 348
циклическая, 405 с самосплетением, 493 универсальная, 317, 390 H-схема, 288 рефлексивная, 402 с кластерами, 462 NP-полная задача, 55, 64 аденин (А), 16 алфавит, 104 аналог нуклеотида, 47 анти-AFL, 107, 493 библиотека, 77 блочная перетасовка, 154 бромистый этидий, 24 ВУ-система, 243 ограниченная, 259 универсальная, 264 вектор Париха, 104 вес (H-системы), 396 взаимодействие по запросу, 129 по приказу, 129 водородная связь, 18 вставка, 242, 362 вычислительная полнота, 144 гель агарозный, 25 полиакриламидный, 25 гибридизация, 27, 39 гомополимерный хвост, 41 грамматика кондициональная, 126 матричная, 124
522 обобщенная полукондициональная, 125 полукондициональная, 126 программируемая, 124 простая матричная, 126 слабо кондициональная, 126 случайно контекстная, 126 типа 0, 110 универсальная, 148 типа 1, 110 типа 2, 110 типа 3, 110 упорядоченная, 125 Хомского, 108 контекстная, 109 контекстно-свободная, 109 леволинейная, 110 линейная, 109 минимальная линейная, 111 монотонная, 109 неукорачивающая, 109 праволинейная, 110 приведенная контекстносвободная , 110 регулярная, 110 чистая, 108 грамматическая система, 127, 414 кооперирующаяся распределенная, 127, 450 параллельная взаимодействующая, 127, 414 сплетающая, 415 грамматическая схема, 148 гуанин (Г), 16
Предметный указатель ДНК, см. дезоксирибонуклеиновая кислота, 15 двойная спираль, 18 дезоксирибоза, 15 дезоксирибонуклеиновая кислота, 15 денатурация, 27 дескриптивная сложность, 116 дидезоксиферментный метод, 47 домино, 159 задача о выполнимости, 63 о гамильтоновом пути, 54 о минимальном покрытии, 78 запоминающая цепочка, 73 запоминающий комплекс, 74 зеркальное отражение, 106 зонд, 25 иерархия Хомского, 110, 293 индекс, 117 интерпретация, 63 итерация Клини, 105 кодирование, 105 кольцевая строка, 398 комплементарность Уотсона– Крика, 18, 89, 194 конечный автомат, 118, 132 двухголовочный, 201 детерминированный, 118 Уотсона–Крика, 195 1-ограниченный, 199 без состояний, 198 всефинальный, 198 двусторонний, 223 инициальный без состояний, 216
Предметный указатель префиксный, 224 простой, 199 реверсивный, 219 универсальный, 152, 231, 316 конъюнктивная нормальная форма, 69 левая производная, 106 левое частное, 106 лемма о накачке для контекстно-свободных языков, 113 для линейных языков, 113 для регулярных языков, 113 лемма о сохранении регулярности, 494 для H-схем, 298 лента Уотсона–Крика, 195 лигаза, 37 линейно ограниченный автомат, 123 липкие концы, 37 магазинный автомат, 120 матрица, 28 машина Тьюринга, 85, 121, 132 генетическая, 88 детерминированная, 122 универсальная, 143 мгновенное описание машины Тьюринга, 122 мера дескриптивной сложности, 116, 319 нетривиальная, 116 связная, 116 метилаза, 41 метод Сэнгера, см. дидезоксиферментный метод, 47
523 метод фильтрации, 26 множество длин, 104 множество совпадений, 136 молекула-мишень, 25 мономер, 15 морфизм, 105 нестирающий, 105 обратный, 106 ограниченный, 106 Уотсона–Крика, 57 мультимножество, 61, 379 мусор в ДНК, 265 направление (цепочки ДНК), 18 насечка, 38 нормальная форма, 111 Гефферта, 112 Куроды, 112 Пенттонена, 112 Хомского, 111 сильная, 111 нуклеаза, 30 нуклеотид, 16 ОПМ, см. обобщенная последовательная машина, 118 ОПМ-отображение, 92 область Уотсона–Крика, 157 обобщенная последовательная машина, 118 λ-свободная, 118 детерминированная, 118 Уотсона–Крика, 214 олигонуклеотид, 30 операция включить, 77 обнаружить, 61, 98 очистить, 77
524 разделить, 61, 76, 98 по длине, 62, 98 по префиксу (суффиксу), 62 размножить, 61, 98 слить, 61, 76, 98 опыт Эдлмана, 54 основание (часть ДНК), 15 основная лемма об универсальности (для Hсхем), 304 отжиг, 27, 98 частичный, 241 ПЦР, см. полимеразная цепная реакция, 44 переписывающая система, 108 перетасовка, 90, 106 пиримидин, 16 плавление, 98 погрешность, 95 подстановка, 105 подстрока, 104 полимер, 15 полимераза, 27 полимеразная цепная реакция, 44, 379 полу-AFL, 107 последовательный преобразователь, 118 правая производная, 106 правило сплетения, 287 правое частное, 106 праймер, 28 префикс, 104 приписывание, 104 проекция, 105 произведение, 105 пурин, 16
Предметный указатель РНК,
см. рибонуклеиновая кислота, 17
радиус (H-схемы), 296 регулируемое переписывание, 124 редактирование РНК, 242 ренатурация, 27 рестриктаза, 33 рибоза, 17 рибонуклеиновая кислота, 17 сайт узнавания, 34 сахар (часть ДНК), 15 секвенирование, 47 сентенциальная форма, 109 синтаксический моноид, 113 система Линденмайера, 94, 114 детерминированная, 115 размножающая, 115 расширенная, 115 табличная, 115 система Поста, 493 система репликаций, 473 однородная, 474 простая, 474 система со склейкой, 162 односторонняя, 164 простая, 164 простая регулярная, 186 регулярная, 164 с ограниченной задержкой, 163 склейка, 160 ограниченная, 161 слабое кодирование, 105 сплетение, 286, 287 двойное, 374 итеративное, 297 неитеративное, 287
Предметный указатель
525
стикер, 73 стикерная модель, 73 суффикс, 104 сшивка, 37 прямых концов, 39
перетасованных полукопий, 142 перетасованных полуотражений, 143 полулинейный, 105, 253 регулярный, 106 рекурсивно перечислимый, 110 строго локально тестируемый, 329
тезис Черча–Тьюринга, 85, 92, 132 теорема Майхилла–Нероуда, 113 Париха, 113 Хомского–Шютценберже, 114, 140 тимин (Т), 16 точечная мутация, 242, 362 трио, 107 удаление, 362 удаления, 242 универсальность, 144 урацил (У), 17 фермент, 27 модифицирующий, 41 фосфат (часть ДНК), 15 фосфодиэфирная связь, 18 функция роста, 116, 491 цитозин (Ц), 16 экзонуклеаза, 30 электрофорез, 22, 98 эндонуклеаза рестрикционная, 33 язык Дика, 114 перетасованных копий, 89, 139, 167, 208 перетасованных отражений, 141
Оглавление От редактора перевода . . . . . . . . . . . . . . . . . . . . . . Предисловие к русскому переводу . . . . . . . . . . . . . . . Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . Введение: суть молекулярных вычислений 1 Как устроена ДНК и как с ней работают 1.1 Строение ДНК . . . . . . . . . . . . . . . . 1.2 Операции над ДНК . . . . . . . . . . . . . 1.3 Секвенирование . . . . . . . . . . . . . . . 1.4 Комментарии к библиографии . . . . . . .
5 7 8 9
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
2 Начала молекулярных вычислений 2.1 Опыт Эдлмана . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Как решить задачу о выполнимости и взломать криптосистему DES? . . . . . . . . . . . . . . . . . . . . . . . 2.3 Переосмысление парадигмы вычислений . . . . . . . . . 2.4 ДНК-вычисления:надежды и предостережения . . . . . 2.5 Комментарии к библиографии . . . . . . . . . . . . . . .
15 15 26 47 51 53 53 63 85 94 100
3 Введение в теорию формальных языков 103 3.1 Основные понятия: грамматики, автоматы, грамматические системы . . . . . . . . . . . . . . . . . . . . . . . 103 3.2 Характеризации рекурсивно перечислимых языков . . 132 3.3 Универсальные машины Тьюринга и грамматики типа 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 3.4 Комментарии к библиографии . . . . . . . . . . . . . . . 155 4 Системы со склейкой 4.1 Операция склеивания . . . . . . . . . . . . . . . . . . 4.2 Системы со склейкой: классификация . . . . . . . . 4.3 Выразительная сила систем со склейкой . . . . . . . 4.4 Представления регулярных и линейных языков . . 4.5 Характеризации рекурсивно перечислимых языков 4.6 Дальнейшие результаты о регулярных системах . . 4.7 Комментарии к библиографии . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
156 156 162 167 177 181 185 193
Оглавление
527
5 Автоматы Уотсона–Крика 194 5.1 Конечные автоматы Уотсона–Крика . . . . . . . . . . . 195 5.2 Соотношения между WK-семействами . . . . . . . . . . 200 5.3 Характеризации рекурсивно перечислимых языков . . 208 5.4 Конечные преобразователи Уотсона–Крика . . . . . . . 213 5.5 Дальнейшие варианты конечных автоматов Уотсона– Крика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 5.6 Автоматы Уотсона–Крика с памятью Уотсона–Крика . 223 5.7 Универсальные автоматы Уотсона–Крика . . . . . . . . 231 5.8 Комментарии к библиографии . . . . . . . . . . . . . . . 240 6 Системы вставки и удаления 6.1 Вставка и удаление в контексте ДНК . . . . . . . . 6.2 Характеризации рекурсивно перечислимых языков 6.3 Односимвольные системы вставки и удаления . . . 6.4 Использование только вставки . . . . . . . . . . . . 6.5 Комментарии к библиографии . . . . . . . . . . . . .
. . . . .
. . . . .
241 241 243 258 266 280
7 Системы сплетения 7.1 От рекомбинации ДНК к операции сплетения . . . . 7.2 Неитеративное сплетение как операция над языками 7.3 Итеративное сплетение как операция над языками . . 7.4 Выразительная сила расширенных H-систем . . . . . 7.5 Простые H-системы . . . . . . . . . . . . . . . . . . . . 7.6 Комментарии к библиографии . . . . . . . . . . . . . .
. . . . . .
281 282 286 297 312 323 330
8 Универсальность и конечные H-системы 8.1 От 1-сплетения к 2-сплетению . . . . . . . . . . . 8.2 Разрешающие и запрещающие контексты . . . . . 8.3 Языки-мишени . . . . . . . . . . . . . . . . . . . . . 8.4 Программируемые и развертывающиеся системы . 8.5 H-системы, основанные на двойном сплетении . . 8.6 Мультимножества . . . . . . . . . . . . . . . . . . . 8.7 Результаты об универсальности . . . . . . . . . . 8.8 Комментарии к библиографии . . . . . . . . . . . .
. . . . . . . .
333 333 336 350 357 373 379 389 396
. . . . . . . .
. . . . . . . .
9 Сплетение циклических строк 398 9.1 Варианты операции сплетения для циклических строк 398 9.2 Еще один вариант и его возможности . . . . . . . . . . 403 9.3 Комментарии к библиографии . . . . . . . . . . . . . . . 413
528
Оглавление
10 Распределенные H-системы 414 10.1 Сплетающие грамматические системы . . . . . . . . . . 414 10.2 Взаимодействующие распределенные H-системы . . . . 427 10.3 Двухуровневые распределенные H-системы . . . . . . . 441 10.4 Распределенные H-системы, изменяющиеся во времени 450 10.5 Классы вычислительно полных H-систем . . . . . . . . 459 10.6 Комментарии к библиографии . . . . . . . . . . . . . . . 459 11 И вновь о сплетении 461 11.1 Ограниченное сплетение. Неитеративный случай . . . . 461 11.2 Системы репликаций . . . . . . . . . . . . . . . . . . . . 472 11.3 Комментарии к библиографии . . . . . . . . . . . . . . . 493 Список литературы
495
Глоссарий биохимических терминов
518
Предметный указатель
521
Георг Паун, Грегорж Розенберг, Арто Саломаа ДНК – компьютер. Новая прадигма вычислений Зав. редакцией академик В. И. Арнольд Зам. зав. редакцией А. С. Попов Ведущий редактор М. В. Волков Художник М. М. Иванов Технический редактор Е. В. Денюкова Оригинал-макет подготовлен А. А. Финогеновым в пакете LATEX 2ε с использованием кирилических шрифтов семейства LH Лицензия ЛР 010174 от 20.05.97 г. Подписано к печати . Формат 60 × 90 1/16 Печать офсетная. Объем 16, 5 бум. л. Усл.-печ. л. 33. Уч.-изд. л. 00. Изд. 1/9824. Тираж 2000 экз. Заказ Издательство «Мир» Министерство РФ по делам печати, телерадиовещания и средств массовых коммуникаций. 107996, ГСП, Москва, 1-й Рижский пер., 2. Диапозитивы изготовлены Отпечатано с готовых диапозитивов