Adam Meissner STUCZNA INTELIGENCJA

Podobne dokumenty
Adam Meissner.

Adam Meissner SZTUCZNA INTELIGENCJA

Programowanie logiczne a negacja

Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej. Adam Meissner. Elementy uczenia maszynowego

Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej. Adam Meissner. Elementy uczenia maszynowego

METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ

Składnia rachunku predykatów pierwszego rzędu

Wprowadzenie do Sztucznej Inteligencji

Metoda Tablic Semantycznych

III rok kognitywistyki UAM,

Adam Meissner SZTUCZNA INTELIGENCJA Problem spełnialności (SAT)

Programowanie deklaratywne

III rok kognitywistyki UAM,

Dedukcyjne bazy danych

Adam Meissner SZTUCZNA INTELIGENCJA

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Logika Matematyczna (10)

Podstawy Sztucznej Inteligencji (PSZT)

Programowanie w logice

Programowanie deklaratywne

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ

Rachunek predykatów. Formuły rachunku predykatów. Plan wykładu. Relacje i predykaty - przykłady. Relacje i predykaty

Rezolucja w rachunku predykatów. Przedrostkowa koniunkcyjna postać normalna. Formu ly ustalone. Joanna Józefowska. Poznań, rok akademicki 2009/2010

PODSTAWY SZTUCZNEJ INTELIGENCJI

Alfred N. Whitehead

Wprowadzenie do Sztucznej

Logiczne podstawy informatyki 1. Wojciech Buszkowski. Zakład Teorii Obliczeń Wydział Matematyki i Informatyki UAM

Interpretacja Niech U będzie zbiorem formuł takim, że zbiór {p 1,..., p k } jest zbiorem wszystkich symboli predykatywnych, {f 1,..., f l } jest zbior

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Wprowadzenie do Sztucznej Inteligencji

1. Składnia. Logika obliczeniowa - zadania 1 SKŁADNIA Teoria

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Rachunki relacji. Rachunki relacji. RRK Relacyjny Rachunek Krotek

Bazy dedukcyjne. 1. Filozofia nowego sposobu projektowania baz danych. 2. Wady klasycznych systemów bazodanowych

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

Programowanie deklaratywne i logika obliczeniowa

vf(c) =, vf(ft 1... t n )=vf(t 1 )... vf(t n ).

ĆWICZENIE 4 KRZ: A B A B A B A A METODA TABLIC ANALITYCZNYCH

Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne

Programowanie deklaratywne

Adam Meissner. SZTUCZNA INTELIGENCJA Gry dwuosobowe

Elementy logiki Klasyczny rachunek predykatów

Programowanie w logice Wykład z baz danych dla

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykłady 12 i 13. Dowód i dowodzenie w KRP. Tezy KRP

Wstęp do logiki. Klasyczny Rachunek Predykatów I

Matematyczne Podstawy Informatyki

Dedukcyjne bazy danych i rekursja

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Dedukcyjne bazy danych i rekursja

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu

Wprowadzenie do Prologa

Reprezentacja wiedzy i wnioskowanie

1. Klasyczny Rachunek Zdań

Metody Kompilacji Wykład 3

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Zasady krytycznego myślenia (1)

PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd.

Wprowadzenie do Sztucznej Inteligencji

Metody dowodzenia twierdzeń i automatyzacja rozumowań Tabele syntetyczne: definicje i twierdzenia

Uzgadnianie formuł rachunku predykatów

Logika stosowana. Ćwiczenia Programowanie w logice i PROLOG. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski

Projekt 4: Programowanie w logice

Rachunek logiczny. 1. Język rachunku logicznego.

Paradygmaty dowodzenia

Adam Meissner SZTUCZNA INTELIGANCJA

1 Logika Zbiory Pewnik wyboru Funkcje Moce zbiorów Relacje... 14

Semantyka rachunku predykatów pierwszego rzędu. Dziedzina interpretacji. Stałe, zmienne, funkcje. Logika obliczeniowa.

Definicja: zmiennych zdaniowych spójnikach zdaniowych:

Podstawy Sztucznej Inteligencji (PSZT)

LOGIKA MATEMATYCZNA WYKŁAD 10: METODA REZOLUCJI W KRZ (20XII2007) II. 10. Dowody rezolucyjne w KRZ Przypomnienia i kilka definicji

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

Języki programowania deklaratywnego

