Научная статья на тему 'Реализация мембранных алгоритмов с помощью марковских систем'

Реализация мембранных алгоритмов с помощью марковских систем Текст научной статьи по специальности «Математика»

CC BY
146
26
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Computational nanotechnology
ВАК
Область наук
Ключевые слова
МЕМБРАННЫЕ АЛГОРИТМЫ / КЛЕТОЧНЫЕ АВТОМАТЫ / СИСТЕМЫ ЛИНДЕНМАЙЕРА / ДНК-ВЫЧИСЛЕНИЯ / ГАМИЛЬТОНОВ ПУТЬ / ВЫПОЛНИМОСТЬ БУЛЕВЫХ ФОРМУЛ

Аннотация научной статьи по математике, автор научной работы — Ершов Николай Михайлович

Работа посвящена исследованию алгоритмических возможностей марковских систем на примере решения двух NP-полных задач поиска гамильтонова пути в ориентированном графе и задачи о выполнимости булевой формулы. Рассматриваются вопросы реализации мембранных алгоритмов решения этих задач, имеющих полиномиальную зависимость времени работы от размера задачи. Приводятся результаты численного исследования предложенных алгоритмов.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Ершов Николай Михайлович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

IMPLEMENTATION OF MEMBRANE ALGORITHMSWITH MARKOV SYSTEMS

The paper is devoted to the investigation of algorithmic possibilities of Markov systems by the example of solving two NP-complete problems searching for a Hamiltonian path and the problem of the satisfiability of a Boolean formula. The issues of realization of membrane algorithms for solving these problems having polynomial time dependence depend on the size of the problem are considered. The results of a numerical investigation of the proposed algorithms are presented.

Текст научной работы на тему «Реализация мембранных алгоритмов с помощью марковских систем»

1.4. РЕАЛИЗАЦИЯ МЕМБРАННЫХ АЛГОРИТМОВ С ПОМОЩЬЮ МАРКОВСКИХ СИСТЕМ

Ершов Николай Михайлович, канд. физ.-мат. наук, старший научный сотрудник, факультет ВМК МГУ им М.В. Ломоносова. E-mail: [email protected]

Аннотация: Работа посвящена исследованию алгоритмических возможностей марковских систем на примере решения двух NP-полных задач - поиска гамильтонова пути в ориентированном графе и задачи о выполнимости булевой формулы. Рассматриваются вопросы реализации мембранных алгоритмов решения этих задач, имеющих полиномиальную зависимость времени работы от размера задачи. Приводятся результаты численного исследования предложенных алгоритмов.

Ключевые слова: мембранные алгоритмы, клеточные автоматы, системы Линденмайера, ДНК-вычисления, гамиль-тонов путь, выполнимость булевых формул.

IMPLEMENTATION OF MEMBRANE ALGORITHMS WITH MARKOV SYSTEMS

Ershov Nikolay Mikhailovich, PhD in physics and mathematics, senior research associate, Faculty of Computational Mathematics and Cybernetics, Lomonosov Moscow State University. E-mail: [email protected]

Abstract: The paper is devoted to the investigation of algorithmic possibilities of Markov systems by the example of solving two NP-complete problems - searching for a Hamiltonian path and the problem of the satisfiability of a Boolean formula. The issues of realization of membrane algorithms for solving these problems having polynomial time dependence depend on the size of the problem are considered. The results of a numerical investigation of the proposed algorithms are presented.

Index terms: membrane algorithms, cellular automata, Lindenmayer systems, DNA computing, Hamiltonian path, Boolean satisfiability problem.

1. Введение

Возникновение мембранных систем и алгоритмов [7] связано с попыткой математической формализации теории молекулярных вычислений, в частности, ДНК-вычислений [3]. Большая часть исследований в области мембранных систем посвящена анализу их вычислительных возможностей, в том числе, разработке алгоритмов решения различных МР-полных задач. Разработанные в рамках этих исследований алгоритмы, однако, в отличие от классического эксперимента Адлемана [4] никак не реализуются, даже в форме компьютерных моделей. В настоящей работе предлагается подход к компьютерной реализации мембранных алгоритмов, основанный на использовании марковских систем -стохастической строковой перезаписывающей модели, имеющей общие свойства с такими классическими средствами низкоуровневого моделирования, как блочные клеточные автоматы [14] и системы Линденмайера [12]. В работе рассматриваются две классические МР-полные задачи - задача поиска Гамильтонова пути в ориентированном графе и задача о выполнимости булевой формулы. Приводятся результаты компьютерного моделирования, подтверждающие теоретические оценки быстродействия предложенных мембранных алгоритмов.

2. Марковские системы

Марковские системы (далее просто М-системы) являются разновидностью строковых перезаписывающих систем, работа которых основана на использовании строковых подстановок. Свое название эта модель получила в силу большой ее схожести с алгоритмической моделью Маркова. Принципиальным отличием М-систем от других подобных моделей является ее стоха-стичность - применение подстановок определяется только вероятностным образом.

Особенностью марковских систем по сравнению с другими строковыми перезаписывающими системами (формальные грамматики, алгоритмы Маркова) является способ применения подстановок. Текущая цепочка символов на каждом шаге эволюции случайным образом разрезается на подцепочки, и далее все такие подцепочки одновременно заменяются на новые согласно заданному набору подстановок. Как и в стохастических ^системах, набор подстановок может содержать более одной подстановки с одинаковой левой частью - выбор нужной осуществляется вероятностным образом.

100001100101001101

100 О 01 10 О 101 0 011 в

100 I 01 10 I 101 1 011 10

100101101101101 I 10

Рис. 1. Пример применения М-системы {01 ^ 10[05], 0 ^ 1} к заданной цепочке.

Назовем подстановкой тройку ст = (а, р, р), в которой а и р - цепочки в некотором алфавите. Цепочка а называется левой частью подстановки, цепочка р - ее правой частью; р - действительное число из интервала [0, 1], вероятность применения подстановки. Для подстановки ст будем использовать обозначение а ^ ри (или а ^ р, если вероятность р применения подстановки равна единице). Назовем М-системой набор подстановок Е, для которого выполняется следующее свойство: суммарная вероятность всех подстановок, имеющих одинаковую правую часть, не превышает единицы.

Процесс применения подстановок к заданной цепочке символов состоит в последовательном выполнении следующего алгоритма (рис. 1):

