I. Основы языка Visual Prolog
1. Введение в логическое программированиеВ Прологе мы получаем решение задачи логическим выводом из ранее известных положений. Обычно программа на Прологе не является последовательностью действий, — она представляет собой набор фактов с правилами, обеспечивающими получение заключений на основе этих фактов. Поэтому Пролог известен как декларативный язык.
Пролог включает механизм вывода, который основан на сопоставлении образцов. С помощью подбора ответов на запросы он извлекает хранящуюся (известную) информацию. Пролог пытается проверить истинность гипотезы (другими словами, ответить на вопрос), запрашивая для этого информацию, о которой уже известно, что она истинна. Прологовское знание о мире — это ограниченный набор фактов (и правил), заданных в программе.
Одной из важнейших особенностей Пролога является то, что, в дополнение к логическому поиску ответов на поставленные вами вопросы, он может иметь дело с альтернативами и находить все возможные решения. Вместо обычной работы от начала программы до ее конца, Пролог может возвращаться назад и просматривать более одного "пути" при решении всех составляющих задачу частей.
Логика предикатов была разработана для наиболее простого преобразования принципов логического мышления в записываемую форму. Пролог использует преимущества синтаксиса логики для разработки программного языка. В логике предикатов вы, прежде всего, исключаете из своих предложений все несущественные слова. Затем вы преобразуете эти предложения, ставя в них на первое место отношение, а после него — сгруппированные объекты. В дальнейшем объекты становятся аргументами, между которыми устанавливается это отношение. В качестве примера в табл. представлены предложения, преобразованные в соответствии с синтаксисом логики предикатов.
Таблица 1. Синтаксис логики предикатов
Предложения на естественном языке | Синтаксис логики предикатов |
Машина красивая | fun (car) |
Роза красная | red (rose) |
Билл любит машину, если машина красивая | likes (bill, Car) if fun (Car) |
На Прологе описываются объекты (objects) и отношения (relations), а затем описывает правила (rules), при которых эти отношения являются истинными. Например, предложение
Билл любит собак. (Bill likes dogs.)
устанавливает отношение между объектами Bill и dogs (Билл и собаки); этим отношением является likes (любит). Ниже представлено правило, определяющее, когда предложение "Билл любит собак" является истинным:
Билл любит собак, если собаки хорошие. (Bill likes dogs if the dogs are nice.)
В Прологе отношение между объектами называется фактом (fact). В естественном языке отношение устанавливается в предложении. В логике предикатов, используемой Прологом, отношение соответствует простой фразе (факту), состоящей из имени отношения и объекта или объектов, заключенных в круглые скобки. Как и предложение, факт завершается точкой (.).
Ниже представлено несколько предложений на естественном языке с отношением "любит" (likes):
Билл любит Синди. (Bill likes Cindy)
Синди любит Билла. (Cindy likes Bill)
Билл любит собак. (Bill likes dogs)
А теперь перепишем эти же факты, используя синтаксис Пролога:
likes(bill, cindy).
likes(cindy, bill).
likes (bill, dogs).
Факты, помимо отношений, могут выражать и свойства. Так, например, предложения естественного языка "Kermit is green" (Кермит зеленый) и "Caitlin is girl" (Кейтлин — девочка) на Прологе, выражая те же свойства, выглядят следующим образом:
green (kermit).
girl(caitlin).
3. ПредикатыОтношение в Прологе называется предикатом. Аргументы — это объекты, которые связываются этим отношением; в факте
likes (bill, cindy).
отношение likes — это предикат, а объекты bill и cindy — аргументы.
Примеры предикатов с различным числом аргументов:
pred(integer, symbol)
person (last, first, gender)
run()
birthday(firstName, lastName, date)
В примере показано, что предикаты могут вовсе не иметь аргументов.
4. ПравилаПравила позволяют вам вывести один факт из других фактов. Другими словами, можно сказать, что правило — это заключение, для которого известно, что оно истинно, если одно или несколько других найденных заключений или фактов являются истинными. Ниже представлены правила, соответствующие связи "любить" (likes):
Синди любит все, что любит Билл. (Cindy likes everything that Bill likes)
Кейтлин любит все зеленое. (Caitlin likes everything that is green)
Используя эти правила, вы можете из предыдущих фактов найти некоторые вещи, которые любят Синди и Кейтлин:
Синди любит Синди. (Cindy likes Cindy)
Кейтлин любит Кермит. (Caitlin likes Kermit)
Чтобы перевести эти правила на Пролог, вам нужно немного изменить синтаксис:
likes(cindy, Something):- likes (bill, Something). ilikes(caitlin, Something):- green (Something) .
Символ :- имеет смысл "если", и служит для разделения двух частей правила: заголовка и тела. Можно рассматривать правило и как процедуру. Другими словами, правила
likes(cindy, Something):- likes (bill, Something).
likes(caitlin, Something):- green (Something).
означают: "Чтобы доказать, что Синди любит что-то, докажите, что Билл любит это" и "Чтобы доказать, что Кейтлин любит что-то, докажите, что это что-то зеленое". С такой "процедурной" точки зрения правила могут "попросить" Пролог выполнить другие действия, отличные от доказательств фактов, например, напечатать что-нибудь.
5. Запросы (Цели)Описав в Прологе несколько фактов, можно задавать вопросы, касающиеся отношений между ними. Это называется запросом (query) системы языка Пролог. Можно задавать Прологу такие же вопросы, которые мы могли бы задать вам об этих отношениях. Основываясь на известных, заданных ранее фактах и правилах, вы можете ответить на вопросы об этих отношениях, в точности так же это может сделать Пролог. На естественном языке мы спрашиваем: Does Bill like Cindy? (Билл любит Синди?) По правилам Пролога мы спрашиваем:
likes(bill, cindy).
Получив такой запрос, Пролог ответит:
yes (да)
потому что Пролог имеет факт, подтверждающий, что это так. Немного усложнив вопрос, можно спросить на естественном языке: What does Bill like? (Что любит Билл?) По правилам Пролога мы спрашиваем:
likes(bill, What).
Необходимо отметить, что второй объект — What -начинается с большой буквы, тогда как первый объект — bill — нет. Это происходит потому, что bill — фиксированный, постоянный объект — известная величина, a What — переменная.
Переменные всегда начинаются с заглавной буквы или символа подчеркивания!
Пролог всегда ищет ответ на запрос, начиная с первого факта, и перебирает все факты, пока они не закончатся. Получив запрос о том, что Билл любит, Пролог ответит:
What=cindy
What=dogs
... отдаетесь учебе? YTS · Yes · No На основе этих данных построим базу знаний продукционной модели с помощью простой конструкции : Если (условие), то (действие), Набор правил для экспертной системы прогнозирования сдачи сессии студентами на основании текущей успеваемости: 3. If LIO=”Yes” and LIK=”Yes” then LI = “Yes” 4. If LIO=”Yes” and LIK=”No” then LI = “Yes” 5. If LIO=”No” ...
... названием "Prolog", а внутри него ярлык на файл "Prolog.exe" с названием "Prolog with databases", ярлык на help-файл и на файл "readme.txt". 3.3 Руководство пользователя программы интерпретатора языка Пролог 3.3.1 Запуск программы Запуск программы можно произвести несколькими способами. Нажать кнопку "Пуск", выбрать в меню пункт "Программы", выбрать пункт "Prolog". После того, как ...
... проектирование и программирование 0.8 Структурное проектирование включает в себя: - нисходящее проектирование ("сверху вниз"), - модульное программирование, - структурное программирование. 0.8.1.Нисходящее проектирование Метод предполагает последовательное разложение функции обработки данных на простые функциональные элементы ("сверху ...
... набор процедур и функций языков программирования Basic и Pascal, позволяют управлять графическим режимом работы экрана, создавать разнооборазные графические изображения и выводить на экран текстовые надписи. ГЛАВА 2. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ЯЗЫКА ПРОГРАММИРОВАНИЯ В КУРСЕ ИНФОРМАТИКИ БАЗОВОЙ ШКОЛЫ (НА ПРИМЕРЕ BASIC И PASCAL) 2.1 Разработка мультимедиа курса «Графические возможности языков ...
0 комментариев