Prolog Tutorial Introduction

Slides:



Advertisements
Podobne prezentacje
Teoria układów logicznych
Advertisements

Wprowadzenie w problematykę związaną z twierdzeniem Gödla
Język C/C++ Funkcje.
RACHUNEK ZDAŃ.
REGUŁOWO-MODELOWE SKORUPOWE SYSTEMY EKSPERTOWE Część 1
Wprowadzenie do języka skryptowego PHP
VI Rachunek predykatów
Badania operacyjne. Wykład 2
Opracowała: Elżbieta Fedko
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Macierze Maria Guzik.
Inteligentne Systemy Informacyjne
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
FUNKTORY Katarzyna Radzio Kamil Sulima.
Jest to wyrażenie jednoznacznie stwierdzające, na gruncie danego języka, iż tak a tak jest albo że tak a tak nie jest. Zazwyczaj określa się, iż takim.
Zapis informacji Dr Anna Kwiatkowska.
Podstawy programowania
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Algorytmy.
Podstawy układów logicznych
Instrukcje sterujące część 1
Programowanie w logice
Poznaj bliżej program Microsoft Office Word 2007
RÓWNANIA Aleksandra Janes.
I. Informacje podstawowe
Metody reprezentacji wiedzy – cz. 2.
ITERACJA - powtórzenie
Języki i automaty część 3.
Andrzej Repak Nr albumu
XML – eXtensible Markup Language
Algorytmy.
Rachunki Gentzena Joanna Witoch.
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Wybrane zagadnienia relacyjnych baz danych
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Programowanie obiektowe 2013/2014
Komendy SQL do pracy z tabelami i bazami
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Projektowanie stron WWW
ZBIORY PODSTAWY.
PRZYGOTOWALI Bartosz Pawlik Daniel Sawa Marcin Turbiński.
Algorytmika.
Programowanie strukturalne i obiektowe C++
Zbiory Co to jest zbiór? Nie martw się, jeśli nie potrafisz odpowiedzieć. Nie ma odpowiedzi na to pytanie.
Algorytmy- Wprowadzenie do programowania
PHP Instrukcja warunkowa if Damian Urbańczyk. Warunek? Instrukcję warunkową wykorzystujemy wtedy, gdy chcemy sprawdzić pewien fakt, który może być prawdziwy.
Temat 2: Składnia kaskadowych arkuszy stylów. Za zmianę wyglądu witryny w kaskadowych arkuszach stylów odpowiadają reguły stylów. Każda z reguł powiązana.
Programowanie Zaawansowane
Wstęp do Prologa PRZYGOTOWALI: MARIUSZ TREMBIŃSKI, KRZYSZTOF DĄBROWSKI, DAWID SZYMAŃSKI, PAWEŁ POLAŃCZYK.
Systemy wspomagające dowodzenie twierdzeń
Wstęp do programowania Wykład 10 Programowanie w logice.
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
ZDANIE.
„Filtry i funkcje bazodanowe w EXCELU”
KNW - wykład 3 LOGIKA MODALNA.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Prolog - wprowadzenie Wojciech Besler Paweł Madej
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
Zmienne typy danych w VBA. MS Excel – typy danych w języku programowania VBA.
Nawracanie i odcięcie Jakub Czoboda, Jezierski Aleksander, Skierkowski Paweł, Bembenista Kamil, Martynowski Witold.
PROLOG NAWRACANIE I ODCIĘCIE
Programowanie Obiektowe – Wykład 2
Zrozumieć, przeanalizować i rozwiązać
Patryk Kłys Aleksandra dąbrowska
Selekcja danych Korelacja.
A closer look.
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
Zapis prezentacji:

Prolog Tutorial Introduction Autorzy: Joanna Krysztoforska, Mateusz Jasiński, Damian Krawczyk, Szymon Łabiński, Radosław Ziemnicki

