ФАКУЛЬТАТИВНЫЙ КУРС ' СИСТЕМА АВТОМАТИЗАЦИИ ПРОЦЕССА РЕШЕНИЯ ЗАДАЧ". Часть 3. Описание системы и примеры ее использования

Дмитриева Марина Валерьевна Павлова Марианна Владимировна

ФАКУЛЬТАТИВНЫЙ КУРС ' СИСТЕМА АВТОМАТИЗАЦИИ ПРОЦЕССА РЕШЕНИЯ ЗАДАЧ" Часть 3. Описание системы и примеры ее использования

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

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

Система реализована на языке Turbo Pascal 7.0 с использованием средств объектно-ориентированного программирования, для того, чтобы в дальнейшем ее можно было легко модифицировать и применить для решения других классов задач. Опишем сначала работу системы, функционирующей под MS DOS. Работа системы организована с помощью меню. Главное меню содержит три пункта: позволяет перейти к двум различным режимам системы или выйти из нее. При входе в любой из режимов соответствующее меню режима и строка подсказки содержат информацию о всех возможностях, предоставляемых пользователю для успешной работы в данном режиме.

База данных системы содержит набор задач, решение которых может быть продемонстрировано пользователю или которые пользователь может пытаться решить самостоятельно. Режим просмотра и корректировки

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

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

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

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

С каждым выводом (доказательством) фиксируются некоторые характеристики вывода: длина вывода; время, затраченное на по-

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

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

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

системе за поиском доказательства.

Для реализации следующей версии была выбрана среда программирования Borland Pascal 7.0 для Windows. Экран монитора при работе с системой выглядит так, как показано на рисунке 1. Работа системы осуществляется с помощью меню.

Меню "Задача" позволяет выбрать из базы данных системы задачу для решения. При необходимости можно отредактировать как текст задачи, так и формулы, описывающие задачу. Для этого надо выбрать пункт меню "Редактирование". Можно внести в базу данных новую задачу или изменить имеющуюся. Меню "Поиск" предоставляет некоторые возможности для перемещения по тексту задачи и поиска в нем нужного фрагмента. Пункт меню "КНФ" используется для построения исходного множества дизъюнктов, с которым можно будет производить дальнейшие действия. Построенное множество дизъюнктов может быть достаточно велико, и поэтому предоставляются средства для его сокращения. Выбирая различные пункты меню "Сокращение", можно сократить исследуемое множество дизъюнктов по правилам Девиса-Патнема. После сокращения множества дизъюнктов можно приступить к поиску решения. Для этого следует выбрать пункт меню "Решение", а в нем метод, которым будет осуществляться поиск доказательства. Меню "Окно" позволяет манипулировать окнами: отображать на экран все окна, либо располагать открытые окна каскадом и др. При запуске системы все пункты меню, кроме "Создать" и "Открыть", являются недоступными, так как не выбрана задача для решения. После выбора задачи из базы данных или после сохранения только что созданной задачи становится доступным пункт меню "КНФ". С него необходимо начинать решение любой задачи. После построения начального множества дизъюнктов становятся доступ-

| Задача Редактирование Поиск КНФ Сокращение Решение Окно

Из лабиринта можно выйти через 4 двери: ХЛ'.ЗДУ. Только одна из них ведет в рай. Совет дают 8 жрецов, каждый из которых либо рыцарь, либо лжецАВ,С,0,Т,Е, СьН. Нашему философу сообщили следующее: в: если Е - рыцарь, то F- рыцарь:

А: X - дверь в рай; В: Одна из дверей У./- ведет в рай; С: А и В рыцари; О: Обе двери X, V ведут в рай; Е: обе двери X, 2 ведут в рай; Г: либо О, либо Е рыцарь; Н: если в и я сам-рыцари, то А- рыцарь. Какую дверь следует выбрать философу?

H]d:\dmv\grant\13,frir G=|C>F| А=Х B=Y]Z С--А&В D=X8Y E-X&Z F=D|E H=G»H>A "X.

