А.А. Зуенко
ФГБУН Институт информатики и математического моделирования технологических процессов КНЦРАН
Кольский филиал ПетрГУ
$
УСКОРЕНИЕ АЛГОРИТМОВ ЛОГИЧЕСКОГО ВЫВОДА НА ОГРАНИЧЕНИЯХ
Аннотация
В статье предлагается метод ускорения алгоритмов, применяемых при решении задач удовлетворения ограничений. Многие из упомянутых задач можно свести к поиску выполняющих подстановок некоторого конечного предиката. Метод опирается на ортогонализацию дизъюнктивных нормальных форм конечных предикатов и использует разработанные автором эвристики.
Ключевые слова:
алгебра кортежей, логико-семантический анализ, программирование в ограничениях, задача удовлетворения ограничений.
A.A. Zuenko ACCELERATED ALGORITHMS OF LOGICAL INFERENCE ON CONSTRAINTS
Abstract
In the paper we propose a method of acceleration algorithms applied to solving constraint satisfaction problems. A lot of these problems could be reduced to finding of satisfying substitutions for a finite predicate. The method is based on the orthogonalization of the disjunctive normal form of finite predicate and uses heuristics developed by the author.
Keywords:
n-tuple algebra, logical-semantic analysis, constraints рrogramming, oonstraint satisfaction problem.
Введение
В современном программировании можно выделить несколько основных парадигм: императивное или алгоритмическое программирование, логическое программирование, функциональное программирование и др. Важное место в этом ряду занимает программирование в ограничениях (constraint programming) [11-
Программирование в ограничениях как самостоятельное научное направление сложилось в конце 60-х - начале 70-х годов прошлого века. Примечательно, что первыми приложениями были задачи обработки изображений и параметрического моделирования пространственно-двумерных сцен. С тех пор направление существенно эволюционировало, охватывая новые классы задач, начиная от решения судоку и ребусов и заканчивая решением
* Работа выполнена при финансовой поддержке РФФИ (проекты №№ 11-08-00641, 12-07-00550-а, 12-07-00689-а, 13-07-00318-а), ОНИТ РАН (проект 2.3 в рамках текущей Программы фундаментальных научных исследований) и Президиума РАН (проект 4.3 Программы № 16).
систем линейных уравнений и задач искусственного интеллекта, и выдвигая новые подходы к их решению. Например, в [2] рассматриваются задачи маршрутизации перемещений с ограничениями в виде условий предшествования, причем допускаются также ограничения других типов, диктуемые особенностями прикладных задач. В качестве прикладных задач там разбирается задача, связанная со снижением облучаемости при работе в радиационных полях, и задача листовой резки деталей на станках с числовым программным управлением.
Семантически программирование в ограничениях отличается от традиционного логического программирования в первую очередь тем, что исполнение программы рассматривается не как доказательство утверждения, а строится как нахождение значений переменных. При этом система программирования в ограничениях, как правило, стремится сократить перебор с целью минимизации отката в случае неуспеха.
Для ускорения вычислительных процедур могут быть использованы различные методы, в частности эвристические. В данной работе рассмотрен алгоритм ортогонализации, помогающей снизить трудоемкость алгоритмов логического анализа. Был использован математический аппарат - алгебра кортежей (АК), который относится к классу булевых алгебр [3, 4] и позволяет реализовать алгебраический подход к логическому анализу в системах искусственного интеллекта [5, 6, 7, 8].
Постановка задачи программирования в ограничениях
В последние годы наблюдается ренессанс идей логического программирования в ограничениях в таких актуальных научных областях и дисциплинах, как интеллектуальные системы принятия решений, компьютерная графика, экономические модели, системы автоматизированного проектирования, информационные системы, семантический поиск данных, верификация и тестирование программного обеспечения, системы коллективной инженерии.
Задача удовлетворения ограничений (сош^а^ satisfaction problem, CSP) может быть определена множеством переменных X1, X2,..., Xn и множеством ограничений С1, С2, ..., Cm [1]. Каждая переменная X имеет непустую область определения Д-. Каждое ограничение С затрагивает некоторое подмножество переменных и задает допустимые комбинации значений для этого подмножества. Решением задачи CSP называется такое присваивание значений всем переменным {X;=v;, ., Xn=vn }, которое удовлетворяет всем ограничениям.
Многие задачи CSP характеризуются тем, что в них используются переменные, которые являются дискретными и имеют конечные области определения. К числу таких задач относится задача раскраски карты (раскраски графа). Также к категории задач с конечными областями относятся булевы задачи CSP, в которых переменные принимать значения либо истина, либо ложь. Булевы задачи включают в качестве частных случаев некоторые NP--полные задачи, такие как 3SAT [1].
Часто CSP решаются с помощью графов ограничений [1]. В настоящей работе рассматривается применение матрицеподобных вычислений в тех задачах программирования ограничений, где переменные дискретны и определены на конечных множествах значений (конечных доменах). По сути,
решение CSP в этом случае сводится к определению множества выполняющих подстановок конъюнктивной нормальной формы (КНФ), но не булевой функции, а конечного предиката. Матрицеподобное представление таких КНФ и специализированные методы ускорения вычислительных процедур [3, 4] позволяют на практике получать требуемые решения за приемлемое время.
В АК конечные предикаты можно сжато представить с помощью двух типов структур: С-систем и ^-систем. Они формируются в виде матриц из подмножеств доменов атрибутов, называемых компонентами. В их число входят две фиктивные компоненты: полная компонента (обозначается «*») - это множество, равное домену соответствующего (по месту ее расположения в кортеже) атрибута; пустое множество - 0. В виде ^-систем удобно КНФ конечных предикатов, а в виде С-систем - их дизъюнктивные нормальные формы (ДНФ). В АК процесс поиска выполняющих подстановок некоторой КНФ сводится к преобразованию ^-систем в С-системы.
Преобразование АК-объектов в альтернативные классы
Алгоритм преобразования ^-системы в С-систему является комбинаторным по вычислительной сложности.
Утверждение 1. Каждый С-кортеж (^-кортеж) Р преобразуется в эквивалентную ему диагональную ^-систему (С-систему).
Алгоритмы преобразования С-кортежей и ^-кортежей в альтернативные классы не требуют для своей реализации алгоритмов экспоненциальной сложности. Трудоемкость алгоритмов существенно возрастает при преобразовании в альтернативные классы С-систем и ^-систем.
Утверждение 2. D-система Р, содержащая т ^-кортежей, эквивалентна С-системе, которая равна пересечению т С-систем, полученных с помощью преобразования каждого ^-кортежа из Р в С-систему.
Важность данного утверждения с теоретической точки зрения состоит в том, что она определяет существенную в ряде доказательств и обоснований возможность представить любую структуру АК в виде С-кортежа или С-системы.
Утверждение 3. С-система Р, содержащая т С-кортежей, эквивалентна ^-системе, которая равна объединению т ^-систем, полученных с помощью преобразования каждого С-кортежа из Р в ^-систему.
(а, с} (й } (Ь, й}
0 (а, й} (а, с}
(Ь, с} 0 {Ь}
получим проме-
Рассмотрим преобразование ^-системы Р =
в С-систему. Преобразуя каждый ^-кортеж в С-систему жуточный результат:
(а, с} * *
1. “ ) (й} * * (а, й} * (Ь, с} * *
Р = * * * (Ь, й} п * * (а,с} п 1 * * Ь} 1
Вычислим пересечение первых двух С-систем (получающиеся при этом пустые С-кортежи, которые затем удаляются из С-системы, здесь и далее для экономии места не показаны):
{а, с} * *
{ } * {а, й} *
* * п
* * {Ь, й} * * {а, с}
{а, с} {а, й} *
{а, с} * {а, с}
* {й} *
* {й} {а, с}
* {а, й} {Ь, й}
Теперь найдем пересечение полученной С-системы с оставшейся:
Р=
{а, с} {а, й } *
{а, с} * {а, с}
* {й} *
* {й} {а, с}
* {а, й } {Ь, й}
п
{Ь,с} * *
* * {Ь}
{с} {а, й } *
{а, с} {а, й } {Ь}
{с} * { а, с}
{Ь, с} {й} *
* {й} {Ь}
{Ь, с} {й} { а, с}
{Ь, с} {а, й } {Ь, й}
* { а, й} {Ь}
Алгоритм преобразования ^-систем в С-системы требует для своего выполнения больших вычислительных ресурсов, так как в общем случае является алгоритмом экспоненциальной сложности. Для систем большой размерности он может оказаться практически нереализуемым. Поэтому его целесообразно использовать по возможности реже, в АК разработаны методы и приемы, позволяющие значительно уменьшить требуемые вычислительные ресурсы для его выполнения. Остановимся на них подробнее, одним из таких методов является ортогонализация.
Ортогонализация
При анализе определенных С-систем можно увидеть, что некоторые пары содержащихся в них С-кортежей имеют непустое пересечение. Иногда это сильно усложняет расчеты. Например, возможны ситуации, когда требуется вычислить общее число элементарных кортежей, содержащихся в таких С-системах - приходиться учитывать все возможные пересечения пар, троек и так далее С-кортежей. Те же трудности возникают, если исследуются метрические свойства АК-объектов, например, их вероятностное представление. Ортого-нализация как раз и предназначена для преодоления этих трудностей.
Кроме того, ортогонализация дает эффективные средства уменьшения трудоемкости алгоритмов преобразования АК-объектов в альтернативные классы, и, в частности, ^-систем в С-системы.
Рассмотрим основные соотношения ортогонализации, используемые в математической логике.
ДНФ называется ортогональной, если любая пара ее конъюнктов не имеет общих выполняющих подстановок. Ортогонализация есть преобразование, переводящее произвольную формулу в эквивалентную ей ортогональную ДНФ.
В основе существующих методов ортогонализации лежит следующее соотношение, полученное П.С. Порецким для формул исчисления высказываний:
Дизъюнкция H\ V Н2 V ... V Hk эквивалентна ортогональной ДНФ вида
(Н\) V (Н1 л Щ V ... V (Н1 л И2 л ... лИк_ л Hk).
С-система называется ортогональной, если пересечение любой пары содержащихся в ней различных С-кортежей равно пустому С-кортежу.
Утверждение 4. ^-кортеж вида ^ Q2 ... Qm.\ Qm[, где Qi- произвольные компоненты, преобразуется в эквивалентную ему ортогональную С-систему:
а * . .. * *
а а . .. * *
а а . .. Qm-1 *
а а . .. Qm-1 Qm
Трудоемкость операции преобразования ^-системы в С-систему можно снизить, преобразуя ^-кортежи исходной системы в ортогональные С-системы.
Рассмотрим пример. Пусть в схеме отношений [XYZ], где X = Y = 2 = {a,b,c,d}, задан ^-кортеж ]{а,с} {d} {b,d}[. Тогда при преобразовании его в ортогональную С-систему получим следующие равенства:
{а, с} * * {а, с} * *
]{а,с} {ё} {Ь,ё}[ = * {С} * = {Ь, С} {С} *
* * {Ь, С} {Ь, С} {а, Ь, с} {Ь, с}
причем вторая С-система ортогональна.
Утверждение 5. Ортогонализация произвольных АК-объектов сводится к ортогонализации эквивалентных им ^-систем (преобразованию ^-систем в ортогональные С-системы). Для этого требуется:
1) выразить исходный АК-объект как ^-систему;
2) представить ^-систему как пересечение ^-кортежей;
3) каждый ^-кортеж преобразовать в ортогональную С-систему;
4) выполнить пересечение промежуточных ортогональных С-систем. Утверждение 6. Если Р и Q - ортогональные С-системы, то пресечение
этих С-систем, либо пусто, либо состоит из одного С-кортежа, либо представляет собой ортогональную С-систему.
Рассмотрим пример ортогонализации для ^-системы:
Р =
{а, с} {С} {Ь, С}
0 {а, С} {а, с}
{Ь, с} 0 {Ь}
При преобразовании ^-кортежей в эквивалентные им ортогональные С-системы получим:
Р =
{а,с} *
{Ь, С} {С}
{Ь, С} {а, Ь, с}
{Ь, С}
п
{а, С} *
{Ь,с} {а, с}
п
'{Ь, с}
{а, ё}
{Ь}
Вычислим промежуточные результаты (пустые С-кортежи не показаны):
{а, с} *
{Ь, С} {С}
{Ь, С} {а, Ь, с}
{ а, с} { а, С}
{ а, с} {Ь, с}
{Ь, С} {С}
{Ь, С} {а}
п
{а, С }
{Ь,с} {а,с}
{а, с} *
{Ь, С}
п
{Ь, с} {а, С}
{Ь}
{а, с} { а, С} *
{а, с} {Ь, с} { а, с}
{Ь, С} {С} *
{Ь, С} {а} {Ь, С}
'{с} {а, С } * “
{а} {а, С } {Ь}
{с} {Ь, с} {а, с}
{Ь} {С} *
{С} {С} {Ь}
{Ь} {а} {Ь, С}
{С} {а} {Ь} _
Получен результат, который по размерности незначительно улучшает результат, вычисленный без ортогонализации - матрица С-системы сократилась лишь на одну строчку. Далее будут рассмотрены некоторые другие методы сокращения размерности и трудоемкости вычислений при выполнении этой операции.
Эвристический алгоритм ортогонализации
Прежде чем приступить к изложению предложенного метода, рассмотрим одно важное соотношение, позволяющее во многих случаях существенно сократить перебор при преобразовании АК-объектов в альтернативные классы. Дело в том, что ^-кортеж, содержащий не менее двух непустых компонент, можно представить как ортогональную С-систему не единственным способом. Допустим, даны равенства:
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
" А * * " А * *
]А В С[ = * В * = А В *
* * С А В с
Если в промежуточном АК-объекте переставить местами С-кортежи, то эквивалентность не нарушится, но при ортогонализации после перестановки будет получено другое изображение того же ^-кортежа. В итоге для ^-кортежа ]А В С[формируется совокупность следующих равенств:
" А * * * В * * В * * * С"
]А В С[= * В * = * * С = * В С = А * *
* * С А * * А В С * В *
* * с
А * С .
А В С
Таким образом, если задан ^-кортеж, в котором содержится к непустых компонент, то алгоритм, описывающий получение из этого ^-кортежа всех возможных эквивалентных ему ортогональных С-систем, состоит из трех шагов:
\) перевести ^-кортеж в С-систему Р с к С-кортежами;
2) выбрать произвольную перестановку С-кортежей в Р (число таких перестановок равно к) и записать Р в порядке, соответствующем этой перестановке;
3) для каждой неполной компоненты Рц (/ - номер строки, Ц - номер столбца) преобразованной С-системы Р заменить все фиктивные компоненты
Рт (т>/), находящиеся ниже Рц ее дополнениями Рц .
Если целенаправленно использовать эти варианты преобразования, то можно существенно уменьшить как размерность вычисляемой С-системы путем сокращения числа входящих в нее С-кортежей, так и трудоемкость вычислений за счет того, что в промежуточных вычислениях образуется значительно больше пустых С-кортежей, которые не участвуют в последующих вычислениях. Этот прием особенно эффективен при преобразовании ^-систем в С-системы в рамках исчисления высказываний, но и для более широкого класса АК-объектов он также позволяет иногда получить существенное уменьшение трудоемкости. Для иллюстрации повторим ранее выполненное преобразование ^-системы Р в С-систему, но при этом ^-кортежи преобразуем в ортогональные С-системы иначе:
проведем сорти-
ровку ее столбцов и строк так, чтобы сгруппировать непустые компоненты в
{а, с} {а} {ъ, а}
\. В ^-системе Р[Х\Х2Х3] = 0 {а, а} {а, с}
{Ь,с} 0 {ъ}
верхнем левом миноре логическом матрицы кортежи с ненулевыми компонентами. Для этого переставим строки 1 и 3 местами.
]я й } {й} {а, с}"
2. Получим Р[Х3Х2Х1] = {a,с} ^,й} 0 .
{Ь} 0 {Ь, с}
3. Преобразуем ^-кортежи в эквивалентные им ортогональные С-системы. Получаем:
Р[ХХХі] =
~{Ь, Л} * * 1 * * сз , 1
{а, с} {Л} * п
{а, с} {а, Ь, с} {а, с} {Ь, Л} {а, Л} *
п
п
{Ь} * *
{а, Л, с} * {Ь, с}
4. Вычислим пересечение первых двух С-систем (получающиеся при этом пустые С-кортежи, которые затем удаляются из С-системы, здесь не показаны):
~{Ь, Л} * * {а,с} * * ~{Ь, Л} {а, Л} *
{а, с} {Л} * п * = {а, с} {Л} *
{а, с} {а, Ь, с} {а, с} {Ь, Л} {а, Л} {а, с} {а, Ь, с} {а, с}
Теперь найдем пересечение полученной С-системы с оставшейся:
~{Ь, Л} {а, Л} * ~ {Ь} {а, Л, с} *і* »і» ' {Ь} { а, Л} *
{а, с} {а, с} {Л} {а, Ь, с} * {а, с} п * * * {Ь, с} = {Л} {а, с} { а, Л} {Л} }} ,с ,с Ь, Ь,
{а, с} {а, Ь, с} {с} ]
Нетрудно убедиться, что итоговая С-система, содержащая четыре С-кортежа, ортогональна, а по составу элементарных кортежей эквивалентна ранее полученной С-системе, содержащей семь С-кортежей. Из примера видно, что суть метода сводится к тому, чтобы максимально увеличить число пустых кортежей, образующихся на первых и промежуточных этапах вычисления, путем соответствующего выбора вариантов ортогонализации ^-кортежей в исходной ^-системе - за счет этого существенно уменьшается число вариантов, подлежащих дальнейшей обработке.
Заключение
В статье предлагается один из методов “вычислительной логики”, направленный на снижение остроты проблемы “экспоненциальной катастрофы” при решении задач удовлетворения ограничений. Особенно продуктивным оказывается постановка и решение практических задач в виде задач удовлетворения ограничений в слабо формализованных предметных областях,
где требуется не только количественный, но и качественный анализ информации. В подобных системах логические модели, описывающие еще до конца не изученные аспекты функционирования системы, органично дополняют аналитические закономерности, уже устоявшиеся для полностью изученных фрагментов системы. Применение представленного метода в таких системах позволяет на практике выполнять теоретически сложные алгоритмы логического анализа за приемлемое время.
Литература
1. Рассел, С. Искусственный интеллект: современный подход. 2-е изд. / С. Рассел, П. Норвиг // пер. с англ.; ред. К.А. Птицына. - М.: Изд. дом «Вильямс», 2006. -1408 с.
2. Ченцов, А.Г. Экстремальные задачи маршрутизации: теория и приложения /А.Г. Ченцов // Шестая Всероссийская мультиконференция по проблемам управления, г. Геленджик, с. Дивноморское, 30 сентября - 5 октября 2013 г.: материалы мультиконференции: в 4 т. - Ростов-на-Дону: Изд-во Южного федерального университета, 2013. -Т.3. - C.213-220.
3. Кулик, Б.А. Алгебраический подход к интеллектуальной обработке данных и знаний / Б.А. Кулик, А.А. Зуенко, А.Я. Фридман - СПб.: Изд-во Политехн. ун-та, 2010. - 235 с.
4. Зуенко, А.А. Матрицеподобные вычисления в задачах удовлетворения ограничений /А.А. Зуенко // Шестая Всероссийская мультиконференция по проблемам управления, г. Геленджик, с. Дивноморское, 30 сентября -5 октября 2013 г.: материалы мультиконференции: в 4 т. - Ростов-на-Дону: Изд-во Южного федерального университета, 2013. -Т.1. - C.30-34
5. Зуенко, А.А. Реализация комбинированных методов логико-семантического анализа с использованием алгебры кортежей / А.А. Зуенко, Б.А. Кулик, А.Я. Фридман // Тринадцатая национальная конференция по искусственному интеллекту с международным участием, г. Белгород, 16-20 октября 2012г.: труды конференции. - Белгород: Изд-во БГТУ, 2012. -Т.2. - С.67-75.
6. Зуенко, А.А. Булевы алгебры как средство интеллектуального анализа систем рассуждений / А.А. Зуенко, А.Я. Фридман, Б.А. Кулик // Интеллектуальный анализ информации ИАИ-2012: сборник трудов XII Международной научной конф. имени Т.А. Таран, г. Киев, 16-18 мая 2012 г.: / гл. ред. С.В. Сирота.
- К.: Просвгга, 2012. - C.70-78.
7. Boris Kulik, Alexander Fridman, Alexander Zuenko. N-tuple Algebra: Providing Clarity by Combining Logical Inference with Defeasible Reasoning // Cybernetics and Systems 2012: Proceedings of Twentieth European Meeting on Cybernetics and Systems Research (EMCSR 2012), 10-13 April, 2012, Vienna, Austria.
- P.315-318.
8. Kulik, B. Logical Analysis of Intelligence Systems by Algebraic Method /B. Kulik, A. Fridman, A. Zuenko // Cybernetics and Systems 2010: Proceedings of Twentieth European Meeting on Cybernetics and Systems Research (EMCSR 2010) Vienna, Austria, 2010. - P.198-203.
Сведения об авторе
Зуенко Александр Анатольевич - к.т.н, научный сотрудник,
е-mail: zuenko @iimm. kolasc.net.ru
Alexander A. Zouenko - Ph.D. (Tech. Sci.), Researcher