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)