D:\PMW3nAI4T\SOLVER. EXE

¡Исходное множества дизъюнктов из Файла d:\drw\grant\13.fm

Рисунок 1

ными все пункты меню. Пользователь сам может выбирать последовательность сокращения множества дизъюнктов. На рисунке 1 размещены окна: текущей задачи, формул, описывающих задачу, и окно, содержащее исходное множество дизъюнктов. Знак '=' используется для логической эквивалентности, знак '>' для импликации и, наконец, знак 'Г для дизъюнкции.

примеры использования системы

В системе реализована линейная резолюция, использующая такие понятия, как упорядоченный дизъюнкт и отрезаемые литералы. Эти два понятия позволят улучшить линейную резолюцию, то есть сократить поиск решения. На множестве литералов, входящих в дизъюнкты, задается порядок. Говорят, что литерал Ь2 больше, чем литерал Ь1, если Ь2 следует за Ы в упорядочении этого дизъюнкта. Для упорядоченных дизъюнктов вводится понятие упорядоченной резольвенты. Если при построении резольвенты два или более литералов одинаковы, то упорядоченный дизъюнкт получается выбрасыванием всех литералов, совпадающих с меньшими. Информация об отрезаемых литералах хранится особым образом в дизъюнкте, и, если мы решили, что боковым дизъюнктом должен быть ранее порожденный центральный дизъюнкт, то не нужно будет решать, какой центральный дизъюнкт использовать, просто выполним некоторую операцию над этим дизъюнктом и получим новый центральный дизъюнкт. Более подробно об упорядоченных дизъюнктах, о представлении отрезаемых литералов можно прочесть в работе Ченя и Ли. Отметим, что в системе отрезаемые литералы обозначаются маленькими буквами латинского алфавита. Алгоритм, использующий как понятие упорядоченного дизъюнкта, так и информацию об отрезаемых литералах, называется ОЬ-выводом. Изложим алгоритм на примере. Рассмотрим следующее множество упорядоченных дизъюнктов:

S={AvBvC> ~AvBvC, ~С, ~В| 1. Начинаем вывод с упорядоченного дизъюнкта АуВуС. Последний литерал этого дизъюнкта С, и он может быть отрезан в процессе

применения правила резолюции со второй посылкой -С. Поэтому, выполняя это правило и записывая литерал С в рамку (в описываемой системе обрамление состоит в том, что обрамляемый литерал записывается маленькой буквой), мы получаем упорядоченную резольвенту AvBvc. Так как за литералом с не следует никакого необрамленного литерала, он выбрасывается, поэтому мы получаем дизъюнкт AvB.

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

3. Единственный литерал упорядоченного дизъюнкта, полученного на предыдущем шаге, это А. Строя резольвенту А с дизъюнктом ~AvBvC, получаем дизъюнкт avBvC, отрезаемый литерал обрамлен.

4. Упорядоченная резолюция дизъюнкта ауВ\/С и дизъюнкта ~С приведет к резольвенте avBvc. Так как за литералом с не следует никакого необрамленного литерала, он выбрасывается и получаем дизъюнкт ауВ.

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

Приведем решение двух задач первой версии системы.

ТЕКУЩАЯ ЗАДАЧА: Философу требуется найти карту на остров сокровищ.

На столе разложены три карты: X, У и г. Только одна карта позволяет найти остров. В комнате находится 5 колдунов: А, В, С, О, Е, каждый из которых либо рыцарь, либо лжец.

Каждый колдун дал философу совет: Е: либо я лжец, либо С и В однотипны; А: Х- правильная карта; В: У - правильная карта; С: неверно, что А и В оба лжеца; О: либо А - лжец, либо В - рыцарь.

Какая из карт правильная? Обозначим через X утверждение "X - правильная карта" (аналогично для У,2), через А - "А - рыцарь" (аналогично для В, С, О, Е).

РЕШЕНИЕ: Н1: Е<=>~Еу(С<=>0) Б2: А<=>Х ЕЗ: В<=>У Е4: С<=>АуВ Е5: 0<=>(~АуВ) в: У

ПОРОЖДЕНО СЛЕДУЮЩЕЕ МНОЖЕСТВО ДИЗЪЮНКТОВ: ДО ПРЕОБРАЗОВАНИЙ:

~EvCv~D,Ev~Cv~D,~AvX,Av~X,~BvY,Bv--Y, -СуАУВ, Cv~AvB,CvAv-B,Cv~Av~B, DvAvB,~Dv~AvB,DvAv~BvDv~Av~B,~Y} ПОСЛЕ ПРЕОБРАЗОВАНИЙ: правило единичного дизъюнкта -У {EvCvD,Ev~CvD,~Ev~CvD,EvCv~D, ~EvCv~D,Ev~Cv~D,~AvX,Av~X,~B, ~CvAvB, Cv~AvB,CvAv~B,Cv~Av~B, DvAvB,~Dv~AvB,DvAv~B,Dv~Av~B) ПОСЛЕ ПРЕОБРАЗОВАНИЙ: правило единичного дизъюнкта ~В {EvCvD,Ev~CvD,~Ev~CvD,EvCv~D,

~CvA,Cv~A,DvA,~Dv~A} МЕТОД ПОИСКА В ШИРИНУ: ПРОТИВОРЕЧИЕ НАЙДЕНО ОЬ-ВЫВОД:

ЕуС^Э, EvCv~D —> EvC

EvC, Ev~CvD —> ЕусуЭ

EvcvD, Ev~Cv~D —> Е

Е, ~Ev~CvD —> ev~CvD

ev~CvD, -Эу-А —> ev~Cvdv~A

ev~Cvdv~A, ~CvA —> ev~C

ev~C, ~EvCv~D —> ev~c v~D

ev~c ЭУА —> ev~c v~dvA

ev~c v~dvA, Cv~A —>

ДЛИНА ВЫВОДА РАВНА 9

КОЛИЧЕСТВО ПОРОЖДЕННЫХ

ДИЗЪЮНКТОВ 140

НАПРАВЛЕННОСТЬ ПОИСКА 0.0643

ВРЕМЯ РАБОТЫ 00:00:22

МЕТОД ПОИСКА В ГЛУБИНУ:

ПРОТИВОРЕЧИЕ НАЙДЕНО ОЬ-ВЫВОД:

EvCvD, EvCv~D —> EvC EvC, ~CvA —> EvcvA Еус^А, ~Dv~A —> Evcvav~D

Ev~CvD —> Е Е, ~ЕуСУ~0 —> evCv~D еуСу-Э, DvA —> evCv~dvA evCv~dvA> Су~А —> evC evC, ~СуА —> evcvA evcvA, —> evcvav~D

evcvav~D, —>

ДЛИНА ВЫВОДА РАВНА 10

КОЛИЧЕСТВО ПОРОЖДЕННЫХ ДИЗЪЮНКТОВ 100 НАПРАВЛЕННОСТЬ ПОИСКА 0.1000 ВРЕМЯ РАБОТЫ 00:00:11

ТЕКУЩАЯ ЗАДАЧА: Три богини заявили следующее: Афродита: Я самая прекрасная. Афина: Афродита не самая прекрасная. Гера: Я самая прекрасная. Афродита: Гера не самая прекрасная. Афина: Я самая прекрасная. Высказывание прекраснейшей истинны. Высказывания остальных ложны. Кто прекраснейшая? Докажите! Обозначения: А - "прекраснейшая Афродита"; В - "прекраснейшая Афина"; С - "прекраснейшая Гера".

РЕШЕНИЕ: Б1: АуВУС

F2:(~Av~B)&(~Av~C)&(~Bv~C) БЗ: А=>(А&А&~С&~С&~В) ¥4: В=>(~А&~А&~С&С&В) Е5: С=>(~А&А&С&С&~В) в: А

