Programowanie deklaratywne



Podobne dokumenty
Programowanie deklaratywne

PODSTAWY SZTUCZNEJ INTELIGENCJI

Programowanie deklaratywne

Programowanie deklaratywne

Programowanie w logice

Wprowadzenie do Prologa

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

Projekt 4: Programowanie w logice

Paradygmaty programowania

Laboratorium przedmiotu Paradygmaty Programowania

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

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

Programowanie w logice Wykład z baz danych dla

Programowanie deklaratywne

Adam Meissner.

Programowanie w logice Prolog 1

Deklarowania faktów dotyczących obiektów i związków między nimi. Definiowania reguł dotyczących obiektów i związków między nimi.

Wykład 8. Cel wykładu. Dane w komórce. WyŜsza Szkoła MenedŜerska w Legnicy. Informatyka w zarządzaniu Zarządzanie, zaoczne, sem. 3

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

Podstawy Sztucznej Inteligencji (PSZT)

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

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

LOGIKA Klasyczny Rachunek Zdań

RBD Relacyjne Bazy Danych

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

ROZDZIAŁ 1. Rachunek funkcyjny

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

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

Elementy rachunku lambda. dr hab. inż. Joanna Józefowska, prof. PP 1

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

SZTUCZNA INTELIGENCJA

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

Jerzy Nawrocki, Wprowadzenie do informatyki

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

Programowanie deklaratywne

Programowanie deklaratywne i logika obliczeniowa

Programowanie w logice Prolog 2

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Języki programowania deklaratywnego

1 Podstawowe oznaczenia

Adam Meissner STUCZNA INTELIGENCJA

Instrukcja warunkowa i złoŝona.

Wykład 1. Informatyka Stosowana. 3 października Informatyka Stosowana Wykład 1 3 października / 26

PRZEWODNIK PO PRZEDMIOCIE

Internet Semantyczny i Logika I

Rachunek zdań. Zdanie w sensie logicznym jest to wyraŝenie jednoznacznie stwierdzające, na gruncie reguł danego języka, iŝ tak a

Obliczenia inspirowane Naturą

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

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

Podstawy języka PROLOG

Programowanie komputerów

Dariusz Banasiak. Instytut Informatyki, Automatyki i Robotyki. Politechniki Wrocławskiej

Laboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

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

Wykład 0 Informacje Podstawowe

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

Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW

Rachunek zdań. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

Technologie i systemy oparte na logice rozmytej

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

Języki programowania Prolog

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Laboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING

Programowanie w Logice Struktury danych (Lista 2)

Teoretyczne podstawy informatyki

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

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

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

PRZEWODNIK PO PRZEDMIOCIE

WSTĘP ZAGADNIENIA WSTĘPNE

Semantyka rachunku predykatów

Języki programowania deklaratywnego

Metoda Tablic Semantycznych

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Zasada rozszerzania. A U A jest zbiorem rozmytym, B jest obrazem zbioru A Przeniesienie rozmytości A w odwzorowaniu f na zbiór B. sup.

Gramatyki atrybutywne

Matematyka ETId Elementy logiki

Aproksymacja funkcji a regresja symboliczna

Elementy logiki matematycznej

Przykładowe dowody formuł rachunku kwantyfikatorów w systemie tabel semantycznych

Podstawowe Pojęcia. Semantyczne KRZ

LOGIKA I TEORIA ZBIORÓW

Ziemia obraca się wokół Księżyca, bo posiadając odpowiednią wiedzę można stwierdzić, czy są prawdziwe, czy fałszywe. Zdaniami nie są wypowiedzi:

9.5 Rozliczanie zaopatrzenia w przedmioty ortopedyczne i środki pomocnicze

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Przeciążanie operatorów

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie),

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

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości.

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

Języki programowania zasady ich tworzenia

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Systemy baz danych. Notatki z wykładu

Algebrę L = (L, Neg, Alt, Kon, Imp) nazywamy algebrą języka logiki zdań. Jest to algebra o typie

Transkrypt:

Programowanie deklaratywne Artur Michalski Informatyka II rok Plan wykładu Wprowadzenie do języka Prolog Budowa składniowa i interpretacja programów prologowych Listy, operatory i operacje arytmetyczne Sterowanie mechanizmem nawrotów Predefiniowane procedury Styl i technika programowania w Prologu 1

Wprowadzenie do języka Prolog Przykład prostego programu w języku Prolog:» Rozszerzanie programu przez wprowadzanie reguł prologowych» Rekurencyjna definicja reguły j» ela ala robert jacek tomek ola iza 2

Prolog - język przetwarzania symbolicznego przeznaczony do rozwiązywania problemów dotyczących obiektów i relacji między nimi. Przykład relacji między obiektami: Tomek jest em Roberta. (tomek tomek, robert). robert tomek Wszystkie relacje dla naszego przykładu: (tomek tomek, robert). (tomek tomek,iza). (ela ela,robert). (robert robert,ala). (robert robert,ola). (ola ola,jacek). ela ala robert jacek tomek ola iza 3

Program prologowy składa się z klauzul. W naszym przykładzie klauzule definiują fakty, wskazujące, między którymi obiektami zachodzi relacja pokrewieństwa. (tomek tomek, robert). (tomek tomek,iza). (ela ela,robert). (robert robert,ala). (robert robert,ola). (ola ola,jacek). W Prologu moŝliwe jest formułowanie pytań dotyczących zdefiniowanych relacji. Przykładowe pytanie: Czy Robert jest em Ali??- (robert robert, ala). Yes ala? robert 4

Inne pytanie:?- (iza iza, ola). No Kolejne pytanie:?- (iza iza,, piotr). No ela ala robert jacek tomek ola? iza piotr? Inne pytanie:?- (iza iza, ola). No Kolejne pytanie:?- (iza iza,, piotr). No W Prologu, jeśli nie jest moŝliwa weryfikacja odpowiedzi w oparciu o zdefiniowane fakty, to odpowiedź brzmi No. 5

W Prologu moŝliwe jest formułowanie pytań szczegółowych. Przykładowe pytanie: Kto jest em Izy??- (X, iza). X = tomek iza? Odpowiedzi na pytanie szczegółowe moŝe być kilka. Przykładowe pytanie: Kto jest dzieckiem Roberta??- (robert robert,, X). X = ala; X = ola robert?? 6

Pytanie szczegółowe moŝe mieć węŝszy lub szerszy zakres. Przykładowe pytanie: Dla jakich X i Y, X jest em Y??- (X, Y). X = ela Y = robert; X = tomek Y = robert; X = tomek Y = iza;... W Prologu moŝna równieŝ formułować pytania złoŝone. Przykładowe pytanie: Kto jest babcią lub dziadkiem Jacka??- (Y,jacek jacek), (X,Y). X = robert Y = ola ela ala robert jacek tomek ola iza 7

JeŜeli zmieniamy porządek w pytaniu złoŝonym logiczny sens pytania pozostaje taki sam. Wariant 1:?- (Y,jacek jacek), (X,Y). Wariant 2:?- (X,Y), (Y,jacek jacek). Odpowiedź (taka sama): X = robert Y = ola Inne pytanie: Czy Ala i Ola mają wspólnego a??- (X,ala ala), (X,ola ola). X = robert ela ala robert jacek tomek ola iza 8

Podsumowanie przykładu: Prolog umoŝliwia prosty zapis relacji, takich jak,, poprzez definiowanie n-tek, n składających się z obiektów, które spełniają daną relację UŜytkownik moŝe w łatwy sposób formułować pytania dotyczące tych relacji Program prologowy składa się z klauzul Argumentami relacji mogą być: konkretne obiekty, nazywane atomami (takie jak tomek czy ala) ) lub ogólne obiekty, czyli zmienne (takie jak X czy Y) Podsumowanie przykładu (ciąg dalszy): Pytania składają się z jednego lub więcej celów.. Ciąg celów, taki jak: (X,ala ala), (X,ola ola) oznacza koniunkcje logiczną celów: X jest em Ali i X jest em Oli. Odpowiedź na pytanie moŝe być pozytywna lub negatywna, w zaleŝność od tego czy odpowiedni cel udało się osiągnąć, czy teŝ nie. Pozytywna odpowiedź oznacza, Ŝe cel został spełniony.. W przypadku przeciwnym cel jest niespełniony. JeŜeli jest kilka moŝliwych odpowiedzi na zadane pytanie, Prolog moŝe wygenerować kolejne na Ŝyczenie uŝytkownika. 9