Co to jest Prolog Prolog jest to jeden z najpopularniejszych języków programowania logicznego. Nazwa tego języka to akronim powstały od programowania w logice (ang. programming in logic). Jest to język deklaratywny - nie zapisujemy algorytmu rozwiązującego dany problem. Opisujemy problem tak, by system mógł sam wywnioskować jakie jest jego rozwiązanie. Definiujemy dany problem (obiekty związane z problemem i relacje pomiędzy tymi obiektami), a nie sposób jego rozwiązania. Prolog jest wykorzystywany w wielu programach związanych z: - logiką w informatyce - sztuczną inteligencją - przechowywaniem i przetwarzaniem danych - rozwiązywaniem problemów abstrakcyjnych

Podstawowe informacje Nazwy relacji obiektów muszą zaczynać się małymi literami. Nazwy rozpoczynające się od dużej litery oznaczają zmienne. Zaczynamy od zapisu relacji. Następnie dopisujemy rozdzielone przecinkami oraz ujęte w okrągły nawias obiekty. Nazwy obiektów występujących w nawiasach nazywamy argumentami Nazwy relacji znajdującej się przed nawiasem nazywamy predykatem

Obiekty i relacje

Obiekty i relacje Prolog to język programowania używany do rozwiązywani problemów dotyczących obiektów i relacji między nimi. Prolog stanowi praktyczną i wydajną implementację szeregu aspektów „inteligentnego” wykonywania programu: braku determinizmu, równoległości i wywoływania procedur według wzorca. Prolog zawiera ujednoliconą strukturę danych, term, na bazie której tworzone są wszystkie dane oraz same programy Prologu. Program prologowy składa się ze zbioru klauzul, a każda klauzula to albo fakt opisujący pewną informację, albo reguła mówiąca, jak rozwiązanie można powiązać z danymi faktami. Reasumując, kiedy mówimy o obiektach w Prologu, nie chodzi nam o struktury danych dziedziczące pola i metody z klasy, ale o byty, które można opisać termami.

Obiekty i relacje Obiekt w sensie Prologu jest czymś, co możemy nazwać bytem. Nie definiujemy z czego się on składa i co można z nim zrobić, ale jaki jest. Dodatkowo, dla każdego obiektu definiujemy relacje jakim obiekt ten podlega. Przy pomocy obiektów opisujemy interesujący nas wycinek świata. Działanie programu prologowego objawia się możliwością stawiania pytań związanych z uprzednio opisanym światem.

Obiekty i relacje Najprostszym sposobem opisu obiektu, jest podanie faktów z nim związanych, jak na przykład: ciezszy(pomarancz,jablko). ciezszy(jablko,mandarynka). ciezszy(arbuz,pomarancz). ciezszy(jablko,winogrono) Powyższe fakty stwierdzają, że ciezszy(pomarancz,jablko). – pomarańcza jest cięższa od jabłka, ciezszy(jablko,mandarynka). – jabłko jest cięższe od mandarynki, itd.

Obiekty i relacje Prolog nie wie, że w stosunku do relacji może stosować przechodniość. W ten oto sposób dochodzimy do sytuacji, gdy musimy poinformować program o pewnych relacjach, czyli określić reguły .

Obiekty i relacje

Uwaga: Obiekty i relacje Obiekty mogą pozostawać we wzajemnych zależnościach wyrażanych za pomocą implikacji, której poprzednikiem i następnikiem są określone formuły zdaniowe. Możemy zatem definiować jedne obiekty poprzez inne w ten sposób, że z prawdziwości pewnych predykatów określonych na znanych już obiektach i na tym definiowanym wynika prawdziwość jakiegoś predykatu określonego (między innymi) na obiekcie definiowanym.