1. текущая цепочка случайным образом разделяется на подцепочки;

2. каждая полученная подцепочка заменяется новой согласно заданному набору подстановок с учетом их вероятностей (метод рулетки);

3. все подцепочки, полученные в результате второго шага, соединяются и образуют новую текущую цепочку.

Моделирование с помощью марковской системы заключается в выборе начальной цепочки и последовательном применении к ней описанного алгоритма. Если для любого правила данной М-системы длина левой части равна длине ее правой части, то эволюция этой системы не меняет длины начальной цепочки. Такие системы могут рассматриваться, как некоторый вид блочных клеточных автоматов [14]. Если же в системе имеется правило с несовпадающими длинами правой и левой частей, то длина цепочки может меняться. Такие системы оказываются ближе к системам Линденмайера [12, 13].

3. Примеры М-систем

Рассмотрим несколько примеров М-систем. Простейшим примером является система, состоящая из единственной подстановки Е1: а ^ Хи. Применение этой системы к цепочке символов а" (символ а, повторенный п раз) приводит к постепенной замене всех символов а исходной цепочки на «пустые» символы X (рис. 2, вертикальная ось - время). Так как вероятность такой замены все время сохраняется постоянной, то концентрация

символов а (их количество, отнесенное к длине п всей цепочки) будет убывать по экспоненциальному закону.

В качестве второго примера рассмотрим М-систему, являющуюся простейшей моделью диффузионного процесса: Е2: аХ ^ Ха. Под действием данной системы каждый одиночный символ а совершает случайные блуждания по заданной цепочке. Если в начальной цепочке символы а образуют непрерывный кластер (рис. 3), то результатом применения данной системы будет постепенное размытие этого кластера, так что символы а в конце концов окажутся равномерно распределенными по всей цепочке (при том, что их количество будет сохраняться постоянным).

Рис. 2. Эволюция системы Е^

Рис. 3. Эволюция системы Е2.

Следующим примером является простейшая волновая модель, в которой непустые символы моделируют некие частицы, в отсутствие помех движущиеся с постоянной (в среднем) скоростью вправо или влево. Символы и будут означать частицы, движущиеся вправо, символы V- частицы, движущиеся влево: Е3: иХ ^ Хи[р], XV ^ vX[p], uv ^ vu, их ^ vx, XV ^ хи.

Первая и вторая подстановки определяют закон перемещения частиц, при этом вероятности этих подстановок неявно задают скорость движения частиц. При столкновении частицы обмениваются скоростями (третья подстановка). Предполагается, что цепочка ограничена справа и слева символами х - «стенками», от которых упруго отражаются частицы (последние две подстановки). Если применить такую систему к начальной цепочке, ограниченной символами х, в середине которой расположен кластер из символов и и V (перемешанных в случайном порядке), то спустя короткое время произойдет разделение начального кластера на две «волны», движущиеся вправо и влево (рис. 4). Эти волны отражаются от стенок и проходят сквозь друг друга. При этом

наблюдается некоторое рассеяние волн, обусловленное вероятностным характером законов движения.

Рис. 5. Эволюция системы Z4.

В качестве последнего примера рассмотрим простую модель роста. Объекты (например, бактерии) представляются символами a:

S4: aX ^ Xa[p], aX ^ aalq], Xa ^ aalq].

Каждый объект совершает случайные перемещения с вероятностью p по цепочке (первая подстановка). С вероятностью q эти объекты создают свои копии, т. е. делятся на два объекта (вторая и третья подстановки), если рядом с ними есть свободное место. При этом должно выполняться условие p + q < 1. На рис. 5 показаны результаты моделирования такой системы, в которой начальная цепочка длины содержит единственный символ a.

М-системы, несмотря на свою принципиальную стоха-стичность, могут демонстрировать весьма широкий спектр типов поведения [2] - от неупорядоченного, как в рассмотренных выше примерах, до упорядоченного (алгоритмического). Последнее оказывается возможным благодаря алгоритмической универсальности данной модели. С этой точки зрения, М-системы могут рассматриваться в качестве параллельной алгоритмической модели. Причем, благодаря тому, что длина цепочки в процессе эволюции М-систем может возрастать экспоненциально быстро, оказывается возможным реализация параллельных алгоритмов решения некоторых NP-полных задач за полиномиальное время. Например, ниже нами будет рассмотрена реализация с помощью М-систем двух мембранных алгоритмов для решения задачи поиска гамильтонова пути и задачи о выполнимости булевой формы.

4. Мембранные системы и алгоритмы

Мембранная система [9] представляет собой набор мембран, вложенных друг в друга. Внутри мембраны помимо других мембран могут располагаться различные объекты, обычно представляемые символами некоторого алфавита А. При этом содержимое мембраны является неупорядоченным, таким образом, можно считать, что набор символов внутри мембраны представляет собой мультимножество. Мультимножества записываются в виде символьных цепочек, например, мультимножество {о, Ь, а, с, а, с} может быть компактно

Зи 2

записано в виде а Ьс, где знак степени над символом указывает сколько раз входит этот символ в заданное мультимножество.

Мембранная система является динамической системой, ее развитие во времени определяется правилами эволюции, которые разделяются на несколько типов. Базовыми являются правила эволюции мультимножеств внутри мембран. Каждое такое правило имеет вид и ^ V, где и и V- некоторые мультимножества над алфавитом системы. Если левая часть правила является подмножеством содержимого мембраны, то это подмножество может быть заменено на левую часть правила. Стандартная схема применения правил основана на принципе максимального параллелизма - в каждый момент времени применяются все правила, которые могут быть применены в данный момент. При этом возможно возникновение конфликтных ситуаций, когда несколько правил претендуют на одни и те же символы. Стандартных способов разрешения конфликтов нет, конфликтами можно частично управлять, используя механизмы приоритетов правил или поляризации мембран.

Рис. 6. Пример мембранной системы и ее древовидного представления.

Помимо внутримембранной эволюции символы могут перемещаться между мембранами, при условии, что одна из мембран непосредственно вложена в другую. Имеются несколько типов правил и для эволюции самой мембранной структуры, например, правила уничтожения мембраны, в процессе выполнения которого все ее содержимое перемещается во внешнюю мембрану. Другой вид правил задает деление мембран. Если внутри мембраны образуется активатор деления О (мультимножество), то мембрана делится на две, причем содержимое исходной мембраны копируется в обе дочерние мембраны, а активатор замещается в одной мембране на мультимножество V, в другой - на 1/У (так называемая специализация дочерних мембран).

