3.17M
Category: programmingprogramming

Основы логического программирования. Лекция 1

1.

Товбис Елена Михайловна
Лекция 1
ОСНОВЫ ЛОГИЧЕСКОГО
ПРОГРАММИРОВАНИЯ

2.

ПОДХОДЫ К ПРОГРАММИРОВАНИЮ
Императивный (процедурный)
Как решать задачу?
Основаны на модели фон Неймана
Центральное понятие - алгоритм
Процессы создания модели решения и кодирования
разделены
Декларативный
Что именно нужно решать?
Поиском решения занимается система, человеку
нужно описать проблему с помощью
формализованной логики

3.

PROGRAMMING IN LOGIC
Краткость программ
Реляционность
Сопоставление с образцом
Поиск с возвратом
Нет циклов, массивов, указателей
рекурсия

4.

ОБЛАСТИ ПРИМЕНЕНИЯ
быстрая разработка прототипов
автоматический перевод с одного языка на другой;
создание естественно-языковых интерфейсов для
существующих систем;
символьные вычисления
проектирование динамических реляционных баз данных;
экспертные системы и оболочки экспертных систем;
автоматизированное управление производственными
процессами;
автоматическое доказательство теорем;
полуавтоматическое составление расписаний;
базирующееся на знаниях программное обеспечение;

5.

KNOWLEDGE-BASED TECHNOLOGY

6.

INTELLIGENT PLANNING
PDC 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.
English     Русский Rules