Problem. Uzgadnianie wyrażeń rachunku predykatów. Instancja wyrażenia. Podstawienie termu za zmienną. Joanna Józefowska

Myślenie w celu zdobycia wiedzy = poznawanie. Myślenie z udziałem rozumu = myślenie racjonalne. Myślenie racjonalne logiczne statystyczne

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań

UNIFIKACJA I REZOLUCJA

a) symbole logiczne (wspólne dla wszystkich języków) zmienne przedmiotowe: x, y, z, stałe logiczne:,,,,,, symbole techniczne: (, )

Automatyczne dowodzenie twierdzeń metodą rezolucji

IW - Kolokwium 1. 8z Cudze chwalicie, swego nie znacie, sami nie wiecie, co posiadacie

Struktury formalne, czyli elementy Teorii Modeli

Programowanie funkcyjne Wykład 14. Rachunek λ z typami prostymi

Klasyczny rachunek predykatów

ĆWICZENIE 2. DEF. Mówimy, że formuła A wynika logicznie z formuł wartościowanie w, takie że w A. A,, A w KRZ, jeżeli nie istnieje

Laboratorium przedmiotu Paradygmaty Programowania

Wstęp do logiki. Klasyczny Rachunek Zdań III

Modele Herbranda. Logika obliczeniowa. Joanna Józefowska. Szukamy modelu. Przykład Problemy. Model Herbranda

Kultura logicznego myślenia

Logika Radosna 5. Jerzy Pogonowski. KRP: tablice analityczne. Zakład Logiki Stosowanej UAM

Zarządzanie wiedzą. Reprezentacja wiedzy: logika predykatów pierwszego rzędu

LOGIKA I TEORIA ZBIORÓW

Adam Meissner SZTUCZNA INTELIGANCJA

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

Podstawowe Pojęcia. Semantyczne KRZ

Reprezentacja wiedzy: logika predykatów pierwszego rzędu

-termami -wyrażeń pre-termami abstrakcją aplikacją zmiennych wolnych zmienną związaną domknięte

Programowanie w Logice

Transkrypt:

Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis STUCZNA INTELIGENCJA Elementy programowania w logice Literatura [1] Clocksin W.F, Mellish C.S., Prolog. Programo- -wanie, Wyd. Helion, Gliwice, 2003. [2] Bartoszek J., Cybulka J., Programowanie deklaratywne, Wydawnictwo PP, 1999. [3] Brzykcy G., Meissner A., Programowanie w Prologu i programowanie funkcyjne, Wyd. PP, 1999. [4] Nilsson U., Małuszyński J., Logic, Programming and Prolog (2ed), John Wiley & Sons Ltd, 1995. [5] Sterling L., Shapiro E., The Art of Prolog, The MIT Press, 1999. [6] Wójcik M.: Zasada rezolucji; teoria, praktyka, kierunki rozwoju; raport IPI PAN 662, czerwiec 1989. 1

Wprowadzenie programowanie w logice stanowi szczególny przypadek programowania deklaratywnego program jest opisem rozpatrywanego problemu, a nie opisem jego rozwiązania program ma postać skończonego zbioru klauzul, będących odpowiednimi formułami logiki pierwszego rzędu najpopularniejszym językiem programowania w logice jest Prolog przykładowe obszary zastosowań progr. w logice dedukcyjne bazy danych, systemy eksperckie transformowanie programów analiza języka naturalnego zalety programowania w logice stosunkowa łatwość weryfikowania intuicyjnej i formalnej poprawności programu zwolnienie (częściowe) programisty z obowiązku znalezienia rozwiązania problemu możliwość programowania na wysokim poziomie ogólności zwięzłość programu i krótki czas implementowania wady programowania w logice dość mała efektywność wykonywania programu pewna niekonwencjonalność stylu programowania. 2

