Если идет дождь, надо открыть зонтик



Дата22.06.2018
өлшемі445 b.



rain → use_umbrella

  • rain → use_umbrella

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

  • Это не значит, что если нет дождя, зонтик использовать нельзя.

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

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

  • проблемы

  • незнания

  • не существует



possible rain → take_umbrella

  • possible rain → take_umbrella

  • Если возможен дождь, надо прихватить зонтик

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

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

  • НО

  • если неизвестно, будет ли дождь, то

  • take_umbrella – ложь

  • (negation as failure)







has_child(andrey,egor). % Андрей – родитель Егора

  • has_child(andrey,egor). % Андрей – родитель Егора

  • spouse(andrey, julia). % Юлия – супруга Андрея

  • Допущение замкнутого мира:

  • julia – мачеха Егора , если

  • spouse(andrey,julia) и not(has_child(julia,egor).

  • Отсутствие факта = отрицание факта

  • Допущение открытого мира:

  • julia – мачеха Егора, если существует X такое, что has_child(X,egor) и X \= julia.

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





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

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

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

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

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



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

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

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

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

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









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

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

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

  • binary(Subj,Pred,Obj).

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

  • +1 – истина

  • -1 – ложь

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



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

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

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

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



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

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

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

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

  • Проблема:

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



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

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

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

  • ternary(X,hasSex,male,Cty1),

  • ternary(Y,hasSex,female,Cty2),

  • Cty is min(Cty1,Cty2).



windy :- volkhov.

  • windy :- volkhov.

  • windy :- kronstadt.

  • petersburg :- kronstadt.

  • rainy :- petersburg.

  • umbrella_useless :-

  • windy, rainy.

  • kronstadt.

  • ?- umbrella_useless.







windy :- volkhov.

  • windy :- volkhov.

  • windy :- kronstadt.

  • petersburg :- kronstadt.

  • rainy :- petersburg.

  • umbrella_useless :- windy, rainy.

  • volkhov :- fail. % нельзя находиться

  • kronstadt. % в 2-х местах сразу

  • ?- umbrella_useless.





Пусть решение имеет достоверность 0.

  • Пусть решение имеет достоверность 0.

  • Польза от такого решения → 0.

  • Каких фактов не хватает для доказательства?

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

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



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

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

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

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

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



ternary(Subj,Pred,Obj, Cty, [Subj,Pred,Obj,

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



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

  • 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]]]









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

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

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

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

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





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

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

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

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



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

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

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

  • Пример:

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



?- (x\ (x + 4)) = (y\ (y + 4)).

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



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

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

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

  • и

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

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



Примеры:

  • Примеры:

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

  • solved

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

  • no

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

  • Y = x\ x ;

  • no more solutions



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

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

  • a :- b.

  • b :- c.

  • ?- c => a

  • Solved

  • Заметим, что утверждение с в базе знаний отсутствует и добавлено только локально в контексте запроса.



Более сложный пример добавления утверждения:

  • Более сложный пример добавления утверждения:

  • a :- b.

  • c.

  • ?- (c => b) => a

  • Solved

  • Здесь c => b добавлено, что эквивалентно запросу

  • ?- a. в программе

  • a :- b.

  • c.

  • b :- c.

  • ?- a.

  • Solved



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

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



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

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

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

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

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



% Объявление типов

  • % Объявление типов

  • 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



Обычный Пролог:

  • Обычный Пролог:

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



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

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

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

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

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

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

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





Достарыңызбен бөлісу:


©stom.tilimen.org 2019
әкімшілігінің қараңыз

    Басты бет