ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

Preview:

DESCRIPTION

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ. ТРОИЧНАЯ ЛОГИКА. БИНАРНАЯ ЛОГИКА: ВЫВОД НА ОСНОВЕ ИМПЛИКАЦИЙ. rain → use_umbrella Если идет дождь, надо открыть зонтик Это не значит, что если нет дождя, зонтик использовать нельзя. Это значит только , что если зонтик закрыт, дождя нет В данном случае проблемы - PowerPoint PPT Presentation

Citation preview

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ТРОИЧНАЯ ЛОГИКА

1

БИНАРНАЯ ЛОГИКА: ВЫВОД НА ОСНОВЕ ИМПЛИКАЦИЙ

2

rain → use_umbrellaЕсли идет дождь, надо открыть зонтик• Это не значит, что если нет дождя, зонтик использовать

нельзя.

• Это значит только , что если зонтик закрыт, дождя нет

В данном случае

проблемы

незнания

не существуетuse_umbrella

rain

БИНАРНАЯ ЛОГИКА: NEGATION AS FAILURE

3

possible rain → take_umbrellaЕсли возможен дождь, надо прихватить зонтик• Это не значит, что если дождь невозможен, зонтик

брать нельзя.• Это значит только, что если зонтик оставлен дома,

дождя не будет.

НО если неизвестно, будет ли дождь, то take_umbrella – ложь(negation as failure)

БИНАРНАЯ ЛОГИКА: АСИММЕТРИЯ

4

ДОСТОВЕРНОСТЬ

ЛОЖЬ

ИСТИНА

0% 100%

БИНАРНАЯ ЛОГИКА

БИНАРНАЯ ЛОГИКА: АСИММЕТРИЯ

5

ДОСТОВЕРНОСТЬ

ЛОЖЬ

ИСТИНА

0% 100%

БИНАРНАЯ ЛОГИКА

Любая неопределенность трактуется как ложь

БИНАРНАЯ ЛОГИКА: NEGATION AS FAILURE

has_child(andrey,egor). % Андрей – родитель Егораspouse(andrey, julia). % Юлия – супруга Андрея

