<<
>>

ЛАБОРАТОРНАЯ РАБОТА. РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ С ПОМОЩЬЮ ЯЗЫКА VISUAL PROLOG

КРАТКАЯ СПРАВКА

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

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

4.2.1. СОЗДАНИЕ БАЗ ЗНАНИЙ НА ПРОЛОГЕ

ЛОГИКА ПРЕДИКАТОВ

Предикат P(Xlf Х2, ..., Хп) — это логическая функция п переменных, которая в зависимости от их значений принимает два значения Т (Истина) или F (Ложь). Здесь Р — имя предиката. Значения переменных называются константами или объектами. Одноместный предикат обычно выражает сущность объекта. Рассмотрим простое выражение

Иван — человек,

которое можно классифицировать как

Сущность Объект

человек Иван

и представить в виде предиката

человек(Иван), (4.2.1)

который называется фактом.

Двухместные, трехместные и прочие предикаты выражают отношения между объектами. Начнем с простого высказывания:

Телефон Арбузова имеет номер 72-41-02.

После удаления из него слов имеет, номер получим отношение

Отношение Объект1 Объект2

Телефон Арбузов 72-41-02

образующее двухместный предикат — факт

телефон(Арбузов,72-41-02) .

Совокупность такого рода фактов называется базой знаний (БЗ), которую будем именовать «телефонным справочником».

телефон(Арбузов,72-41-02) .

телефон(Иванов,74-11-93) .

телефон(Артемов,41-97-44) .

телефон(Бабкина,72-41-41) . (4.2.2)

телефон(Воржев,77-06-18) .

телефон(Гуляев,72-41-73) .

телефон(Деев,77-22-19) .

телефон(Еремина,72-40-24) .

Другому, близкому по смыслу выражению некто(X) — человек

соответствует следующая предикатная форма:

человек(X),

где X — переменная, обозначающая имя человека.

Теперь запишем известное выражение

Человек смертен

в эквивалентной форме

Если некто(X) — человек,

то некто(X) смертен (4.2.3)

выделим в нем предикаты человек (X) , смертен (X) и

представим в виде импликации

Например, рассмотрим простое предложение Петя находится на речке

и сложное предложение

Ваня всегда находится там же,

где и Петя. (4.2.5)

В предложении (4.2.5) объекты Петя и речка связаны отношением находится, которое после удаления лишних слов и перестановки будет иметь вид

Отношение Объект 1 0бъект2

находится Петя речка,

что дает возможность записать двухместный предикат — факт

находится(Петя,речка). (4.2.6)

Представим предложение (4.2.5) в эквивалентной форме

Если Петя находится на этом месте,

то Ваня находится на этом же месте. (4.2.7)

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

находится(Петя,X) —> находится(Ваня,X). (4.2.8)

Следует отметить, что одним из значений X является речка.

Не меняя смысла, предложение (4.2.3) можно перефразировать:

некто(X) смертен, если некто(X) — человек.

и получить по аналогии с (4.2.4) так называемое правило

смертен(X):- человек(X), (4.2.9)

в котором знак импликации (—») заменен знаком (: -), который используется в Прологе. Подобным образом можно

записать правило для высказывания (4.2.7) и его предикатной формы (4.2.8)

находится(Ваня,X)

находится(Петя,X). (4.2.10)

В левой части от знака (: -) находится голова, а в правой — тело правила.

ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА VISUAL PROLOG

Начнем с описания структуры программы на Visual Prolog, для краткости на Прологе.

В ней можно выделить три обязательных раздела описания и раздел цели (рис. 4.2.1).

Раздел domains содержит описания объектов и переменных, называемых доменами. Домены бывают следующих типов:

1) символы (char) — все возможные одиночные символы, заключенные в апострофы: ’ а1, ’Ь',..., ' 3',

2) целые числа (integer) в пределах от -32768 до 32767;

3) действительные числа (real) в пределах от Ю~307 до Ю308;

4) строки (string) — последовательность символов не более 250,например "to day","123".

5) символьные имена (symbol) — последовательность строчных английских букв (man, ab, cd), цифр и подчеркиваний или последовательность любых символов (не более 250), заключенная в кавычки, например "лодка", "Star", "Иван да Марья".

Раздел predicates служит для описания используемых предикатов.

В разделе clauses находятся факты и правила, известные заранее.

В разделе goal формируются одна или несколько целей.

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

Теперь опишем переменные или объекты, называемые доменами и используемые в предикатах. Имя предиката и его аргументы записываются строчными буквами или именами на английском языке. Переменные записываются прописными буквами (X) или символьными именами (List), начинающимися с большой буквы, на английском языке. Вначале составим программу на Прологе (рис. 4.2.2), описывающую факты БЗ (4.2.2).

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

1) номера (X) телефона Иванова — tel ( "Иванов" ,X) ;

2) владельца (Y) телефона с номером 72-41-41 — tel(Y,"72-41-41").

Здесь X, Y — переменные, значения которых требуется определить; "Иванов", "72-41-41" — константы или заранее заданные значения переменных. Переменные обычно обозначаются прописными буквами.

Теперь опишем алгоритм решения, реализованный в Прологе.

Последовательно просматриваются факты и сопоставляются с целью 1. Процедура сопоставления цели с