Programowanie w Prologu Programowanie komputerów w Prolog składa się z: określenia pewnych faktów dotyczących obiektów i ich relacji, określenia pewnych zasad dotyczących obiektów i ich relacji, i zadawania pytań o przedmioty i ich relacje. Na przykład, przypuśćmy, że opowiedzieliśmy systemowi Prolog o naszej regule o siostrach. Możemy wtedy zapytać, czy Mary i Jane są siostrami. Prolog przeszukiwałby to co mu powiedzieliśmy o Maryi i Jane, wróci z odpowiedzią tak lub nie, w zależności od tego, co wcześniej powiedzieliśmy. Zatem programowanie w Prolog polega na dostarczeniu wszystkich tych faktów i zasad. Prolog może zrobić coś więcej niż odpowiadać na pytania typu tak lub nie. Prolog umożliwia użycie komputera jako Magazyn faktów i reguł, a także dostarcza sposobów na wyciąganie wniosków z jednego faktu, aby znaleźć wartości zmiennych, które prowadzą do logicznego rozwiązania. Prolog zaczeka na wpisanie faktów i zasad, które dotyczą problemu, który chcesz rozwiązać. Jeśli zadasz właściwy rodzaj pytania, Prolog opracuje odpowiedz i wyświetli ja na ekranie.

Fakty

Fakty „Fakt to zdanie otrzymane przez wstawienie do określonego w programie predykatu wartości zmiennych(obiektów), dla których jest ono prawdziwe.” Przykłady: lubi(ala, kot). Fakt – Ala lubi Kota. lubi(kot, ala). Fakt – Kot lubi Ale.

Fakty Fakty odnoszą się również do relacji. Relacje mogą mieć dowolna ilość argumentów. Przykłady: gra(ala, marek, karty). Fakt – Ala i Marek grają w karty. jedzenie(ala, marek, schabowy). Fakt – Ala i Marek jedzą schabowego.

Fakty Nazwy wszystkich relacji i obiektów muszą zaczynać się małymi literami - lubi(ala, marek). Nazwy obiektów występujące w nawiasach nazywamy argumentami. Nazwę relacji znajdującą się przed nawiasem nazywamy predykatem - gra(ala, marek, karty) Zbiór faktów nazywamy bazą danych

Pytania

Pytania Mając przygotowane fakty w bazie wiedzy możemy tworzyć o nie zapytania. W prologu pytania wyglądają praktycznie tak samo jak fakty. Różnią się jedynie znakiem zachęty. ?- lubi(damian, grac). Co oznacza: Czy Damian lubi grać? lub Czy faktem jest, że Damian lubi grać?

Pytania Gdy stworzymy zapytanie prolog zacznie przeszukiwać bazę wiedzy w celu znalezienia w niej faktu, który będzie pasował do zapytania. Jeśli takowy fakt istnieje prolog zwróci odpowiedź yes/true. Jeśli prolog nie odnajdzie odpowiedniego faktu w bazie zwróci odpowiedź no/false. Natomiast jeśli utworzone zapytanie nie pokrywa się z żadnym faktem w bazie prolog Error…

Pytania Gdy stworzymy zapytanie prolog zacznie przeszukiwać bazę wiedzy w celu znalezienia w niej faktu, który będzie pasował do zapytania. Jeśli takowy fakt istnieje prolog zwróci odpowiedź yes/true. Jeśli prolog nie odnajdzie odpowiedniego faktu w bazie zwróci odpowiedź no/false. Natomiast jeśli utworzone zapytanie nie pokrywa się z żadnym faktem w bazie prolog Error…

Zmienne

Zmienne Zmienne w Prologu są zupełnie odmienne od zmiennych w językach imperatywnych i tylko trochę podobne do zmiennych w językach funkcyjnych. Owo podobieństwo polega na tym, że zmienna prologowa nie może dowolnie zmieniać wartości tak, jak się to dzieje przy podstawieniach — tych zresztą w ogóle w Prologu nie ma. W Prologu nadawanie wartości zmiennym następuje w wyniku uzgodnień.

Zmienne Zmienna w programie prologowym reprezentuje zupełnie nieokreślony byt, bez typu. W trakcie obliczeń, w rezultacie uzgodnień następuje ukonkretnienie zmiennej, czyli bliższe określenie bytu reprezentowanego przez zmienną.

