IW - Kolokwium 1

Transkrypt

IW - Kolokwium 1
IW - Kolokwium 1
8z
Cudze chwalicie, swego nie znacie, sami nie wiecie, co posiadacie
x Człowiek(x)
[ y ~Posiada(x, y) => Chwali(x, y) ]
Posiada(x, u) ~Świadom_posiadania(x, u)]
[
z Posiada(x, z) => ~Zna(x, z) ]
[
u
9L
Obywatel dostanie kredyt jeśli ma więcej niż 18 lat i mniej niż 60 oraz zna język japoński
x Otrzyma(x, KREDYT)
JAPOŃSKI)
Obywatel(x)
Większy(Wiek(x), 18)
Mniejszy(Wiek(x), 60)
Zna(x,
10Z przykładowe
Jak wygląda formuła predykatowa odpowiadająca zdaniu:
„Jeśli inflacja wzrośnie o 3% to niezbędna będzie podwyżka pensji”.
Przekroczy(INFLACJA, 3%) => [∀x Pensja(x) => (∃y Podwyzka(y) ∧ Zwiekszona_o(x, y)) ]
10L
Niektórzy studenci są zdolni, więc nie zabraknie piątek.
∃ x Student(x) ∧ Zdolny(x) => ∃y Ocena(y) ∧ Wynosi(y, 5)
10L
2. Kto jest zakochany ten jest zazdrosny.
Kto jest głodny ten zły.
Jan jest głodny lub ktoś jest zakochany.
Ktoś jest zazdrosny lub ktoś nie jest zły
1. ~Zak(x) v Zazdr(x)
2. ~Głod(y) v Zły(y)
3. Głod(JAN) v Zak(A)
4. Zazdr(B) v ~Zły(B)
5. ~Zazdr(JAN) <zanegowana hipoteza>
Zgodnie z regułą rezolucji jeśli mamy dwie klauzule p v q i ~p v r, to można z tego utworzyć
nową klauzulę q v r. Dodatkowo czasem trzeba uzgodnić symbole (chyba fachowo to się
nazywa zunifikować). Zatem:
1+3: (podstawienie: x|A) ~Zak(A) v Zazdr(A) oraz Głod(JAN) v Zak(A) -> 6. Głod(JAN) v
Zazdr(A)
2+4: (y|B) ~Głod(B) v Zły(B) oraz Zazdr(B) v ~Zły(B) -> 7. Zazdr(B) v ~Głod(B)
5+7: (B|JAN) ~Zazdr(JAN) oraz Zazdr(JAN) v ~Głod(JAN) -> 8. ~Głod(JAN)
6+8: (A|JAN) Głod(JAN) v Zazdr(JAN) oraz ~Głod(JAN) -> 9. Zazdr(JAN)
5+9: ~Zazdr(JAN) oraz Zazdr(JAN) -> (klauzula pusta, czyli sprzeczność)
Dowiedliśmy, że przy zaprzeczonej hipotezie wychodzi sprzeczność, a zatem zgodnie bodajże
z zasadą falsyfikacji hipoteza jest prawdziwa.
4. Zapisać w prologu relację "wnuczka" korzystając z reguł: brat, syn, córka, dziecko,
wnuczek... dodał, że można też użyć reguły: wujek jakby to komuś pomogło.... (2pkt)
Wnuczek(x,z) :- Dziecko(x,y), Dziecko(y,z).
Kolos 09Z
(3p) Zapisz w formie predykatowej i agregatowej:
"ubezpieczenia odmawia się komuś, kto miał więcej niż 3 wypadki i słaby wzrok".
<x, Gatunek, CZŁOWIEK> <'x, Ilość_wypadków' > 3>
Ubezpieczenie, PRZYZNANE>
<x, Wzrok, SŁABY> => ~<x,
(1p) Jak zapisać bez kwantyfikatorów predykatową postać zdania:
"wszyscy studenci uprawiają jakiś sport".
Student(x) => Uprawia(x,f(x))
Sport(f(x))
(2p) Zapisać zrozumiałe i jasne reguły produkcji dla (A-C)
B = (A
B) - C
X = Y <= x X <=> x Y
x X Y <= x X x Y
x X - Y <= x X ~( x Y)
(2p) Jaki będzie wynik rezolucji dwóch klauzul [P(f(x),A,y),-Q(x)] oraz [-P(u,x,u), R(B,y)]
u | f(A), x | A, y | f(A) (pomijając fakt, że z tego co kojarzę nie powinniśmy zaczynać
szukania unifikatora w momencie gdy po obu stronach mamy użytą tą samą nazwę zmiennej.
czyli powinno się najpierw nazwać lewego x'a jako x1 oraz y'ka jako y1 i dopiero wtedy
unifikować)
~Q(A), R(B, f(A))
(2p) Napisz w prologu regułę zmieniającą gamma1 - wyrażony iloczynem wynik agregacji
dwóch wsp. pewności o zakresach [0..1] na gamma100 - odpowiednio dla [0..100]
gamma100(a,b,wynik) :- gamma1(a,b,w), wynik is w*100.
gamma1(a,b,w) :- w is a*b.
(2p) Do tabelki ze slajdów dodano wiersz 6: 7 58 beta A. Jak teraz wyglądają reguły
produkcji?
Rozwiązanie jest podobne jak w zadaniu z 09ZA1
Najpierw sprawdzamy, czy nowe dane nie odnajdą się dobrze w istniejącym rozwiązaniu:
c1_ = 0, c2_ = 0 -> wynik taki sam jak dla danych dających decyzję B => musimy coś
zmienić
Nowe podziały:
c1: 2 x1a 7 x1b 12 x2 16 x3 20
c2: 45 y1 52 y2a 58 y2b 66 y3 74
Rozpisujemy Epsilony odróżniające nowo dodane dane od istniejących w tabelce B i C:
E(3,6) = x1a y1 y2a
E(4,6) = x1b x2 y2a
E(5,6) = x1b x2 x3 y2b y3
E(5,6) jest już realizowane przez istniejące selektory (chyba tak to się nazywa ale głowy nie
dam :p), konkretnie przez x3
Zamieńmy selektor y2 na y2a - wspólny dla E(3,6) i E(4,6)
To rozwiązanie ma tę dodatkową korzyść, że jeśli y2 separowało dwa zestawy danych to y2a
też będzie -> większość tabelki pozostaje bez zmian.
y2a = 55 (wartość średnia)
c2_ = 0 gdy c2 < 55
tabelka..(bez zmian)
ostatni wiersz:
601A
Czyli dostaliśmy taki sam zestaw (0,1) jak dla innych A w tabelce.
Nasze nowe reguły produkcji:
(c1 <= 18) (c2 > 55) => (d = A)
(c1 <= 18) (c2 <= 55) => (d = B)
(c1 > 18) (c2 > 55) => (d = C)
Kolos 07L
1.) Zapisad za pomocą formuły predykatowej zdanie:
"Kto się pilnie, chętnie uczy, temu bieda nie dokuczy"
x Osoba(x)
albo
x Osoba(x)
Uczy(x, PILNIE)
Uczy(x, CHETNIE) => ~Biedny(x)
Uczy(x, PILNIE)
Uczy(x, CHETNIE) => ~
2.) Czy agregaty (IIgrupa - predykaty) można agregowad ??
t Czas(t)
Biedny(x, t)
Czy chodzi o agregację, taką jak na slajdzie 2-20? Jeśli tak, to agregowad można tylko oceny.
Ktoś ma inny pomysł?
4.) Wypisad podstawowe prawa logiczne do udowodnienia TW o zbiorach: A-(B-C) = (A-B) u (A n C)
X = Y <= x X <=> x Y
x X Y <= x X x Y
x X - Y <= x X ~( x Y)
x X Y <= x X x Y
7.) Zgodnie ze slajdem 18 IW-2.ppt (wnioskowanie rezolucyjne) zapisad pytanie dokąd leci samolot
startujący o 14:15
?-połączenie(-,Cel,14:15,-,-)
Kolos 2004
1) Adam ( A ) ożenił się z wdową ( W ), która miała córkę ( C )
Ojciec (O) Adama zakochał się w córce W i się z nią ożenił.
Opisz tę sytuację predykatami i pokaż, że Adam został własnym dziadkiem.
predykaty:
z jest córką x : Córka(z,x)
x jest mężem y : Mąż(x,y)
z jest Ojcem x : Ojciec(z,x)
x jest dziadkiem z : Dziadek(x,z)
reguły produkcji:
Córka(z,x) <= Mąż(x,y) Córka(z,y)
Ojciec(z,x) <= Mąż(x,y) Córka(y,z)
Dziadek(x,z) <= Ojciec(x,y) Ojciec(y,z)
fakty:
Mąż(A,W), Córka(C,W), Mąż(O,C), Ojciec(O,A)
dowód (wnioskowanie na podstawie celu):
(dodałem jawne unifikatory żeby łatwiej się czytało)
Dziadek(A,A)?, Dziadek(x,z) <= Ojciec(x,y) Ojciec(y,z), Ojciec(O,A) {x|A, z|A}
---------------------------------------------------------------------------------------Ojciec(A,O)
Ojciec(A,O)?, Ojciec(z,x) <= Mąż(x,y) Córka(y,z), Mąż(O,C) {z|A, x|O, y|C}
------------------------------------------------------------------------------Córka(C,A)
Córka(C,A)?, Córka(z,x) <= Mąż(x,y) Córka(z,y), Mąż(A,W) {z|C, x|A, y|W}
-----------------------------------------------------------------------------Córka(C,W)
Córka(C,W)?, Córka(C,W)
-----------------------------true
Dowód zakończony. (Nie wiem, czy ostatni krok jest potrzebny)
Kolos 09Z-1A
1) Zapisz tekst "nie uzyska kredytu ktoś, kto ma słabe zdrowie i ponad 70 lat"
w postaci formuł: a) agregatowej b) predykatowej
a) <x, Zdrowie, SŁABE> <'x, Wiek' > 70> => <x, Decyzja_kredytowa, ODRZUCONO>
b) x Człowiek(x) Zdrowie(x, SŁABE) Większy(Wiek(x), 70) => ~Uzyska_kredyt(x)
2) Jak zapisać bez kwantyfikatorów predykatową postać zdania:
"niektórych studentów nudzą wszystkie wykłady"?
Student(A)
Wykład(y) => Nudzi(y, A)
3) Podać kilka początkowych prostych i oczywistych reguł produkcji potrzebnych do
udowodnienia, że:
A - (B - C) = (A - B) (A C)
X = Y <= (x X) <=> (x Y)
x (X - Y) <= x X ~(x Y)
x (X Y) <= x X x Y
x X Y <= x X x Y
4) Jaki jest wynik rezolucji dwóch klauzul:
[P(A,x,f(y)), ~Q(x)] oraz [~P(y,z,z), R(B,f(y))] ?
Podstawiamy: y|A, x|z oraz z|f(A)
Otrzymujemy takie klauzule: P(A, f(A), f(A)) v ~Q(f(A)) oraz ~P(A, f(A), f(A)) v R(B,f(A))
Korzystając z reguły rezolucji mam zatem: ~Q(f(A)) v R(B,f(A))
5) Jak wygląda zapisana w Prologu reguła, zmieniająca 1
- wyrażony iloczynem wynik agregacji dwóch współczynników pewności o zakresach 0..1,
na 10 - odpowiednik dla zakresów 0..10?
10(a,b,wynik) :-
1(a,b,w), wynik is w*10.
6) W tabeli treningowej ze slajdu 2-36 dodano 6ty wiersz o postaci (4 60
wyglądają odpowiednie reguły produkcji?
B). Jak teraz
Orginalna tabela:
1 12 74 A
2 16 66 A
3 02 45 B
4 16 52 B
5 20 74 C
6 04 60
B
Na początek sprawdzamy, czy po dodaniu nowych danych nie da się użyć istniejącej już
tabelki u, c1_, c2_ d:
u c1_ c2_ d
101A
201A
300B
400B
511C
601B
Niestety, dla 6 wyszła nam ta sama kombinacja (0,1) co dla wierszy dających decyzję A, więc
musimy coś pozmieniać.
Nowe podziały na podstawie istniejących:
c1: 2 x1a 4 x1b 12 x2 16 x3 20
c2: 45 y1 52 y2a 60 y2b 66 y3 74
Nowe warunki rozróżnialności:
E(1,6) = x1b y2b y3
E(2,6) = x1b x2 y2b
E(5,6) = x1b x2 x3 y2b
y3 spełnione, bo w orginalnym rozwiązaniu użyto x3
Dla E(1,6) i E(2,6) wspólne są x1b oraz y2b.
Z kolei dla starych danych wybrano separatory y2 i x3.
=> wybieramy parę separatorów dla całego zbioru danych : y2b i x3
Wszystkie zestawy danych, które można było rozróżnić separatorem y2 można też rozróżnić
separatorem y2b, więc jest to dobre rozwiązanie (separuje orginalne dane), ponadto cała
orginalna tabelka pozostaje dzięki temu taka sama.
y2b = 63, x3 = 18 (środki przedziałów)
c1_ = 0 gdy c1 <= 18 -> bez zmian w stosunku do orginalnej tabelki
c2_ = 0 gdy c2 <= 63
u c1_ c2_ d
101A
201A
300B
400B
511C
600B
Mamy szczęście, układ (c1,c2) jest taki sam dla wiersza 6 co dla wierszy 3 i 4,
dzięki temu będą tylko trzy reguły produkcji, tak jak w orginalnym zadaniu:
(c1 <= 18) (c2 > 63) => (d = A)
(c1 <= 18) (c2 <= 63) => (d = B)
(c1 > 18) (c2 > 63) => (d = C)