Научная статья на тему 'Алгоритмы эффективного вычисления конъюнктивных регулярных путевых запросов'

Алгоритмы эффективного вычисления конъюнктивных регулярных путевых запросов Текст научной статьи по специальности «Компьютерные и информационные науки»

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Афонин С. А.

Один из возможных способов формалвного представления полуструктурированных данных ориентированные графы с помеченными ребрами. Вычисление конъюнктивных регулярных путевых запросов в рамках этой модели является NP-полной задачей. В данной работе приводятся результаты экспериментальной проверки эффективности различных эвристик вычисления запросов и предлагается алгоритм построения эффективного плана вычисления запроса.

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

Efficient algorithms for conjunctive regular path queries processing

A problem of the processing of conjunctive regular path queries over semistructured databases (an NP complete problem) is considered. A number of heuristics for conjunctive query processing are introduced and an algorithm for query evaluation plan construction is proposed. Experimental results show the efficiency of the heuristics and corresponding query evaluation plans.

Текст научной работы на тему «Алгоритмы эффективного вычисления конъюнктивных регулярных путевых запросов»

Вычислительные технологии

Том 12, № 2, 2007

АЛГОРИТМЫ ЭФФЕКТИВНОГО ВЫЧИСЛЕНИЯ КОНЪЮНКТИВНЫХ РЕГУЛЯРНЫХ ПУТЕВЫХ ЗАПРОСОВ

С. А. АФОНИН НИИ механики МГУ, Москва, Россия e-mail: [email protected]

A problem of the processing of conjunctive regular path queries over semistructured databases (an NP complete problem) is considered. A number of heuristics for conjunctive query processing are introduced and an algorithm for query evaluation plan construction is proposed. Experimental results show the efficiency of the heuristics and corresponding query evaluation plans.

Введение

Полуструктурированными называют данные с неоднородной, часто изменяющейся или заранее не известной структурой. Такие данные естественным образом возникают при децентрализованном управлении информацией, например, в сети Интернет или в крупных корпоративных или государственных информационных системах, отдельные компоненты которых (сайты или ведомственные информационные системы) могут содержать строго структурированные данные (общая структура HTML и единая структура базы данных), однако при объединении информации из нескольких таких источников данные, описывающие одни и те же объекты реального мира, могут существенно различаться структурой. Необходимость поиска информации одновременно в нескольких источниках приводит к задаче поиска данных с неоднородной структурой.

В работе 2005 года [1] было предложено еще более общее направление исследований — переход от баз данных к "пространствам данных". Авторы этой работы рассматривают задачу поиска разнородной информации в очень широкой постановке (в качестве примера используется поиск по всем файлам рабочей станции — электронным таблицам, текстовым документам, локальным базам данных и т.д.) и предлагают "программу исследований", направленную на достижение этой цели. Одним из таких направлений является обработка запросов к полуструктурированным данным на основе графовой модели представления данных.

Основными математическими моделями представления полуструктурированных данных являются ориентированные графы с помеченными ребрами, помеченные деревья и деревья с упорядоченными элементами [2]. Для каждой модели данных были предложены соответствующие языки запросов (регулярные путевые запросы, XPath, XQuery,

© Институт вычислительных технологий Сибирского отделения Российской академии наук, 2007.

Datalog). Следует отметить, что эффективность применения той или иной модели данных зависит от предметной области, в которой будет использоваться система управления полуструктурированными данными. Например, модель данных, основанная на упорядоченных деревьях, которая в настоящее время находится в центре внимания специалистов по базам данных, ориентирована в первую очередь на работу с XML-документами. Для других задач, таких как поиск текстов с учетом онтологий [3-5], управление содержанием Web-сайтов или интеграция данных [6, 7], эта модель менее эффективна, поскольку в этих приложениях естественным образом возникают графовые структуры данных.

В данной работе рассматривается задача вычисления конъюнктивных регулярных путевых запросов при графовом педставлении данных. Язык регулярных путевых запросов по своей выразительной силе занимает промежуточное положение между относительно простыми языками типа XPath и такими гибкими языками, как Datalog. Следует отметить, что задача вычисления рассматриваемых далее запросов является NP-сложной, однако это связано с использованием конъюнкции регулярных путевых запросов, а не с наличием ограниченной формой рекурсии (итерацией Клини) в регулярных путевых запросах.