ПОРОЖДЕНО СЛЕДУЮЩЕЕ МНОЖЕСТВО ДИЗЪЮНКТОВ: ДО ПРЕОБРАЗОВАНИЙ:

(АуВУС, ~Av~BvC, ~AvBv~C, Av~Bv~C,~Av~Bv~C, --Av--CvB,~AvCv~B,~Av~Cv~B,~BvAvC, ~Bv~AvC,~BvAv~C,~Bv~Av~C,~CvAvB, ~Cv~AvB,~CvAv~B,~Cv~Av~B,~A} ПОСЛЕ ПРЕОБРАЗОВАНИЙ: { BvC,~Bv~C,~BvC,~CvB} МЕТОД ПОИСКА В ШИРИНУ:

ПРОТИВОРЕЧИЕ НА ЛДЕНО ОЬ-ВЫВОД:

BvC, ~CvB —> В В, ~Bv~C —> bv~C bv~C, -BvC —>

ДЛИНА ВЫВОДА РАВНА 3

КОЛИЧЕСТВО ПОРОЖДЕННЫХ ДИЗЪЮНКТОВ 5 НАПРАВЛЕННОСТЬ ПОИСКА 0.6000 МЕТОД ПОИСКА В ГЛУБИНУ: ПРОТИВОРЕЧИЕ НАЙДЕНО ОЬ-ВЫВОД: BvC, -CvB —> В В, ~BvC —> bvC bvC, ~Bv~C —>

ДЛИНА ВЫВОДА РАВНА 3

КОЛИЧЕСТВО ПОРОЖДЕННЫХ ДИЗЪЮНКТОВ 4 НАПРАВЛЕННОСТЬ ПОИСКА 0.7500

Напомним, что на рисунке 1 уже были размещены окна для версии системы, функционирующей под Windows 3.11. В результате работы системы формируется файл, в котором хранится последовательность преобразований множества дизъюнктов и построенные выводы. Для задачи, условие которой хранится в окне, изображенном на рисунке 1, была сформирована следующая информация.

Исходное множество дизъюнктов из файла d:\dmv\grant\13.frm CIFIG,CI~FIG,~CIFI~G,~CI~FIG,AI~X, ~AIX,BIYI~Z,BI~YIZ,BI~YI~Z,~BIYIZ, AIBI-C, AI-BI-C,-AIBI-C,~AI~BIC,DI~XI~Y, ~DIXIY,~DIXI~Y,~DI~XIY, EI~XI~Z,~EIXIZ,~EIXI~Z,~EI~XIZ,DIEI~F, DI~EIF,~DIEIF,~DI~EIF,AIGIH, AI~GIH,AI~GI~H,~AIGIH,~AI~GIH,~X Метод поиска в ширину: противоречие найдено OL-вывод:

CIFIG, AI-GIH -> CIFIgAH CIFIgAH, AI-GI-H -> CIFIgA CIFIgA, -AIX -> CIFIgaX CIFIgaX, -X -> CIF CIF, CI-FIG -> ClfG ClfG, AI-GIH -> ClfgAH ClfgAH, AI-GI-H -> ClfgA ClfgA, ~AIX -> ClfgaX

ClfgaX, -X -> С С, AIBI-C -> cAlB cAlB, AI-BI-C -> cA cA, -AIX -> calX calX, -X ->

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

Исходное множество дизъюнктов из файла d:\dmv\grant\l 3.frm CIFIG,CI-FIG,-CIFI-G,-CI-FIG,AI-X, ~AIX,BIYI~Z,BI~YIZ,BI~YI~Z,~BIYIZ, AIBI-C,AI-BI-C,-AIBI-C,~AI~BIC,DI~XI~Y, ~DIXIY,~DIXI~Y,~DI~XIY, EI~XI~Z,~EIXIZ,~EIXI~Z,~EI~XIZ,DIEI~F, DI~EIF,~DIEIF,~DI~EIF,AIGIH, AI-GIH,AI-GI-H,-AIGIH,-AI-GIH,-X Результат упрощения no правилу единичного дизъюнктаХ:

Новое множество дизъюнктов: CIFIG,CI~FIG,~CIFI~G,~CI~FIG,~A,BIYI~Z, BI~YIZ,BI~YI~Z,~BIYIZ, AIBI-C, AI-BI-C,-AIBI-C,-AI-BIC,~DIY,-DI~Y, ~EIZ,~EI~Z,DIEI~F,DI~EIF,~DIEIF, ~DI~EIFAIGIH,AI-GIH,AI-GI-H,-AIGIH,-AI-GIH. Чистых литералов нет! Результат упрощения по правилу единичного дизъюнкта А:

Новое множество дизъюнктов:

CIFIG,CI~FIG,~CIFI~G,~CI~FIG,BIYI~Z,

BI~YIZ,BI~YI~Z,~B!YIZ,BI~C,~BI~C,

~DIY,~DI~Y,~EIZ,~EI~Z,DIEI~F,DI~EIF,

~DIEIF,~DI~EIF,GIH,~GIH,~GI~H.

Единичных дизъюнктов нет!

Результат упрощения по правилу тавтологии:

CIFIG,CI~FIG,~C!FI~G,~CI~FIG,BIYI~Z,

BI~YIZ,BI~YI~Z,~BIYIZ,BI~C,~BI~C,

~DIY,~DI~Y,~EIZ,~EI~Z,DIEI~F,DI~EIF,

~DIEIF,~DI~EIF,GIH,~GIH,~GI~H.

Метод поиска в ширину: противоречие

найдено.

OL-вывод:

CIFIG, -GIH -> CIFIgH CIFIgH, -Gl-H -> CIF

СР, С1~БЮ -> СЮ

сш, ~ан -> с^н свд ~а~н -> с

С, В1~С -> сВ сВ, ~В1~С ->

В последнем случае длина построенного вывода равна 7, к исходному множеству дизъюнктов применялись правила единичного дизъюнкта, тавтологии и чистого литерала.

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

юнктов.

Желающие могут попытаться решить рассмотренные задачи, используя программу для моделирования и анализа естественных рассуждений, предложенную Б.А. Куликом во 2 номере журнала. Тогда при несколько большей подготовительной работе при записи утверждений будет получен целый список возможных логических следствий, что может оказаться удобным для задач с трудно прогнозируемым исходом.

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

Литература.

1. Н. Дж. Нильсон. Принципы искусственного интеллекта. - М. Радио и связь, 1985.

2. Н. Дж. Нильсон. Искусственный интеллект. Методы поиска решений. - М. Мир, 1973.

3. С. Клини. Математическая логика. - М. Мир, 1973.

4. Ч. Чень, Р. Ли. Математическая логика и автоматическое доказательство теорем. -Наука, 1983.

5. Р. Смаллиан. Как же называется эта книга? - М. Мир, 1981.

6. Р. Смаллиан. Принцесса или тигр? - М. Мир, 1985.

7. Р. Смаллиан. Алиса в стране смекалки. - М. Мир, 1987.

8. Н.К. Косовский. Элементы математической логики и ее применение к теории субрекурсивных алгоритмов. - Изд-во ЛГУ, 1981.

9. М.В. Дмитриева, М.В. Павлова. Система автоматизации процесса решения задач. Часть 1. Журнал "Компьютерные инструменты в образовании". № 2, 1998.

10. М.В. Дмитриева, М.В. Павлова. Система автоматизации процесса решения задач. Часть 2. Журнал "Компьютерные инструменты в образовании". № 3/4, 1998.

Дмитриева Марина Валерьевна, доцент кафедры информатики СПбГУ.

Павлова Марианна Владимировна, старший преподаватель кафедры информатики СПбГУ, преподаватель школы-лицея № 419.

НАШИ АВТОРЫ