PROLOG NAWRACANIE I ODCIĘCIE

Slides:



Advertisements
Podobne prezentacje
Portal EURES – rejestracja CV w bazie CV on - line
Advertisements

Jak szukać potrzebną pozycję w „Programie Mol”
SZKOLENIE BIBLIOTECZNE
Biblioteka szkolna „W bibliotece znajdziesz wszystko, czego chcesz, starą prawdę, mądrą bajkę, piękny wiersz” (Krystyna Wodnicka)  
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
11. Różniczkowanie funkcji złożonej
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
REGUŁOWO-MODELOWE SKORUPOWE SYSTEMY EKSPERTOWE Część 1
PROGRAMOWANIE STRUKTURALNE
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Budowa i funkcje elektronicznego katalogu biblioteki szkolnej
Obsługa plików csv Do odczytu z pliku csv można użyć następującego kodu: $fp = fopen ("strony.csv","r"); $num = 0; while ($data = fgetcsv ($fp, 1000, ";"))
Każdy użytkownik sieci powinien zdawać sobie sprawę z odpowiedzialności jaką ponosi za dostęp do zasobów sieci. Używanie sieci jest przywilejem, a nie.
Forum internetowe, przykład skryptu, Funkcjonalność.
Podstawy programowania II
ARKUSZ KALKULACYJNY JUŻ PROŚCIEJ SIĘ NIE DA Wersja OFFICE 2010
BIBLIOTEKI GŁÓWNEJ AMW
Elementy Rachunku Prawdopodobieństwa i Statystyki
Kunikowska Ewelina Grzechowski Ariel
Czyli wystawienie zlecenia i jego realizacja (okulary korekcyjne).
Instrukcja USOSweb Wersja: Opracował: Sebastian Sieńko Moduł sprawdzianów.
System zamawiania on-line
Biblioteka Wyższej Szkoły Bankowej w Toruniu Wydział Finansów i Zarządzania w Bydgoszczy KATALOG BIBLIOTECZNY.
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Prezentacja i szkolenie
Finansów i Zarzadzania
System rejestracji zawodników Polski Związek Judo 2006.
Instrukcja USOS Zwroty wpłat studentów
Instrukcja USOSweb Wersja: Opracował: Sebastian Sieńko Plany zajęć dodatkowych pracownika.
Języki i automaty część 3.
Kwerendy.
DODATKOWE WSKAZÓWKI Rezerwacja.
Tworzenie przedmiotów, zajęć i protokołów
II. Matematyczne podstawy MK
Elementy Rachunku Prawdopodobieństwa i Statystyki
„Równania są dla mnie ważniejsze, gdyż polityka jest czymś istotnym tylko dzisiaj, a równania są wieczne.” Albert Einstein.
Propozycja Biblioteki Pedagogicznej w Złotowie
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
Korzystanie z katalogu komputerowego ALEPH
PRZYGOTOWALI Bartosz Pawlik Daniel Sawa Marcin Turbiński.
W W W Łukasz Stochniał.
Biblioteka Wyższej Szkoły Bankowej w Gdyni.  możliwość zamawiania, rezerwowania oraz przedłużania terminu zwrotu książek,  dostęp ze strony
Excel Filtrowanie Funkcje bazodanowe
Należy traktować teorie jako swego rodzaju strukturalne całości.
1. Logowanie z usługą Active Directory. a) logowanie do domeny Windows 2003 Server odbywa się znacznie szybciej niż w poprzednich wersjach. b) nie ma odwołania.
Listy Listy w Prologu mogą przechowywać dane dowolnego typu [alpha,beta,gamma,delta] [1,2,3] Sama lista również może zawierać listę: [[a,list,within],a,list]
Tryby adresowania i formaty rozkazów mikroprocesora
Biblioteka szkolna „W bibliotece znajdziesz wszystko, czego chcesz, starą prawdę, mądrą bajkę, piękny wiersz” (Krystyna Wodnicka)  
Ważone indeksy w badaniu podmiotów ekonomii społecznej Marek Bożykowski
JAK ODNALEŹĆ SIĘ W SYSTEMIE BIBLIOTECZNYM W SIEDMIU PUNKTACH.
Microsoft® Office Word
„Filtry i funkcje bazodanowe w EXCELU”
Karolina Supera Michał Krajewski. Struktura w formie drzewa Funktor jest węzłem Składniki struktur są gałęziami W strukturze możemy zagnieżdżać inne struktury.
Usługa CBB (Centralna Baza Beneficjentów)
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.
Jak założyć konto czytelnika w MOL NET+ Oprac. Henryka Kuchta.
Nawracanie i odcięcie Jakub Czoboda, Jezierski Aleksander, Skierkowski Paweł, Bembenista Kamil, Martynowski Witold.
Piotr Kawałek , Mateusz Śliwowski
Rozdział 5 REKURENCJA.
PROLOG z BLISKA Przygotowali: Konrad Daniszewski, Adam Kuliński, Konrad Poszwiński, Arkadiusz Trzciński.
SZKOLENIE KATALOG BIBLIOTECZNY
Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Liczby pierwsze: szukanie, rozmieszczenie, zastosowanie, ciekawostki. Kinga Cichoń.
Projekt modułu BANK INTERNETOWY Moduł funkcji banku
Patryk Kłys Aleksandra dąbrowska
Wykonali: Jakub Gutkowski, Klaudia Belka, Damian Koncewicz
Prolog – Using Data Structures
Korespondencja elektroniczna
Poszukiwania: ponowna ocena sytuacji
PGO Przeciążanie metod i konstruktorów
Zapis prezentacji:

PROLOG NAWRACANIE I ODCIĘCIE Wykonali: Piotr Wojnarski, Tomasz Kowalski, Rafał Zych, Arkadiusz Wiśniewski, Mateusz Zagórski

Generowanie wielu rozwiązań Najprościej jest wygenerować wiele rozwiązań zapytania na podstawie zbioru faktów wówczas, gdy wiele faktów pasuje do danego zapytania. Jeśli na przykład mamy w bazie następujące fakty ojciec(X,Y) oznaczające, że Y jest ojcem X: ojciec(maria,jerzy). ojciec(jan,jerzy). ojciec(zuzanna,henryk). ojciec(jerzy,edward).

Na zapytanie. - ojciec(X,Y). będzie istniało kilka odpowiedzi Na zapytanie ?- ojciec(X,Y). będzie istniało kilka odpowiedzi. Jeśli będziemy żądali za pomocą średnika kolejnych rozwiązań otrzymamy taki oto wynik: X=maria, Y=jerzy ; X=jan, Y=jerzy ; X=zuzanna, Y=henryk ; X=jerzy, Y=edward

Dzięki nawracaniu znajdowane są wszystkie rozwiązania z bazy danych Dzięki nawracaniu znajdowane są wszystkie rozwiązania z bazy danych. Prolog nie analizuje zwracanych wyników i ich nie zapamiętuje, wobec czego, jeśli zadamy zapytanie: ?- ojciec(_,X). Czyli kto jest ojcem? Otrzymamy: X=jerzy ; X=henryk ; X=edward

Jerzy pojawił się dwukrotnie, gdyż jest ojcem Marii i Jana Jerzy pojawił się dwukrotnie, gdyż jest ojcem Marii i Jana. Jeśli prolog może pokazać to samo w dwojaki sposób, traktuje obie możliwości jako różne rozwiązania. Nawracanie ma miejsce także w sytuacji, kiedy istnieje więcej możliwych rozwiązań głębiej zagnieżdżonych. Przykładowa definicja reguły mówiącej, że jednym z dzieci X jest Y, może wyglądać tak: dziecko(X,Y) :- ojciec(Y,X).

Wobec tego zapytanie. - dziecko(X,Y) Wobec tego zapytanie ?- dziecko(X,Y). da odpowiedzi X=jerzy, Y=maria ; X=jerzy, Y=jan ; X=henryk, Y=zuzanna ; X=edward, Y=jerzy Jako, że ojciec(Y,X) ma cztery rozwiązania, tyleż rozwiązań ma dziecko(X,Y). Co więcej, rozwiązania generowane są w takiej samej kolejności.

Jedyna różnica polega na odwrotnej kolejności argumentów, co wynika z definicji predykatu dziecko. Analogicznie, jeśli zdefiniujemy: ojciec(X) :- ojciec(_,X). to zapytanie ?- ojciec(X). da w wyniku X=jerzy ; X=henryk ; X=edward

Jeśli mieszamy fakty i reguły, możliwe rozwiązanie pojawiają się w takiej kolejności w jakiej prezentowane są dane. Tak więc możemy zapisać, że adam jest osobą, że osobą jest wszystko posiadające matkę, i że ewa jest osobą. Poza tym różni ludzi mogą mieć różne matki: osoba(adam). osoba(X) :- matka(X,_). osoba(ewa). matka(kain,ewa). matka(abel,ewa). matka(jabal,ada). matka(tubilkain,sybilla).