Reguła rezolucji Def. (literał, literał pozytywny, literał negatywny) Literałem nazywa się formułę atomową lub formułę atomową z negacją. Formuła atomowa jest literałem pozytywnym, a formuła atomowa z negacją jest literałem negatywnym. Dowolne literały postaci A oraz stanowią parę literałów komplementarnych. Def. (klauzula) Klauzulą nazywa się dowolną formułę, przyjmującą jedną z wymienionych postaci: 1. ( x 1 )... ( x m ) L 1 L n dla n > 1, 2. ( x 1 )... ( x m ) L 1 3. Formuła pusta (tzw. klauzula pusta, oznaczana symbolem ) przy założeniu, że L 1,, L n dla n > 1 są dowolnymi literałami, nie zawierającymi żadnych zmiennych oprócz x 1,, x m dla m 1. Przyjmuje się, że kwantyfikatory w zapisie klauzuli mogą być pominięte. Def. (reguła rezolucji, rezolwenta, literał aktywny) Niech A B 1 B m oraz A C 1 C n będą dowolnymi klauzulami, gdzie A jest formułą atomową a B 1,, B m i C 1,, C n to dowolne literały. Regułę wnioskowania postaci A B 1 B m, A C 1 C n B 1 B m C 1 C n nazywa się regułą rezolucji. Formuła B 1 B m C 1 C n nosi nazwę rezolwenty a literały A oraz A noszą nazwę literałów aktywnych. 3

Unifikacja 2017 Adam Meissner Def. (przypisanie) Przypisaniem nazywa się parę x/t, gdzie x jest zmienną, zaś t jest dowolnym termem, który stanowi wartość przypisaną zmiennej x. Def. (podstawienie) Podstawieniem nazywa się skończony zbiór przypisań = {x 1 /t 1,..., x n /t n }, w którym wszystkie zmienne x 1,..., x n są różne i żadna zmienna x i (i = 1,, n) nie występuje w żadnym termie t j (j = 1,, n). W szczególnym przypadku podstawienie może być zbiorem pustym, co oznacza się za pomocą symbolu. Def. (wyrażenie) Wyrażeniem nazywa się formułę lub term. Def. (wynik zastosowania podstawienia) Niech W będzie dowolnym wyrażeniem a podstawieniem postaci = {x 1 /t 1,..., x n /t n }. Wynikiem zastosowania podstawienia do wyrażenia W (ozn. W ) nazywa się wyrażenie W = W powstające przez zastąpienie w wyrażeniu W wszystkich wystąpień każdej zmiennej x i takiej, że x i /t i przez term t i. Def. (złożenie podstawień) Niech = {x 1 /t 1,..., x n /t n } i = {y 1 /s 1,..., y m /s m } będą podstawieniami. Podstawienie nazywane złożeniem podstawień i (ozn. = ), uzyskuje się ze zbioru {x 1 /t 1,..., x n /t n, y 1 /s 1,..., y m /s m } poprzez usunięcie wszystkich przypisań x i /t i, takich że x i t i oraz wszystkich przypisań y j /s j, takich że y j {x 1,..., x n }. 4

Def. (ogólność podstawienia) Podstawienie jest tak samo lub bardziej ogólne niż podstawienie, jeżeli istnieje takie podstawienie, że =. Def. (unifikator, najogólniejszy unifikator) Podstawienie nazywa się unifikatorem wyrażeń U i W, jeżeli W = U. Podstawienie nazywa się najogólniejszym unifikatorem wyrażeń U i W, jeżeli dla każdego podstawienia będącego unifikatorem U i W istnieje takie podstawienie, że =. Przykład 1 oznaczenia: p symbol predykatowy; a, b, c stałe; r, v, w, x, y, z zmienne; f, g symbole funkcyjne; W = p(x, x, y, z), = { x/a, y/g(b), z/v }, W = p(a, a, g(b), v), = { x/f(y,v), r/z }, = { x/a, y/b, v/c, w/c, z/r }, = { x/f(b,c), y/b, v/c, w/c, z/r}. Unifikatorami zbioru wyrażeń { p(a, x, y), p(z, b, y) } są np. podstawienia { x/b, y/c, z/a } lub { x/b, y/d, z/a }. Najogólniejszym unifikatorem tego zbioru jest podstawienie {x/b, z/a}. 5

Strategie wnioskowania rezolucyjnego Def. (rezolucja liniowa) Rezolucja liniowa jest to strategia wnioskowania za pomocą reguły rezolucji, w której każdą, kolejną parę przesłanek tworzą następujące dwa elementy: (1) w pierwszym kroku - negacja hipotezy, w każdym kolejnym kroku - rezolwenta uzyskana w kroku poprzednim, (2) dowolny aksjomat, negacja hipotezy lub dowolna rezolwenta skonstruowana wcześniej. Przykład 2 (zastosowanie rezolucji liniowej) teoria : {A 1 A 2, A 1 A 2 } hipoteza: A 1 A 1 A 1 A 2 A 2 A 1 A 2 A 1 A 1 Def. (rezolucja źródłowa) Rezolucja źródłowa jest to strategia wnioskowania za pomocą reguły rezolucji, w której każdą, kolejną parę przesłanek tworzą następujące dwa elementy: (1) w pierwszym kroku - negacja hipotezy, w każdym kolejnym kroku - rezolwenta uzyskana w kroku poprzednim, (2) dowolny aksjomat. 6

