1 / 42

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

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

kim
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. БИНАРНАЯ ЛОГИКА: NEGATION AS FAILURE possible rain → take_umbrella Если возможен дождь, надо прихватить зонтик • Это не значит, что если дождь невозможен, зонтик брать нельзя. • Это значиттолько, что если зонтик оставлен дома, дождя не будет. НО если неизвестно, будет ли дождь, то take_umbrella – ложь (negation as failure)

  4. БИНАРНАЯ ЛОГИКА: АСИММЕТРИЯ ИСТИНА БИНАРНАЯ ЛОГИКА ЛОЖЬ 0% 100% ДОСТОВЕРНОСТЬ

  5. БИНАРНАЯ ЛОГИКА: АСИММЕТРИЯ ИСТИНА Любая неопределенность трактуется как ложь БИНАРНАЯ ЛОГИКА ЛОЖЬ 0% 100% ДОСТОВЕРНОСТЬ

  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. Факт отрицается если есть явный отрицающий факт

  7. НЕЧЕТКАЯ ЛОГИКА: СИММЕТРИЯ ИСТИНА НЕЧЕТКАЯ ЛОГИКА БИНАРНАЯ ЛОГИКА ЛОЖЬ 0% 100% ДОСТОВЕРНОСТЬ

  8. НЕЧЕТКАЯ ЛОГИКА: ОГРАНИЧЕНИЯ • Требуется оценка достоверности всех событий (не всегда возможна) • Зависимость событий (условные вероятности) • Фаззификация / дефаззификация • Вычислительная сложность

  9. ТРОИЧНАЯ ЛОГИКА: ЗАЧЕМ? Существует класс задач, где • степень достоверности фактов не имеет значения; • главное – возможно ли достичь цели в принципе; • если цель недостижима при известных предпосылках, важно знать, что этому мешает

  10. ТРОИЧНАЯ ЛОГИКА ИСТИНА Устраняется асимметрия, но при этом мы остаемся в дискретном пространстве ТРОИЧНАЯ ЛОГИКА ЛОЖЬ 0% 100% ДОСТОВЕРНОСТЬ

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

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

  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. [umbrella_useless] [windy, rainy] [volkhov, rainy] [kronstadt, rainy] [rainy] [petersburg] [ kronstadt] [ ] ДЕРЕВО РЕШЕНИЙ В БИНАРНОЙ ЛОГИКЕ

  19. ([umbrella_useless], 1) ([windy, rainy], 1) ([volkhov, rainy], 1) ([kronstadt, rainy], 1) ([rainy], 0) ([rainy], 1) ([petersburg], 0) ([petersburg], 1) ([kronstadt], 0) ([kronstadt], 1) ([ ], 0) ([ ], 1) ДЕРЕВО РЕШЕНИЙ В ТРОИЧНОЙ ЛОГИКЕ

  20. МОДИФИЦИРОВАННАЯ ПРОГРАММА windy :- volkhov. windy :- kronstadt. petersburg :- kronstadt. rainy :- petersburg. umbrella_useless :- windy, rainy. volkhov :- fail. % нельзя находиться kronstadt.% в 2-х местах сразу ?- umbrella_useless.

  21. ([umbrella_useless], 1) ([windy, rainy], 1) ([volkhov, rainy], 1) ([kronstadt, rainy], 1) ([rainy], -1) ([rainy], 1) ([petersburg], 1) ([kronstadt], 1) ([ ], 1) ДЕРЕВО РЕШЕНИЙ (2)

  22. ОБЪЯСНЕНИЕ РЕЗУЛЬТАТОВ Пусть решение имеет достоверность 0. Польза от такого решения → 0. Каких фактов не хватает для доказательства? [<консеквент>, [<факт1>],…, [<фактN>]]. <консеквент> был бы истинным, если бы истинными были <факт1>,…, <фактN>

  23. МОДИФИЦИРОВАННОЕ ПРАВИЛО ДЛЯ Certainty=0 ternary(Subj,Pred,Obj,0,[Subj,Pred,Obj]) :- not(fact(Subj,Pred,Obj)), not(ternary(Subj, Pred, Obj, -1)). Для решений с достоверностью 0 возвращается список триплетов <субъект, предикат, объект> - фактов, истинность которых возможна, и в этом случае решение было бы истинным.

  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).

  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, Ctyis 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]]]

  26. [andrew, canMarry, julia] NOT [andrew, oppositeSex, julia] [andrew, bloodRelative, julia] [Julia, hasSex, female] ВИЗУАЛИЗАЦИЯ РЕЗУЛЬТАТОВ

  27. [clyde, avoid, jail] NOT [bonnie, witnessAgainst, clyde] NOT [bonnie, closeRelative, clyde] [bonnie, canMarry, clyde] NOT [bonnie, oppositeSex, clyde] [bonnie, bloodRelative, clyde] [bonnie, hasSex, female] ВИЗУАЛИЗАЦИЯ РЕЗУЛЬТАТОВ

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

  29. ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ • Бинарная и нечеткая логика • Троичная логика • Объяснение результатов • Визуализация знаний

  30. ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ ЛОГИКА ВЫСШЕГО ПОРЯДКА

  31. УРОВНИ ЛОГИКИ • Пропозициональная логика (логика атомарных утверждений) • Логика первого порядка (логика предикатов, квантификация атомов) - Пролог • Логика второго порядка – квантификация предикатов

  32. ЛЯМБДА-ИСЧИСЛЕНИЕ • Аппликация f a – вызовфункции f к значению a. • Абстракция. λx.t[x] – лямбда-функция от аргумента x, которая имеет вид t[x], обозначает функцию x |→ t[x]. Пример: (λx. x+4) 3 Результат 3+4 = 7

  33. ЛЯМБДА-ПРОЛОГ ?- (x\ (x + 4)) = (y\ (y + 4)). solved ?- (x\ (x + 4)) 3 = 3 + 4 solved ?- F 3 = 3 + 4. F = x\ 3 + 4; F = x1\ x1 + 4 no more solutions

  34. КВАНТИФИКАЦИЯ Для будем использовать лямбда-выражения для связывания переменных и константу pi для кванторов. Таким образом, цель приобретает вид pi ( X\ (X=X) ) и записывается pi ( p\ ( (p 0) => (p 0) )) Оба эти выражения завершаются успехом в качестве целей.

  35. КВАНТИФИКАЦИЯ Примеры: ?- pix\ (x = x). solved ?- pi x\ ( pi y\ ( x = y)). no ?- pi x\ (x = (Y x)). Y = x\ x ; no more solutions

  36. ВЫВОД С ИМПЛИКАЦИЯМИ Цель с использованием импликаций ?- P => Q решается добавлением P в программу и попыткой показать Q. Стандартные утверждения Пролога допускают только одну импликацию: a :- b. b :- c. ?- c => a Solved Заметим, что утверждение с в базе знаний отсутствует и добавлено только локально в контексте запроса.

  37. БОЛЕЕ СЛОЖНЫЙ ПРИМЕР Более сложный пример добавления утверждения: a :- b. c. ?- (c => b) => a Solved Здесь c => b добавлено, что эквивалентно запросу ?- a. в программе a :- b. c. b :- c. ?- a. Solved

  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. На этом обработка запроса завершается.

  39. ПРИМЕР (от Дж. МкКарти) • Предмет является стерильным, если все организмы на нем мертвы. • Если организм находится на горячем объекте, организм мертв. • Эта банка горячая. • Следовательно, банка стерильна.

  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

  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.

  42. ОСНОВНЫЕ ПОНЯТИЯ НА СЕГОДНЯ • Пропозициональная логика • Логика первого порядка • Исчисление предикатов • Логика высшего порядка • Лямбда-исчисление • Лямбда-Пролог

More Related