Слайд 2
![Обработка знаний Обработка данных → обработка знаний Основная идея: не](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-1.jpg)
Обработка знаний
Обработка данных → обработка знаний
Основная идея: не подстраивать мышление человека
под принципы функционирования компьютеров, а приблизить работу компьютера к тому, как мыслит человек.
Управление при помощи естественного языка.
Слайд 3
![Логическое программирование Prolog: PROgramming in LOGic Основывается на исчислении предикатов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-2.jpg)
Логическое программирование
Prolog: PROgramming in LOGic
Основывается на исчислении предикатов.
Принцип резолюции: метод автоматического
доказательства теорем в исчислении предикатов первого порядка (Робинсон, 1965 г.).
Слайд 4
![Логическое программирование 1973 г.: создана программа для автоматического доказательства теорем.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-3.jpg)
Логическое программирование
1973 г.: создана программа для автоматического доказательства теорем.
Использовалась для
обработки текстов на естественном языке.
Прообраз Prolog’а.
Слайд 5
![Prolog Prolog — декларативный язык программирования (программист описывает, что нужно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-4.jpg)
Prolog
Prolog — декларативный язык программирования (программист описывает, что нужно решать, а
не как).
Описание логической модели предметной области решаемой задачи через объекты, их свойства и отношений между собой, а не деталей программной реализации.
Фактически Пролог представляет собой не столько язык для программирования, сколько язык для описания данных и логики их обработки.
Слайд 6
![Prolog В Прологе очень компактно, по сравнению с императивными языками,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-5.jpg)
Prolog
В Прологе очень компактно, по сравнению с императивными языками, описываются многие
алгоритмы.
Это приводит к тому, что время разработки приложения на языке Пролог во многих случаях на порядок быстрее, чем на императивных языках.
Пролог имеет ряд механизмов, которыми не обладают традиционные языки программирования: сопоставление с образцом, вывод с поиском и возвратом.
Слайд 7
![Prolog Основные области применения Пролога: обработка текстов естественном языке, разработка](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-6.jpg)
Prolog
Основные области применения Пролога:
обработка текстов естественном языке, разработка интерфейсов с поддержкой
естественного языка;
символьные вычисления для решения уравнений, дифференцирования и интегрирования;
проектирование динамических реляционных баз данных;
экспертные системы и оболочки экспертных систем;
планирование.
Слайд 8
![Синтаксис языка Prolog Программа на языке Пролог (база знаний), состоит](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-7.jpg)
Синтаксис языка Prolog
Программа на языке Пролог (база знаний), состоит из предложений
(или утверждений), каждое предложение заканчивается точкой.
Предложения бывают двух видов: факты, правила.
Предложение имеет вид
A :– B1, ... , Bn.
A — заголовок или голова предложения,
B1,..., Bn — тело.
Слайд 9
![Синтаксис языка Prolog Факт констатирует, что между объектами выполнено некоторое](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-8.jpg)
Синтаксис языка Prolog
Факт констатирует, что между объектами выполнено некоторое отношение. Он
состоит только из заголовка. Факт — это предложение, у которого тело пустое.
dog(rex).
Факт — безусловно истинное утверждение.
Предикат ≈ отношение.
Слайд 10
![Синтаксис языка Prolog Предикат в Прологе состоит либо только из](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-9.jpg)
Синтаксис языка Prolog
Предикат в Прологе состоит либо только из имени, либо
из имени и следующей за ним последовательности аргументов, заключенной в скобки:
a
dog(rex)
friend(john, mary)
Слайд 11
![Синтаксис языка Prolog Аргументом или параметром предиката может быть константа](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-10.jpg)
Синтаксис языка Prolog
Аргументом или параметром предиката может быть константа (атом), переменная
или составной объект. Число аргументов предиката называется его арностью или местностью.
dog(rex)
dog(X)
today(date(1, 9, 2015))
Слайд 12
![Синтаксис языка Prolog Правило — это предложение, истинность которого зависит](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-11.jpg)
Синтаксис языка Prolog
Правило — это предложение, истинность которого зависит от истинности
одного или нескольких предложений. Обычно правило содержит несколько хвостовых целей, которые должны быть истинными для того, чтобы правило было истинным:
<предикат> :— <предикат>, …, <предикат>.
Символ " :– " означает "если", и вместо него можно писать if.
Символ "," — это логическое И (конъюнкция), вместо него можно писать and.
Слайд 13
![Синтаксис языка Prolog Константы или атомы: Начинаются с прописной буквы,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-12.jpg)
Синтаксис языка Prolog
Константы или атомы:
Начинаются с прописной буквы, могут содержать буквы,
цифры, знак подчеркивания.
Могут состоять из специальных символов.
Строки в одинарных кавычках.
rex
’John Doe’
x_25
<--->
Слайд 14
![Синтаксис языка Prolog Переменные начинаются с заглавной буквы или знака](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-13.jpg)
Синтаксис языка Prolog
Переменные начинаются с заглавной буквы или знака подчеркивания.
X
Result
_2
Анонимная переменная
_ (знак подчеркивания) — переменная, которая используется всего один раз.
has_child(X) :- parent(X, _).
somebody_has_child :- parent(_, _).
Слайд 15
![Синтаксис языка Prolog Вопрос — предикат или конъюнкция предикатов. Вопрос](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-14.jpg)
Синтаксис языка Prolog
Вопрос — предикат или конъюнкция предикатов.
Вопрос — цель, к
которой надо стремиться. Ответ на вопрос может оказаться положительным или отрицательным, в зависимости от того, может ли быть достигнута соответствующая цель.
| ?- dog(rex).
yes
Слайд 16
![Синтаксис языка Prolog man(tom). man(john). | ?- man(X). X =](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-15.jpg)
Синтаксис языка Prolog
man(tom).
man(john).
| ?- man(X).
X = tom ?;
X = john ?;
no
Слайд 17
![Синтаксис языка Prolog Если цель достигнута, система отвечает, что у](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-16.jpg)
Синтаксис языка Prolog
Если цель достигнута, система отвечает, что у нее есть
информация, позволяющая сделать вывод об истинности вопроса (yes или true).
При этом если в вопросе содержатся переменные, то система выдает их значения, приводящие к решению.
Символ точки (.) прекращает поиск, точка с запятой (;) продолжает.
Если достичь цели не удалось, система ответит, что у нее нет положительного ответа (no или false).
Слайд 18
![Синтаксис языка Prolog Арифметические операции: +, -, *, / Возведение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-17.jpg)
Синтаксис языка Prolog
Арифметические операции: +, -, *, /
Возведение в степень: **
Целочисленное
деление //
Остаток от деления mod
Слайд 19
![Синтаксис языка Prolog Сравнение: >, =, = Равенство: =, =:=, is Неравенство: \==, =\=](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/187042/slide-18.jpg)
Синтаксис языка Prolog
Сравнение: >, <, >=, =<
Равенство: =, =:=, is
Неравенство: \==,
=\=