Zmienne Zmienne zapisuje się w postaci ciągu liter i cyfr rozpoczynających się wielką literą: X To_jest_zmienna Zmienna1337 Przykład: lubi(damian, grac). ?- lubi(X, grac). Co oznacza: Czy istnieje obiekt, który lubi grać? X = damian. Szczególną rolę odgrywa w Prologu zmienna _ (podkreślenie) i oznacza ona dowolną ale nieistotną wartość.

Koniunkcja

Koniunkcja w Prologu rozróżniamy specjalne do niego notacje. Załóżmy, że mamy następującą bazę danych: like (mary, czekolada). like (mary, wino). like (john, wino). like (john, mary). Chcemy zapytać, czy John i Mary są ze sobą w kontakcie. W tym celu zapytamy: czy John lubi Mary? oraz Czy Mary lubi Johna? Połączenie tych dwóch celów: chcemy zaspokoić je jeden po drugim. To przedstawiają przecinki między celami: ? - lubi (john, mary), lubi (mary, john).

Koniunkcja Przecinek jest wymawiany jako "i" i służy do oddzielenia dowolnej liczby . Sekwencja (Cele) (rozdzielone przecinkami) są przekazywana Prologowi, Prolog próbuje zaspokoić każde z nich. Wszystkie cele muszą być spójne, aby sekwencja była spełniona. Korzystając z powyższej listy faktów, co Powinien wyświetla Prolog, gdy podano powyższe pytanie? tak czy nie? Odpowiedź brzmi nie. Czemu? To jest Fakt, że John lubi Mary, więc pierwszy cel jest prawdziwy. Jednak drugi cel Nie może być udowodnione, ponieważ nigdzie nie ma na liście faktów, czy ona go lubi (mary, john)

Koniunkcja Konflikty i zastosowanie zmiennych można połączyć. Teraz, gdy wiemy, że nie można wykazać, że John Mary się lubią pytamy inaczej: czy jest coś, co lubi John i Mary? To również pytanie składa się z dwóch celów: • Najpierw sprawdź, czy istnieje jakiś X, który Maryja lubi. • Następnie dowiedz się, czy John lubi cokolwiek co jest X. W Prologu dwa cele będą zapisywane jako łączenie w następujący sposób: ? - lubi (mary, X), lubi (john, X). Prolog odpowiada na pytanie, starając się zaspokoić pierwszy cel. Jeśli pierwszy cel jest w bazie danych, a następnie Prolog będzie oznaczać miejsce w bazie danych i spróbuje Spełniają drugi cel. Jeśli drugi cel jest zadowolony, to Prolog oznacza to cel Miejsce w bazie danych i znaleźliśmy rozwiązanie spełniające oba cele. To jest Najważniejsze, aby pamiętać, że każdy cel utrzymuje swój własny marker miejsca. Jeśli drugi cel połączenia nie jest spełniony.

Reguły

Reguły Reguł używamy, gdy jeden fakt zależy od grupy innych faktów. Przykłady: Jeżeli pada deszcz, zabieram ze sobą parasolkę. Wchodzę na spacer, jeśli świeci słońce. Reguły używane są również do zapisywania definicji. X jest ptakiem, jeżeli: X jest zwierzęciem. X posiada pióra.

Reguły Na regułę składa się głowa oraz ciała. Połączone są one symbolami dwukropka i myślnika. Głowa składa się z jednego predykatu. Ciało reguły może być połączeniem dowolnej ilości warunków (oddzielanych przecinkami - oznaczającymi logiczne And). Przykłady: Ala lubi tylko tanie i zdrowe przekąski. lubi(ala, X) :- tanie(X), zdrowe(X). Aby spełniona była przesłanka reguły, spełnione muszą być wszystkie jej cele.

Reguły

Dziękujemy za uwagę