1. Конъюнктивные регулярные путевые запросы

Для графового представления полуструктурированных данных стандартом де-факто является так называемая Object Exchange Model, или OEM-модель, которая разрабатывалась для обеспечения унифицированного представления сложных информационных объектов для систем интеграции данных. В соответствии с этой моделью сложные структуры данных представляются в виде ориентированного графа с помеченными ребрами. Вершины графа соответствуют элементам первоначальной структуры данных, а ребра представляют отношения между ними. Формально базой (полуструктурированных) данных будем называть ориентированный граф с помеченными ребрами B = {V, Е,Е), где V — множество вершин графа; Е — конечное множество меток ребер; E С V х Е х V — множество Е-помеченных ребер.

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

В рассматриваемой модели данных язык запросов основывается на понятии регулярного путевого выражения. Регулярные путевые выражения — это по сути регулярные языки, а пара вершин базы данных удовлетворяет регулярному путевому выражению, если между этими вершинами находится по крайней мере один ориентированный путь, метки которого образуют слово из этого языка (мы предполагаем известными основные понятия теории автоматов и формальных языков [8, 9]). Регулярное путевое выражение, таким образом, определяет бинарное отношение на множестве пар вершин базы данных. В качестве языка запросов будем рассматривать конъюнктивные регулярные путевые запросы.

Конъюнктивным регулярным путевым запросом (CRPQ-запросом) называется ориентированный помеченный граф Q = {X, Reg(A),Eq), где X — множество вершин запроса (переменных); Reg(A) — множество всех регулярных языков над алфавитом A; Eq С X х Reg(A) х X — множество помеченных ребер. Без ограничения общности можно считать, что алфавиты базы данных и запроса совпадают.

Вычисление CRPQ-запроса состоит в нахождении всех отображений вершин запроса Q в вершины базы данных В, которые удовлетворяют следующим условиям:

1) образы различных вершин запроса различаются;

2) смежные вершины запроса, соединенные ребром с меткой Я £ Б^(Е), отображаются в вершины базы, соединенные по крайней мере одним путем, метки которого образуют слово из языка Ь(Я).

Задача вычисления CRPQ-запроса может быть за полиномиальное время сведена к задаче поиска подграфа в ориентированном мультиграфе с помеченными ребрами. Действительно, пусть ребра запроса Q помечены языками Я1,Я2,... , Я&. Введем вспомогательный алфавит В = {Ь1,... ,Ъи} и построим по исходной базе данных ориентированный граф О следующим образом. Вершинами О служат вершины исходной базы данных, а пара вершин и и V соединена ребром с меткой Ь тогда и только тогда, когда в исходной базе между этими вершинами есть путь с метками из языка Я^. Поскольку пара вершин базы данных может принадлежать результату нескольких элементарных запросов, граф О в общем случае является мультиграфом.

Представим теперь запрос Q в виде графа Н, множество вершин которого совпадает с вершинами Q, а ребра помечены символами алфавита В. Для этого заменим регулярные языки на соответствующие символы алфавита В: вместо языка Я1 подставим Ь1, вместо Я2 — Ь2 и т. д. Очевидно, что вычисление запроса эквивалентно поиску всех подграфов графа О, изоморфных графу Н. Отметим, что в частном случае, когда алфавит Е содержит один символ, а все встречающиеся в запросе регулярные выражения определяют однобуквенные языки, задача вычисления CRPQ-запроса в точности совпадает с задачей изоморфного вложения графа, которая относится к классу МР-полных [10]. Это означает, что вычисление CRPQ-запросов является МР-сложной задачей.

Сведение задачи вычисления запроса к задаче поиска подграфа позволяет использовать алгоритмы поиска подграфа для вычисления CRPQ-запроса. Наиболее эффективным алгоритмом поиска подграфа считается алгоритм Ульмана [11], реализующий метод перебора с отсечением. Этот алгоритм выбран в качестве основы для параллельного алгоритма вычисления CRPQ-запросов [12], который был реализован с использованием системы динамического распараллеливания программ ОрепТБ [13, 14].

2. Эвристические методы вычисления запроса