Под мембранным алгоритмом понимается мембранная система, эволюция которой сводится к выполнению некоторого алгоритма. При этом входные данные алгоритма кодируются в виде начальной конфигурации мембранной системы, а результат представляется конфигурацией, полученной в результате ее эволюции. Известно, что при некоторых условиях (например, при наличии приоритетов правил) мембранные системы являются алгоритмически универсальными [11]. Вместе с тем, даже простейшие мембранные системы, использующие только правила внутримембранной эволюции и правила деления, могут решать отдельные классы вычислительных задач. В силу того, что 1) эволюция системы происходит параллельно; 2) степень параллелизма может быстро меняться со временем (например, за счет экспоненциального роста числа мембран), мембранные системы могут быть использованы для решения ряда МР-полных задач за полиномиальное время [10].

5. Задача поиска гамильтонова пути

Задача поиска гамильтонова пути в ориентированном графе заключается в нахождении такой перестановки Р всех вершин графа, что 1) она начинается с первой вершины: Р1 = 1; 2) каждые две соседние в перестановке вершины Р1 и Р1 + 1 связаны в графе дугой. Ответом задачи является всего один бит информации: 1 - если искомый путь существует, и 0 - если такого пути в графе нет.

Недетерминированный мембранный алгоритм решения этой задачи состоит из трех этапов [1]. На первом этапе исходная мембрана, в которой закодированы условия задачи, делится на 2 копий в результате выполнения N шагов деления (первый шаг - две мембраны, второй - четыре и т.д.).

На втором этапе внутри каждой мембраны производится случайный поиск гамильтонова пути. Если поиск завершается успешно, то внутри мембраны генерируется маркер 5, если не успешно, то генерируется маркер /. На третьем этапе производится уничтожение всех мембран и генерация ответа: 1 - путь найден, 0 - путь не найден. Управляя параметром N можно регулировать вероятность ошибочного отрицательного ответа (положительный ответ всегда правильный), делая ее сколь угодно малой.

Рассмотрим реализацию такого мембранного алгоритма с помощью марковской системы. Мембрана в такой системе будет представляться цепочкой символов в алфавите А, заключенной в круглые скобки (границы мембраны). Для моделирования неупорядоченности

содержимого мембраны введем в систему набор перемешивающих подстановок вида аЬ ^ Ьа[6], которые с вероятностью 6 меняют местами любые два соседних символа а, Ь е А. Параметр 6 при этом играет роль температуры системы, чем больше 6, тем более активным является процесс перемешивания.

Начальная мембрана содержит символы а,р соответствующие дугам графа (т.е. условия задачи) и набор символов и,, / = 2, ... ,п, представляющих список еще не посещённых вершин графа. Например, для графа на рис. 7 начальная мембрана будет иметь следующий вид

(а12а13а14а2за24а34и2и3щ).

Заметим, что в этом графе имеется единственный тривиальный (в данной нумерации вершин) гамиль-тонов путь Р = [1, 2, 3, 4].

1 -- 2

4 «- 3

Рис. 7. Пример графа, имеющего единственный гамильтонов путь.

Первая стадия мембранного алгоритма заключается в получении 2Л' копий исходной мембраны после выполнения цикла деления, состоящего из N шагов. Чтобы выполнить деление заданной мембраны на две (почти) идентичные копии, предлагается следующий подход. Деление начинается при появлении внутри мембраны специального символа - активатора деления С. После того, как такой символ образовался, он делится на два маркера С и С+, которые начинают «двигаться» вправо и влево соответственно. При своем движении эти маркеры дублируют каждый встречающийся на их пути символ, помечая их знаком плюс или минус. Символы, помеченные минусом, начинают смещаться влево, а помеченные минусом - вправо. После того, как маркеры С достигнут границ мембраны, они преобразуются в маркеры е, движущиеся в противоположную сторону. Новые маркеры движутся только по символам, помеченным тем же знаком (плюсом или минусом), снимая с них этот знак. Процесс деления завершается, когда маркеры е и е+ встречаются друг с другом: ее ^ )(. Пример выполнения деления для мембраны с алфавитом А = {а, Ь} показан на рис. 8. Для ясности в этом примере не применялось перемешивание символов из А.

( a b a dr d+ Ь Ъ a )

Щ « > i> " Q

в а Ь d~ я~ !,+ Щ 1+ i a a

1 d ■ ь (il в 6+ fi 1. j t ■

( а d~ ъ- а~ u+ h- ii+ Ei- ),+ d+ ft ï

В - 1 " 6 !>< n f> Oii fpl Ь 1 a + ïï )

и- о" n+ Ь~ Ь+ а- b~ o+ ¿1" 6+ il+ ft- ft+

В@ ÎL~ || ь~ „~ Ь+ 1,- „Г h' h+ ),+ a+

шг- а~ ь- а4" а" i>+ Ь~ |+| Ь~ 6+ Ь+ a~ ш « в

1 и" fr- 11+ £1 Ь+ (>" iL" 1Г ),+ a~ i IB

D а" ь- о" Ь+ Ъ~ в+ Ь~ Ъ+ a' Ц Ü " T

g » Б~ ь- а~ а ' fi b+ a" Ь a p iB

1 « ъ с а~ Щ ь- 6+ a4" b~ a~ I, «1

в * ь е~ а" «* щ e+ b b « в

! ь с~ а~ Ь~ b+ (1+ il" n" fi+ b b a i

И ь а ii- а4" a4 a~ e+ b b » D

■ ■ ь а Ь fi" г?.1'1 b d ' t> d e+ b b "i

ь а ь к- а+ b+ b~ o+ 0" e+ b b a в

В 3 ь а ь с/ о. - b * b ri d ' e b b в

в ь а ь rz, fi n b~ b+ a- a+ e+ b b « в

в ■ ь о ь В- b~ ti+ l>+ n~ 11+ i b b • a

в ь а ь ii щ a+ b+ a~ e+ a b b - i

в ь й ь Ь i- a~ 1,+ ,.+ a b b 11

в * ь î ь ь a" a'b^ e^ а h b в

1« Ь а ь Ь а èTa+z* b a b b i m

Н" Ь а 1, Ii n er <: + a h it b b « в

в» ь а ь Ь а BB « i а b b 'J Ш

Рис. 8. Пример деления мембраны (abadbba), d_ активатор деления.

Чтобы провести еще один цикл деления (после которого образуются уже четыре копии исходной мембраны) надо на последнем шаге в каждой из двух

мембран образовать еще по одному активатору де-

* _ + * *

ления d : e e ^ d )(d . Заметим, что второй активатор должен отличаться от первого, иначе процесс деления зациклится. Поэтому, чтобы выполнить ровно N циклов деления, введем N активаторов dk (и соответствующих им маркеров), для каждого из которых действуют вышеописанные правила деления. В начальную цепочку следует добавить активатор dN. Во всех цепочках, полученных в результате выполнения полного цикла деления, будет присутствовать символ d0, который можно использовать для активации следующей стадии алгоритма.

Обозначим длину цепочки m. Так как один цикл деления сводится к прохождению маркеров вдоль цепочки (m символов до достижения скобок и 2m на обратном пути), то следует ожидать, что время выполнения одного деления будет линейным относительно m. Эта оценка подтверждается численным моделированием описанной системы. На рис. 9 построена зависимость времени одного деления от длины цепочки для двух случаев, когда активатор деления находится а) ровно посередине цепочки (синие маркеры); б) на ее краю (оранжевые маркеры).