Допущение замкнутого мира:julia – мачеха Егора , если spouse(andrey,julia) и not(has_child(julia,egor).

Отсутствие факта = отрицание фактаДопущение открытого мира:julia – мачеха Егора, если существует X такое, что has_child(X,egor) и X \= julia.

Факт отрицается если есть явный отрицающий факт

6

НЕЧЕТКАЯ ЛОГИКА: СИММЕТРИЯ

7

ДОСТОВЕРНОСТЬ

ЛОЖЬ

ИСТИНА

0% 100%

НЕЧЕТКАЯ ЛОГИКА

БИНАРНАЯ ЛОГИКА

НЕЧЕТКАЯ ЛОГИКА: ОГРАНИЧЕНИЯ

8

• Требуется оценка достоверности всех событий (не всегда возможна)

• Зависимость событий (условные вероятности)

• Фаззификация / дефаззификация

• Вычислительная сложность

ТРОИЧНАЯ ЛОГИКА: ЗАЧЕМ?

9

Существует класс задач, где

• степень достоверности фактов не имеет значения;

• главное – возможно ли достичь цели в принципе;

• если цель недостижима при известных предпосылках, важно знать, что этому мешает

ТРОИЧНАЯ ЛОГИКА

10

ДОСТОВЕРНОСТЬ

ЛОЖЬ

ИСТИНА

0% 100%

ТРОИЧНАЯ ЛОГИКА

Устраняется асимметрия, но при этом мы остаемся в дискретном пространстве

ТАБЛИЦА ИСТИННОСТИ

11

X X Y-1 1 -1 -1 -1 -1

0 0 -1 0 -1 0

1 -1 -1 1 -1 1

0 0 0 0

0 1 0 1

1 1 1 1

X X Y X Y

ПРЕОБРАЗОВАНИЕ БИНАРНЫХ ФАКТОВ В ТРОИЧНЫЕ

12

;

. ( , ) ;

( , ) .

F F true

F F true F false F false

F F false F unknown

. . . .,

где - бинарный факт, - троичный факт

F true F F true F false F F true F false

F true F false F unknown

F F

ПРЕОБРАЗОВАНИЕ БИНАРНЫХ ФАКТОВ В ТРОИЧНЫЕ

13

Истинность факта:

ternary(Subj,Pred,Obj,1) :-

binary(Subj,Pred,Obj).

Четвертый аргумент – признак достоверности

+1 – истина

-1 – ложь

0 – неопределенность (возможность)

ПРЕОБРАЗОВАНИЕ БИНАРНЫХ ФАКТОВ В ТРОИЧНЫЕ

14

Ложность факта:

ternary(Subj,hasSex,male,-1):- binary(Subj,hasSex, female).

ternary(Subj,hasSex,female,-1):- binary(Subj, hasSex, male).

ПРЕОБРАЗОВАНИЕ БИНАРНЫХ ФАКТОВ В ТРОИЧНЫЕ

15

Возможность факта:

ternary(Subj,Pred,Obj,0):-

not(binary(Subj,Pred,Obj)), not(ternary(Subj,Pred,Obj,-1)).

Проблема:

Асиома создается только при обработке запроса

ПРАВИЛА В ТРОИЧНОЙ ЛОГИКЕ

16

Достоверность консеквента = минимум достоверностей антецедентов

ternary(X,oppositeSex,Y,Cty) :-

ternary(X,hasSex,male,Cty1),

ternary(Y,hasSex,female,Cty2),

Cty is min(Cty1,Cty2).

ДОКАЗАТЕЛЬСТВО В ТРОИЧНОЙ ЛОГИКЕ

17

windy :- volkhov.

windy :- kronstadt.

petersburg :- kronstadt.

rainy :- petersburg.

umbrella_useless :-

windy, rainy.

kronstadt.

?- umbrella_useless.

ДЕРЕВО РЕШЕНИЙ В БИНАРНОЙ ЛОГИКЕ

18

ДЕРЕВО РЕШЕНИЙ В ТРОИЧНОЙ ЛОГИКЕ

19

([umbrella_useless], 1)

([windy, rainy], 1)

([volkhov, rainy], 1)

([kronstadt, rainy], 1)

([rainy], 1)

([petersburg], 1)

([ ], 1)

([rainy], 0)

([petersburg], 0)

([ ], 0)

([kronstadt], 0) ([kronstadt], 1)

МОДИФИЦИРОВАННАЯ ПРОГРАММА

20

windy :- volkhov.windy :- kronstadt.petersburg :- kronstadt.rainy :- petersburg.umbrella_useless :- windy, rainy.volkhov :- fail. % нельзя находитьсяkronstadt. % в 2-х местах сразу

?- umbrella_useless.

ДЕРЕВО РЕШЕНИЙ (2)

21

([umbrella_useless], 1)

([windy, rainy], 1)

([volkhov, rainy], 1) ([kronstadt, rainy], 1)

([rainy], 1)

([petersburg], 1)

([ ], 1)

([rainy], -1)

([kronstadt], 1)

ОБЪЯСНЕНИЕ РЕЗУЛЬТАТОВ

Пусть решение имеет достоверность 0.Польза от такого решения → 0.Каких фактов не хватает для доказательства?

[<консеквент>, [<факт1>],…, [<фактN>]].

<консеквент> был бы истинным, если бы истинными были <факт1>,…, <фактN>

22

МОДИФИЦИРОВАННОЕ ПРАВИЛО ДЛЯ Certainty=0

ternary(Subj,Pred,Obj,0,[Subj,Pred,Obj]) :-

not(fact(Subj,Pred,Obj)),

not(ternary(Subj, Pred, Obj, -1)).

Для решений с достоверностью 0 возвращается список триплетов <субъект, предикат, объект> - фактов, истинность которых возможна, и в этом случае решение было бы истинным.

23

ОБЩИЙ ВИД ПРАВИЛА ДЛЯ ИСЧИСЛЕНИЯ ПРЕДИКАТОВ

ternary(Subj,Pred,Obj, Cty, [Subj,Pred,Obj, [Cond1,Cond2,…]]) :- ternary(S1,P1,O1,Cty1,Cond1), Cty1>=0,…ternary(SN,PN,ON,CtyN,CondN), CtyN>=0,Cty is min(Cty1,…, CtyN).

24

ПРИМЕРternary(X, canMarry, Y, Cty, [Cond1,Cond2)) :- ternary(X, hasOppositeSex,Y,Cty1,Cond1)), Cty1>=0, not(ternary(X,closeRelative,Y,Cty2,[‘NOT’|Cond2]),Cty2<=0, Cty is max(Cty1, -Cty2).

ternary(X,oppositeSex,Y,Cty, [X,oppositeSex,Y,[Cond1,Cond2]]) :-

ternary(X,hasSex,male,Cty1,Cond1), Cty1>=0, ternary(Y,hasSex,female,Cty2,Cond2),Сty2>=0,

Cty is min(Cty1, Cty2).

binary(andrew, hasSex, male).

[andrew, canMarry, julia, [andrew, oppositeSex, julia, [julia, hasSex, female]], [NOT,andrew, closeRelative, julia]]]

25

ВИЗУАЛИЗАЦИЯ РЕЗУЛЬТАТОВ

26

NOT

[andrew, canMarry, julia]

[andrew, oppositeSex, julia]

[andrew, bloodRelative, julia]

[Julia, hasSex, female]