Основными стратегиями вычисления CRPQ-запросов являются исчерпывающий поиск и метод слияния результатов вычисления элементарных запросов. Первая стратегия — по сути алгоритм поиска подграфа. Вторая стратегия предполагает вычисление элементарных запросов и последующее слияние результатов. Как было показано в [15], эффективность применения данных стратегий существенно зависит от структуры вычисляемого запроса. Далее в данном разделе описываются различные эвристические методы повышения эффективности алгоритма вычисления конъюнктивных запросов, основанного на алгоритме поиска подграфа.

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

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

"Обращение" ребер. Предположим, что в запросе имеется ребро между вершинами x и y, помеченное языком R. Если образ вершины x зафиксирован, то можно построить множество допустимых образов y. С другой стороны, данное ребро можно просматривать в обратном направлении: сначала выбрать образ вершины y, а потом вычислить множество допустимых образов вершины x (при этом ребра базы данных следует просматривать в обратном направлении). Если язык R содержит большое число различных префиксов (например, R = E*abc), то просмотр такого ребра в обратном порядке может оказаться более эффективным.

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

Предположим, что исходящему ребру текущей вершины x запроса соответствует язык R, задаваемый регулярным выражением b((a + b)a*(bb)*)*. Пусть также известно, что каждая вершина базы данных имеет исходящее ребро, помеченное символами a или b с вероятностью 0.9. В такой ситуации можно предположить, что для любой вершины v базы данных множество вершин, достижимых из v по словам из языка R, будет содержать почти все вершины базы. Вычисление данного запроса трудоемкий процесс, так как требует обхода всей базы. Однако это ребро не дает существенной информации для уточнения множества допустимых образов вершин x и y. В такой ситуации вычисление данного ребра можно отложить.

Наложение локальных ограничений. Приближение множества допустимых образов вершины запроса может быть получено проверкой локальных ограничений. Предположим, что чем больше исходящих ребер имеет вершина запроса, тем меньше множество ее допустимых образов. Минимально необходимое число исходящих ребер, которые должна иметь вершина базы данных, соответствующая данной вершине запроса, можно оценить путем рассмотрения множества однобуквенных префиксов языков, приписанных исходящим ребрам вершины запроса. Например, если вершина запроса имеет два исходящих ребра, метками которых являются языки Ri = b + ba и R2 = a + cb, то ее образом может быть вершина, которая имеет как минимум два исходящих ребра (с метками a и b). Локальные ограничения могут использоваться как дополнение статического метода выбора порядка просмотра вершин запроса.

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

1 (аЬ | ас)* о

Тестовый запрос для оценки эффективности эвристик.

направление прохождения ребер.

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

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

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

Таким образом, знание "точного" плана выполнения запроса позволяет эффективно вычислять запрос на одном узле. В то же время увеличение числа вычислительных узлов приводит к росту производительности в случае неоптимальных планов выполнения запроса. Следовательно, основная цель применения эвристических методов заключается в построении приближения оптимального плана. Ошибка приближения может быть компенсирована за счет увеличения количества вычислительных узлов.

Среднее время вычисления, с, тестовых запросов при различных планах

N Б К БК Р1 Р2 Рз Р4 Р5 Рб

1 1069 1565 1237 21.8 77.1 5.8 60.4 6.4 1080.2

2 696 1535 805 20.0 51.8 5.2 38.2 5.1 569.4

4 429 1569 519 19.9 44.3 4.8 26.0 4.5 302.7

8 348 1572 416 24.2 52.1 7.9 36.1 8.1 213.1

3. Построение плана вычисления

Алгоритмы построения плана запроса можно разделить на следующие три категории:

— синтаксические: оптимальная последовательность выбирается только на основании структуры запроса;

— стоимостные: при выборе плана учитываются статистические характеристики конкретного экземпляра базы данных;

— динамические: план выполнения запроса корректируется в процессе его вычисления.

В данной работе предлагается алгоритм построения оптимальной последовательности

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

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

Сложность (эффективность) плана основывается на следующих интуитивных соображениях. Очевидно, что число вершин базы данных, удовлетворяющих заданным ограничениям, существенно зависит от числа ребер и структуры соответствующих регулярных языков. Ограничения назовем информативными, если им удовлетворяет незначительное число вершин базы данных. Аналогично, если в запросе есть ребро (х, Л, у), то при выборе образа вершины х число допустимых образов вершины у зависит от структуры языка Л. Будем называть ребро (х, Л, у) запроса информативным, если мощность множества допустимых образов вершины у зависит от выбора образа х. При построении плана вычисления запроса следует использовать следующие критерии:

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