Рис. 9. Зависимость времени t одного деления мембраны от длины цепочки т.

Таким образом, полное деление потребует времени порядка й(тЫ). Так как длина исходной цепочки равна сумме числа дуг и числа вершин графа, то получаем, что т = й(п2). Для корректной работы алгоритма необходимо, чтобы N = 1о§2(у • (п - 1)!), где у > 0 - параметр, управляющий вероятностью ошибки. Таким образом, можно оценить, что N = 0(п • 1о§2 п). Следовательно, общее время деления, результатом которого будет 2Л' копий исходной мембраны, оказывается величиной порядка

^ = 0(п3 • 1о§2 п).

Заметим, что при «включенном» перемешивании символов, в процессе деления попутно будет выполняться перемешивание символов исходной цепочки. Таким образом, после завершения полного цикла деления каждая мембрана будет содержать идентичный набор символов, но расположенных в произвольном порядке.

Как только в мембране образовался символ Ь0, в ней может начинаться поиск гамильтонова пути. Процедура поиска очень проста. Поиск начинается с образования символа текущей вершины х1 (вершина, с которой начинается искомый гамильтонов путь) и символа счетчика числа не посещенных вершин tn _ 1 ^ х^п _ ^ На каждой «итерации» алгоритм пытается перейти с текущей вершины на одну из не посещенных вершин, которые обозначаются символами и,. Это достигается с помощью двух реакций. В первой из них текущий символ х,■ соединяется с одним из символов и в символ г,После этого проверяется, есть ли в графе соответствующая дуга, обозначаемая символом а,. Если есть, то совершается переход ву-ую вершину: га, ^ Щру Теперь текущей является вершина х,, кроме того, в мембране образовался символ V, обозначающий одну посещенную вершину. Этот символ реагирует со счетчиком t|< и «понижает» его значение на единицу: ^к ^ tk_ ^ Если в мембране имеется символ а,, то его слияние с символом г, рано или поздно произойдет, текущий путь удлинится на одну вершину и поиск будет продолжен с новой вершины. Если же соответствующей дуги в графе нет, то процесс поиска остановится, что означает отрицательный результат для данной мембраны. Положительный результат достигается, если окажутся посещенными все вершины, при-

знаком чего служит появление в мембране символа ^ (число не посещенных вершин равно нулю).

Оценим время работы описанной схемы. Имеется (п - 1) вершина для посещения, т.е. в худшем случае будет выполнена (п - 1) итерация. На каждой итерации выполняются два шага. На первом шаге единственный символ х/ должен прореагировать с одним из символов иу, число которых изменяется в процессе работы от (п - 1) до 1. На втором шаге должны прореагировать уже два уникальных символа гу и а,у. Очевидно, что больше времени потребуется на второй шаг, т.к. механизм реакции основан на случайном блуждании этих символов внутри мембраны. Среднее время выполнения подстановки на втором шаге можно оценить, как й(т2), исходя из схожести данной задачи и задачи о разорении игрока [5].

30

25 рг

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

20 /У

О /

X рг

10 " л*®

% 100 200 300 400 500

т

Рис. 10. Зависимость времени случайного блуждания от длины цепочки.

2.5 -

1.8 -1-1-1-1-