Program prologowy moŝe zawierać równieŝ fakty, opisujące wybrane cechy obiektów.. Wykorzystujemy do tego celu tzw. relacje unarne. Przykładowo moŝe to być płeć osoby: kobieta(ela ela). ela mezczyzna(tomek tomek). mezczyzna(robert robert). kobieta(iza iza). kobieta(ala ala). ala kobieta(ola ola). mezczyzna(jacek jacek). robert jacek tomek ola iza Spróbujmy zdefiniować relację dziecko. Fakty : dziecko(robert robert,ela). dziecko(robert robert,tomek). dziecko(iza iza,tomek).... Wykorzystanie ogólnej zasady: Dla wszystkich X i Y, Y jest dzieckiem X, o ile X jest em Y. dziecko(y,x):- (X,Y). 10

Fakty Zawsze (bezwarunkowo) prawdziwe. Budowa reguły j: dziecko(y,x) :-: (X,Y). nagłówek ciało Reguły Prawdziwe, jeŝeli spełniony jest pewien warunek. Budowa reguły j (ciąg dalszy): dziecko(y,x) :-: nagłówek Część konkluzyjna albo Lewa strona reguły (X,Y). ciało Część warunkowa albo Prawa strona reguły 11

Reguły w działaniu Przykładowe pytanie:?- dziecko(iza iza,tomek). Brak bezpośrednich faktów powoduje odwołanie do reguł. Reguła jako rodzaj uogólnienia moŝe być zastosowana do konkretnych obiektów takich jak iza i tomek. UŜycie reguły wymaga zatem wykonania podstawień: X = tomek Y = iza Reguły w działaniu (ciąg dalszy): Wiązanie zmiennych X i Y daje przypadek szczególny reguły: dziecko(iza iza,tomek) ) :-: (tomek tomek,iza). Sprawdzenie części warunkowej - zastąpienie celu podcelem: (tomek tomek,iza). Weryfikacja podcelu: prawdziwy w oparciu o fakty. Wniosek: konkluzja reguły prawdziwa. Yes 12

Przykład innej reguły - matka: Dla wszystkich X i Y, X jest matką Y, o ile X jest em Y i X jest kobietą. matka(x,y) :-: (X,Y), kobieta(x). koniunkcja warunków X Y kobieta matka Inne reguły pokrewieństwa - babcia: Dla wszystkich X i Y, X jest babcią Y, o ile X jest em Z, Z jest em Y i X jest kobietą. babcia(x,y) :-: (X,Z), (Z,Y), Y kobieta(x). X Z kobieta babcia 13

Inne reguły pokrewieństwa - siostra: Dla wszystkich X i Y, X jest siostrą Y, o ile X i Y mają wspólnego a i X jest kobietą. kobieta siostra(x,y) :-: (Z,X), (Z,Y), kobieta(x). Z X Y siostra Przykładowe pytanie:?- siostra(ala ala,ola). Yes ela ala robert jacek tomek ola iza Przykładowe pytanie:?- siostra(x,ola ola). X = ala; X = ola 14