2) при выборе смежной вершины запроса предпочтение следует отдавать вершинам с наиболее информативными входящими ребрами (из ранее просмотренных вершин запроса).

Далее предлагается формализация понятий информативности ограничений и сложности плана.

Предположим, что заданы функции оценки информативности ограничений I (п) и информативности ребра (регулярного языка) I(£). Обозначим через п(г) первое вхождение вершины г запроса в плане П. Определим на множестве вершин запроса отношение частичного порядка у -—п г, которое означает, что в запросе есть ребро (у, г) и вершина у встречается в плане раньше вершины г. Обозначим через Ьху регулярный язык, приписанный в запросе Q ребру между вершинами х и у, и определим информативность первого посещения вершины г запроса в рамках плана П как

Поясним смысл данной формулы. Первый сомножитель — информативность ограничений вершины. Чем меньше это значение, тем меньше информативность вершины. Второй

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

к г1

Соб^П)

У^ехр(-г)/п(х(г}}

л= 1

План П назовем оптимальным, если для любого другого плана П' справедливо неравенство Соэ^П) ^ Соэ^П').

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

Так как число возможных планов выполнения запроса Q конечно, задача нахождения оптимального плана алгоритмически разрешима. Для построения плана вычисления CRPQ-запроса предлагается использовать алгоритм со случайным выбором: производятся построения заданного числа случайных планов выполнения запроса и из этого множества выбирается лучший план. Построение случайного плана может выполняться по следующей схеме. Для каждого ребра запроса случайным образом определяется, в каком направлении это ребро будет проходиться при выполнении запроса. Далее генерируется случайная перестановка вершин запроса и для каждой вершины строятся ее ограничения, т. е. входящие и исходящие ребра, с учетом выбранного ранее направления.

Вернемся к задаче построения оценки информативности регулярного путевого запроса. В соответствии с изложенным выше в качестве меры сложности запроса рассмотрим вероятность того, что вершина базы данных удовлетворяет запросу. Отметим, что стандартные меры сложности регулярных языков, такие как число состояний минимального автомата, энтропия, п-различимость или автоматность [16], не отражают сложности регулярного запроса. Если язык Я1 вложен в язык Я2, то запрос Я1 более информативный, чем запрос Я2. Однако вложенность языков не связана с числом состояний соответствующих минимальных автоматов. Аналогичные примеры можно привести и для других мер сложности языков.

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

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

— для каждой буквы а £ Е вероятность того, что эта вершина имеет исходящее ребро с этой меткой, есть р(а).

Сложность регулярного путевого запроса ^(Я) определим как вероятность того, что корневая вершина случайного дерева удовлетворяет запросу.

Теорема. Для любого действительного числа £ > 0, любого отображения р : Е ^ [0,1] и любого регулярного языка Я значение ^(Я) может быть вычислено с точностью £.

Доказательство проводится по следующей схеме. Предположим, что язык Я распознается детерминированным Е-автоматом А с п-состояниями ... , функцией переходов 8 и множеством заключительных состояний Г. Запись 8(д, а) = 0 будет означать, что не существует слова вида = аи, которое переводит состояние д в некоторое заключительное состояние. Язык Я имеет не более п различных производных, которые распознаются

автоматами Л^, г = 1,... , п, получающимися из Л смещением начального состояния в состояние Очевидно, что производные являются регулярными языками и среди них есть язык Л. Числа ^(Л^) удовлетворяют следующей системе соотношений:

МЛ) = 1 - П (1 -Р(«МЛ%г,„))), дг ^

а 6Е

¡(д,а) = 0

МЛ) = 1, % е

Утверждение теоремы следует из того, что отображение, которое задается данной системой, является сжимающим, а значит, имеет единственную неподвижную точку.

