Интеллектуальные системы. Введение в язык Prolog. (Лекция 1)

Содержание

Слайд 2

Обработка знаний Обработка данных → обработка знаний Основная идея: не подстраивать

Обработка знаний

Обработка данных → обработка знаний
Основная идея: не подстраивать мышление человека

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

Логическое программирование Prolog: PROgramming in LOGic Основывается на исчислении предикатов. Принцип

Логическое программирование

Prolog: PROgramming in LOGic
Основывается на исчислении предикатов.
Принцип резолюции: метод автоматического

доказательства теорем в исчислении предикатов первого порядка (Робинсон, 1965 г.).
Слайд 4

Логическое программирование 1973 г.: создана программа для автоматического доказательства теорем. Использовалась

Логическое программирование

1973 г.: создана программа для автоматического доказательства теорем.
Использовалась для

обработки текстов на естественном языке.
Прообраз Prolog’а.
Слайд 5

Prolog Prolog — декларативный язык программирования (программист описывает, что нужно решать,

Prolog

Prolog — декларативный язык программирования (программист описывает, что нужно решать, а

не как).
Описание логической модели предметной области решаемой задачи через объекты, их свойства и отношений между собой, а не деталей программной реализации.
Фактически Пролог представляет собой не столько язык для программирования, сколько язык для описания данных и логики их обработки.
Слайд 6

Prolog В Прологе очень компактно, по сравнению с императивными языками, описываются

Prolog

В Прологе очень компактно, по сравнению с императивными языками, описываются многие

алгоритмы.
Это приводит к тому, что время разработки приложения на языке Пролог во многих случаях на порядок быстрее, чем на императивных языках.
Пролог имеет ряд механизмов, которыми не обладают традиционные языки программирования: сопоставление с образцом, вывод с поиском и возвратом.
Слайд 7

Prolog Основные области применения Пролога: обработка текстов естественном языке, разработка интерфейсов

Prolog

Основные области применения Пролога:
обработка текстов естественном языке, разработка интерфейсов с поддержкой

естественного языка;
символьные вычисления для решения уравнений, дифференцирования и интегрирования;
проектирование динамических реляционных баз данных;
экспертные системы и оболочки экспертных систем;
планирование.
Слайд 8

Синтаксис языка Prolog Программа на языке Пролог (база знаний), состоит из

Синтаксис языка Prolog

Программа на языке Пролог (база знаний), состоит из предложений

(или утверждений), каждое предложение заканчивается точкой.
Предложения бывают двух видов: факты, правила.
Предложение имеет вид
A :– B1, ... , Bn.
A — заголовок или голова предложения,
B1,..., Bn — тело.
Слайд 9

Синтаксис языка Prolog Факт констатирует, что между объектами выполнено некоторое отношение.

Синтаксис языка Prolog

Факт констатирует, что между объектами выполнено некоторое отношение. Он

состоит только из заголовка. Факт — это предложение, у которого тело пустое.
dog(rex).
Факт — безусловно истинное утверждение.
Предикат ≈ отношение.
Слайд 10

Синтаксис языка Prolog Предикат в Прологе состоит либо только из имени,

Синтаксис языка Prolog

Предикат в Прологе состоит либо только из имени, либо

из имени и следующей за ним последовательности аргументов, заключенной в скобки:
a
dog(rex)
friend(john, mary)
Слайд 11

Синтаксис языка Prolog Аргументом или параметром предиката может быть константа (атом),

Синтаксис языка Prolog

Аргументом или параметром предиката может быть константа (атом), переменная

или составной объект. Число аргументов предиката называется его арностью или местностью.
dog(rex)
dog(X)
today(date(1, 9, 2015))
Слайд 12

Синтаксис языка Prolog Правило — это предложение, истинность которого зависит от

Синтаксис языка Prolog

Правило — это предложение, истинность которого зависит от истинности

одного или нескольких предложений. Обычно правило содержит несколько хвостовых целей, которые должны быть истинными для того, чтобы правило было истинным:
<предикат> :— <предикат>, …, <предикат>.
Символ " :– " означает "если", и вместо него можно писать if.
Символ "," — это логическое И (конъюнкция), вместо него можно писать and.
Слайд 13

Синтаксис языка Prolog Константы или атомы: Начинаются с прописной буквы, могут

Синтаксис языка Prolog

Константы или атомы:
Начинаются с прописной буквы, могут содержать буквы,

цифры, знак подчеркивания.
Могут состоять из специальных символов.
Строки в одинарных кавычках.
rex
’John Doe’
x_25
<--->
Слайд 14

Синтаксис языка Prolog Переменные начинаются с заглавной буквы или знака подчеркивания.

Синтаксис языка Prolog

Переменные начинаются с заглавной буквы или знака подчеркивания.
X
Result
_2
Анонимная переменная

_ (знак подчеркивания) — переменная, которая используется всего один раз.
has_child(X) :- parent(X, _).
somebody_has_child :- parent(_, _).
Слайд 15

Синтаксис языка Prolog Вопрос — предикат или конъюнкция предикатов. Вопрос —

Синтаксис языка Prolog

Вопрос — предикат или конъюнкция предикатов.
Вопрос — цель, к

которой надо стремиться. Ответ на вопрос может оказаться положительным или отрицательным, в зависимости от того, может ли быть достигнута соответствующая цель.
| ?- dog(rex).
yes
Слайд 16

Синтаксис языка Prolog man(tom). man(john). | ?- man(X). X = tom

Синтаксис языка Prolog

man(tom).
man(john).
| ?- man(X).
X = tom ?;
X = john ?;
no

Слайд 17

Синтаксис языка Prolog Если цель достигнута, система отвечает, что у нее

Синтаксис языка Prolog

Если цель достигнута, система отвечает, что у нее есть

информация, позволяющая сделать вывод об истинности вопроса (yes или true).
При этом если в вопросе содержатся переменные, то система выдает их значения, приводящие к решению.
Символ точки (.) прекращает поиск, точка с запятой (;) продолжает.
Если достичь цели не удалось, система ответит, что у нее нет положительного ответа (no или false).
Слайд 18

Синтаксис языка Prolog Арифметические операции: +, -, *, / Возведение в

Синтаксис языка Prolog

Арифметические операции: +, -, *, /
Возведение в степень: **
Целочисленное

деление //
Остаток от деления mod
Слайд 19

Синтаксис языка Prolog Сравнение: >, =, = Равенство: =, =:=, is Неравенство: \==, =\=

Синтаксис языка Prolog

Сравнение: >, <, >=, =<
Равенство: =, =:=, is
Неравенство: \==,

=\=