Przykładowe pytanie:?- siostra(ala ala,ola). Yes Poprawna reguła: siostra(x,y) :-: (Z,X), (Z,Y), kobieta(x), X\=Y. Przykładowe pytanie:?- siostra(x,ola ola). X = ala; X = ola Podsumowanie: Programy moŝna rozszerzać w prosty sposób poprzez definiowanie nowych klauzul WyróŜniamy trzy rodzaje klauzul: fakty, reguły i pytania Fakty opisują to, co jest zawsze, bezwarunkowo prawdziwe Reguły opisują to, czego prawdziwość zaleŝy od pewnego warunku Za pomocą pytań moŝna dowiedzieć się co jest prawdą lub fałszem 15

Podsumowanie (ciąg dalszy): Klauzula prologowa składa się z: nagłówka i ciała; ciało to lista celów oddzielonych przecinkami, które traktujemy jako koniunkcję Fakty to klauzule, które mają nagłówek i puste ciało; pytania posiadają tylko ciało; reguły mają zarówno nagłówek, jak i niepuste ciało W trakcie działania zmienne mogą być zamieniane przez inne obiekty; proces ten określamy mianem wiązania zmiennych Zakładamy, Ŝe wszystkie zmienne klauzuli są poprzedzone kwantyfikatorem uogólnionym Rekurencyjna definicja reguły Definicja relacji przodek X Z przodek Przodek bezpośredni X Z przodek Przykład przodka pośredniego 16

Rekurencyjna definicja reguły Pierwsza definicja relacji przodek: Dla wszystkich X i Y, X jest przodkiem Y, o ile X jest em Y. przodek(x,y) :-: (X,Y). X Y przodek Przodek bezpośredni Rekurencyjna definicja reguły Druga definicja relacji przodek: przodek(x,z) :-: (X,Y), (Y,Z). X Y Z przodek Przodek pośredni 17

Rekurencyjna definicja reguły Trzecia definicja relacji przodek: przodek(x,z) :-: (X,Y1), (Y1,Y2), (Y2,Z). X Y1 Y2 Z przodek Przodek pośredni Rekurencyjna definicja reguły Czwarta definicja relacji przodek: przodek(x,z) :-: (X,Y1), (Y1,Y2), (Y2,Y3), (Y3,Z). X Y1 Y2 Y3 przodek Z Przodek pośredni 18

Rekurencyjna definicja reguły Kolejna definicja relacji przodek: przodek(x,z) :-: (X,Y1), (Y1,Y2),... (Yn Yn,Z). X Y1 Y2... przodek Z Przodek pośredni Rekurencyjna definicja reguły Ostateczna definicja relacji przodek: X Dla wszystkich X i Z, X jest przodkiem Z, o ile Y X jest em Y i Y jest przodkiem Z. przodek(x,z) :-: (X,Y), przodek(y,z). przodek... przodek Z Przodek pośredni 19

Rekurencyjna definicja reguły Pełna definicja relacji przodek w Prologu: przodek(x,z) :-: (X,Z). %bezpośredni przodek(x,z) :-: (X,Y), %pośredni przodek(y,z). Programowanie z wykorzystaniem rekurencji jest podstawową metodą programowania w Prologu. Wprowadzenie do języka Prolog Podsumowanie: Programowanie w Prologu opiera się na definiowaniu relacji i zadawaniu pytań dotyczących relacji Program prologowy składa się z klauzul.. Mamy trzy rodzaje klauzul: fakty, reguły i pytania Relacje definiowane są za pomocą faktów, które mają postać n-tek zawierających obiekty, które relacje spełniają lub reguł, które je opisują Pytania dotyczące relacji przypominają zadawanie pytań w systemach baz danych; odpowiedzi składają się ze zbioru obiektów, spełniających cel zawarty w pytaniu 20

Literatura W.F. Clocksin,, C.S. Mellish, Prolog - programowanie,, Wydawnictwo Helion, Gliwice 2003 R.A. Kowalski, Logika w rozwiązywaniu zywaniu zadań, WNT, Warszawa 1989. E. Gatnar, K. Stapor, Prolog,, Wydawnictwo PLJ, Warszawa 1991. F. Kluźniak niak,, S. Szpakowicz, Prolog,, WNT, Warszawa, 1983. I. Bratko, Prolog programming for AI, Addison- Wesley 1990. 21