Одним из возможных методов учета особенностей конкретного экземпляра базы данных является вычисление частотности букв алфавита. Полученные значения можно использовать в качестве значений р(а). Другая возможность состоит в подсчете частотности вхождения слов заданной длины и в построении стохастического автомата М, который имеет распределение вероятностей, близкое к полученному. В этом случае статистика экземпляра базы данных может быть учтена, если вместо автомата Л рассматривать автомат Л х М.

4. Результаты применения планов

Для запроса, представленного на рисунке, предложенный метод построения плана приводит к "почти оптимальному" плану Р5. При тестировании метода на случайных запросах в качестве критерия эффективности плана рассматривается число рекурсивных вызовов, которое делает алгоритм вычисления запроса при использовании заданного плана.

Случайный запрос представляет собой случайный граф (вероятность наличия ребра между двумя вершинами равнялась 2/п, где п — число вершин запроса), ребрам которого приписаны случайные регулярные языки над четырехбуквенным алфавитом. Для заданного случайного запроса строился оптимальный план его выполнения и сравнивалась эффективность оптимального плана с эффективностью случайных планов выполнения этого запроса. Для каждого запроса строилось множество случайных баз данных, для каждой из которых вычислялся запрос с использованием оптимального и нескольких случайных планов.

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

Заключение

На основании результатов анализа влияния различных методов вычисления запроса и предложенной меры сложности регулярных языков формализовано понятие плана вычисления конъюнктивного регулярного путевого запроса и предложен критерий оценки

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

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

[1] Franklin M. From databases to dataspaces: a new abstraction for information management // SIGMOD Rec. 2005. Vol. 34, N 4. P. 27-33.

[2] Гринев М. XML-модели данных, языки запросов к XML-базам данных и представление метаданных // Суперкомпьютерные вычислительно-информационные технологии в физических и химических исследованиях: Сб. лекций. Черноголовка, 2000. С. 43-84.

[3] Querying the semantic web with RQL / G. Karvounarakis, A. Magganaraki, S. Alexaki et al. // Comput. Networks. 2003. Vol. 42, N 5. P. 617-640.

[4] Васенин В.А. К разработке моделей эффективного поиска информации в сети Интернет // Сб. тр. Всерос. науч. конф. "Научный сервис в сети Интернет 2003". Абрау-Дюрсо. М.: Изд-во МГУ, 2003. C. 252-255.

[5] Афонин С.А. Поиск текстовых документов с учетом их логической структуры // XII Меж-дунар. конф. по вычисл. механике и современным прикладным програмным системам (ВМ-СППС). М.: Изд-во МАИ, 2003.

[6] Васенин В.А. К созданию концепции интегрированной системы распределенных информационных ресурсов Московского государственного университета им. М.В. Ломоносова. М.: Изд-во МГУ, 2001.

[7] Vasenin V.A. To the problem of building an integrated system of university distributed information resources // Proc. of the Finnish Data Processing Week Conf. FDPW-2001, 2001. P. 152-177.

[8] Кудрявцев В.Б. Введение в теорию автоматов. М.: Наука, 1985.

[9] Трахтенврот Б.А. Конечные автоматы (поведение и синтез). М.: Наука, 1970.

[10] Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982.

[11] Ullmann J.R. An algorithm for subgraph isomorphism // J. of the ACM. 1976. Vol. 23, N 1. P. 31-42.

[12] Afonin S. Semistructured data search using dynamic parallelisation technology // Proc. of the 26th Intern. Convention MIPR0-2003, Opatija, Croatia. 2003. P. 152-157.

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

[13] Абрамов С.М., Васенин В.А., Млмчиц Е.Е. и др. Динамическое распараллеливание программ на базе параллельной редукции графов. Архитектура программного обеспечения новой версии Т-системы // Тр. Всерос. науч. конф. "Высокопроизводительные вычисления и их приложения". Черноголовка, 2002. С. 261-265.

[14] Васенин В.А., РогАнов В.А. GRACE: распределенные приложения в Internet // Открытые системы. 2001. Т. 5-6. С. 29-33.

[15] Афонин С.А. Стратегии вычисления регулярных путевых запросов // Информационные технологии и программирование. 2002. Т. 5, № 1. С. 9-16.

[16] Shallit J., Breitbart Y. Automaticity I: Properties of a measure of descriptional complexity //J. Computer and System Sciences. 1996. Vol. 53. P. 10-25.

Поступила в редакцию 6 февраля 2007 г.

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