Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Prolog Tutorial Introduction

Podobne prezentacje


Prezentacja na temat: "Prolog Tutorial Introduction"— Zapis prezentacji:

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

2 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

3 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

4 Obiekty i relacje

5 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.

6 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.

7 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.

8 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 .

9 Obiekty i relacje

10 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.

11 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.

12 Fakty

13 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.

14 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.

15 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

16 Pytania

17 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ć?

18 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…

19 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…

20 Zmienne

21 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ń.

22 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ą.

23 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ść.

24 Koniunkcja

25 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).

26 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)

27 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.

28 Reguły

29 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.

30 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.

31 Reguły

32 Dziękujemy za uwagę


Pobierz ppt "Prolog Tutorial Introduction"

Podobne prezentacje


Reklamy Google