Programowanie w logice Prolog 1
|
|
- Aleksandra Brzozowska
- 7 lat temu
- Przeglądów:
Transkrypt
1 Programowanie w logice Prolog 1
2 Prolog - zastosowania Zastosowania: relacyjne bazy danych. przetwarzanie języka naturalnego. logistyka. analiza struktur biochemicznych. wspomaganie projektowania. sztuczna inteligencja.
3 Co to jest Prolog? Prolog to język programowania. Pisanie programu w Prologu nie polega na opisywaniu algorytmu. Prolog jest językiem opisowym i deklaratywnym. Prolog służy do rozwiązywania problemów dotyczących obiektów i relacji między nimi. Chcąc rozwiązać problem opisujemy fakty i relacje dotyczące problemu.
4 Obiekty i relacje Rozważmy stwierdzenie: Paweł ma laptopa. Miedzy dwoma obiektami (Paweł, laptop) istnieje relacja posiadania (ma). Jest to relacja uporządkowana: Paweł ma laptopa a nie odwrotnie. Jeżeli chcemy dowiedzieć się czegoś o relacji możemy zadać pytanie: Czy Paweł ma laptopa?
5 Obiekty i relacje Rozwiązanie problemu polega właśnie na zadawaniu takich pytań. Odpowiedzi na pytania dostarczają nam informacji o obiektach i relacjach, które można wywnioskować z naszego programu. Załóżmy, że mając dane stwierdzenie z poprzedniego slajdu zadajemy pytanie: Jaka będzie odpowiedź? Czy Paweł ma komputer?
6 Obiekty i relacje Jeżeli przyjmiemy, że: Każdy laptop jest komputerem. wówczas odpowiedź jest oczywista (i wywnioskowana z dwóch stwierdzeń!). Powyższe stwierdzenie jest pewną regułą. Zauważmy, że reguła nie dotyczy konkretnego laptopa czy komputera.
7 Obiekty, relacje i język Aby móc opisywać relacje między obiektami musimy zatem dysponować pewnym językiem. Język ten musi umożliwiać wnioskowanie, a zatem musi być oparty na logice.
8 Elementy składowe języka Co to jest język? Z jakich elementów się składa? składnia (syntax) musimy mieć do dyspozycji symbole oraz sposoby łączenia symboli. Musimy określić jakie ciągi symboli są zdaniami naszego języka. Na przykład w języku polskim zdanie: Tomek poszedł do sklepu jest zdaniem poprawnie zbudowanym, w przeciwieństwie do zdania: Sklepu Tomek do poszedł
9 Elementy składowe języka (cd) z jakich jeszcze elementów składa się język? semantyka musimy określić jakie jest znaczenie poprawnie zbudowanych wyrażeń języka (nośnikami jakiej informacji są te wyrażenia). Na przykład w języku polskim wyrażenie: Zamyślony liść jest poprawnie zbudowane. A co ze znaczeniem?
10 Logika pierwszego rzędu (FOL)
11 FOL konsekwencja logiczna Przykład Rozważmy teraz następujące zdanie: "x x + 1 < x Czy formuła ta jest prawdziwa? Jeżeli rozważmy najbardziej oczywistą intepretację wówczas odpowiedź jest negatywna suma dowolnej liczby x i 1 nie jest mniejsza od x! Załóżmy, że predykat < interpretujemy jako różny od. Wówczas powyższa formuła jest prawdziwa w zbiorze liczb rzeczywistych. Oczywiście formuła powyższa nie jest tautologią!
12 FOL konsekwencja logiczna Przykład Tautologią nie jest także zdanie: = 5 W jakiej interpretacji zdanie to nie jest prawdziwe? Przyjmijmy, że D=R oraz + interpretujemy jako mnożenie. Predykat = interpretujemy jako równość oraz stałe 2, 3 i 5 jako odpowiednie liczby. Oczywiście formuła powyższa nie jest spełniona w powyższej interpretacji!
13 FOL konsekwencja logiczna Przykład Rozważmy następujące zdania: oraz następującą interpretację: D - zbiór wierzchołków pewnego grafu G Predykat R interpretujemy jako relację reprezentującą połączenie miedzy wierzchołkami np. R(a,b).
14 FOL konsekwencja logiczna Przykład Zdania: są spełnione przez następujące grafy:
15 FOL konsekwencja logiczna Przykład Grafy powyższe spełniają także: Ale nie każdy graf spełnia to zdanie:
16 FOL konsekwencja logiczna Przykład Rozważmy teraz następujące zdania: Interpretacja predykatów: F kobieta, P rodzic, B urodzony dnia Zdanie powyższe są prawdziwe dla zbioru D zawierającego wszystkie elementy z bazy danych:
17 FOL konsekwencja logiczna Przykład
18 FOL konsekwencja logiczna Przykład Wykorzystująć predykaty F, P i B możemy zdefiniować inne predykaty np.: G(x,y) = z(p(x, z) P(z, y)) M(x) = F(x) SB(x,y) = z(b(x, z) B(y, z)) Taką możliwość będziemy wykorzystywali w Prologu.
19 FOL konsekwencja logiczna Przykład Chcemy odpowiedzieć na pytanie: Czy na niezielonym bloku leży blok zielony?
20 Prolog Programowanie w Prologu składa się z: 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. Zadawania zapytań o obiekty i związki między nimi.
21 Fakty Fakty opisują obiekty i relacje między nimi. W Prologu fakty zapisujemy następująco: Przykłady: predykat(argumenty). mezczyzna(tomek). kobieta(ala). lubi(tomek,ala). wiek(tomek,30). rodzic(maria,renata,tomek).
22 Fakty Nazwy: tomek, ala, alicja, renata dotyczące konkretnych obiektów pisane są z małej litery. Każdy obiekt musi posiadać interpretację. Nazwy relacji i obiektów są całkowicie dowolne*. Poprzedni przykład, ale inaczej zapisany: a(b). c(d). e(b,d). f(b,21). g(h,i,b). interpretacja a mężczyzna b Tomek... Zbiór faktów nazywamy bazą danych.
23 Zapytania Dysponując bazą danych możemy zadawać dotyczące jej zapytania. W Prologu fakty zapisujemy następująco: Przykłady:?-predykat(argumenty).?-mezczyzna(tomek).?-mezczyzna(ala).?-lubi(tomek,ala).?-wiek(tomek,30).?-rodzic(maria,ala,tomek).
24 Zapytania Jeżeli zadajemy zapytanie Prolog przeszukuje bazę danych i szuka faktów pasujących do faktu podanego w zapytaniu. Dwa fakty pasują do siebie jeżeli mają te same predykaty (tak samo pisane) i te same argumenty. Jeżeli poszukiwanie zakończy się sukcesem Prolog odpowiada YES (TRUE), w przeciwnym razie NO (FALSE).
25 Zapytania Przykład Rozważmy bazę danych: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka)...i zapytania:?- lubi(tomek,ryby). true.?- lubi(tomek,frytki). false.?- lubi(ala,ksiazka). true.
26 Zapytania Przykład Rozważmy bazę danych:..i zapytania: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka).?- lubi(ala,ksiazka). true.?- lubi(ala,rower). false.?- kobieta(ala). ERROR: toplevel: Undefined procedure: kobieta/1 (DWIM could not correct goal)
27 Zapytania W przypadku gdy zadamy zapytanie o relację (predykat), której nie ma w bazie danych zachowanie zależy od systemu. W powyższym przykładzie system zwrócił informację o błędzie. W przypadku gdy zadamy zapytanie o obiekt, którego nie ma w bazie danych Prolog zwraca odpowiedź NO (FALSE).
28 Zmienne Potrafimy już tworzyć zapytania dotyczące konkretnych obiektów. Możemy np. zapytać:?- lubi(tomek,ryby). Czy możemy jedna zapytać nie o to czy Tomek lubi konkretną rzecz, ale o to co lubi w ogóle?. Zapytania takie możemy formułować wykorzystując zmienne. Zmienne pisane są z dużej litery. Zmienna może być ukonkretniona lub nieukonkretniona.
29 Zmienne Przykład Rozważmy zapytanie: gdzie X jest zmienną.?- lubi(tomek,x). Prolog przeszukuje wszystkie fakty z bazy danych w celu znalezienia obiektu, który może zastąpić zmienną. A zatem wyszukiwane są wszystkie obiekty, które lubi Tomek.
30 Zmienne Przykład Rozważmy zapytanie: gdzie Kto jest zmienną.?- lubi(kto,ksiazka). Prolog przeszukuje wszystkie fakty z bazy danych w celu znalezienia obiektu, który może zastąpić zmienną. A zatem wyszukiwane są wszystkie obiekty, które lubią książkę.
31 Zmienne Przykład Rozważmy ponownie bazę danych: i zapytanie: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka).?- lubi(tomek,x).
32 Zmienne Przykład Początkowo zmienna X nie jest ukonkretniona. Prolog przeszukuje wszystkie fakty z bazy danych w celu znalezienia obiektu, który może zastąpić zmienną. Precyzyjniej Prolog wyszukuje dowolne fakty z predykatem lubi i pierwszym argumentem tomek, drugi argument może być dowolny. Kiedy fakt taki zostaje znaleziony wówczas X staje się zmienną ukonkretnioną i przyjmuje wartość drugiego argumentu ze znalezionego faktu.
33 Zmienne Przykład Dla bazy danych: Prolog zwraca: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka).?- lubi(tomek,x). X = ryby Prolog przeszukuje bazę danych w takiej kolejności jak ją wpisano.
34 Zmienne Przykład Kiedy Prolog znajduje fakt pasujący do zapytania oznacza to miejsce w bazie danych i czeka na dalsze polecenia. Wciśnięcie klawisza Enter powoduje zakończenie wyszukiwania. Wciśnięcie klawisza ; (spacji) powoduje dalsze przeszukiwanie bazy danych od miejsca oznaczonego wcześniej.
35 Zmienne Przykład Dla bazy danych: Prolog zwraca: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka).?- lubi(tomek,x). X = ryby ; X = ala ; X = ksiazka. Wciskamy klawisz ; Prolog przeszukuje bazę danych w takiej kolejności jak ją wpisano.
36 Zmienne Przykład Rozważmy ponownie bazę danych: i zapytanie: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka).?- lubi(kto,ksiazka).
37 Zmienne Przykład Prolog zwraca: Prolog zwraca: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka).?- lubi(kto,ksiazka). Kto = ala.?- lubi(kto,ksiazka). Kto = ala ; Kto = tomek. Wciskamy klawisz Enter Wciskamy klawisz ;
38 Zmienne Przykład lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka). Dla tej samej bazy danych rozważmy zapytanie z dwiema zmiennymi (Kto i Co): Wynik:?- lubi(kto,co).?- lubi(kto,co). Kto = tomek, Co = ryby ; Kto = tomek, Co = ala ; Kto = ala, Co = ksiazka ; Kto = tomek, Co = ksiazka. Wciskamy klawisz ;
39 Koniunkcje Wiemy już jak budować proste zapytania. Zapytania możemy łączyć i uzyskiwać w ten sposób zapytania bardziej złożone. Możemy zapytać np. o rzeczy, które są lubiane i przez Tomka i przez Alę. Wykorzystujemy w tym celu koniunkcję zapytań oznaczaną przecinkiem. Problem składa się wówczas z dwóch odrębnych celów.
40 Zmienne Przykład lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka). Dla powyższej bazy danych rozważmy zapytanie:?- lubi(tomek,ala),lubi(ala,tomek). Wynik: koniunkcja?- lubi(tomek,ala),lubi(ala,tomek). false. Aby spełniona była koniunkcja muszą być spełnione oba cele (wszystkie cele składowe). W przypadku rozważanej bazy danych cel pierwszy jest prawdziwy, cel drugi nie.
41 Zmienne Przykład lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka). Dla powyższej bazy danych rozważmy zapytanie z jedną zmienną:?- lubi(tomek,co),lubi(ala,co). Prolog najpierw próbuje spełnić pierwszy cel zapytania. Jeżeli odpowiedni fakt zostanie znaleziony w bazie danych wówczas to miejsce w bazie zostanie oznaczone (znacznik 1) i Prolog próbuje spełnić drugi cel. Jeżeli to się uda wówczas drugie miejsce w bazie zostaje oznaczone (znacznik 2) i Prolog zwraca rozwiązanie.
42 Zmienne Przykład a zatem dla zapytania: lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka). otrzymujemy:?- lubi(tomek,co),lubi(ala,co).?- lubi(tomek,co),lubi(ala,co). Co = ksiazka. Jeżeli drugi cel nie zostanie spełniony wówczas Prolog stara się inaczej spełnić cel poprzedni. Prolog zaczyna ponownie przeszukiwać bazę danych od znacznika 1, a nie od początku (mechanizm nawracania).
43 Mechanizm nawracania Rozważmy zapytanie:?- lubi(tomek,x),lubi(ala,x). Kolejne etapy znajdowania rozwiązania: 1. Uzgodniony jest cel pierwszy zmienna X przyjmuje wartość ryby.?- lubi(tomek,x),lubi(ala,x). ryby ryby lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala).
44 Mechanizm nawracania 2. Następuje próba uzgodnienia drugiego celu. 3. Drugi cel zawodzi.?- lubi(tomek,x),lubi(ala,x). ryby ryby lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala). 3. Następuje nawrót poprzednia wartość zmiennej X jest odrzucona. Próbujemy ponownie uzgodnić pierwszy cel.
45 Mechanizm nawracania 4. Ponownie uzgodniony jest cel pierwszy zmienna X przyjmuje wartość ksiazka.?- lubi(tomek,x),lubi(ala,x). ksiazka ksiazka lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala). 5. Ponownie następuje próba uzgodnienia drugiego celu.
46 Mechanizm nawracania 6. Drugi cel jest uzgodniony.?- lubi(tomek,x),lubi(ala,x). ksiazka ksiazka lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala). 7. Prolog informuje o udanym uzgodnieniu koniunkcji i czeka na odpowiedź.
47 Reguły W Prologu reguły pozwalają nam zapisać, że jakiś fakt zależy od grupy innych faktów. Reguły odpowiadają w języku naturalnym sformułowaniom zawierającym słówko jeżeli np.: Używam parasola, jeżeli pada. Iza jeździ autobusem miejskim, jeżeli jest zima. Patryk chodzi do kina, jeżeli nie ma tłoku. Marek kupuje wino, jeżeli jest tańsze od piwa.
48 Reguły Reguły mogą być wykorzystywane do zapisywania definicji np. Inny przykład: X jest ptakiem jeżeli: X jest zwierzęciem i X ma pióra X jest ojcem Y jeżeli: X jest mężczyzną i X jest rodzicem Y
49 Reguły W prologu każda reguła składa się z głowy i treści. fakt1 :- fakt2,fakt3,,fakt n. głowa Przykład treść Treść zawiera koniunkcję celów, które muszą być spełnione, aby głowa była prawdziwa. lubi(ala,x):-lubi(x,ksiazka). lubi(tomek,x):-kobieta(x),lubi(x,ksiazka). siostra(x,y):-kobieta(x),rodzice(x,a,b), rodzice(y,a,b).
50 Reguły Jeżeli z regule występuje zmienna wówczas jeżeli jest ona ukonkretniona jakimś obiektem to jest ukonkretniona w całym swoim zakresie obowiązywania czyli od głowy do kropki na końcu reguły. Na przykład jeżeli w przypadku reguły: lubi(tomek,x):-kobieta(x),lubi(x,ksiazka). zmienna X będzie ukonkretniona przez Ala wówczas Prolog będzie starał się uzgodnić cele: kobieta(ala),lubi(ala,ksiazka).
51 Reguły Przykład lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka). lubi(ala,x):-lubi(x,ksiazka). Zapytanie:?- lubi(tomek,x). Wynik:?- lubi(tomek,x). X = ryby ; X = ala ; X = ksiazka.
52 Reguły Przykład lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,ksiazka). lubi(tomek,ksiazka). lubi(ala,x):-lubi(x,ksiazka). Zapytanie:?- lubi(ala,x). Wynik:?- lubi(ala,x). X = ksiazka ; X = ala ; X = tomek ; false.
53 Reguły Przykład lubi(tomek,ryby). lubi(tomek,ala). lubi(ala,x):-lubi(x,ksiazka). lubi(ala,ksiazka). lubi(tomek,ksiazka). Zapytanie:?- lubi(ala,x). Wynik:?- lubi(ala,x). X = ala ; X = tomek ; X = ksiazka.
54 Reguły Przykład Rozpatrzmy bazę danych: mezczyzna(tomek). mezczyzna(pawel). kobieta(alicja). kobieta(renata). rodzice(renata,alicja,pawel). rodzice(tomek,alicja,pawel). siostra(x,y):- kobieta(x),rodzic(x,a,b),rodzic(y,a,b).
55 Reguły Przykład Interesuje nas zapytanie: siostra(x,y):- kobieta(x),rodzic(x,a,b),rodzic(y,a,b).?- siostra(renata,tomek). Prolog przetwarza je następująco: 1. Zapytanie jest dopasowane do głowy reguły siostra czyli X=renata i Y=tomek (ukonkretnienie). Znacznik odpowiadający zapytaniu ustawiony jest na regule. Prolog próbuje spełnić kolejno trzy cele z treści reguły.
56 Reguły Przykład siostra(x,y):- kobieta(x),rodzic(x,a,b),rodzic(y,a,b). 2. Celem jest kobieta(renata). Cel nie zawodzi jeżeli istnieje odpowiedni fakt w bazie danych. W tej sytuacji Prolog oznacza odpowiednie miejsce w bazie i przechodzi do uzgadniania następnych celów. 3. Prolog szuka faktu rodzic(renata,a,b). Znaleziony zostaje fakt rodzice(renata,alicja,pawel).
57 Reguły Przykład siostra(x,y):- kobieta(x),rodzic(x,a,b),rodzic(y,a,b). Zmienne A i B zostają ukonkretnione: A=alicja, B=pawel. Prolog oznacza w bazie następującą pozycję i przechodzi do uzgadniania następnego celu. 4. Prolog szuka faktu rodzic(tomek,alicja,pawel). i znajduje odpowiedni fakt w bazie. Cel udało się uzgodnić. Prolog odpowiada YES (TRUE).?- siostra(renata,tomek). true.
58 Elementy składowe programu Elementy składniowe programu: stałe nazywające konkretne obiekty i relacje. Stałe dzielą się na dwie grupy: atomy i liczby. Atomy zaczynają się małą literą. Jeżeli musimy użyć wielkiej litery zapisujemy nazwę w apostrofach. Przykłady atomów: Przykłady liczb: mama, brat, adam,?-, :-, Dom 10, 9.99, 6.01e-27, 13456
59 Elementy składowe programu Elementy składniowe programu (cd): zmienne Nazwy stałych rozpoczynają się wielkimi literami.?- lubi(tomek,x).?- lubi(x,y). Często przydaje się tzw. zmienna anonimowa: _?- lubi(tomek,_).?- lubi(_,iza).
60 Elementy składowe programu struktury czyli terminy złożone. Struktury pozwalają traktować grupę powiązanych informacji jako całość. przykład posiada(jan,samochod). posiada(jan,samochod(toyota)). posiada(jan,samochod(toyota,avensis)). posiada(jan,zielony(samochod(toyota,avensis))).
61 Równość i unifikacja W prologu istnieje wbudowany predykat =. Kiedy staramy się spełnić cel:?- X=Y Prolog stara się dopasować X i Y. Próba uczynienia X i Y równymi to tzw. unifikacja.?- a=b. false.?- a=a. true.?- 7=7. true.
62 Równość i unifikacja Sprawdzenie celu X=Y odbywa się według następujących reguł: Jeżeli X jest zmienną nieukonkretnioną, a Y jest stałą bądź strukturą wówczas X i Y są równe i X jest ukonkretniona wartością Y.?- X=5. X = 5.?- mama(ania,marek)=y. Y = mama(ania,marek).
63 Równość i unifikacja Liczby całkowite i atomy:?- mama=mama. true.?- mama=tata. false.?- 1234=1234. true.?- 1234=1230. false.
64 Równość i unifikacja Dwie struktury są równe jeżeli mają taki sam funktor oraz taką samą liczbę składników a odpowiednie składniki są sobie równe.?- brat(tomek,marek)=brat(tomek,marek). true.?- brat(tomek,marek)=brat(tomek,adam). false.?- brat(tomek,marek)=brat(tomek,x). X = marek.?- brat(y,marek)=brat(tomek,x). X = marek, Y = tomek.?- 'lodz'=lodz. true.
65 Arytmetyka Prolog posiada predykaty wbudowane pozwalające porównywać liczby. Argumentami tych predykatów mogą być liczby zapisane jako stałe, zmienne ukonkretnione liczbami całkowitymi lub bardziej złożone wyrażenia algebraiczne.
66 Arytmetyka Mamy do dyspozycji operatory pozwalające porównywać liczby: X=:=Y X i Y są tą samą liczbą X\==Y X i Y są różnymi liczbami X<Y X jest mniejsze od Y X>Y X jest większe od Y X=<Y X jest mniejsze lub równe Y X>=Y X jest większe lub równe Y
67 Arytmetyka Przykład?- 2=:=2. true.?- 2=:=3. false.?- 2=\=3. true.?- 2=<3. true.?- 2>3. false.?- 2<X. ERROR: </2: Arguments are not sufficiently instantiated
68 Arytmetyka Przykład Rozważmy następującą bazę danych: wiek(tomek,21). wiek(pawel,45). starszy(x,y):-wiek(x,a),wiek(y,b),a>b. Wówczas:?- wiek(tomek,x). X = 21.?- starszy(pawel,tomek). true.?- starszy(pawel,x). X = tomek ; false.
69 Arytmetyka Przykład Rozważmy następującą bazę danych: wiek(tomek,21). wiek(pawel,45). starszy(x,y):-wiek(x,a),wiek(y,b),a>=b. Wówczas:?- wiek(tomek,x). X = 21.?- starszy(pawel,tomek). true.?- starszy(pawel,x). X = tomek ; X = pawel
70 Arytmetyka Przykład Rozważmy następującą bazę danych: bok(k,2). pole(y,x):-bok(y,z),x is Z*Z. obwod(y,x):-bok(y,z),x is 4*Z. Wówczas:?- bok(x,y). X=k, Y=2.?- pole(k,x). X=4.?- obwod(k,x). X=8.
71 Arytmetyka To jakich operatorów możemy użyć po prawej stronie operatora is zależy od systemu. Wszystkie implementacje Prologu obsługują: X+Y suma X i Y X-Y różnica X i Y X*Y iloczyn X i Y X/Y iloraz X i Y X//Y całkowity iloraz X przez Y X mod Y reszta z dzielenia X przez Y
72 Listy Lista to uporządkowany ciąg elementów. Elementami listy mogą być dowolne terminy: stałe, zmienne i struktury W Prologu listę zapisujemy następująco: Przykłady [element1,element2,,elementn] [a,b,cd,df,p,w] [ala,ma,kota,[a,x],y] [ ] Lista pusta
73 Listy Każda lista składa się z: głowy (ang. head) pierwszy element listy, ogona (ang. tail) będącego zawsze listą. Przykłady [a,b,cd,df,p,w] - głowa: [a], ogon: [b,cd,df,p,w] [ala,ma,kota,[a,x]] - głowa: [ala], ogon: [ma,kota,[a,x]] [ ] - głowa: [ ], ogon: [ ] Listę o głowie X i ogonie Y zapisujemy: [X Y]
74 Listy Ważne: Głową listy może być dowolny obiekt języka Prolog np. inna lista, zmienna. Ogon listy jest zawsze listą (może być listą pustą []). Lista jest strukturą rekurencyjną - jeżeli ogon jest niepusty, to również on składa się z głowy i z ogona.
75 Listy Rozważmy listę: [element1,element2,,elementn] Reprezentacja wewnętrzna listy odpowiada strukturze drzewiastej: funktor termu tworzącego listę element1 element2 element3 elementn [] lista pusta
76 Listy Przykład?- [a,b,c]=[a,b,c]. true.?- [a,b,c]=[x,b,c]. X = a.?- [a,b,c]=[x,b,y]. X = a, Y = c.?- [a,b,c]=[x Y]. X = a, Y = [b, c].?- [a,b,c]=[x _]. X = a.?- [a,b,c]=[x g,h]. false.
77 Listy i rekurencja Rozważmy listę: [audi,ford,fiat,renault,opel,chrysler,chevrolet] Załóżmy, że chcemy dowiedzieć, się czy jakaś marka samochodu jest elementem powyższej listy? W Prologu zaczynamy sprawdzać od głowy listy. Jeżeli odpowiedź jest negatywna sprawdzamy czy element należy do ogona listy. Ogon listy jest także listą więc znowu zaczynamy od głowy listy będącej ogonem aż dojdziemy do listy pustej.
78 Sprawdzenie przynależności Definicja : X należy do listy L, o ile X jest głową listy L (punkt A) lub X należy do ogona listy L (punkt B). Formalna definicja: (A) nalezy(x,[x _]). (B) nalezy(x,[_ Yogon]):-nalezy(X,Yogon). Przykład:?- nalezy(a,[b,c,d]). false.?- nalezy(a,[a,c,d]). true ; false.
79 Sprawdzenie przynależności nalezy(x,[x _]). nalezy(x,[_ Yogon]):-nalezy(X,Yogon). Wówczas:?- nalezy(a,[b,c,d]). false.?- nalezy(a,[a,c,d]). true ; false.?- nalezy(x,[a,c,d]). X = a.?- nalezy(x,[a,[a,v]]). X = a ; X = [a, v] ; false.
80 Sprawdzenie przynależności cd nalezy(x,[x _]). nalezy(x,[_ Yogon]):-nalezy(X,Yogon). Wówczas:?- nalezy(x,[_ a,b,c]). true ; false.?- nalezy(x,[a _]). X = a ; true ; true ; true ; true ; true ; true zapętlenie
81 Łączenie (konkatenacja) Chcemy zdefiniować predykat: sklej(l1,l2,l3). Lista L3 jest sklejeniem list L1 i L2. Definicja : Jeżeli lista L1 jest pusta, to lista L3 jest taka sama jak lista L2. Jeżeli lista L1 jest niepusta i ma postać [H T1], to lista L3 ma postać [H T2], gdzie T2 jest połączeniem list T1 i L2.
82 Łączenie (konkatenacja) Formalna definicja: sklej([],l,l). sklej([h T1],L2,[H T2]):-sklej(T1,L2,T2). Graficznie: L1 H T1 L2 T2 H T1 L2 [H T2]
83 Łączenie (konkatenacja) Przykład:?- sklej([a],[b,c],[a,b,c]). true.?- sklej([a],[b,c],[a,b,c,d]). false.?- sklej([a],[b,c],x). X = [a, b, c].?- sklej(y,[b,c],x). Y = [], X = [b, c] ; Y = [_G377], X = [_G377, b, c] ; Y = [_G377, _G383], X = [_G377, _G383, b, c] ; Y = [_G377, _G383, _G389], X = [_G377, _G383, _G389, b, c].
84 Zastosowanie konkatenacji Chcemy inaczej zdefiniować predykat: nalezy(x,l). Powyższa klauzula jest prawdziwa jeżeli element X należy do listy L. Definicja : X należy do listy L, o ile L jest konkatenacją listy L1 i listy [X,L2].
85 Zastosowanie konkatenacji Formalna definicja: lub: nalezy(x,l):-sklej(l1,[x L2],L). nalezy(x,l):-sklej(_,[x _],L). Graficznie: L L1 X L2
86 Dodanie elementu Chcemy zdefiniować predykat: dodaj(x,l1,l2). Do listy L1 dodajemy jako głowę element X i otrzymujemy listę L2. Definicja : Głową listy L2 jest element X, ogonem lista L1.
87 Dodanie elementu Formalna definicja: Przykład: dodaj(x,l,[x L])?- dodaj(a,[b,c,dfgf],x). X = [a, b, c, dfgf].?- dodaj(a,[b,c,dfgf],[a,b,c,dfgf]). true.?- dodaj(x,[b,c,dfgf],[a,b,c,dfgf]). X = a.?- dodaj(x,[b,c,dfgf],y). Y = [X, b, c, dfgf].
88 Usunięcie elementu Chcemy zdefiniować predykat: usun(x,l1,l2). Powyższa klauzula jest prawdziwa jeżeli lista L2 powstaje przez usunięcie elementu X z listy L1. Definicja : Jeżeli X jest głową listy L1, to lista L2 jest ogonem listy L1. Jeżeli X należy do ogona listy L1, to usuń stamtąd X.
89 Usunięcie elementu Formalna definicja: usun(x,[x O],O). usun(x,[y L],[Y O]):-usun(X,L,O). Graficznie: L Y X O [Y L] Y X O [Y O]
90 Usunięcie elementu Przykład:?- usun(a,[b,c,dfgf],y). false.?- usun(a,[b,a,dfgf],y). Y = [b, dfgf].?- usun(a,[b,a,d],y). Y = [b, d]?- usun(a,[b,a,d,a],y). Y = [b, d, a] ; Y = [b, a, d] ; false.?- usun(a,x,[b,c]). X = [a, b, c] ; X = [b, a, c] ; X = [b, c, a] ; false.
91 Lista odwrotna Przykład:?- odwr([a,b,c,d],[d,c,a,b]). false.?- odwr([a,b,c,d],[d,c,b,a]). true.?- odwr([a,b,c,d],x). X = [d, c, b, a].
92 Podlisty Chcemy zdefiniować predykat: podlist(l1,l2). Powyższa klauzula jest prawdziwa jeżeli lista zawiera się w liście L2. L1 Definicja : Lista S należy do listy L, o ile lista L składa się z dwóch list L1 i L2, a lista L2 jest połączeniem list S i L3.
93 Podlisty Formalna definicja: podlist(s,l):-sklej(l1,l2,l),sklej(s,l3,l2). Graficznie: L L1 S L3 L2
94 Podlisty Przykład:?- podlist([a],[a,b]). true.?- podlist([a,c],[a,b,c,d]). false.?- podlist([a,b,c],[a,b,c,d]). true.?- podlist([c,d],[a,b,c,d]). true.?- podlist(x,[a,b]). X = [] ; X = [a] ; X = [a, b] ; X = [] ; X = [b] ; X = [] ; false.
95 Permutacja listy Chcemy zdefiniować predykat: permut(l1,l2). Powyższa klauzula jest prawdziwa, jeśli lista L2 jest permutacją listy L1. Definicja : Jeżeli pierwsza lista (L1) jest pusta, to druga lista (L2) również jest pusta. Najpierw usuwamy element X, na pozostałej reszcie L1 dokonujemy permutacji i wstawiamy element X na początek poddanej już permutacji reszcie listy (czyli P).
96 Permutacja listy Formalna definicja: permut([],[]). permut(l,[x P]):-usun(X,L,L1),permut(L1,P). Graficznie: L X L1 permutacja P
97 Permutacja listy Przykład:?- permut([a,b,c],[a,c,b]). true.?- permut([a,b,c],[a,c,d]). false.?- permut([a,b,c],x). X = [a, b, c] ; X = [a, c, b] ; X = [b, a, c] ; X = [b, c, a] ; X = [c, a, b] ; X = [c, b, a] ; false.
98 Mechanizm nawracania Rozważmy zapytanie:?- lubi(tomek,x),lubi(ala,x) Kolejne etapy znajdowania rozwiązania: 1. Uzgodniony jest cel pierwszy zmienna X przyjmuje wartość ryby.?- lubi(tomek,x),lubi(ala,x). ryby ryby lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala).
99 Mechanizm nawracania 2. Następuje próba uzgodnienia drugiego celu. 3. Drugi cel zawodzi.?- lubi(tomek,x),lubi(ala,x). ryby ryby lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala). 3. Następuje nawrót poprzednia wartość zmiennej X jest odrzucona. Próbujemy ponownie uzgodnić pierwszy cel.
100 Mechanizm nawracania 4. Ponownie uzgodniony jest cel pierwszy zmienna X przyjmuje wartość ksiazka.?- lubi(tomek,x),lubi(ala,x). ksiazka ksiazka lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala). 5. Ponownie następuje próba uzgodnienia drugiego celu.
101 Mechanizm nawracania 6. Drugi cel jest uzgodniony.?- lubi(tomek,x),lubi(ala,x). ksiazka ksiazka lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(tomek,ala). 7. Prolog informuje o udanym uzgodnieniu koniunkcji i czeka na naszą reakcję.
102 Mechanizm nawracania Przykład:?- lubi(tomek,x),lubi(ala,x). X = ksiazka; false...ale przypadku bazy: otrzymamy: lubi(tomek,ryby). lubi(tomek,ksiazka). lubi(ala,ksiazka). lubi(ala,ryby). lubi(tomek,ala).?- lubi(tomek,x),lubi(ala,x). X = ryby ; X = ksiazka ; false. Ponowne uzgodnienie celu nie powiodło się!
103 Mechanizm nawracania Rozważmy następującą definicję funkcji: Wykres:
104 Mechanizm nawracania Definicja funkcji w Prologu: Przykład: f(x,2):-x=<2. f(x,1):-2<x,x=<4. f(x,0):-4<x.?- f(5,x). X = 0.?- f(3,x). X = 1 ; false.?- f(-1,x). X = 2 ; false. Ponowne uzgodnienie celu nie powiodło się!
105 Mechanizm nawracania Przeanalizujmy szczegółowo powyższy przykład:?-?- f(5,x). 2 Ale 5>2!!! f(x,2):-x=<2. f(x,1):-2<x,x=<4. f(x,0):-4<x. Cel nieosiągnięty!!!?-?- f(5,x). 1 Ale 5>4!!! f(x,2):-x=<2. f(x,1):-2<x,x=<4. f(x,0):-4<x. Cel nieosiągnięty!!!
106 Mechanizm nawracania Przeanalizujmy szczególnie powyższy przykład:?-?- f(5,x). W efekcie otrzymujemy: 0 OK 5>4!!! f(x,2):-x=<2. f(x,1):-2<x,x=<4. f(x,0):-4<x. Cel osiągnięty!!!?- f(5,x). X = 0. a ponieważ to ostatnia reguła nic więcej nie otrzymujemy!
107 Mechanizm nawracania A teraz inne zapytanie:?-?- f(3,x). 2 Ale 3>2!!! f(x,2):-x=<2. f(x,1):-2<x,x=<4. f(x,0):-4<x. Cel nieosiągnięty!!!?-?- f(3,x). 1 OK 2<3<=4 f(x,2):-x=<2. f(x,1):-2<x,x=<4. f(x,0):-4<x. Cel osiągnięty!!!
108 Mechanizm nawracania W efekcie otrzymujemy:?- f(3,x). X = 1; Ale nie doszliśmy jeszcze do ostatniej reguły w bazie. Wybieramy zatem ; czyli próbujemy ponownie osiągnąć cel.?-?- f(3,x). 1 Ale 3<4 f(x,2):-x=<2. f(x,1):-2<x,x=<4. f(x,0):-4<x. Cel nieosiągnięty!!!
109 Mechanizm nawracania To była ostatnia reguła w bazie zatem otrzymujemy:?- f(3,x). X = 1 ; false. Cel osiągnięty!!! Nieudana próba ponownego osiągnięcia celu!!! Z podobną sytuacją mamy do czynienia w przypadku zapytania:?- f(-1,x). X = 2 ; false. Cel osiągnięty!!! Nieudana próba ponownego osiągnięcia celu!!!
110 Mechanizm nawracania Zauważmy, że: W rozważanej definicji funkcji mamy do czynienia z trzema rozłącznymi warunkami (z trzema przedziałami). Jeżeli spełniony jest któryś z warunków wówczas nie ma potrzeby sprawdzać warunków pozostałych. Mechanizm nawracania prowadzi do sytuacji w której po osiągnięciu celu rozważane są przypadki, które nie mogą być spełnione. Rozwiązaniem jest tzw. mechanizm cięć.
111 Koniec
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.
Prolog Prolog Programowanie w Prologu składa się z: 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. Zadawania zapytao o
Programowanie w logice Prolog 2
Programowanie w logice Prolog 2 Listy Lista to uporządkowany ciąg elementów. Elementami listy mogą być dowolne terminy: stałe, zmienne i struktury W Prologu listę zapisujemy następująco: Przykłady [element1,element2,,elementn]
Programowanie w logice
Programowanie w logice PROLOG cz.1 PROLOG język wysokiego poziomu Powstał w 1972 na Uniwersytecie w Marsylii (Francja) w zespole A.Colmerauer a i F.Roussel a PROgrammation en LOGique, PROgramming in LOGic,
Programowanie w Logice
Programowanie w Logice Działanie Prologu Przemysław Kobylański na podstawie [CM2003] Składnia Programy Prologu składają się z termów. Term to stała, zmienna lub struktura (term złożony). Term zapisuje
PODSTAWY SZTUCZNEJ INTELIGENCJI
Katedra Informatyki Stosowanej Politechnika Łódzka PODSTAWY SZTUCZNEJ INTELIGENCJI Laboratorium PROGRAMOWANIE SYSTEMÓW EKSPERTOWYCH Opracowanie: Dr hab. inŝ. Jacek Kucharski Dr inŝ. Piotr Urbanek Cel ćwiczenia
Wprowadzenie do Prologa
Wprowadzenie do Prologa Rozdział 1 Tutorial Introduction Maciej Gapiński Dominika Wałęga Spis treści 1. Podstawowe informacje 2. Obiekty i relacje 3. Reguły 4. Fakty 5. Zapytania 6. Zmienne i stałe Podstawowe
Programowanie deklaratywne
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
Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek
Prolog (Pro-Logic) Programowanie w Logice Dr inż. Piotr Urbanek Do czego służy ProLog? Używany w wielu systemach informatycznych związanych z: logiką matematyczną (automatyczne dowodzenie twierdzeń); przetwarzaniem
Internet Semantyczny i Logika I
Internet Semantyczny i Logika I Warstwy Internetu Semantycznego Dowód Zaufanie Logika OWL, Ontologie Podpis cyfrowy RDF, schematy RDF XML, schematy XML przestrzenie nazw URI Po co nam logika? Potrzebujemy
Programowanie deklaratywne
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
PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd.
PROLOG 1. Informacje wstępne Podczas zajęć korzystamy z darmowej wersji interpretera Prologu SWI-Prolog dostępnego ze strony: www.swi-prolog.org 2. Literatura i materiały Prolog. Programowanie, W.F. Clocksin,
Projekt 4: Programowanie w logice
Języki Programowania Projekt 4: Programowanie w logice Środowisko ECL i PS e W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem http://eclipseclp.org/. Po zainstalowaniu
Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.
Paradygmaty Programowania Język Prolog Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań. Wstęp Prolog (od francuskiego
Programowanie deklaratywne
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
Programowanie w logice
Wydział Matematyki UŁ 14 marca 2007 Plan prezentacji 1 Składnia Termy Stałe Zmienne Struktury 2 Własny operator Przeciążanie operatorów 3 Arytmetyczne i logiczne predykaty systemowe 4 Do zapamiętania Termy
Programowanie deklaratywne
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
Programowanie deklaratywne
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
Laboratorium przedmiotu Paradygmaty Programowania
Laboratorium przedmiotu Paradygmaty Programowania Laboratorium 9 Prolog podstawy 1. Podstawy Prologu Programowanie w Prologu polega na deklarowaniu: Faktów dotyczących pewnych obiektów z analizowanego
Programowanie w logice Prolog 3
Programowanie w logice Prolog 3 Predykaty wbudowane Predykaty wbudowane to predykaty, których definicje są z góry znane systemowi a zatem nie ma konieczności ich definiowania. Predykaty wbudowane mogą
Programowanie w Logice Struktury danych (Lista 2)
Programowanie w Logice Struktury danych (Lista 2) Przemysław Kobylański Wstęp Struktury danych wyraża się w Prologu w postaci termów, tj. symbolicznych wyrażeń. Dotychczas poznaliśmy proste termy takie
Prezentacja do pobranie:
Prezentacja do pobranie: www.barkaf.cba.pl/prezentacja.rar 1 Prolog programowanie ROZDZIAŁ 1: WPROWADZENIE ROZDZIAŁ 2: PROLOG Z BLISKA NA PODSTAWIE: PROLOG. PROGRAMOWANIE- W. F. CLOCKSIN, C. S. MELLISH
Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu. 1 Logika Klasyczna obejmuje dwie teorie:
PROLOG INNE PRZYKŁADY MACIEJ KELM
PROLOG INNE PRZYKŁADY MACIEJ KELM PREDYKAT RANDOM Funkcja random zwraca losową liczbę całkowitą w przedziale od 1 do X. Gdzie X jest parametrem funkcji random. Przed użyciem random należy zainicjować tak
Programowanie w Logice
Programowanie w Logice Przeszukiwanie rozwiązań Przemysław Kobylański Generowanie wszystkich rozwiązań Prolog nie tylko potrafi sprawdzić czy dana spełnia warunek ale również potrafi wygenerować wszystkie
Podstawy języka PROLOG
Dariusz Banasiak Katedra Informatyki Technicznej Wydział Elektroniki PROLOG akronim od PROgramming in LOGic Prolog został stworzony w 1971 przez Alaina Colmeraurera i Philipa Roussela. Podstawy teoretyczne
Języki programowania deklaratywnego
Katedra Inżynierii Wiedzy laborki 14 Języki deklaratywne Główne różnice między paradygmatem deklaratywnym a imperatywnym Omów główne cechy paradygmatu programowania w logice na przykładzie Prologa Główne
Dariusz Banasiak. Instytut Informatyki, Automatyki i Robotyki. Politechniki Wrocławskiej
Dariusz Banasiak Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej PROLOG akronim od PROgramming in LOGic Prolog został stworzony w 1971 przez Alaina Colmeraurera i Philipa Roussela.
Programowanie w Logice Przykłady programów. Przemysław Kobylański
Programowanie w Logice Przykłady programów Przemysław Kobylański Język Imperator 1 jest prostym językiem imperatywnym. Jego składnię opisuje poniższa gramatyka BNF: PROGRAM ::= PROGRAM ::= INSTRUKCJA ;
LOGIKA I TEORIA ZBIORÓW
LOGIKA I TEORIA ZBIORÓW Logika Logika jest nauką zajmującą się zdaniami Z punktu widzenia logiki istotne jest, czy dane zdanie jest prawdziwe, czy nie Nie jest natomiast istotne o czym to zdanie mówi Definicja
0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.
Wykłady z Analizy rzeczywistej i zespolonej w Matematyce stosowanej Wykład ELEMENTY LOGIKI ALGEBRA BOOLE A Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek
Prolog przetwarzanie list. Maciej Krzywonos Łukasz Dajcz
Prolog przetwarzanie list Maciej Krzywonos Łukasz Dajcz Prolog reprezentacja list Lista jest dowolnym ciągiem obiektów zapisywanych w postaci: [element_1,element_2,...,element_n] Prolog - reprezentacja
Języki programowania deklaratywnego
Katedra Inżynierii Wiedzy laborki 1 e-mail: przemyslaw.juszczuk@ue.katowice.pl Konsultacje: na stronie katedry + na stronie domowej Pokój 202c budynek A pjuszczuk.pl Języki deklaratywne - laborki Wprowadzenie
Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279
Wykład 8 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279 sformułowanie problemu przegląd drzewa poszukiwań przykłady problemów wybrane narzędzia programistyczne J. Cichoń, P. Kobylański
Programowanie w logice Wykład z baz danych dla
Programowanie w logice Wykład z baz danych dla studentów matematyki 18 maja 2015 Programowanie w logice Programowanie w logice to podejście do programowania, w którym na program patrzymy nie jak na opis
MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI
MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI Program wykładów: dr inż. Barbara GŁUT Wstęp do logiki klasycznej: rachunek zdań, rachunek predykatów. Elementy semantyki. Podstawy teorii mnogości
Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0
ĆWICZENIE 1 Klasyczny Rachunek Zdań (KRZ): zdania w sensie logicznym, wartości logiczne, spójniki logiczne, zmienne zdaniowe, tabele prawdziwościowe dla spójników logicznych, formuły, wartościowanie zbioru
RBD Relacyjne Bazy Danych
Wykład 7 RBD Relacyjne Bazy Danych Bazy Danych - A. Dawid 2011 1 Selekcja σ C (R) W wyniku zastosowania operatora selekcji do relacji R powstaje nowa relacja T do której należy pewien podzbiór krotek relacji
Technologie i systemy oparte na logice rozmytej
Zagadnienia I Technologie i systemy oparte na logice rozmytej Mają zastosowania w sytuacjach kiedy nie posiadamy wystarczającej wiedzy o modelu matematycznym rządzącym danym zjawiskiem oraz tam gdzie zbudowanie
Dana jest baza: kobieta(katarzyna). kobieta(anna). kobieta(maria). kobieta(marianna). kobieta(marta). Zdefiniujemy predykat kobiety/0 następująco:
STEROWANIE PROCESEM WNIOSKOWANIA. Predykat true/0 fail/0 cut/0 lub! not( W) lub \+W repeat/0 Objaśnienie zawsze spełniony, deterministyczny zawsze zawodzi, deterministyczny odcięcie; zawsze spełniony spełniony,
Paradygmaty programowania
Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów
Semantyka rachunku predykatów
Relacje Interpretacja Wartość Spełnialność Logika obliczeniowa Instytut Informatyki Relacje Interpretacja Wartość Plan Plan Relacje O co chodzi? Znaczenie w logice Relacje 3 Interpretacja i wartościowanie
2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,
2 Arytmetyka Niech b = d r d r 1 d 1 d 0 będzie zapisem liczby w systemie dwójkowym Zamiana zapisu liczby b na system dziesiętny odbywa się poprzez wykonanie dodawania d r 2 r + d r 1 2 r 1 d 1 2 1 + d
Przestrzenne bazy danych Podstawy języka SQL
Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured
Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl
System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy
Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie
Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których
Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41
Wykład 2 Informatyka Stosowana 8 października 2018, M. A-B Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41 Elementy logiki matematycznej Informatyka Stosowana Wykład 2 8 października
Definicje. Algorytm to:
Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi
Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.
Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna
Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański
Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja Przemysław Kobylański Część I Wprowadzenie 1 Reguły Przypomnijmy z poprzedniej listy zadań fakty
Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje
Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje Opracował: Zbigniew Rudnicki Powtórka z poprzedniego wykładu 2 1 Dokument, regiony, klawisze: Dokument Mathcada realizuje
LXI Olimpiada Matematyczna
1 Zadanie 1. LXI Olimpiada Matematyczna Rozwiązania zadań konkursowych zawodów stopnia trzeciego 21 kwietnia 2010 r. (pierwszy dzień zawodów) Dana jest liczba całkowita n > 1 i zbiór S {0,1,2,...,n 1}
Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych
Arytmetyka liczb całkowitych Wykład 1 Na początku zajmować się będziemy zbiorem liczb całkowitych Z = {0, ±1, ±2,...}. Zakładamy, że czytelnik zna relację
Funkcja kwadratowa. f(x) = ax 2 + bx + c,
Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax 2 + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax 2, a R \
Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świerblewski, Konrad Kosmatka)
Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świerblewski, Konrad Kosmatka) Rozdział 2 Constructing Prolog Programs z książki Prolog Programming in Depth autorstwa Michael A. Covington, Donald Nute,
FUNKCJE. (odwzorowania) Funkcje 1
FUNKCJE (odwzorowania) Funkcje 1 W matematyce funkcja ze zbioru X w zbiór Y nazywa się odwzorowanie (przyporządkowanie), które każdemu elementowi zbioru X przypisuje jeden, i tylko jeden element zbioru
Elementy logiki matematycznej
Elementy logiki matematycznej Przedmiotem logiki matematycznej jest badanie tzw. wyrażeń logicznych oraz metod rozumowania i sposobów dowodzenia używanych w matematyce, a także w innych dziedzinach, w
WYRAŻENIA ALGEBRAICZNE
WYRAŻENIA ALGEBRAICZNE Wyrażeniem algebraicznym nazywamy wyrażenie zbudowane z liczb, liter, nawiasów oraz znaków działań, na przykład: Symbole literowe występujące w wyrażeniu algebraicznym nazywamy zmiennymi.
Metoda Tablic Semantycznych
Procedura Plan Reguły Algorytm Logika obliczeniowa Instytut Informatyki Plan Procedura Reguły 1 Procedura decyzyjna Logiczna równoważność formuł Logiczna konsekwencja Procedura decyzyjna 2 Reguły α, β,
Algorytmy i struktury danych. Wykład 4
Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych
5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów.
5. Algebra działania, grupy, grupy permutacji, pierścienie, ciała, pierścień wielomianów. Algebra jest jednym z najstarszych działów matematyki dotyczącym początkowo tworzenia metod rozwiązywania równań
Przykładowe zadania z teorii liczb
Przykładowe zadania z teorii liczb I. Podzielność liczb całkowitych. Liczba a = 346 przy dzieleniu przez pewną liczbę dodatnią całkowitą b daje iloraz k = 85 i resztę r. Znaleźć dzielnik b oraz resztę
W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.
1. Podstawy matematyki 1.1. Geometria analityczna W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora. Skalarem w fizyce nazywamy
Jest to zasadniczo powtórka ze szkoły średniej, być może z niektórymi rzeczami nowymi.
Logika Jest to zasadniczo powtórka ze szkoły średniej, być może z niektórymi rzeczami nowymi. Często słowu "logika" nadaje się szersze znaczenie niż temu o czym będzie poniżej: np. mówi się "logiczne myślenie"
SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL
Wprowadzenie do SQL SQL - Structured Query Language -strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania i sterowania danymi w relacyjnych bazach danych Powstał w firmie
Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2
Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń
JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.
IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript
Podstawy Sztucznej Inteligencji (PSZT)
Podstawy Sztucznej Inteligencji (PSZT) Paweł Wawrzyński Wnioskowanie logiczne i systemy eksperckie Systemy posługujące się logiką predykatów: część 3/3 Dzisiaj Uogólnienie Poprawność i pełność wnioskowania
Zbiory. Specjalnym zbiorem jest zbiór pusty nie zawierajacy żadnych elementów. Oznaczamy go symbolem.
Zbiory Pojęcie zbioru jest w matematyce pojęciem pierwotnym, którego nie definiujemy. Gdy a jest elementem należacym do zbioru A to piszemy a A. Stosujemy również oznaczenie a / A jeżeli (a A). Będziemy
Prolog. Programowanie
IDZ DO PRZYK ADOWY ROZDZIA SPIS TRE CI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Prolog. Programowanie Autorzy: W. F. Clocksin, C. S. Mellish T³umaczenie: Tomasz mijewski ISBN: 83-7197-918-5
Funkcja kwadratowa. f(x) = ax 2 + bx + c = a
Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax, a R \ {0}.
Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka
5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH
5. OKREŚLANIE WARTOŚCI LOGICZNEJ ZDAŃ ZŁOŻONYCH Temat, którym mamy się tu zająć, jest nudny i żmudny będziemy się uczyć techniki obliczania wartości logicznej zdań dowolnie złożonych. Po co? możecie zapytać.
Języki programowania Prolog
1. Środowisko ECL i PS e Języki programowania Prolog zadanie projektowe nr. 3 (2016/17) T. Goluch W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem: http://eclipseclp.org/.
Adam Meissner.
Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis SZTUCZNA INTELIGENCJA Podstawy logiki pierwszego rzędu
Wykład 4. Określimy teraz pewną ważną klasę pierścieni.
Wykład 4 Określimy teraz pewną ważną klasę pierścieni. Twierdzenie 1 Niech m, n Z. Jeśli n > 0 to istnieje dokładnie jedna para licz q, r, że: m = qn + r, 0 r < n. Liczbę r nazywamy resztą z dzielenia
Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017
Logika Stosowana Wykład 1 - Logika zdaniowa Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika Stosowana 2017 1 / 30 Plan wykładu 1 Język
Definicje wyższego poziomu
Definicje wyższego poziomu Interpreter Scheme-a nie będzie narzekad w przypadku wystąpienia niezdefionowanej zmiennej w ciele wyrażenia lambda dopóki nie będzie zastosowana Przykład braku informacji o
Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);
Ciała i wielomiany 1 Ciała i wielomiany 1 Definicja ciała Niech F będzie zbiorem, i niech + ( dodawanie ) oraz ( mnożenie ) będą działaniami na zbiorze F. Definicja. Zbiór F wraz z działaniami + i nazywamy
Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 6. Reguły inferencyjne systemu aksjomatycznego Klasycznego Rachunku Zdań System aksjomatyczny logiki Budując logikę
Prolog struktury danych oraz obliczenia. 1. Arytmetyka?- Y is 2+2. Y = 4. ?- 5 is 3+3. false. ?- Z is (3.9 / 2.1). Z =
Prolog struktury danych oraz obliczenia 1. Arytmetyka?- Y is 2+2. Y = 4?- 5 is 3+3. false.?- Z is 4.5 + (3.9 / 2.1). Z = 6.357142857142857. Wbudowany predykat is bierze wyrażenie po prawej, oblicza je
Elementy logiki i teorii mnogości
Elementy logiki i teorii mnogości Zdanie logiczne Zdanie logiczne jest to zdanie oznajmujące, któremu można przypisać określoną wartość logiczną. W logice klasycznej zdania dzielimy na: prawdziwe (przypisujemy
opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)
Zapytania SQL. Polecenie SELECT jest używane do pobierania danych z bazy danych (z tabel lub widoków). Struktura polecenia SELECT SELECT FROM WHERE opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje
1 Działania na zbiorach
M. Beśka, Wstęp do teorii miary, rozdz. 1 1 1 Działania na zbiorach W rozdziale tym przypomnimy podstawowe działania na zbiorach koncentrując się na własnościach tych działań, które będą przydatne w dalszej
REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał
REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.
FUNKCJA LINIOWA - WYKRES
FUNKCJA LINIOWA - WYKRES Wzór funkcji liniowej (Postać kierunkowa) Funkcja liniowa jest podstawowym typem funkcji. Jest to funkcja o wzorze: y = ax + b a i b to współczynniki funkcji, które mają wartości
Poprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu
Witold Marciszewski: Wykład Logiki, 17 luty 2005, Collegium Civitas, Warszawa Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu 1. Poniższe wyjaśnienie (akapit
Wykład 0 Informacje Podstawowe
Paradygmaty Programowania Wykład 0 Informacje Podstawowe Nieliniowej, WMiI UŁ 1 Informacje Ogólne (22 luty 2013) Wykłady: piątek, 10.00-12.00, D103 Wykłady: 1 wprowadzający +10 wykładów głównych Zaliczenie
Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów
Obóz Naukowy Olimpiady Matematycznej Gimnazjalistów Liga zadaniowa 202/203 Seria VI (grudzień 202) rozwiązania zadań 26. Udowodnij, że istnieje 0 00 kolejnych liczb całkowitych dodatnich nie większych
Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski
Systemy ekspertowe i ich zastosowania Katarzyna Karp Marek Grabowski Plan prezentacji Wstęp Własności systemów ekspertowych Rodzaje baz wiedzy Metody reprezentacji wiedzy Metody wnioskowania Języki do
Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++
Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu
Programowanie w logice
Programowanie w logice PROLOG cz.3 Predykat sprawdzający, czy podana lista stanowi początek innej listy: poczatek([],[_ _]). poczatek([h1 T1], [H2 T2]) :- H1 = H2, poczatek(t1,t2). ------------------------------------------------------------------------
12.Rozwiązywanie równań i nierówności liniowych oraz ich układów.
matematyka /.Rozwiązywanie równań i nierówności liniowych oraz ich układów. I. Przypomnij sobie:. Co to jest równanie /nierówność? Rodzaje nierówności. Ogólnie: Równaniem nazywamy dwa wyrażenia algebraiczne
Reguły gry zaliczenie przedmiotu wymaga zdania dwóch testów, z logiki (za ok. 5 tygodni) i z filozofii (w sesji); warunkiem koniecznym podejścia do
Reguły gry zaliczenie przedmiotu wymaga zdania dwóch testów, z logiki (za ok. 5 tygodni) i z filozofii (w sesji); warunkiem koniecznym podejścia do testu z filozofii jest zaliczenie testu z logiki i zaliczenie
MATLAB tworzenie własnych funkcji
MATLAB tworzenie własnych funkcji Definiowanie funkcji anonimowych Własne definicje funkcji możemy tworzyć bezpośrednio w Command Window, są to tzw. funkcje anonimowe; dla funkcji jednej zmiennej składnia
Algorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1
W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1 W tym tekście zobaczymy rozwiązanie zadania 41 z Informatora o egzaminie maturalnym z matematyki od roku szkolnego 014/015 oraz rozwiązania
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Internet Semantyczny. Logika opisowa
Internet Semantyczny Logika opisowa Ontologie Definicja Grubera: Ontologia to formalna specyfikacja konceptualizacji pewnego obszaru wiedzy czy opisu elementów rzeczywistości. W Internecie Semantycznym