42
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ТРОИЧНАЯ ЛОГИКА 1

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

  • Upload
    kim

  • View
    69

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

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

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

1

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

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

2

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

нельзя.

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

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

проблемы

незнания

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

rain

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

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

3

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

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

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

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

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

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

4

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

ЛОЖЬ

ИСТИНА

0% 100%

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

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

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

5

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

ЛОЖЬ

ИСТИНА

0% 100%

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

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

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

БИНАРНАЯ ЛОГИКА: 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

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

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

7

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

ЛОЖЬ

ИСТИНА

0% 100%

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

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

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

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

8

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

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

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

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

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

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

9

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

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

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

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

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

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

10

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

ЛОЖЬ

ИСТИНА

0% 100%

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

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

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

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

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

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

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

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

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

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

13

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

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

binary(Subj,Pred,Obj).

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

+1 – истина

-1 – ложь

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

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

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

14

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

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

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

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

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

15

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

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

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

Проблема:

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

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

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

16

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

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

ternary(X,hasSex,male,Cty1),

ternary(Y,hasSex,female,Cty2),

Cty is min(Cty1,Cty2).

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

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

17

windy :- volkhov.

windy :- kronstadt.

petersburg :- kronstadt.

rainy :- petersburg.

umbrella_useless :-

windy, rainy.

kronstadt.

?- umbrella_useless.

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

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

18

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

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

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)

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

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

20

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

?- umbrella_useless.

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

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

21

([umbrella_useless], 1)

([windy, rainy], 1)

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

([rainy], 1)

([petersburg], 1)

([ ], 1)

([rainy], -1)

([kronstadt], 1)

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

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

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

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

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

22

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

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

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

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

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

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

23

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

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

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

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

ПРИМЕР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

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

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

26

NOT

[andrew, canMarry, julia]

[andrew, oppositeSex, julia]

[andrew, bloodRelative, julia]

[Julia, hasSex, female]

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

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

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]

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

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

28

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

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

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

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

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

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

29

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

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

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

30

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

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

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

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

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

31

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

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

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

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

Пример:

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

32

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

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

?- (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

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

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

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

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

и

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

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

34

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

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

Примеры:

?- pi x\ (x = x).

solved

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

no

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

Y = x\ x ;

no more solutions35

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

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

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

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

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

36

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

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

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

37

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

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

Символ импликации => ассоциируется вправо. Это означает, что 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

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

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

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

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

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

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

39

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

РЕАЛИЗАЦИЯ на λ-Прологе % Объявление типов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

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

ПРЕИМУЩЕСТВА λ-Пролога Обычный Пролог: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

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

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

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

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

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

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

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

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

42