0 100 200 30(1 400 S0CI

т

Рис. 11. Зависимость логарифма времени случайного блуждания от длины цепочки.

Для того чтобы численно оценить среднее время реакции двух символов, совершающих случайные блуждания в заданной цепочке, было проведен компьютерный эксперимент. Две частицы совершают случайные блуждания по точкам с целочисленными координатами вдоль отрезка [1, т]. Каждая частица с заданной вероятностью перемещается в соседнюю с ней точку (не

выходя за пределы отрезка). Когда две частицы оказываются в соседних узлах, с некоторой вероятностью процесс блуждания завершается. На рис. 10 построена зависимость среднего времени t до завершения процесса блуждания от длины отрезка т. Оранжевая линия соответствует результатам численного эксперимента, зеленая линия представляет собой график параболы t = к т2. На рис. 11 построена зависимость logm 1(т), ясно показывающая, что при больших значениях т искомая зависимость является квадратичной.

Таким образом, время выполнения подстановки гуау ^ щ зависит квадратично от длины цепочки т, следовательно, зависимость этого времени от числа вершин графа имеет вид 0(п4). Так как всего совершается п итераций, то общее время выполнения второго этапа алгоритма оказывается величиной порядка 0(п5).

Если в заданной мембране образовался символ то это означает, что в этой мембране был найден гамиль-тонов путь. В этом случае, символ ^ заменяется маркером 5, который производит удаление всех оставшихся символов в мембране, после чего уничтожает саму мембрану: (5) ^ 1.

Намного сложнее ситуация, если поиск пути в данной мембране зашел в тупик, т.е. был сгенерирован символ гу, но соответствующего символа ау в мембране нет. В этом случае, чтобы избежать бесконечного зацикливания алгоритма, предлагается следующий подход. В мембрану добавляется (например, при старте второго этапа алгоритма) дополнительный символ х, который с малой вероятностью р реагирует с символами гу и превращает их в маркер /неудачного поиска. Если в мембране присутствуют оба символа гу и ау, то при условии, что вероятность р много меньше вероятности р, данное правило в среднем будет срабатывать намного реже, чем правило гуОу ^ щ. Однако в тех случаях, когда поиск заходит в тупик, это правило будет срабатывать гарантировано. После того, как маркер /образовался, он ведет себя так же, как и символ 5, т.е. удаляет все оставшиеся символы внутри мембраны и уничтожает саму мембрану: (/) ^ 0.

Теперь, чтобы завершить решение задачи, надо применить операцию дизъюнкции ко всем полученным после уничтожения мембран символам 0 и 1: 00 ^ 0, 01 ^ 1, 10 ^ 1, 11 ^ 1.

Сложность третьего этапа (уничтожение всех мембран и генерация ответа) составляет величину порядка й(п2), т.к. удаление символов внутри мембраны выполняется строго последовательно и поэтому требует времени пропорционального длине мембраны. После уничтожения мембран образуется 2Л' символов 0 и 1, которые сворачиваются в один результирующий символ за время порядка N = 0(п • 1о§2 п). Таким образом, сложность этого этапа можно оценить как й(п2).

Рис. 12. Зависимость вероятности правильного отрицательного ответа от параметра у. Общая сложность предложенного алгоритма определяется самым сложным его этапом - поиском пути в мембране, и поэтому оценивается величиной O(n5). Другими словами, алгоритму требуется полиномиальное время для решения задачи, что, естественно, достигается за счет экспоненциального пространства (памяти, при компьютерной реализации).

Особенностью предложенного алгоритма является то, что его отрицательный ответ может быть ошибочным (положительный ответ всегда является точным). Вероятность ошибки определяется параметром у. Например, в худшем случае, когда в графе имеется ровно один гамильтонов путь, вероятность его не обнаружения алгоритмом оценивается как Perr = e-Y. На рис. 12 построен график зависимости вероятности правильного отрицательного ответа от параметра у для случая n = 5 (граф аналогичен графу на рис. 7). Маркерами на графике отмечена зависимость, полученная численным моделированием, сплошная линия соответствует теоретической оценке. 6. Задача о выполнимости булевой формы Задача о выполнимости булевой формулы (SAT) ставится следующим образом [8]. Имеется логическая функция от т переменных, заданная в виде формулы, требуется определить - равна ли эта функция тождественному нулю или хотя бы на одном наборе значений переменных она обращается в единицу (выполняется). В стандартном варианте такой задачи считается, что функция задана в виде нормальной конъюнктивной формы (КНФ), т.е. представляется в виде логического произведения нескольких элементарных дизъюнкций. Известно, что задача в такой формулировке является NP-полной, т.е. на настоящий момент для нее не известен ни один полиномиальный алгоритм решения [7]. В минимальном варианте, когда задача о выполнимости

КНФ все еще остается NP-полной, каждая элементарная дизъюнкция включает в себя ровно три переменных, взятых с отрицанием или без него. Такая задача называется задачей SAT3.

Рассмотрим мембранный алгоритм решения задачи SAT, основанный на использовании марковских систем. В отличие от предыдущего алгоритма, в данной задаче мы будем использовать мембраны с упорядоченным содержимым. Это позволяет упростить алгоритм и существенно ускорить его работу.

Представим задачу SAT в виде цепочки символов следующим образом:

- цепочка ограничена с обеих сторон круглыми скобками;

- сразу за открывающей скобкой перечисляются символы переменных, участвующих в формуле, список переменных (заголовок формулы) завершается двоеточием;

- за двоеточием идет сама формула, в которой операция дизъюнкции кодируется пустой цепочкой (например, ab означает a v b), операция конъюнкции кодируется символом л, операция отрицания - восклицательным знаком.

Предложенный подход к кодированию задачи позволяет отказаться от скобок (за счет «неправильного» приоритета операций), что приводит к уменьшению:

а) алфавита системы;

б) длины цепочки;

в) времени решения задачи.

Ответом на поставленную задачу должна быть выходная цепочка, состоящая из единственного символа 0, если заданная формула не выполнима, и символа 1 -если она выполнима.

Идея алгоритма заключается в следующем. Берется первая переменная, стоящая в заголовке, и по ней производится деление формулы на две новые формулы, в первой из которых выбранная переменная заменяется на 0, во второй - на 1, сама выбранная переменная удаляется из заголовка в обеих дочерних формулах. После этого каждая из новых формул делится по следующей переменной и т.д. Очевидно, что в результате будет получен набор из 2т формул (т - число переменных задачи), в каждой из которых в качестве операндов используются только логические константы 0 и 1, и каждому возможному набору значений переменных соответствует ровно одна формула (одна мембрана). На втором этапе все 2т формул (к этому времени - уже логических выражений) вычисляются параллельно, и к их результатам применяется операция дизъюнкции: если получена хотя бы одна единица, то генерируется ответ 1, если же получаются одни нули, то генерируется ответ 0.

Ь А ! а с а Ь Л ! а

)

л

а - а а Ь Л ! а с )

а а 3 (Г Ь Л ! а с )

а а Ь а Л ! а с }

н а ь Л (г ! а с )

а а 5 ь Л а а с )

а а ь Л а а с }

а а ъ Л а £Г с )

а а ъ Л ЕЭ а (Т с )

0 а I* ь Л г4 а а С )

0 а 1* ь Л а а < Е

0 а ь I1 Л а а

0 а ь Л 0 а ■ £7 -и

0 а ь А ! | * « • & - га

0 а ь Л I 1 Т а - с -га

0 а ь Л ! 1 * а с | )

0 Ь а ь- Л 1* а с | >

0 Ь а Л 0 Г а с - 1 )

0 Ь а А а а а с § : )

0 ь а Л у а с

0 Ь а Л а а с 1* 1 : )

0 Ь а Л а а с 1 Г : )

0 ь а Л а а с I : Г )

0 Ь А а * 1 а с 1 : 1 *

0 Ь Л а Ъ* а с 1 :

о ь а а л* ! г»*

о ь л

! л* к

I : ) I = 1* )

О Ь А а ! л* ь*

I

ОЬлН!МаЬЯгП

' .)] а

ш □

