Programowanie w logice Prolog 2
|
|
- Mikołaj Kalinowski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Programowanie w logice Prolog 2
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] [a,b,cd,df,p,w] [ala,ma,kota,[a,x],y] [ ] Lista pusta
3 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]
4 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.
5 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
6 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].
7 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.
8 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]).?- nalezy(a,[a,c,d]). true ;
9 Sprawdzenie przynależności nalezy(x,[x _]). nalezy(x,[_ Yogon]):-nalezy(X,Yogon). Wówczas:?- nalezy(a,[b,c,d]).?- nalezy(a,[a,c,d]). true ;?- nalezy(x,[a,c,d]). X = a.?- nalezy(x,[a,[a,v]]). X = a ; X = [a, v] ;
10 Sprawdzenie przynależności cd nalezy(x,[x _]). nalezy(x,[_ Yogon]):-nalezy(X,Yogon). Wówczas:?- nalezy(x,[_ a,b,c]). true ;?- nalezy(x,[a _]). X = a ; true ; true ; true ; true ; true ; true zapętlenie
11 Łą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.
12 Łą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]
13 Łączenie (konkatenacja) Przykład:?- sklej([a],[b,c],[a,b,c]). true.?- sklej([a],[b,c],[a,b,c,d]).?- 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].
14 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].
15 Zastosowanie konkatenacji Formalna definicja: lub: nalezy(x,l):-sklej(l1,[x L2],L). nalezy(x,l):-sklej(_,[x _],L). Graficznie: L L1 X L2
16 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.
17 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].
18 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.
19 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]
20 Usunięcie elementu Przykład:?- usun(a,[b,c,dfgf],y).?- 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] ;?- usun(a,x,[b,c]). X = [a, b, c] ; X = [b, a, c] ; X = [b, c, a] ;
21 Lista odwrotna Przykład:?- odwr([a,b,c,d],[d,c,a,b]).?- odwr([a,b,c,d],[d,c,b,a]). true.?- odwr([a,b,c,d],x). X = [d, c, b, a].
22 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.
23 Podlisty Formalna definicja: podlist(s,l):-sklej(l1,l2,l),sklej(s,l3,l2). Graficznie: L L1 S L3 L2
24 Podlisty Przykład:?- podlist([a],[a,b]). true.?- podlist([a,c],[a,b,c,d]).?- 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 = [] ;
25 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).
26 Permutacja listy Formalna definicja: permut([],[]). permut(l,[x P]):-usun(X,L,L1),permut(L1,P). Graficznie: L X L1 permutacja P
27 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] ;
28 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).
29 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.
30 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.
31 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ę.
32 Mechanizm nawracania Przykład:?- lubi(tomek,x),lubi(ala,x). X = ksiazka;..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 ; Ponowne uzgodnienie celu nie powiodło się!
33 Mechanizm nawracania Rozważmy następującą definicję funkcji: Wykres:
34 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 ;?- f(-1,x). X = 2 ; Ponowne uzgodnienie celu nie powiodło się!
35 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!!!
36 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!
37 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!!!
38 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!!!
39 Mechanizm nawracania To była ostatnia reguła w bazie zatem otrzymujemy:?- f(3,x). X = 1 ; 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 ; Cel osiągnięty!!! Nieudana próba ponownego osiągnięcia celu!!!
40 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ęć.
41 Mechanizm odcięć Odcięcie symbolizuje cel, który jest natychmiast spełniony, gdy tylko zostanie osiągnięty znak odcięcia czyli!. Wszystkie cele, które zostały do tej chwili spełnione nie będą analizowane powtórnie w celu sprawdzenia alternatywnych sposobów ich spełnienia).
42 Mechanizm odcięć Alternatywna definicja rozważanej funkcji: f(x,2):-x=<2,!. f(x,1):-2<x,x=<4,!. f(x,0):-4<x. Przykład:?- f(5,x). X = 0.?- f(3,x). X = 1.?- f(-1,x). X = 2.?- f(5,x). X = 0.?- f(3,x). X = 1 ;?- f(-1,x). X = 2 ; (bez cięć)
43 Mechanizm odcięć Rozważmy ponownie 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, ODCIĘCIE!!!
44 Mechanizm odcięć Rozpatrzmy definicję liczby maksymalnej spośród dwóch liczb: max(x,y,x):-x>=y,!. max(x,y,y). Przykład:?- max(2,5,y). Y = 5.?- max(12,5,y). Y = 12.?- max(5,5,y). Y = 5.?- max(12,5,y). Y = 12 ;?- max(2,5,y). Y = 5.?- max(5,5,y). Y = 5 ; (bez cięć)
45 Mechanizm odcięć Rozpatrzmy definicję przynależności do listy z wykorzystaniem ocięcia: nalezy(x,[x _]):-!. nalezy(x,[_ Yogon]):-nalezy(X,Yogon). Przykład:?- nalezy(a,[b,c,d]).?- nalezy(a,[c,a,d]). true.?- nalezy(a,[c,a,a]). true.?- nalezy(a,[b,c,d]).?- nalezy(a,[c,a,d]). true ; (bez cięć)?- nalezy(a,[c,a,a]). true ; true ;
46 Dodanie elementu do listy bez powtórzeń Chcemy zdefiniować predykat: dodaj(x,l1,l2). Do listy L1 dodajemy jako głowę element X (jeżeli elementu tego nie ma na liście L1) i otrzymujemy listę L2. Definicja : Jeżeli X należy do listy L, to L1=L w przeciwnym przypadku L1 jest równe L powiększonemu o X.
47 Dodanie elementu do listy bez powtórzeń Formalna definicja: dodaj(x,l,l):- nalezy(x,l),!. dodaj(x,l,[x L]). Przykład:?- dodaj(a,[c,a,a],x). X = [c, a, a].?- dodaj(a,[b,c,d],x). X = [a, b, c, d].?- dodaj(a,[b,c,a,d],x). X = [b, c, a, d]. (bez cięć)?- dodaj(a,[c,a,a],x). X = [a, c, a, a].?- dodaj(a,[b,c,d],x). X = [a, b, c, d].?- dodaj(a,[b,c,a,d],x). X = [a, b, c, a, d].
48 Mechanizm odcięć Rozpatrzmy teraz bazę danych: ojciec(filip,szymon). ojciec(filip,marek). dziecko(kasia,szymon). dziecko(julia,szymon). dziecko(joasia,marek). dziadek(x,z):- ojciec(x,y),dziecko(z,y). Wówczas:?- dziadek(filip,x). X = kasia ; X = julia ; X = joasia.
49 Mechanizm odcięć Rozpatrzmy teraz bazę danych: ojciec(filip,szymon). ojciec(filip,marek). dziecko(kasia,szymon). dziecko(julia,szymon). dziecko(joasia,marek). dziadek(x,z):- ojciec(x,y),!,dziecko(z,y). Wówczas:?- dziadek(filip,x). X = kasia ; X = julia ;
50 Mechanizm odcięć Rozpatrzmy teraz bazę danych: ojciec(filip,szymon). ojciec(filip,marek). dziecko(kasia,szymon). dziecko(julia,szymon). dziecko(joasia,marek). dziadek(x,z):- ojciec(x,y),dziecko(z,y),!. Wówczas:?- dziadek(filip,x). X = kasia.
51 Mechanizm odcięć formalnie Rozważmy klauzulę: A:- B 1,B 2,...,B n,!,b n+2,...,b m. W momencie, w którym zostanie osiągnięty znak odcięcia (!), wszystkie podcele B 1,B 2,...,B n są już spełnione. Po przekroczeniu znaku odcięcia (!) rozwiązania tych podcelów zostają zamrożone (w szczególności ukonkretnione zmienne zachowują nadane im wartości), zaś alternatywne sposoby ich spełnienia nie będą analizowane.
52 Predykat fail Predykat! (cut - predykat odcięcia) interpretujemy logicznie jako zawsze prawdziwy. Jak wiemy już predykat ten służy do ograniczania nawrotów. Predykat fail interpretujemy logicznie jako zawsze fałszywy. Predykat ten służy do wymuszania nawrotów. Połączenie!,fail interpretujemy logicznie jako negację.
53 Predykat fail Rozpatrzmy teraz bazę danych: ojciec(filip,szymon). ojciec(filip,marek). dziecko(kasia,szymon). dziecko(julia,szymon). dziecko(joasia,marek). rodzic(x,z):- ojciec(x,y). Wówczas:?- rodzic(filip,x). X = szymon ; X = marek.
54 Predykat fail Rozpatrzmy teraz bazę danych: ojciec(filip,szymon). ojciec(filip,marek). dziecko(kasia,szymon). dziecko(julia,szymon). dziecko(joasia,marek). rodzic(x,y):- ojciec(x,y),write(x),nl,write(y),nl,fail. Wówczas:?- rodzic(filip,x). filip szymon filip marek
55 Predykat fail Rozpatrzmy teraz bazę danych: ojciec(filip,szymon). ojciec(filip,marek). dziecko(kasia,szymon). dziecko(julia,szymon). dziecko(joasia,marek). rodzic(x,y):- fail,ojciec(x,y),write(x),nl,write(y),nl. Wówczas:?- rodzic(filip,x).
56 Drzewa Rozważmy następujące drzewo: a b c d e f g h i j k l Chcemy zapisać powyższe drzewo w prologu + zdefiniować pewne predykaty związane z przetwarzaniem drzew.
57 Drzewa Drzewo możemy zapisać następująco: rodzic(a,b). rodzic(a,c). rodzic(a,d). rodzic(b,e). rodzic(b,f). rodzic(c,g). rodzic(c,h). rodzic(c,i). rodzic(d,j). rodzic(f,k). rodzic(f,l). e k a b c d f g h i j l
58 Drzewa Definiujemy predykat: rodzenstwo rodzenstwo(a,b):-rodzic(c,a),rodzic(c,b), A\==B. Przykład:?- rodzenstwo(a,b).?- rodzenstwo(b,c). true ;?- rodzenstwo(b,x). X = c ; X = d ; e k a b c d f g h i j l
59 Drzewa Definiujemy predykat: ten_sam_poziom ten_sam_poziom(x,x). ten_sam_poziom(x,y):-rodzic(a,x), rodzic(b,y), ten_sam_poziom(a,b). Przykład:?- ten_sam_poziom(a,b).?- ten_sam_poziom(c,b). true ; e a b c d f g h i j k l
60 Drzewa Definiujemy predykat: poziom poziom(a,0). poziom(x,n):-rodzic(y,x), poziom(y,m),n is M+1. Przykład: a?- poziom(a,x). X = 0 ;?- poziom(k,x). X = 3 ; e k b c d f g h i j l
61 Drzewa Definiujemy predykat: path path(a). path(x):-rodzic(a,x),path(a), write(a),write( -> ). Przykład:?- path(b). a-> true ; 14?- path(k). a->b->f-> true e k a b c d f g h i j l
62 Drzewa Definiujemy predykat: znajdz Przykład: znajdz(x):-path(x),write(x).?- znajdz(b). a->b true ;?- znajdz(k). a->b->f->k true ; e k a b c d f g h i j l
63 Drzewa Definiujemy predykat: lisc Przykład: lisc(x):-not(rodzic(x,_)). a?- lisc(b).?- lisc(k). true. e b c d f g h i j k l
64 Drzewa binarne Rozważmy następujące drzewo binarne: a b d e f i Chcemy zapisać powyższe drzewo w prologu + zdefiniować predykaty związane z przeszukiwaniem tego drzewa.
65 Drzewa binarne Wykorzystamy predykaty: emptybt - puste drzewo consbt(n,t1,t2)- drzewo binarne z korzeniem N, lewym poddrzewem T1 i prawym T2. Przykład: a consbt(a,consbt(b,emptybt,emptybt), consbt(d,emptybt,emptybt)). b d
66 Drzewa binarne Przykład: a b d e f i consbt(a,consbt(b,consbt(e,emptybt,emptybt), consbt(f,emptybt,emptybt)), consbt(d,consbt(i,emptybt,emptybt),emptybt)).
67 Drzewa binarne Chcemy zdefiniować predykat: preorder(t,l) oznaczający, że L jest listą wierzchołków drzewa binarnego uzyskaną w wyniku przeszukiwania predorder. Predykat definiujemy następująco: preorder(emptybt,[]). preorder(consbt(n,t1,t2),l):- preorder(t1,l1), preorder(t2,l2), sklej([n L1],L2,L).
68 Drzewa binarne Przykład: a b c?-preorder(consbt(a,consbt(b,emptybt, emptybt),consbt(c,emptybt,emptybt)),x). X = [a, b, c].
69 Drzewa binarne Przykład: a b d e f i?- preorder(consbt(a,consbt(b,consbt(e,emptybt, emptybt),consbt(f,emptybt,emptybt)),consbt(d, consbt(i,emptybt,emptybt),emptybt)),x). X = [a, b, e, f, d, i].
70 Czytanie i pisanie znaków Znak jest najmniejszą porcją danych, którą możemy odczytać. W prologu znakami są atomy, które w nazwie mają dokładnie jeden element. Znak można odczytać za pomocą predykatu: get_char(x). przykład:?- get_char(x). : 7 X = '7'.?- get_char(x). : a X = a.?- get_char(x). : ala X = a.
71 Czytanie i pisanie znaków W przypadku gdy zmienna X jest ukonkretniona znakiem zostanie on wypisany na ekranie po wywołaniu: przykład: put_char(x).?-x='a',put_char(x). a X = a.?- put_char(x). ERROR: put_char/1: Arguments are not sufficiently instantiated
72 Czytanie i pisanie znaków przykład: p:- get_char(z),write(z),p. wówczas:?- p. : abc abc : (rekurencja bez stopu!)
73 Czytanie i pisanie znaków przykład: p:-get_char(z),write('znak:'), write(z),nl,\+(z=k),p. wówczas:?-?- p. : abc znak: a znak: b znak: c znak: : k znak: k
74 Koniec
Programowanie w logice Prolog 1
Programowanie w logice Prolog 1 Prolog - zastosowania Zastosowania: relacyjne bazy danych. przetwarzanie języka naturalnego. logistyka. analiza struktur biochemicznych. wspomaganie projektowania. sztuczna
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 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
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). ------------------------------------------------------------------------
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,
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
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
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
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
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ą
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
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 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
Programowanie w Logice Wejście i wyjście Przemysław Kobylański na podstawie [CM2003] Term czyta się ze standardowego wejścia predykatem read/1. Każdy wczytywany term powinien być zakończony kropką. Predykat
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
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,
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
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 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
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
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
Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994]
Programowanie w Logice Gramatyki metamorficzne Przemysław Kobylański na podstawie [CM2003] i [SS1994] Gramatyki bezkontekstowe Gramatyką bezkontekstową jest uporządkowana czwórka G = Σ, N, S, P, gdzie
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
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
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/.
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
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
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"
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,
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
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
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
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.
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 ;
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
Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych
1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie
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 α, β,
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
Wstęp do informatyki- wykład 2
MATEMATYKA 1 Wstęp do informatyki- wykład 2 Systemy liczbowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy
Arytmetyka liczb binarnych
Wartość dwójkowej liczby stałoprzecinkowej Wartość dziesiętna stałoprzecinkowej liczby binarnej Arytmetyka liczb binarnych b n-1...b 1 b 0,b -1 b -2...b -m = b n-1 2 n-1 +... + b 1 2 1 + b 0 2 0 + b -1
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
Dedukcyjne bazy danych
Dedukcyjne bazy danych mgr inż. Olga Siedlecka olga@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Dedukcyjne bazy danych p.1/37 Plan seminarium Wprowadzenie Podstawy matematyczne Podstawowe
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
4 Klasyczny rachunek zdań
4 Klasyczny rachunek zdań Elementy Logiki i Teorii Mnogości 2015/2016 Spis najważniejszych tautologii: (a) p p prawo wyłączonego środka (b) ( p) p prawo podwójnej negacji (c) p q q p (d) p q q p prawo
Dedukcyjne bazy danych i rekursja
Dedukcyjne bazy danych i rekursja Wykład z baz danych dla studentów matematyki 27 maja 2017 Bazy danych z perspektywy logiki Spojrzenie na bazy danych oczami logika pozwala jednolicie opisać szereg pojęć.
Programowanie w logice
Wejście i wyjście Wydział Matematyki UŁ 30 marca 2007 Plan prezentacji Czytanie i pisanie termów 1 Czytanie i pisanie termów Czytanie termów Pisanie termów 2 Czytanie znaków Pisanie znaków 3 Czytanie z
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ć.
R n = {(x 1, x 2,..., x n ): x i R, i {1,2,...,n} },
nazywa- Definicja 1. Przestrzenią liniową R n my zbiór wektorów R n = {(x 1, x 2,..., x n ): x i R, i {1,2,...,n} }, z określonymi działaniami dodawania wektorów i mnożenia wektorów przez liczby rzeczywiste.
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ń
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
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
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.
Metody Kompilacji Wykład 3
Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy
Listy, kolejki, stosy
Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:
ALGORYTMY I STRUKTURY DANYCH
KATEDRASYSTEMÓWOBLICZENIOWYCH ALGORYTMY I STRUKTURY DANYCH 1.Rekurencja Rekurencja inaczej rekursja (ang. recursion) to wywołanie z poziomu metody jej samej. Programowanie z wykorzytaniem rekurencji pozwala
dr inż. Paweł Myszkowski Wykład nr 11 ( )
dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:
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
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
Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel
Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości
Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303
Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp
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 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
Programowanie logiczne a negacja
Programowanie logiczne a negacja Adrian Woźniak 12 stycznia 2006r. SPIS TREŚCI Programowanie logiczne a negacja Spis treści 1 Wstęp 2 2 Wnioskowanie negatywnych informacji 2 2.1 Reguła CWA (Closed World
Struktury formalne, czyli elementy Teorii Modeli
Struktury formalne, czyli elementy Teorii Modeli Szymon Wróbel, notatki z wykładu dra Szymona Żeberskiego semestr zimowy 2016/17 1 Język 1.1 Sygnatura językowa Sygnatura językowa: L = ({f i } i I, {P j
Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:
Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane
Podstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
ALGORYTMY I STRUKTURY DANYCH
LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu
Cw.12 JAVAScript w dokumentach HTML
Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane
Porządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
dodatkowe operacje dla kopca binarnego: typu min oraz typu max:
ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu
METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ
METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ KONWERSATORIUM 6: REZOLUCJA V rok kognitywistyki UAM 1 Kilka uwag terminologicznych Słuchacze zapewne pamiętają z zajęć dotyczących PROLOGu poniższą
Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne
Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne Elementy Logiki i Teorii Mnogości 2015/2016 Zadanie 1. Oblicz iteracyjnie i rekurencyjnie f(4), gdzie f jest funkcją określoną na zbiorze
Odwrotna Notacja Polska
Odwrotna Notacja Polska Odwrotna Notacja Polska w skrócie ONP) jest sposobem zapisu wyrażeń arytmetycznych. Znak wykonywanej operacji umieszczany jest po operandach, argumentach tzw. zapis postfiksowy).
Algorytmy i Struktury Danych, 9. ćwiczenia
Algorytmy i Struktury Danych, 9. ćwiczenia 206-2-09 Plan zajęć usuwanie z B-drzew join i split na 2-3-4 drzewach drzepce adresowanie otwarte w haszowaniu z analizą 2 B-drzewa definicja każdy węzeł ma następujące
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 \
Wysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Laboratorium nr 3 - Sztuczna Inteligencja Listy i operacje na listach
Laboratorium nr 3 - Sztuczna Inteligencja Listy i operacje na listach Podstawy teoretyczne a. Listy Lista jest podstawową strukturą w prologu i jest ona przetwarzana rekurencyjnie. Lista składa się z głowy
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
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
Dynamiczne struktury danych
Listy Zbiór dynamiczny Zbiór dynamiczny to zbiór wartości pochodzących z pewnego określonego uniwersum, którego zawartość zmienia się w trakcie działania programu. Elementy zbioru dynamicznego musimy co
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
Dedukcyjne bazy danych i rekursja
Dedukcyjne bazy danych i rekursja Wykład z baz danych dla studentów matematyki 23 maja 2015 Bazy danych z perspektywy logiki Spojrzenie na bazy danych oczami logika pozwala jednolicie opisać szereg pojęć.
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >
Typy indeksów Indeks jest zakładany na atrybucie relacji atrybucie indeksowym (ang. indexing field). Indeks zawiera wartości atrybutu indeksowego wraz ze wskaźnikami do wszystkich bloków dyskowych zawierających
Podstawy Informatyki. Wykład 6. Struktury danych
Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Algorytmy sortujące i wyszukujące
Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.
Wprowadzenie do baz danych
Wprowadzenie do baz danych Dr inż. Szczepan Paszkiel szczepanpaszkiel@o2.pl Katedra Inżynierii Biomedycznej Politechnika Opolska Wprowadzenie DBMS Database Managment System, System za pomocą którego można
JAVAScript w dokumentach HTML (1)
JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ
Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ 1 Inferencyjna równoważność formuł Definicja 9.1. Formuła A jest
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
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
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}.
Drzewa Semantyczne w KRZ
Drzewa Semantyczne w KRZ Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl pogon@amu.edu.pl 7 XII 2006, 13:30 15:00 Jerzy Pogonowski (MEG) Drzewa Semantyczne w KRZ 7 XII 2006, 13:30 15:00
III rok kognitywistyki UAM,
METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ WYKŁAD 6A: REZOLUCJA III rok kognitywistyki UAM, 2016 2017 1 Rezolucja w KRZ Dowody rezolucyjne w KRZ są równie proste, jak dowody tablicowe Metoda
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
Podstawowe elementy języka Python III. Wykład 3. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 50 / 277
Wykład 3 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 50 / 277 liczby całkowite wartości logiczne liczby rzeczywiste liczby zespolone łańcuchy znaków krotki listy zbiory J. Cichoń, P.
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
Definicja pliku kratowego
Pliki kratowe Definicja pliku kratowego Plik kratowy (ang grid file) jest strukturą wspierająca realizację zapytań wielowymiarowych Uporządkowanie rekordów, zawierających dane wielowymiarowe w pliku kratowym,