Similar presentations:
Основы логического программирования. Лекция 1
1.
Товбис Елена МихайловнаЛекция 1
ОСНОВЫ ЛОГИЧЕСКОГО
ПРОГРАММИРОВАНИЯ
2.
ПОДХОДЫ К ПРОГРАММИРОВАНИЮИмперативный (процедурный)
Как решать задачу?
Основаны на модели фон Неймана
Центральное понятие - алгоритм
Процессы создания модели решения и кодирования
разделены
Декларативный
Что именно нужно решать?
Поиском решения занимается система, человеку
нужно описать проблему с помощью
формализованной логики
3.
PROGRAMMING IN LOGICКраткость программ
Реляционность
Сопоставление с образцом
Поиск с возвратом
Нет циклов, массивов, указателей
рекурсия
4.
ОБЛАСТИ ПРИМЕНЕНИЯбыстрая разработка прототипов
автоматический перевод с одного языка на другой;
создание естественно-языковых интерфейсов для
существующих систем;
символьные вычисления
проектирование динамических реляционных баз данных;
экспертные системы и оболочки экспертных систем;
автоматизированное управление производственными
процессами;
автоматическое доказательство теорем;
полуавтоматическое составление расписаний;
базирующееся на знаниях программное обеспечение;
5.
KNOWLEDGE-BASED TECHNOLOGY6.
INTELLIGENT PLANNINGPDC develops Visual Prolog® which is a high level programming language
with its roots in the logical programming language, Prolog. The Prolog
language gives a strong advantage in implementing smart declarative
models, doing rule based planning or using heuristics and constraints to
solve problems.
Visual Prolog® is used for e.g. AI, mathematical optimization, expert systems
and includes the best features of logical, functional, object-oriented and
parallel programming paradigms.
7.
ОПИСАНИЕ ЗАДАЧИ В ПРОЛОГЕа) имена и структуры объектов,
задействованных в задаче;
б) имена
отношений,
о которых
известно, что
они
существуют
между
объектами
задачи;
в) факты и
правила,
описывающие
эти отношения.
8.
ОСНОВНЫЕ КОНСТРУКЦИИ ПРОЛОГАОсновные
конструкции
Утверждения
Термы
Константы
Переменны
е
Структуры
Факты
Правила
Вопросы
9.
КОНСТАНТЫЧисло
Целое 2, 8, -7, 0
Вещественное 5.5, 7.129, 0.0
Рациональное 3/7, 1/10
Атом – любая последовательность символов в ‘ ’ или
без кавычек, если:
1) атом состоит только из чисел, букв и символа
подчеркивания и начинающийся со строчной буквы;
2) атом состоит целиком из специальных символов. К
специальным символам относятся: + - * / ^ = ~ : ;? @ $
&.
10.
ПЕРЕМЕННЫЕ (С БОЛЬШОЙ БУКВЫ)Это неопределенный единственный объект
Свободная переменная - которая не имеет
в данный момент никакого значения
Связанная переменная –
принявшая значение
X is 5, X is 6 ошибка
Анонимная _ - обозначает любой объект, не
принимает значений, заглушка
11.
СТРУКТУРЫf(a,b)
Состоит из заголовка и списка аргументов.
Число аргументов называют «арностью»
12.
ФАКТпростейший вид утверждения, служащий для
констатации того, что выполняется отношение
между объектами (аксиома)
«Рекс – собака» собака(рекс).
«Миньон любит бананы»
любит (миньон, бананы).
«Васе нравится Маша» нравится(вася, маша).
«2+2=5» плюс(2,2,5).
«Крокодил зеленый» зеленый(крокодил).
Джек и Лиза – родители Рекса
родитель(лиза, рекс). родитель(джек, рекс).
13.
ФАКТменю.
человек(‘Иванов’, ‘Иван’,м).
человек(‘Иванова’, ‘Мария’,ж).
умнож(0,1,0).
умнож(1,0,0).
умнож(1,1,1).
умнож(0,0,0).
14.
ПРАВИЛОэто утверждение, позволяющее определять новые
отношения в терминах существующих.
Правила позволяют выводить из фактов некоторый
другой факт.
А:-В1, В2, В3,… ,ВN, где N 0,
частный случай правила при N=0 – это факт.
Вы намокнете если идет дождь, а у вас нет зонта:
мокрый(вы):-погода_сейчас(дождь),
not(имеет_зонт(вы)).
15.
ПРАВИЛО С ПЕРЕМЕННОЙВасе нравится все, что нравится Маше:
нравится(вася, Нечто):-нравится(маша, Нечто) .
Собакой является потомок собаки:
собака(Некто):-родитель(Некто1, Некто), собака(Некто1).
Маше нравится все зеленое:
нравится(маша, Нечто):-зеленое(Нечто).
Отец- это мужчина, у которого есть ребенок:
отец(X, Y):– ребенок(Y, X), мужчина(X).
16.
ПРАВИЛОplus(1,X,Y):-Y=X+1.
max(X,Y,X):-X>=Y.
max(X,Y,Y):-X<Y.
somth(Х,1):-Х>0.
somth (Х,0):-Х = 0.
somth (Х,-1):-Х<0.
eq(Х,У):-А=sqrt(Х), У=А+1.
menu:-write(“hello world!”), read(_).
17.
УНИВЕРСАЛЬНЫЙ ФАКТplus(0,X,X).
plus(X,0,X).
mul(1,X,X).
mul(X,1,X).
mul(0,X,0).
mul(X,0,0).
18.
ВОПРОСсредство извлечения информации из
логической программы (выполняется ли
некоторое отношение между объектами?)
Целевое утверждение
Цель
19.
ПРЯМОЙ ВОПРОС«Является ли Рекс собакой?»
?-собака(рекс).
Да
«Является ли Феликс собакой?»
?-собака(феликс).
Нет
20.
ВОПРОС С ПЕРЕМЕННОЙ«Какие существа являются собаками?»:
?-собака(Х).
Х=рекс
Х=лиза
Х=джек
3 решения
21.
ВОПРОС С ПЕРЕМЕННОЙВыясним, что нравится Васе:
?-нравится(вася,Что).
Что=маша
Что=крокодил
22.
ВОПРОС С АНОНИМНОЙ ПЕРЕМЕННОЙродитель(николай,егор).
родитель(мария,егор).
родитель(егор,регина).
?-родитель(Х,_).
Х=николай
Х=мария
Х=егор
3 решения
23.
ПРИМЕРdog(sharik).
dog(tuzik).
cat(pushok).
cat(druzgok).
hamster(pit).
man(bill).
man(george).
man(barak).
man(platon).
man(sokrat).
woman(ann).
woman(kate).
woman(pam).
dead(sharik).
dead(platon).
dead(sokrat).
age(sharik, 18).
age(tuzik, 10).
age(pushok, 5).
age(druzhok, 2).
age(bill, 62).
age(george, 62).
age(barak, 47).
age(sokrat, 70).
age(platon, 80).
age(ann, 20).
age(kate, 25).
age(pam, 30).
24.
ПРИМЕРanimal(X) :- dog(X); cat(X); hamster(X).
human(X) :- man(X); woman(X).
alive(X) :(animal(X); human(X)), not(dead(X)).
old(X) :( animal(X), age(X, Age), Age >= 10 ;
human(X), age(X, Age), Age >= 60
), not(dead(X)).
young(X) :- alive(X), not(old(X)).
25.
ПРИМЕР?- young(Y).
Y = pushok ;
Y = druzgok ;
Y = pit ;
Y = barak ;
Y = ann ;
Y = kate ;
Y = pam.
?- young(H), man(H).
H = barak ;
false.