О Ь А 1 а О* с Л" I Ь* : I )

О Ь А а [ а Л*

- у с I

ь: I

л- | ;.■

О Ь л

о ь л 1

0-> Л- I . ;<• 1 ;

с о* ; л- : ь• )

(.■• О* Л* : Ь' 1

й | с-; о- /

) ( ШШ

■ : Ь- 1 А' : ь*

О Ь А I с: ) (с- : О* Л* I

Э

О (> Л 1 к ) ( и" -. (Г у 1 Ь О Ь А 1 и ) ( с" : (Г 1 Ь О Ь А 1 с ) ( с" : 1 О" ^ Ь О Ь А 1 с ) ( г с' 1 О* ^ 6 О Ь А I с [)] (

О Ь л I

О Ь л

О Ь А I

□ Е

□ с

С ) (

4

= Ш (

<■ га с

1 с- О* л* Ь I II- Л'

1 с- О" Ь Л I с' Ь О*' л

1 Ь с" л О*

I Ь Л С-

1 ь л о

0

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

О Ь Л I с) ( : 1 Ь Л О с

Рис. 13. Пример деления формулы по переменной а.

Для деления формулы по первой переменной предлагается следующая схема (рис. 13), описываемая системой подстановок Процесс деления формулы начинается с преобразования ей первой переменной в пару символов - модифицированное имя той же переменной (модификатор) и маркер ст. Маркер движется вправо по формуле и, достигнув закрывающей скобки, превращается в символ |, который в дальнейшем будет служить разделителем двух дочерних формул.

Модификатор переменной также движется вправо, но в отличие от маркера по пути своего следования совершает дополнительные действия, например, создает копии всех символов на своем пути, которые сами перемещаются в правую дочернюю формулу. Кроме того, этот символ заменяет все вхождения текущей переменной на пару 0 и 1, из которой 1 также перемещается в правую дочернюю формулу, а 0 остается в левой формуле. Наконец, когда модификатор переменной доходит до символа |, процесс деления завершается созданием пары скобок, что приводит к образованию двух новых формул.

Заметим, что как только началось деление формулы по первой переменной, и модификатор сдвинулся на одну позицию вправо, уже может начинаться деление этой же формулы по второй переменной и т.д. Однако деление правой копии формулы не начнется до тех пор, пока деление текущей формулы не будет выполнено до

конца. Другими словами, деление левой копии исходной формулы накладывается на деление исходной формулы, а деление правой копии начинается только после завершения деления исходной формулы.

Оценим временную сложность описанного алгоритма. Деление одной формулы по одной переменной занимает время порядка О(п), где п - длина исходной формулы, т.к. процесс деления начинается с образования модификатора переменной на левом конце формулы, и завершается, когда он достигнет ее правого конца. После того, как формула поделилась по одной переменной, обе ее копии могут уже параллельно делиться по второй переменной, потом четыре полученных копии опять параллельно делятся по третьей переменной и т.д. Таким образом, полное время деления оказывается величиной порядка О(п ■ т), где т - число переменных формулы. Этот вывод иллюстрируется рис. 14, на котором показана зависимость времени выполнения деления от произведения п ■ т, для различных сочетаний этих параметров. По вертикальной оси графика отложено время ^ одна единица времени соответствует 200 шагам эволюции системы (это же справедливо и для всех последующих графиков). Видно, что указанная зависимость, в самом деле, носит линейный характер.

На рис. 15 показано, как с течением времени изменяется длина цепочки (п = т = 10). Видно, что рост длины цепочки имеет сигмоидальный характер.

Рис. 14. Зависимость времени полного деления цепочки от параметра п - т.

Рис. 15. Зависимость длины N цепочки от времени t.

Процесс деления (по всем возможным переменным) завершается, когда справа от открывающей скобки оказывается расположенной не переменная, а двоеточие (пустой заголовок формулы). При достижении такой ситуации символ двоеточия из формулы удаляется и стартует этап вычисления сформированных логических выражений, описываемый системой подстановок Еета|.

После того, как первоначальная формула, содержащая т переменных, полностью поделилась, полученная в результате этого цепочка будет содержать 2т логических выражений, каждое из которых заключено в скобки и состоит из логических констант 0 и 1 и операций конъюнкции (напомним, что операция дизъюнкции кодируется пустой цепочкой). Вычисление каждого выражения должно начинаться с выполнения операций дизъюнкции (в рассматриваемой модели эта операция имеет больший приоритет), что реализуется следующими четырьмя подстановками:

00 ^ 0, 01 ^ 1, 10 ^ 1, 11 ^ 1.

После этого происходит вычисление логического произведения полученных нулей и единиц, которое выполняется слева направо, открывающая скобка при этом опять служит активатором процесса. Чтобы произведение логических констант равнялось единице необходимо, чтобы каждый множитель был единицей. Значит, если встречается хотя бы один ноль, то все выражение оказывается равным 0. Таким образом, если справа от

открывающей скобки стоит единица, за которой идет операция конъюнкции, то эта пара символов просто стирается. Если же правее скобки оказывается 0, то сама скобка заменяется фигурной скобкой, означающей, что результат вычисления равен 0 и не зависит от того, какие множители расположены в формуле правее. В результате применения этих подстановок, мы получим выражение, состоящее из единственной константы, заключенной в скобки, причем открывающая скобка будет либо круглой, либо фигурной. Если скобка круглая, то результатом будет цифра, стоящая в скобках, если же открывающая скобка фигурная, то результат в любом случае равен нулю.

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

На рис. 16 приведен пример работы описанной системы подстановок, примененных к цепочке, содержащей 8 выражений, полученных делением одной формулы.

П01Л1 1С] (000л! 113(01 |Л(ПОЗ(01ПЛ101тлП10}( 1ПОЛП1 '3 С1 ПЛООО) [110Л001) 01Л1И])(ПОЛП1}(ПЛ1ПО}(01ПЛ1П1)(1 1Л010](10Л011|[(1 Плои] (110Л01| 0]л| ]П) (00Л11}(11Л100) ((ПОЛЮ |)( I ]Л010) ПОЛО |}( ] ] |ЛПО)(ПОЛО|) С :л]0^ (00Л11]( 11Л] 00|; и]ОЛ]012 (илою] ;I ело 1} ' I 1 1ЛОП)( ПОЛО!) 0]Л|)(Г10Л1 1 }(1 |л|00)(()3()л]ги) (] |Л0Ю}( 1Л0 |}( 1 ] |ЛО())( 110Л01) 1>1л]) < с ал: 1) (1 |л1ш1)(01пл]ш}( плшп) (<п) (11лис] (ппл]) 0]Л|)(Г10Л1 1 |л|00)(()3()л] I)( I ]Л010)< I) ( ПЛ00}( I ]0Л|)