Przykład 3 (niepełność rezolucji źródłowej) teoria : T = {A 1 A 2, A 1 A 2 } hipoteza: A 1 A 1 A 1 A 2 A 1 A 1 A 2 A 2 A 1 A 2 A 2 A 1 A 2 A 1 A 1 Hipotezy A 1, dowodliwej w teorii T, nie można udowodnić za pomocą rezolucji źródłowej (tj. uzyskać klauzuli pustej) bez względu na sposób konstruowania wywodu (czyli kolejność wyboru przesłanek). Rezolucja źródłowa dla klauzul horna Def. (klauzula Horna) Klauzula Horna jest to dowolna klauzula, zawierająca co najwyżej jeden literał pozytywny. Def. (implikacyjna postać klauzuli Horna) Dowolną klauzulę Horna A A 1 A m, gdzie A oraz A 1,, A m są formułami atomowymi, można zapisać w postaci A A 1 A m lub równoważnie ( x 1 )... ( x n ) (A ( y 1 )... ( y p ) A 1 A m ) gdzie x 1,, x n to wszystkie zmienne występujące w formule A a y 1,, y p są wszystkimi zmiennymi, które występują wyłącznie w formule A 1 A m. 7

Def. (SLD-rezolucja) Rezolucja źródłowa w zbiorze klauzul Horna z określoną strategią wyboru literału aktywnego nosi nazwę SLD-rezolucji [4] (ang. Linear resolution with Selection function for Definite clauses). Def. (nagłówek klauzuli, ciało klauzuli) Niech A A 1 A m będzie klauzulą Horna w postaci implikacyjnej. Formułę atomową A nazywa się nagłówkiem klauzuli, a koniunkcję atomów A 1 A m określa się mianem ciała klauzuli. Def. (fakt, reguła, klauzula pusta) W szczególnym przypadku ciało klauzuli może być formułą pustą; A klauzule takie nazywa się faktami. Dla rozróżnienia, klauzule o niepustych ciałach określa się mianem reguł. Klauzula o pustym ciele i pustym nagłówku reprezentuje klauzulę pustą, którą oznacza się symbolem. Def. (program w logice) Program w logice jest skończonym zbiorem faktów lub reguł. Def. (definicja predykatu w programie) Definicją predykatu o nazwie r i arności n (co oznacza się jako r/n) w programie P jest zbiór wszystkich klauzul z programu P, których nagłówki zawierają predykat r/n Def. (zapytanie, cel) Celem nazywa się klauzulę o pustym nagłówku A 1 A m Formuła A 1 A m nosi nazwę zapytania, a wchodzące w jej skład literały to podcele. 8

Przykład 4 2017 Adam Meissner Poniższy, przykładowy program w logice opisuje relacje rodzinne w pewnym zbiorze osób. ojciec(x, y) rodzic(x, y) mężczyzna(x) męski_potomek(x, y) rodzic(y, x) mężczyzna(x) męski_potomek(x, y) rodzic(y, z) męski_potomek(x, z) rodzic(adam, piotr) rodzic(ewa, piotr) rodzic(anna, wanda) rodzic(jan, wanda) rodzic(piotr, maria) rodzic(piotr, roman) rodzic(wanda, maria) rodzic(wanda, roman) mężczyzna(adam) mężczyzna(piotr) mężczyzna(jan) mężczyzna(roman) Przykłady zapytań do programu: męski_potomek(x, adam) - kto jest męskim potomkiem Adama? rodzic(wanda, x) - czyim rodzicem jest Wanda? Def. (odpowiedź) Niech B będzie dowolnym celem. Odpowiedzią dla zapytania B i programu P nazywa się najogólniejsze podstawienie, takie że P ( )B. 9