Г-----------------------------------------------------

domains

vlad,nom tel = symbol

predicates

tel(vlad,nom tel)

clauses

tel("Арбузов","72-41-02") .

%Факт 1
tel("Иванов","74-11-93") . %Факт 2
tel("Артемов","41-97-44") . %Факт 3
tel("Бабкина","72-41-41") . %Факт 4
tel("Воржев","77-06-18") . %Факт 5
tel("Гуляев","72-41-73"). %Факт 6
tel("Деев","77-22-19") . %Факт 7
tel("Еремина","72-40-24") .

i_

%Факт 8

первым фактом выглядит так. Вначале сравниваются предикаты цели и факта 1. Если они имеют одинаковые имена, то сравниваются соответствующие аргументы. Первым аргументом цели является константа "Иванов ", а факта 1 — константа "Арбузов".

Сопоставление считается неуспешным (константы "Иванов" и "Арбузов" различаются) и осуществляется переход к следующему факту 2. Успешным будет сопоставление цели 1 и факта 2, поскольку первые аргументы в цели и факте одинаковы. Цель 1 доказана, ответом будет конкретизация X = 74-11-93.

Для цели 2 успешным будет сопоставление с фактом 4, у которого второй аргумент — константа совпадает с аналогичным в цели. В результате переменная Y приобретает значение"Бабкина".

Ответом будет Y = Бабкина.

Рассмотрим на рис. 4.2.3 более сложную Пролог-программу, содержащую факт (4.2.1), правило (4.2.9) и соответственно одноместные предикаты •) —человек(*) и mortal (•) —смертен(*).

Целью может быть вопрос «Иван смертен?», или

mortal("Иван")

Программа работает следующим образом.

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

Предикат цели сопоставим с головой правила mortal (X), в результате чего переменная X в предикатах mortal (X) и men (X) приобретает значение

"Иван". Правило имеет значение Истина или считается завершенным, если все предикаты тела правила сопоставимы с фактами из БЗ. В нашем слу-

чае единственный предикат тела правилаmen ("Иван") сопоставим с аналогичным фактом. Ответом будет Yes (да).

Рис. 4.2.4

По аналогии составлена Пролог-программа (рис. 4.2.4) с фактом (4.2.6), правилом (4.2.10) и двухместным предикатом is (•, •) — находится(*,#).

Здесь паше и site — два аргумента предиката is (паше, site), означающие имя человека и его местонахождение.

Целью поиска может быть вопрос «где находится Ваня?» — is("Ваня",Y).

Отличие этой программы от предшествующей состоит в том, что после удачного сопоставления цели и предиката головы правила, предикат тела правила is ("Петя" , Y) успешно сопоставляется с фактом БЗ is ("Петя", "речка") и Y получает значение "речка", которое передается предикату головы правила is ("Ваня", "речка") .

Ответом будет Y = речка.

<< | >>
Источник: Ю. И. КУДИНОВ, Ф.Ф. ПАЩЕНКО, А. Ю. КЕЛИНА. ПРАКТИКУМ ПО ОСНОВАМ СОВРЕМЕННОЙ ИНФОРМАТИКИ. 2011

Еще по теме ЛАБОРАТОРНАЯ РАБОТА. РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ С ПОМОЩЬЮ ЯЗЫКА VISUAL PROLOG:

  1. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ПО РЕШЕНИЮ ПСИХОЛОГО-ПЕДАГОГИЧЕСКИХ ЗАДАЧ
  2. 7. Каждый школьник – это сложнейший мир проблем и задач. Забота о своевременном решении этих проблем и задач составляет основу строительства новой школы
  3. ЗАДАЧА: РЕШЕНИЕ
  4. § 3. СТРУКТУРА РЕШЕНИЯ ПЕДАГОГИЧЕСКИХ ЗАДАЧ
  5. Психологические особенности решения задач.
  6. § 3. Мышление, интуиция, воображение в решении задач
  7. Правило подчинения общения решению задач правового воспитания.
  8. юридико-психологические исследования решения разных правоохранительных задач
  9. Прием достижения момента истины в решении задач разговора.
  10. § 1. ПОНЯТИЕ О ПЕДАГОГИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ КАК ПРОЦЕССЕ НЕПРЕРЫВНОГО РЕШЕНИЯ ПРОФЕССИОНАЛЬНЫХ ЗАДАЧ
  11. Специфической особенностью творческих процессов решения задач является присутствие в них интуиции.
  12. Прием создания исходных благоприятных психологический условий для решения задач общения.
  13. Полное и глубокое изучение следователем и судом психологических особенностей личности обвиняемого способствует решению ряда актуальных задач.
  14. Глава IV ПСИХОЛОГО-ПЕДАГОГИЧЕСКАЯ ДИАГНОСТИКА ПОСТУПКОВ КАК СОСТАВНАЯ ЧАСТЬ РЕШЕНИЯ ПЕДАГОГИЧЕСКИХ ЗАДАЧ
  15. Задания по анализу педагогической ситуации и решению заключенных в ней педагогических задач
  16. СОСТАВЛЯЮЩИЕ ПРОЦЕССА, ОСНОВНЫЕ ЗАДАЧИ И ФОРМЫ РАБОТЫ