": Л1) <гол11)( 11лто)(о1ил11)(11лш) (1) (илоо) [пол1)

0]Л1)((ШЛ1 )(1 ]Л10|]) [010л] ]) (I 1Л01 )0 }Ол(3) ( ПОЛ]) СИЛ])(ООЛ1)(11Л1<>Ц) [июли)(11Л1] (1)( 1ли) (10Л1) О]лI )(()0Л1 )(1 ]Л100) [010л] }(] 1Л1) (1) (1Л0}( 10Л1} 1Л1)[ииЛ1)(1Л1Ц){ 10Л1)(11Л1](1)(1М1](10Л1) 1ЛЗ) (Ш1Л1) (|Л]Г|)( 10Л1) (I]л|)(|ЛП)( 1Л1) 1Е (ООЛ1 ] (11Л111|[;( 10Л1Й (11Л1 [] (1)'(ЗЛи)(1Л1)

[](ПЛ1)(1Л313)110Л1)(ИЛ1)(1)(1ЛГ|)(1ЛЗ) (ОЛ1)(1л1и)(1Л1)(ПЛ1)П)[1^иЗ(1лЗ)

(ОЛ|)(|01(1Л1;(ПЛ1}(1)(1ЛО)(1Л1) (ОЛИ(Ю)П>(11Л1](1)(1ЛО>(1Л1) (0л1)(1)(1)(1л1)1 I)(1ло)(1л1)

(ОЛ1)(|)(])(1Л1)1(1Л0)[1Л1) (0Л))(1)(1)(1}1(!Л0)(1Л1) (ОЛ1Н П11( 1ло) (1Л1} (ОЛ[)( |)(])1(1ли)(1Л1) (1)(1)(1)'1[1Л0){1ЛП (1}(1)(П'1[0)(1Л1) {1)(0'(1)1О(1Л|)

(1)(1)(П'1[1)

ОВКФОЙ

014)1(13 ЧФР) ПШП ШЧ

ко:

Рис. 16. Пример эволюции системы Еета|.

Оценим сложность стадии вычисления. Каждое отдельное выражение вычисляется за время пропорциональное количеству сомножителей (операций конъюнкции). Второй этап (дизъюнкция 2т нулей и единиц) может выполняться параллельно, т.е. с экспоненциальной скоростью. Это значит, что время выполнения второго этапа линейно относительно т. Таким образом, общее время стадии вычисления есть величина порядка 0(т + к). Эта оценка подтверждается численным исследованием, результаты которого отражены на рис. 17, на котором построена зависимость времени работы систе-

мы Eeval от суммы m + к, для разных сочетаний параметров m и к.

Рис. 17. Зависимость времени вычисления выражения от параметра m + к.

Рис. 18. Зависимость длины N цепочки от времени t для системы Еета|.

На рис. 18 показано, как меняется со временем длина цепочки (полученной при построении рис. 15). Видно, что вычисление выражений выполняется намного быстрее, чем их генерация.

ходной формулы, которая использовалась при построении графиков 15 и 18. Видно, что максимальная длина цепочки в процессе эволюции оказывается в этом случае почти в пять раз меньше по сравнению с рис. 15. Это обусловлено тем, что часть выражений в процессе эволюции системы уже начинает оцениваться (т.е. сокращаться по длине), в то время как другие выражения все еще продолжают делиться.

( , ¡г.пт,-«т»-«-п-.-.-п-л-, ,• Л,,-,,- л- ,-„.,■ ■ „

ВВВВВВВВВ о ввавввв&ввва Ш ¡EBHHS • Ж

1* г л-1- г сгл- л I- о* ггпгг v ■ ati-ii-at.-

:.■..' ■.■!■■.■ А" 1- л Г !■:•:• Г >' Л' Г ГГ tr У У h'„ / А" Г Г ■ Г J- !" л* г I- '* ;Г Г' Гц' I- У А- У - А" ]' " I,' I- Г.* 1Г и' ■* 'V 1Г1>-

!■ г | )■..!• у V.?' ' « !• л-1-11-и-л- к , J 1- г : •• л- I ,•

Л- О Л , 1Г (Г I ! Ii!»-m- I ) :■ о \ У . I, Г ~

/ II- I J,- !• ;■ У А .- 1- , ; , Л-II- ■ II* h- •■ :■ / Г I Г Л ' -

A1 Jli'i' Г г. Г* | Л ь+ I* Л Л О ( a г / , * F* ]' А ! A' 3 I Г I At' ' [' 1Г Г I' ПТ г С I- : AT 'Г • Л д J4 Г.- ]'<Г I* Л* |* II* И' * г+ ff $

I V I- :■ Г I,- « л / Л- • у у Г Л-11- I)" А' 1 Г II- I,- 1" (I Г

Л" I- Г ЛТ Л"/-'" I" ,-Л-О- , О" Г (,•!• л :■ / V /■ в ! , j у Г •. Л г.* !' f > !•>■!'/ !»•- !' ■ А Л" J/''. !' ,' I «С А- 1 . ! !' I I | . /• I I I ; I • с : ■ о* ■ ; •I '.* г г л*

л i л-1 i-u-A-1-j ] о-,-л-1 ■ у и-1- у ¡- <г i ggggg !-л- л дщ о „ /0-Л-|Ч-'-А-]-„-| -Л- ■ 0- l-Jfl-ljA:-/!-!-,-.

1 1Г j' I" Л" Г I!" Л" Г Л" • /Т Г А-1Г1Г 1 Л" I' !• I Г Л 1Г У f . ,1

ваза1•ss ° зл d ив14 ш"л</+ 1 ■ и» * ss

> I « з л «у л г ^^gQBBBB 1 BB J BB0 ' 1 авва BBBBfl11 1 > ■ ' BBBkB° 1Я"ВЛ|В*,/Л1*°В

BBBBBBBSSS * я о s i- A- I-1-А- го-аанааяа»ss

A" I" Г CI" ]• ij a g ' 0*, -J 0 g л Г D" л' I* Г Л" !' A* 1" ГГ >'^BQB <j' Г ' Л' Г !• и- . л* Г I !' А* Г Г Г" А"II'II1 ■ Г Г !■»■ !■ "-/■»■"O-A-D'tl-;,- !■ А- I- ■-.„■!■ л-/-!- Г g i 1 л-о- 1-Л-

• в I цййгзйй ■ !35з < ЙЙИ"

!' t ,■ А-,- :-(,- " I, j- i- I-,'/'.' » £ ' А-Л-с- 0 J i- Г лт

' '3 ' HIjS • 3SS / В • h SS ' SSH' ■ 0 1 в *

I- . ' а* / ) ( , , i, « J-.-1,- ,1 j i- ■ « ' ■!■<■■

I- у I,- Г у г а /■ г- „ , А- , I I- / Г А »• I' ! I, <• / Л" 1 л i" г d Л : !" II" у !■ А" Г 'if h' f- Г А Г !" Л'СГ ' Г 'i I I 1 Г i Г

I А -ГГ,- - Л* 1*0'

1-АТА ■■ „ П-д-„-д-,.- ■ j п,-.--;- I

I' j' г I*' У " 1 ' ,,]-„■ -а -у,,- г ^ !■[:>■ ■" л ь- о ^

I- !- Г J, I л J- I !■ i Г ) ( Л } trn-A-' AT I И" i' А* 1* О*

У " f Л S3 1 Э А* 1' у ч II, (I- А I,- I '■ ., :■ I'll* Г,-.ТИ- г :' у

siHSiiB

: л- г ь- 3- rj- j Е- А" ! ■* ■

у ,1 !• , л* с* 1 .J

л Г ) ( j А" ]"Л" L" ЛТД-1- П,-.-,Ч,-

• У У У 1 J а / I* v" " Г 1 j А" г

!■ '-уУуу АГ и г : !,■■,■

1 !- Г/Т ['

^ I ! g « A S] I

S r i' i SS ItgASB1<1

A" A I J ......

,'ATO'

Рис. 19. Зависимость длины N цепочки от времени t для полной системы ZSAT.

Если мы объединим системы Ediv и Eeval в одну систему Esat, то получим М-систему, решающую задачу SAT. Заметим, что стадии деления и вычисления в полной систем оказываются частично совмещенными и поэтому общее время работы будет меньше по сравнению с вышеописанным вариантом, когда эти две стадии выполнялись строго последовательно друг за другом. Этот вывод иллюстрируется рис. 19, на котором показана зависимость длины цепочки от времени для той же ис-

Рис. 20. Состояние системы Езду на промежуточном шаге эволюции.

Кроме того, видно, что общее время в полной системе оказывается меньше времени, необходимого только на деление. Причиной этого является то, что при выполнении частичной специализации в формуле образуются нули и единицы, которые взаимодействуют (дизъюнкция), в результате чего длина формулы уменьшается, а время копирования линейно зависит от длины формулы. Это и приводит к более быстрому делению высокоспециализированных формул.

Еще раз отметим, что большая часть процессов в системе протекает параллельно. Если сделать моментальный снимок системы (рис. 20) на каком-нибудь промежуточном шаге, то получим на внешний взгляд хаотическое смешение разнообразных символов, обладающее, тем не менее, высокой степенью внутренней упорядоченности.

7. Заключение

В результате выполненной работы получены следующие результаты. Предложена схема представления мембранных систем и алгоритмов с помощью марковских систем на примере решения задачи поиска гамиль-тонова пути и задачи о выполнимости булевых формул. Рассмотрен и проанализирован механизм реализации операции деления мембран, которая практически во всех работах, посвященных мембранным алгоритмам, считается элементарной (и выполняется за один такт времени). Проанализирована временная сложность всех операций предложенных алгоритмов. Показано, что за счет динамического параллелизма мембранной

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

Список литературы:

1. Ершов Н. М. Недетерминированный мембранный алгоритм поиска гамильтонова пути // Программные системы и инструменты. Тематический сборник / Под ред. Л. Королев. — Т. 12. — Издательский отдел факультета ВМК МГУ имени М.В. Ломоносова; МАКС Пресс Москва, 2011. — С. 39-45.

2. Ершов Н. М., Кравчук А. В. Дискретное моделирование с помощью стохастических клеточных автоматов // Вестник Российского университета дружбы народов: Серия Математика, информатика, физика. — 2014. — № 2. — С. 359-362.

3. Г. Паун, Г. Розенберг, А. Саломаа, ДНК-компьютер. Новая парадигма вычислений, М. : Мир, 2003.

4. Leonard M. Adleman, Molecular Computation of Solutions to Combinatorial Problems, Science, 266, 11, pp. 1021-1024, 1994.

5. K.L. Chung and F. AitSahlia. Elementary Probability Theory: With Stochastic Processes and an Introduction to Mathematical Finance. Undergraduate Texts in Mathematics. Springer, 2003.

6. Peter Dittrich, Jens Ziegler, and Wolfgang Banzhaf. Artificial chemistries - a review. Artif. Life, 7(3):225-275, June 2001.

7. John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation (3rd Edition). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2006.

8. Adam Obtulowicz. Deterministic P systems for solving SAT problem. Romanian Journal of Information Science and Technology, 4(1-2):195-202, 2001.

9. Gheorghe Paun. Computing with membranes. An introduction. Bulletin of the EATCS, (67):139-152, February 1999.

10. Gheorghe Paun. P systems with active membranes: Attacking NP-Complete problems. Journal of Automata, Languages and Combinatorics, 6(1):75-90, 2001.

11. Gheorghe Paun and Grzegorz Rozenberg. A guide to membrane computing. Theoretical Computer Science, 287(1):73-100, September 2002.

12. Przemyslaw Prusinkiewicz and Aristid Lindenmayer. The algorithmic beauty of plants. Springer-Verlag New York, Inc., NY, USA, 1996.

13. Grzegorz Rozenberg and Arto Salomaa. Mathematical Theory of L Systems. Academic Press, Inc., Orlando, FL, USA, 1980.

14. Tommaso Toffoli and Norman Margolus. Cellular automata machines: a new environment for modeling. MIT Press, Cambridge, MA, USA, 1987.

i Надоели баннеры? Вы всегда можете отключить рекламу.