Def. (reguła SLD-rezolucji) 2017 Adam Meissner Niech A 1... A i... A m będzie dowolnym celem; niech będzie dany program, do którego należą klauzule A A 1... A n oraz A. Ponadto zakłada się, że istnieje podstawienie będące najogólniejszym unifikatorem atomów A i A i. Regułę SLD-rezolucji określa się następująco (w dwóch wariantach) A 1... A i... A m, A A 1... A n (A 1... A i 1 A 1... A n A i + 1... A m ) A 1... A i... A m, A (A 1... A i 1 A i + 1... A m ) Def. (wywód SLD-rezolucyjny) Niech B i oznacza dowolną koniunkcję literałów pozytywnych, a i niech będzie podstawieniem. Wywodem SLD-rezolucyjnym dla celu G i programu P nazywa się (być może nieskończony) ciąg par: ( B 0, 0 ), ( B 1, 1 ), ( B 2, 2 ),... gdzie B 0 = G, 0 =, zaś w stosunku do każdego elementu ( B i + 1, i + 1 ), gdzie i 0, przyjmuje się założenie, że istnieje klauzula C P i podstawienie takie, że formuła B i + 1 jest wnioskiem uzyskanym poprzez zastosowanie reguły SLD-rezolucji do wybranego aktywnego literału w B i i C przy użyciu najogólniejszego unifikatora, zaś i+ 1 jest złożeniem podstawień i, z którego zostały usunięte wszystkie przypisania zmiennych nie występujących w G. 10

Def. (dowód SLD-rezolucyjny) Dowodem SLD-rezolucyjnym dla celu G i programu P nazywa się wywód SLD-rezolucyjny dla G i P, którego ostatnim elementem jest para (, ). Def. (odpowiedź obliczona) Odpowiedzią obliczoną dla zapytania B i programu P, nazywa się podstawienie takie, że istnieje dowód SLD-rezolucyjny dla celu B i programu P, którego ostatnim elementem jest para (, ). Przykład 5 W przykładzie przedstawia się dowód SLD-rezolucyjny dla celu męski_potomek(x,adam) i programu z przykładu 4. ( męski_potomek(x,adam), ), ( rodzic(adam,x) mężczyzna(x), ), ( mężczyzna (piotr), {x/piotr}), (, {x/piotr}) Odpowiedzią na postawione zapytanie jest podstawienie {x/piotr} wchodzące w skład ostatniego elementu dowodu. Def. (drzewo wywodów SLD-rezolucyjnych) Drzewem wywodów SLD-rezolucyjnych dla programu P i celu G nazywa się drzewo, którego wierzchołkami są elementy wywodów dla P i G. Korzeniem drzewa jest para (G, ). Niech V będzie dowolnym wierzchołkiem drzewa, zawierającym rezolwentę z jednym, wybranym literałem aktywnym. Wierzchołek V przylega do wierzchołka V wtedy i tylko wtedy, gdy istnieje wywód dla P i G, w którym V i V występują jako kolejne elementy. 11

Przykład 6 Fragment (tj. niektóre gałęzie) drzewa wywodów dla celu męski_potomek(x,adam) i programu z przykładu 4; skróty: p męski_potomek, m mężczyzna, r rodzic, ad adam, ma maria, pi piotr, ro roman. ( p(x,ad), ) ( r(ad,x) m(x), ) ( r(ad,z) p(x,z), ) ( m(pi), {x/pi}) ( p(x,pi), ) (, {x/pi}) ( r(pi,x) m(x), ) sukces ( m(ro), {x/ro}) ( m(ma), {x/ma}) porażka (, {x/ro}) sukces Reprezentacja klauzul w Prologu reguła meski_potomek(x, Y) rodzic(y, X), mezczyzna(x) fakt mezczyzna(adam) cel meski_potomek(x, Y) 12

Przykład 7 program stypendysta(x):- student(x), bardzo_dobry(x). bardzo_dobry(x):- srednia(x,s), S >= 4.0. student(adam). student(jan). srednia(jan,4.3). srednia(adam,3.9). cel :- stypendysta(x). drzewo wywodów (:- stypendysta(x)., ) (:- student(x), bardzo_dobry(x)., ) (:- bardzo_dobry(adam)., {X/adam}) (:- bardzo_dobry(jan)., {X/jan}) (:- srednia(adam,s)., S>=4.0., {X/adam}) (:- srednia(jan,s)., S>=4.0., {X/jan}) (:- 3.9 >= 4.0., {X/adam}) (:- 4.3 >= 4.0., {X/jan}) porażka odpowiedź = { X/jan} (, {X/jan}) sukces 13