плекса в Управлении связи, специальной техники и автоматизации МВД по РТ в составе системы поддержки принятия решений при видеомонито-
СПИСОКЛ
1. Глова, В.И Исследование операторов выделения контуров на размытых и неразмытых изображениях. [Текст]/В.И. Глова, И.В. Аникин, Д.В. Козырев.-Казань: Изд-во Казан. гос. техн. ун-та, 1998.
2. Глова, В.И. Системы поддержки принятия решений при видеомониторинге подвижных объектов [Текст]/В.И. Глова, Р.Х. Шакиров, А.С. Катасёв//Ин-формационные технологии в науке, образовании и про-
ринге подвижных объектов [2]. Текущие результаты эксплуатации показали его пригодность для практического использования.
ГЕРАТУРЫ
изводстве: Матер. Всерос. науч. конф.-Казань: Изд-во Казан. гос. техн. ун-та, 2007.-С. 519-522.
3. Макаров, Д.А. Выделение размытых контуров на изображении [Текст]/Д.А. Макаров,
A.С. Катасёв//Наука и профессиональная деятельность: Матер. Всерос. науч.-практ. конф; Под ред.
B.А. Песошина.-Казань: Изд-во Казан. гос. техн. унта, 2008. -С. 164-166.
УДК 519:324.17
В.А. Кубаев
НЕСТРОГОЕ ВЛОЖЕНИЕ ДЕРЕВЬЕВ В ПРИЛОЖЕНИИ К ПОИСКУ МАТЕМАТИЧЕСКИХ ВЫРАЖЕНИЙ
В данной статье рассматривается задача по нестрогому поиску по шаблону в упорядоченных размеченных деревьях. Эта задача имеет прикладное значение и широкую область применения при организации семантического поиска математической информации, представленной в XML-форматах (MathML, OpenMath, Office Open XML).
Задача поиска в целевом дереве T по шаблону P состоит в необходимости определения, может ли шаблонное дерево быть вложено в некотором смысле в целевое дерево. Для организации гибкости поиска это вложение целесообразно делать нестрогим, а для определения релевантности результата поиска вводить стоимостную функцию вложения.
В литературе встречаются различные подходы для определения стоимостной функции в случае нестрогого поиска поддерева. Ряд авторов [3, 7 и др.] определяют стоимостную функцию на основании операций редактирования (удаления, вставки и переименования вершин). В [8] предложен алгоритм, определяющий стоимостную функцию на основе числа несовпадающих путей в целевом и шаблонном дереве. Нестрогое соответствие поддеревьев возникает также в задаче определения изменений в структурированных и частично структурированных данных [4, 9].
Применение указанных выше подходов к нестрогому поиску поддеревьев оказывается неэффективным в случае поиска математических выражений. С одной стороны, сильно различающиеся по смыслу документы могут оказаться очень близки в значении используемых в этих подходах стоимостных функций. С другой стороны, эти подходы часто не дают возможности определить два сходных по смыслу документа как имеющих маленькое расстояние между собой.
В статье предлагается новый подход к нестрогому поиску поддеревьев, который использует набор разрешенных преобразований поддеревьев шаблонного дерева. Каждому разрешенному преобразованию присваивается вес и ставится задача по поиску минимально возможного суммарного веса преобразований, позволяющих вложить шаблонное дерево в целевое.
Основные определения. Дадим основные определения, используемые в статье. Эти определения являются общепринятыми и с некоторыми вариациями могут быть найдены в классических работах [1, 2 и др.].
Деревом Тназывается набор Т = (V, Е, гао^Т)), в котором V - конечное множество вершин, Е -двоичное отношение на множестве вершин, назы-
ваемое множеством ребер, и гоо^Т) - выделенная вершина, называемая корнем дерева. Говорят, что пара (и, V) является ребром дерева, если (и, v)еE. При этом вершину и называют родительской вершиной для вершины V, а вершину V - дочерней вершиной для вершины и.
Множество ребер Е должно удовлетворять следующим условиям.
1. Корень дерева не имеет родительской вершины: 3V е V: (V, (оо1:(Г) е Е .
2. Любая вершина, за исключением корня, имеет ровно одну родительскую вершину: Vv е V, V ф гоо1:(Г) 3! и е V :(и, V) е Е.
3. Из корня к любой вершине идет путь: (гоо^Г), у)е Е* Vv е V , где Е* - рефлексивное транзитивное замыкание Е.
Дерево называют упорядоченным, если для любой вершины vе V, множество ее дочерних вершин сЫЫгеп^) упорядочено.
Дерево Т называется помеченным, если существует функция I : V ^ А, задающая соответствие между множеством вершин V и некоторым алфавитом А. Будем обозначать метку вершины V как ¡аЬе^). В дальнейшем будем считать, что все рассматриваемые деревья помечены с помощью одного и того же алфавита.
Если для пары вершин и, vеV существует путь из и в V (то есть (и, v)еE+, где Е + - транзитивное замыкание Е), то V называют потомком вершины и. Множество потомков вершины V обозначим desc(v).
Количество дочерних вершин для вершины V будем обозначать через VI. Количество вершин в дереве Т будем обозначать через |Т.
Дерево, образованное некоторой вершиной vеV и всеми ее потомками, называют поддеревом дерева Т и обозначают Т [V]. Т [V] = (V', Е', V), где
V' = МЦаевф), Е' =
Пусть в дереве Т = (V, Е, гоо^Т)) вершины v1, v2, ..., vk, k > 0 являются дочерними вершинами корня гао^Т). Тогда обход дерева в обратном порядке задается рекурсивным алгоритмом:
1. посетить в обратном порядке Т Т ..., Т V] в указанной последовательности;
2. посетить гоо^Т).
Будем обозначать порядковый номер вершины V при обратном порядке обхода через post(v).
Везде далее, под деревом, если специально не оговорено иное, мы будем понимать упорядоченное помеченное дерево.
Постановка задачи
Рассмотрим представление математической формулы в виде дерева, вершины которого представляют собой элементы формулы, а ребра определяют отношения между этими элементами. В качестве практической иллюстрации такого представления можно привести пример форматов MathML, OpenMath и формат Office Open XML. Например, в формате разметки содержания MathML 2.0 выражение «переменная х в квадрате» будет записана в следующем виде:
<apply> <power/> <ci>x</ci> <cn>2</cn> </apply>
Предположим, что у нас есть некоторая библиотека математических выражений в древовидном представлении и нам необходимо решить задачу информационного поиска, в которой запросом пользователя является некоторое математическое выражение (шаблон), а ответом на запрос - множество элементов библиотеки, включающих запрос пользователя как подвыражение. При этом мы бы хотели осуществлять поиск с точностью до некоторого набора математических преобразований и соответствующим образом мерить релевантность результатов поиска.
Дадим формальную постановку этой задачи.
Введем понятие множества G допустимых преобразований деревьев как множество троек {(GО Gl сД (Go G< SX (G- G^ c^ где G° - дерево, к которому может быть применено i-е допустимое преобразование, G'- дерево, представляющее собой результат i-го допустимого преобразования, и с, с. > 0 - стоимость i-го допустимого преобразования.
Будем говорить, что дерево P = (W, F, root(P)) может быть вложено в дерево T = (V, E, root(T)) (обозначаем Px T), если существует инъективная функция f : W ^ V, такая, что выполнены условия:
1. Vu,weW f(u) = f(w)<=>u = w;
2. Vwe W label(w) = label(/(w));
3. Vu,wgW (u,w)g F &(f(u),f(w))e E;
4. V«,we W post(i<) < post(w) <=> post(/(м))< < post(/(w)).
Если дерево P может быть вложено в дерево T так, что f(root(P)) = root(T), то будем говорить,
что дерево Р может быть вложено в дерево Т с сохранением корня (обозначаем Р< Т).
Будем говорить, что дерево Р = (Ж, Е, гао^Р)) может быть вложено в дерево Т = (V, Е, гао^Т)) с помощью множества допустимых преобразований G (обозначаем Р< ОТ), если существует:
подмножество вершин Ж' с Ж, Ж' = = «, ..., <),
мультимножество допустимых преобразований О' = {(°Л О', c1), ..., (О; О', ф
VI = ^(О- в; * *
инъективная функция / : Ж" ^ V, где Wм =
такие, что выполнены условия:
1. \ие
2. \/и,м>е\У'/(и) =и = м>-,
3. Уи-е У/"XV/' 1аЬе1(>у) = 1аЬе1(/(»);
4. ^¡еУУ' ] = и в), )];
5. Е;
6. V«,н-е У/" ров^и) < ров^™) <=> роя1(/(м)) <
< роьЦ/М).
Весом вложения с помощью допустимых преобразований О' назовем сумму весов используемых при вложении преобразований ^ ,_о^ .
Пусть Ь = {Ьр Ь2, ..., Ьм } - фиксированное множество деревьев, в которых необходимо осуществить поиск, и дерево Р - запрос пользователя. Задача нестрогого относительно набора преобразований поиска поддерева по шаблону состоит
в том, чтобы для данного шаблона Р найти минимальный вес вложения с помощью множества допустимых преобразований в каждое дерево библиотеки Ь.
На рисунке приведен пример вложения с помощью набора допустимых преобразований для формул вформате разметки содержания MathML 2.0.
Алгоритм поиска
Алгоритм поиска состоит из двух этапов: этапа предобработки шаблона Р и элементов библиотеки Ь и этапа поиска вложения с минимальным весом.
На этапе предобработки шаблона Р осуществляется поиск допустимых преобразований, которые могут быть применены к дереву Р, и к метке каждой вершины шаблона добавляется множество идентификаторов преобразований, которые могут быть применены в данных вершинах (обозначим это множество йаш(у)). В терминах вложения деревьев это означает, что для каждой пары О°и Р нам необходимо найти все вершины V дерева Р, такие что Р[у] идентично в° Эта задача является классической и может быть решена за время 0(|Р|) [5, 6].
При предобработке элемента библиотеки Ь осуществляется поиск допустимых преобразований, результаты которых могут быть вложены в элемент библиотеки, и к метке каждой вершины
Пример вложения
v добавляется множество идентификаторов преобразований, результаты которых могут быть вложены в Lj[v] с сохранением корня (также обозначим это множество trans(v)).
Для реализации алгоритма предобработки используется техника динамического программирования: для каждой пары G' и L. организуется обратный обход вершин деревьев. Такой порядок обеспечивает нам то, что при проверке вложения поддерева G' [v] в поддерево L.[v] мы будем обладать информацией о возможности вложить поддеревья в дочерних вершинах u в поддеревья в дочерних вершинах v. На основании этого в процессе обхода для каждого дерева G' заполняется двумерный массив A[1...|G'|, 1... |L.|], в элементе Л [к, Г] которого сохраняется информация о возможности вложить поддерево в вершине с номером к в G'в поддерево в вершине с номером l в L ..
1 J
Для удобства обозначения мы будем отождествлять в алгоритме вершину и ее номер в порядке обратного обхода.
Алгоритм 1 Предобработка элемента библиотеки L.
j
Вход: Множество помеченных упорядоченных деревьев G' = (G'}, i = 1, ..., NG и помеченное упорядоченное дерево Lj.
Выход: Упорядоченное дерево L к метке каждой вершины v которого добавлено множество идентификаторов преобразований, результаты которых могут быть вложены в L [v] с сохранением корня.
Алгоритм:
01 for i := 1.....Ng do // Организуем цикл по G';
02 Инициализируем A[l...lPI,l...lLjJ] величиной
03 for v := 1.....\Lj I do II Организуем обратный
обход вершин Ly;
04 for и := 1,..., IG,' I do // Организуем обратный обход вершин G't;
05 if label(w) = label(v) then
06 Обозначим {и,.....иы} := desc(M);
07 if Существуют {^,..., vM} e desc(v) такие, что A[Mi,vi]<+ooVi = l,...,lMl
and post (v.) < post(v;) Vf < j then
08 A[m,V] :=0;
09 endif;
10 endif;
11 endfor;
12 if A[root(G/),v] < then //Нашли вхождение G/ в поддерево L[v];
13 trans(v) := trans(v)[J{(};
14 endif;
15 endfor;
16 endfor.
Условие, сформулированное в строке 07 алгоритма 1, может быть проверено за линейное время O(|v|). Для этого достаточно установить указатель на вершину u1 и последовательно перебирать вершины children(v) слева направо, передвигая указатель при каждом совпадении меток вершин на u.+y Если в конце просмотра указатель будет указывать на вершину u|u|, то условие выполнено. В противном случае, не выполнено.
Лемма 1 Сложность алгоритма 1 по времени составляет o(|LJ ^. \G'\).
Доказательство. Внутри цикла 01 - 16, с учетом замечания после алгоритма 1, сложность составит:
О
\\
l+Z(l+lvl)
USE С'
= 0(1 Lj I +1 Lj
IG' I +
JJ
-н I С/1 (| ^ I —1)) = о(| II С?/1).
Суммируя по г, получаем требуемую величину.
Перед тем как перейти к этапу поиска вложения с минимальным весом, рассмотрим вспомогательную задачу. Пусть имеется таблица С(к х п), п > к, содержащая неотрицательные числа с/ и значения +да. Требуется найти минимальную сумму чисел для всех множеств с1, ..., ск, таких что для любого г = 2, ..., к, / > / ,
/1 /к г-1
(т. е. для множеств, содержащих в каждой строке ровно по одному числу, при этом в каждой следующей строке число должно находиться правее числа в предыдущей строке). Назовем такие множества чисел «лесенками», а задачу - «задачей о минимальной сумме лесенки».
Лемма 2 Задача о минимальной сумме лесенки может быть решена за время О(кп).
Доказательство. Для доказательства утверждения рассмотрим алгоритм, решающий задачу за время O(kn). В основе алгоритма лежит идея
0 том, что если у нас есть лесенка с минимально возможной суммой чисел, то, во-первых, число в последней строке не больше всех своих правых соседей в ряду, а, во-вторых, мы можем заменить это число на его самого правого соседа, имеющего такую же величину. Продолжая эту идею на остальные строки, мы можем строить снизу вверх, справа налево лесенки, включающие лесенки с минимальной суммой.
Алгоритм 2 Поиск минимальной суммы лесенки.
Вход: Таблица C(k х n), n > k, содержащая неотрицательные числа cj и значения +<».
Выход: Множество с минимальной суммой чисел 'Yjci среди всех множеств cj ,..., cj, таких что для любого i = 2, ..., k, j. > j. j. Алгоритм:
01 for i2 do // Организуем цикл по строкам таблицы;
02 c_min:=C[i,n-(k-i)]; //Инициализируем минимальное число;
03 for у := n—(fc-/),...,/ do И Организуем цикл по необходимым столбцам; ]
04 if c_min > C[i, j] then
05 c_min := C[i, j];
06 endif;
07 C[i-l,j-l]:=C[i-l,j-l] + c_min;
08 endfor;
09 endfor;
10 return шш(С[1,1],...,С[1Д]).
Заметим, что алгоритм можно легко модифицировать так, чтобы он возвращал не только минимальную сумму лесенки, но и лесенку, на которой эта сумма достигается. Для этого необходимо в строке 07 алгоритма 2 сохранять в ячейке не только вес, но и номера ячеек лесенки.
Сложность по времени предложенного алгоритма составляет O(kn).
Перейдем теперь к алгоритму поиска минимального вложения. В этом алгоритме использу-
ется техника, аналогичная технике в алгоритме 1.
Алгоритм 3 Поиск минимального вложения дерева.
Вход: Множество допустимых преобразований G, предобработанный шаблон P, предобрабо-
танный элемент библиотека L .
j
Выход: Минимальный вес вложения с помощью множества допустимых преобразований шаблона P в элемент библиотеки L .
j
Алгоритм:
01 Инициализируем А[1...1Р1,\...\L¡ I] величиной
02 for v:=\,...,\L¡ I do//Организуем обратный обход вершин Lj;
03 for и := 1.....1РI do // Организуем обратный
обход вершин Р;
04 c_min := ;
05 if 1аЬе1(и) = label(v) then
06 Обозначим {«!,...,iílBl}:=desc(i<);
07 Обозначим {^,..., vlvl} := desc(v);
08 c_min := минимальная сумма лесенки для подматрицы А, образованной пересечением строк Щ,...,и1и1 и столбцов V1;...,V|V|;
09 endif;
10 if trans(»P)trans(v) Ф 0 then
11 С := mÍn¡etrans(ii)P|traiis(v) C, >
12 c_min := min(c, c_miri);
13 endif;
14 А[и, v] := c_min;
15 endfor;
16 endfor;
17 return min(A[root(P),l],..., A[root(P),l L¡ I]).
В строках 05-09 алгоритма 3 мы ищем минимальную стоимость сопоставления дочерних вершин u с подмножеством дочерних вершин вершины v с сохранением порядка. Эта задача эквивалентна решению задачи о минимальной
сумме лесенки для подматрицы А, образованной пересечением строк и1, ..., м^ и столбцов vl, ..., У| | (каждая лесенка может быть естественным образом отождествлена с сопоставлением дочерних вершин, и наоборот). В строках 10-13 проверяется возможность изменить поддерево Р[и] с помощью набора допустимых преобразований, так чтобы оно могло быть вложено с сохранением корня в поддерево Т [у]. После этого минимальный вес вложения сохраняется в ячейке А [и, у].
Теорема 1 Алгоритм 3 имеет сложность О^.Щ + Мв |р|).
Доказательство. Внутри цикла 02-16, с учетом леммы 2, сложность составит:
О
£ 1 + Б1 +lvllMl+iVG)
= O^LJ\ + \LJ\\P\
+
+(l PI -l)(l Lj I -l)+1PI Ne)= 0(l L},11PI +1PI Ng).
Слагаемое \v\\u\ соответствует решению задачи о минимальной сумме лесенки, а NG - поиску пересечения множеств преобразований и выбору минимального по весу преобразования.
Суммируя сложность всех используемых алгоритмов, мы получаем, что для предобработки библиотеки нам требуется время o(^j \Lj\ ^. \G'\) и для каждого запроса пользователя требуется время o(\P\ NG) на предобработку запроса и o(\P\Xj Lj\ + \PNg Nl) на поиск минимального вложения.
СПИСОК ЛИТЕРАТУРЫ
1. Ахо, А. Построение и анализ вычислительных алгоритмов [Текст]/А. Ахо, Дж. Хопкрофт, Дж. Ульман-М.:-Мир, 1979.
2. Кнут, Д.Е. Искусство программирования [Текст]/Д.Е. Кнут//Основные алгоритмы; 3-е изд. -Ви-льямс.-2000. -Т. 1.
3. Bille, P. Tree Edit Distance, Alignment Distance and Inclusion [Текст]/ P. Bille//IT University Technical Report Series.-2003.
4. Chawathe, S.S. Representing and Querying Changes in Semistructured Data [Текст]/8.8. Chawathe, S. Abiteboul, J. Widom//Proc. of the 14th International Conf. on Data Engineering (ICDE'98).-1998. -P. 4-13.
5. Dublish, P. Some comments on the subtree isomorphism problem for ordered trees [Текст]/Р. Dublish// Information Proc. Letters.-1990.-Vol. 36.-P. 273-275.
6. Grossi, R. A note on the subtree isomorphism for ordered trees and related problems [TeKCT]/R. Grossi// Information Proc. Letters.-1991.-Vol. 39.-P. 81-84.
7. Kovacs, L. Approximate Subtree Search for Labeled Trees with Small Depth Value [TeKCT]/L. Kovacs, T. Repasi, E. Baksa-Varga//Proc. of SAMI 2005.-P. 303-311.
8. Shasha, D. ATreeGrep: Approximate Searching in Unordered Trees [TeKCT]/D. Shasha, J. T.-L. Wang, H. Shan [et al.]//SSDBM '02: Proc. of the 14th International Conf. on Scientific and Statistical Database Management.-2002.-P. 89-98.
9. Su, H. Automating the Transformation of XML Documents [TeKCT]/H. Su, H. Kuno, E.A. Rundensteiner// Proc. of the 3rd International Workshop on Web Information and Data Management (WIDM'01).-2001. -P. 68-75.
УДК 519.86
Б.И. Мызникова, Т.П. Васильева
МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ ПРОЦЕССА ГРАДОФОРМИРОВАНИЯ: ДЕТЕРМИНИРОВАННЫЙ ПОДХОД
Город - это сложная открытая система, в которой взаимодействие подсистем при благоприятных условиях стимулирует процветание занимаемой территории. Но с течением времени сложившаяся инфраструктура, эффективность функционирования экономики, качество окружающей среды, уровень жизни населения претер-
певают изменения, что, при отсутствии контроля за нарастающими проблемами организации урбанизированной территории, может привести к ее стагнации и упадку, либо к возникновению хаотических режимов эволюции городской системы.
Явлениям, сопровождающим развитие современных территориальных образований, посвящен