Jeśli teraz zadamy zapytanie:. - osoba(X) Jeśli teraz zadamy zapytanie: ?- osoba(X). otrzymamy odpowiedzi: X=adam ; X=kain ; X=abel ; X=jabal ; X=tubilkain; X=ewa ;

Odcięcie Odcięcie pozwala nakazać interpreterowi Prologa, by nie uwzględniał wcześniejszych możliwości wyboru podczas nawracania. Może być to istotne z dwóch powodów: Program będzie działał szybciej gdyż nie będzie się niepotrzebnie starał spełniać cele, których wynik uzgadniania jest z góry znany, i które wobec tego nie wnoszą do rozwiązania niczego nowego Program zajmuje mniej pamięci komputera, gdyż pamięć jest zużywana oszczędniej.

Czasami użycie odcięcia spowoduje też, że program, który dotąd działał, działać przestanie, albo odwrotnie. Składniowo odcięcie w regule wygląda jak cel z predykatem bez argumentów. Cel ten zawsze jest natychmiast uzgadniany i nie może być ponownie uzgodniony. Jednak ma on też efekty uboczne polegające na zmianie sposobu nawracania. Miejsce tak zaznaczone jest niedostępne w tym sensie, że nie mogą być w nim umieszczane znaczniki.

Przykład praktyczny: Mamy w prologu bazę danych zawierającą dane o posiadanych książkach, osobach je wypożyczających i terminach zwrotu. Jednym z zagadnień, które trzeba uwzględnić jest dostępność poszczególnych usług bibliotecznych dla różnych grup ludzi.

Pewne usługi (podstawowe) powinny być dostępne dla wszystkich Pewne usługi (podstawowe) powinny być dostępne dla wszystkich. Przykładami są korzystanie z katalogu czy czytelni. Inne usługi powinny być dostępne tylko dla wybranych osób czyli wypożyczanie książek, pożyczki międzybiblioteczne.

usluga(Osoba,Usluga) :- przetrzymana_ksiazka(Osoba,Ksiazka), !, usluga_podstawowa(Usluga). usluga(Osoba,Usluga) :- dowolna_usluga(Usluga). usluga_podstawowa(katalog). usluga_podstawowa(czytelnia). usluga_dodatkowa(wypozyczanie). usluga_dodatkowa(pozyczki_miedzybiblioteczne). dowolna_usluga(X) :- usluga_podstawowa(X). dowolna_usluga(X) :- usluga_dodatkowa(X).

Potrzebna jest baza danych klientów i informacji o korzystaniu z biblioteki klient('A. Jones'). klient('W. Metesk'). przetrzymana_ksiazka('C. Watzer', book10089). przetrzymana_ksiazka('A. Jones', book29907). Po co użyto odcięcia i jakie ma ono znaczenie? Zakładamy, że chcemy przejrzeć wszystkich korzystających z biblioteki i sprawdzić jakie usługi są dla nich dostępne. ?- klient(X), usluga(X,Y).

Prolog najpierw odnajduje pierwszą osobę, ‘A. Jones’ Prolog najpierw odnajduje pierwszą osobę, ‘A. Jones’. Załóżmy że ma kilka książek, których termin zwrotu dawno minął. Aby dowiedzieć się, jakie usługi dla tej osoby są dostępne, najpierw znajdowana jest pierwsza klauzula usluga. Wprowadzany jest nowy cel: sprawdzenie, czy osoba ma jakieś przetrzymane książki. Po krótkim przeszukiwaniu faktów przetrzymana_ksiazka znajdowany jest pierwszy fakt dotyczący A. Jonesa. Następny cel to odcięcie. Cel jest uzgadniany, jego efektem jest zatwierdzenie w systemie wszystkich decyzji od chwili wybrania klauzuli usluga.

Efektem odcięcia w regule usluga jest zatwierdzenie w systemie wszystkich wyborów dokonanych od chwili wybrania tej reguły. Ścieżka uzgadniania jest modyfikowana tak, aby pominąć wszystkie znaczniki między celem usluga a odcięciem, włącznie. Jeśli zatem nawracanie spowoduje wycofanie się poza ten punkt, cel usluga natychmiast zawiedzie.

Typowe zastosowania odcięcia Przypadki kiedy chcemy poinformować system, że dla danego celu już została znaleziona odpowiednia reguła. Sytuacje kiedy chcemy poinformować Prologa, że dany cel ma natychmiast zawieść bez sprawdzania rozwiązań alternatywnych Przypadki kiedy należy zaprzestać generowania rozwiązań alternatywnych przez nawracanie.

Dziękujemy za uwagę