ВИЗУАЛИЗАЦИЯ РЕЗУЛЬТАТОВ

27

NOT

NOT

NOT

[clyde, avoid, jail]

[bonnie, witnessAgainst, clyde]

[bonnie, canMarry, clyde]

[bonnie, hasSex, female]

[bonnie, oppositeSex, clyde] [bonnie, bloodRelative,

clyde]

[bonnie, closeRelative, clyde]

ВРЕМЕННЫЕ ХАРАКТЕРИСТИКИ

28

ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ

• Бинарная и нечеткая логика

• Троичная логика

• Объяснение результатов

• Визуализация знаний

29

ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

ЛОГИКА ВЫСШЕГО ПОРЯДКА

30

УРОВНИ ЛОГИКИ

1. Пропозициональная логика (логика атомарных утверждений)

2. Логика первого порядка (логика предикатов, квантификация атомов) - Пролог

3. Логика второго порядка – квантификация предикатов

31

ЛЯМБДА-ИСЧИСЛЕНИЕ

1. Аппликация f a – вызов функции f к значению a.

2. Абстракция. λx.t[x] – лямбда-функция от аргумента x, которая имеет вид t[x], обозначает функцию x |→ t[x].

Пример:

(λx. x+4) 3 Результат 3+4 = 7

32

ЛЯМБДА-ПРОЛОГ

?- (x\ (x + 4)) = (y\ (y + 4)).solved ?- (x\ (x + 4)) 3 = 3 + 4solved ?- F 3 = 3 + 4.F = x\ 3 + 4;F = x1\ x1 + 4no more solutions

33

КВАНТИФИКАЦИЯ

Для будем использовать лямбда-выражения для связывания переменных и константу pi для кванторов. Таким образом, цель

приобретает вид pi ( X\ (X=X) )

и

записывается pi ( p\ ( (p 0) => (p 0) ))

Оба эти выражения завершаются успехом в качестве целей.

34

КВАНТИФИКАЦИЯ

Примеры:

?- pi x\ (x = x).

solved

?- pi x\ ( pi y\ ( x = y)).

no

?- pi x\ (x = (Y x)).

Y = x\ x ;

no more solutions35

ВЫВОД С ИМПЛИКАЦИЯМИ

Цель с использованием импликаций ?- P => Q решается добавлением P в программу и попыткой показать Q. Стандартные утверждения Пролога допускают только одну импликацию:

a :- b.b :- c.?- c => aSolvedЗаметим, что утверждение с в базе знаний

отсутствует и добавлено только локально в контексте запроса.

36

БОЛЕЕ СЛОЖНЫЙ ПРИМЕР

Более сложный пример добавления утверждения:a :- b.c.?- (c => b) => aSolvedЗдесь c => b добавлено, что эквивалентно запросу ?- a. в программе a :- b.c.b :- c.?- a.Solved

37

ВЫВОД С ИМПЛИКАЦИЯМИ (продолжение)

Символ импликации => ассоциируется вправо. Это означает, что A => B => C эквивалентно A => ( B => C ). Таким образом, запрос на λProlog

?- (a =>(b =>c)) => (b=>(a=>c))может быть записан с меньшим числом скобок?- (a => b => c) => b => a => cПоиск для этого запроса сначала добавляет a => b

=> c в базу знаний, и это транслируется в утверждение Пролога c:-a,b и затем добавляет b и a. На этом обработка запроса завершается.

38

ПРИМЕР (от Дж. МкКарти)

• Предмет является стерильным, если все организмы на нем мертвы.

• Если организм находится на горячем объекте, организм мертв.

• Эта банка горячая.

• Следовательно, банка стерильна.

39

РЕАЛИЗАЦИЯ на λ-Прологе % Объявление типовtype sterile (i -> o).type in (i -> i -> o).type heated (i -> o).type bug (i -> o).type dead (i -> o).type j i.% Программаsterile Jar :- pi x\ ( (bug x) => (in x Jar) => (dead x) ).dead X :- heated Y, in X Y, bug X.heated j.% Запрос?- sterile j.solved

40

ПРЕИМУЩЕСТВА λ-Пролога Обычный Пролог:ancestor(X,Y) :- parent(X,Y).ancestor(X,Z) :- parent(X,Y),

ancestor(Y,Z).λ -Пролог:type trans (A -> A -> o) -> (A -> A -> o).trans Pred X Y :- Pred X Y.trans Pred X Z :- Pred X Y, trans Pred Y Z.- это универсальное правило, в котором тип

отношения – аргументМы можем использовать его, чтобы определить

ancestor:ancestor X Y :- trans parent X Y.

41

ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ

• Пропозициональная логика

• Логика первого порядка

• Исчисление предикатов

• Логика высшего порядка

• Лямбда-исчисление

• Лямбда-Пролог

42

Recommended