Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.4 Elementy języka Prolog: metaprogramowanie i struktury danych. Przemysław Kobylański

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.4 Elementy języka Prolog: metaprogramowanie i struktury danych. Przemysław Kobylański"

Transkrypt

1 Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.4 Elementy języka Prolog: metaprogramowanie i struktury danych Przemysław Kobylański Część I Wprowadzenie 1 Metapredykaty Argumentem wywołania predykatu może być warunek do sprawdzenia. Na wcześniejszych listach zadań korzystaliśmy między innymi z predykatu \+ Warunek, który jest metapredykatem wyrażającym negację. 1.1 Przykład Predykat forall/2 jest metapredykatem. Jego argumentami są dwa warunki: generator warunek dostarczający kolejne wartości, walidator warunek sprawdzający wygenerowane wartości. Predykat forall(generator, Walidator) jest spełniony gdy wszystkie wartości wygenerowane przez Generator spełniają warunek Walidator. Krótki dialog:?- forall(member(x, [2, 4, 6, 8]), 0 =:= X mod 2). true.?- forall(member(x, [2, 4, 5, 8]), 0 =:= X mod 2). 2 Kolekcjonowanie wyników Kolejne wyniki (odpowiedzi na zadane pytanie) można oglądać naciskając średnik po wydrukowaniu przez system Prolog każdego z nich. Jeśli odpowiedzi jest wiele, można stosując drukowanie i nawroty wyświetlić je wszystkie bez potrzeby żmudnego naciskania średnika:?- append(x, Y, [1, 2, 3, 4, 5]), write(x - Y), nl, fail. []-[1,2,3,4,5] [1]-[2,3,4,5] [1,2]-[3,4,5] 1

2 [1,2,3]-[4,5] [1,2,3,4]-[5] [1,2,3,4,5]-[] Często istnieje jednak konieczność zebrania wszystkich wyników na liście celem ich dalszego przetwarzania, a nie tylko wydrukowania ich na ekranie. Niech T będzie termem zawierającym zmienne a G warunkiem generującym wartości dla tych zmiennych. Predykat findall(t, G, L) tworzy listę wszystkich przykładów termu T powstałych przez podstawianie za zmienne z termu T wartości wygenerowanych warunkiem G. Na liście L mogą pojawić się wielokrotnie te same termy. Jeśli chcemy kolekcjonować termy bez powtórzeń (utworzyć ich zbiór a nie listę), należy użyć predykatu setof(t, G, L). Lista utworzona przez predykat setof/3 nie tylko nie zawiera powtórzeń ale również jest uporządkowana zgodnie z liniowym porządkiem na Przy predykacie setof/3 trzeba uważać na zmienne, które występują w warunku G ale nie występują w termie T. Aby faktycznie zebrać wszystkie przykłady termu należy zastosować kwantyfikator egzystencjalny. Zapis X^G, gdzie X jest zmienną występującą w warunku G ale nie w termie T, należy rozumieć jako ( X)G. Warunek findall/3 odpowiada warunkowi bagof/3, przy czym zachodzą następujące dwie różnice: 1. Jeśli lista przykładów jest pusta, to findall/3 nie zawodzi, natomiast bagof/3 zawodzi. 2. bagof/3 umożliwia korzystania z kwantyfikatora egzystencjalnego a findall/3 nie pozwala na to. Więcej o znajdowaniu wszystkich rozwiązań w rozdziale podręcznika: Finding all Solutions to a Goal. 2.1 Przykłady p(b). p(a). p(b). p(a).?- findall(x, p(x), L). L = [b, a, b, a].?- setof(x, p(x), L). L = [a, b].?- findall(k, (between(-2, 2, I), K is I*I), L). L = [4, 1, 0, 1, 4].?- setof(k, (between(-2, 2, I), K is I*I), L). I = -2, L = [4] ; I = -1, L = [1] ; I = 0, 2

3 L = [0] ; I = 1, L = [1] ; I = 2, L = [4].?- setof(k, I^(between(-2, 2, I), K is I*I), L). L = [0, 1, 4].?- findall(x, (member(x, [1, 2, 3]), X > 4), L). L = [].?- bagof(x, (member(x, [1, 2, 3]), X > 4), L).?- bagof(x, (member(x, [1, 2, 3]), X > 2), L). L = [3]. 3 Metaprogramowanie Wykorzystywanie metapredykatów bardzo upraszcza zapis programów gdyż dostarcza ogromną moc języka. Możliwe jest w nim budowanie termu, który stanie się warunkiem do udowodnienia:?- Warunek =.. [append, X, Y, [1, 2, 3]], Warunek. Warunek = append([], [1, 2, 3], [1, 2, 3]), X = [], Y = [1, 2, 3] ; Warunek = append([1], [2, 3], [1, 2, 3]), X = [1], Y = [2, 3] ; Warunek = append([1, 2], [3], [1, 2, 3]), X = [1, 2], Y = [3] ; Warunek = append([1, 2, 3], [], [1, 2, 3]), X = [1, 2, 3], Y = [] ; W powyższym przykładzie użyto predykat =../2, który służy do konstruowania i rozkładania termów na listę złożoną z funktora i jego argumentów:?- a =.. X. X = [a].?- f(a) =.. X. X = [f, a].?- f(a, g(b)) =.. X. X = [f, a, g(b)].?- X =.. [f, a, g(b), c]. X = f(a, g(b), c). 3

4 3.1 Przykłady Łamigłówka Każdy mieszkaniec wyspy jest albo rycerzem (zawsze mówi prawdę) albo łotrem (zawsze kłamie). Pewnego dnia B stwierdził: "A powiedział o sobie, że jest łotrem". Kim jest B? rycerz(rycerz). lotr(lotr). powiedzial(rycerz, X) :- X. powiedzial(lotr, X) :- \+ X.?- powiedzial(b, powiedzial(a, lotr(a))). B = lotr Interpreter Prologu w Prologu Predykat clause/2 umożliwia pobieranie klauzul składających się na program w Prologu. Warunek clause(head, Body) jest spełniony gdy dla danej formuły atomowej Head istnieje klauzula o głowie unifikowalnej z Head i ciele (treści) unifikowalneym z Body. W wyniku nawrotów podstawiane będą kolejne klauzule o głowach pasujących do Head. app([], X, X). app([x Y1], Y2, [X Z]) :- app(y1, Y2, Z). interpreter(true). interpreter((g1, G2)) :- interpreter(g1), interpreter(g2). interpreter(a) :- A \= true, A \= (_, _), clause(a, B), interpreter(b). [debug]?- interpreter(app(x, Y, [1, 2, 3])). X = [], Y = [1, 2, 3] ; X = [1], Y = [2, 3] ; X = [1, 2], Y = [3] ; X = [1, 2, 3], Y = [] ; Powyższy interpreter obsługuje tylko predykaty zdefiniowane klauzulami, których ciała są warunkiem true (gdy fakt) albo jedną lub koniunkcją formuł atomowych połączonych przecinkami (gdy reguła). 4

5 4 Struktury danych W Prologu dostępne są moduły definiujące między innymi następujące struktury danych: zbiory uporządkowane kopce (kolejki priorytetowe) drzewa czerwono-czarne 4.1 Zbiory uporządkowane Zbiory można reprezentować w Prologu w postaci list uporządkowanych bez powtarzających się elementów. Aby skorzystać z dostępnych w Prologu predykatów na zbiorach uporządkowanych, należy zaimportować moduł ordsets w pliku źródłowym dyrektywą: :- use_module(library(ordsets)). albo zadając systemowi sc Prolog pytanie:?- use_module(library(ordsets)). Przykład dialogu o zbiorach uporządkowanych:?- list_to_ord_set([1, 2, 3, 2, 3, 4], X), ord_memberchk(2, X). X = [1, 2, 3, 4].?- list_to_ord_set([1, 2, 3, 2, 3, 4], X), ord_memberchk(5, X).?- list_to_ord_set([1, 2, 1], X1), list_to_ord_set([2, 1, 3], X2), ord_intersection(x1, X2, X). X1 = X, X = [1, 2], X2 = [1, 2, 3].?- list_to_ord_set([1, 2, 1], X1), list_to_ord_set([2, 1, 3], X2), ord_union(x1, X2, X). X1 = [1, 2], X2 = X, X = [1, 2, 3].?- list_to_ord_set([1, 2, 1], X1), list_to_ord_set([2, 1, 3], X2), ord_symdiff(x1, X2, X). X1 = [1, 2], X2 = [1, 2, 3], X = [3]. Więcej o zbiorach uporządkowanych w dodatku podręcznika: library(ordsets): Ordered set manipulationl. 4.2 Drzewa czerwono-czarne Aby skorzystać z dostępnych w Prologu predykatów na drzewach czerwono-czarnych, należy zaimportować moduł rbtrees w pliku źródłowym dyrektywą: :- use_module(library(rbtrees)). 5

6 albo zadając systemowi sc Prolog pytanie:?- use_module(library(rbtrees)). Elementy wstawiane są do drzewa czerwono-czarnego wraz z kluczami względem których drzewo jest uporządkowane. Najprościej stworzyć drzewo czerwono-czarne tak jak w poniższym przykładzie, tj. przez zamianę listy zawierającej pary Klucz - Element:?- list_to_rbtree([2-a, 0-b, 5-c, 1-d], RB0), rb_del_min(rb0, MinKlucz, MinElement, RB1), rb_del_max(rb1, MaxKlucz, MaxElement, RB2). RB0 = t(black(, _G1908, _G1909, ), black(black(black(, _G1908, _G1909, ), 0, b, black(, _G1908, _G1909, )), 1, d, black(black(, _G1908, _G1909, ), 2, a, red(black(, _G1908, _G1909, ), 5, c, black(, _G1908, _G1909, ))))), MinKlucz = 0, MinElement = b, RB1 = t(black(, _G1908, _G1909, ), black(black(black(, _G1908, _G1909, ), 1, d, black(, _G1908, _G1909, )), 2, a, black(black(, _G1908, _G1909, ), 5, c, black(, _G1908, _G1909, )))), MaxKlucz = 5, MaxElement = c, RB2 = t(black(, _G1908, _G1909, ), black(red(black(, _G1908, _G1909, ), 1, d, black(, _G1908, _G1909, )), 2, a, black(, _G1908, _G1909, ))). W powyższym przykładzie: RB0 jest drzewem czerwono-czarnym zawierającym pary 2-a, 0-b, 5-c, 1-d, RB1 jest drzewem czerwono-czarnym powstałym z RB0 przez usunięcie elementu o najmniejszym kluczu, RB2 jest drzewem czerwono-czarnym powstałym z RB1 przez usunięcie elementu o największym kluczu. Więcej o drzewach czerwono-czarnych w opisie biblioteki: rbtrees.pl Red black trees. 4.3 Kopce/kolejki priorytetowe Celem szybkiego dostępu do minimalnego elementu i usuwania go ze zbioru, można użyć strukturę kopca (kolejki priorytetowej). Aby skorzystać z dostępnych w Prologu predykatów na kopcach (kolejkach priorytetowych), należy zaimportować moduł heaps w pliku źródłowym dyrektywą: :- use_module(library(heaps)). albo zadając systemowi sc Prolog pytanie:?- use_module(library(heaps)). Elementy (klucze) w kopcu (kolejce priorytetowej) przechowywane są w postaci par Priorytet - Klucz, gdzie Priorytet jest wartością względem której Klucz jest uporządkowany w kopcu (kolejce priorytetowej). W poniższym przykładzie wstawiono trzy klucze e1, e2, e3 o priorytetach, odpowiednio, 20, 10, 30 a następnie usunięto z utworzonego kopca (kolejki priorytetowej) Klucz o najmniejszym priorytecie: 6

7 ?- list_to_heap([], H0), add_to_heap(h0, 20, e1, H1), add_to_heap(h1, 10, e2, H2), add_to_heap(h2, 30, e3, H3), get_from_heap(h3, Priorytet, Klucz, H4). H0 = heap(nil, 0), H1 = heap(t(e1, 20, []), 1), H2 = heap(t(e2, 10, [t(e1, 20, [])]), 2), H3 = heap(t(e2, 10, [t(e3, 30, []), t(e1, 20, [])]), 3), Priorytet = 10, Klucz = e2, H4 = heap(t(e1, 20, [t(e3, 30, [])]), 2). W powyższym przykładzie: H0 jest początkowo pustym kopcem, H1 jest kopcem zawierającym jedynie klucz e1, H2 jest kopcem zawierającym klucze e1 i e2, H3 jest kopcem zawierającym klucze e1, e2 i e3, H4 jest kopcem powstałym z H3 po usunięciu klucza o najmniejszym priorytecie. Więcej o kopcach/kolejkach priorytetowych w opisie biblioteki: heaps.pl heaps/priorit queues. Część II Zadania i polecenia Polecenie 1 Załóżmy, że dana jest baza o zarobkach pracowników w postaci następujących faktów: pracownik(abacki, 3700). pracownik(babacki, 5200). pracownik(cabacki, 2500). Skompiluj powyższe fakty (np. umieszczając je w pliku baza.pl i kompilując ją). Jeśli chcemy poznać nazwiska pracowników w kolejności rosnących zarobków, możemy zrobić to następującym pytaniem:?- setof(zarobek - Pracownik, pracownik(pracownik, Zarobek), Zbior), member(_ - Nazwisko, Zbior). Zbior = [2500-cabacki, 3700-abacki, 5200-babacki], Nazwisko = cabacki ; Zbior = [2500-cabacki, 3700-abacki, 5200-babacki], Nazwisko = abacki ; Zbior = [2500-cabacki, 3700-abacki, 5200-babacki], Nazwisko = babacki. 7

8 W powyższym przykładzie lista Zbior jest uporządkowaną listą par Zarobek - Pracownik. Pary takie uporządkowane są według następującego porządku liniowego: Z 1 P 1 < Z 2 P 2 (Z 1 < Z 2 ) jest liniowym porządkiem na termach. Zadanie 2 Elementy macierzy: A = zapisano w postaci faktów tab(i, j, a ij ): (Z 1 = Z 2 P 2 ), tab(1, 1, 5). tab(1, 2, 3). tab(1, 3, 4). tab(1, 4, 3). tab(2, 1, 7). tab(2, 2, 2). tab(2, 3, 0). tab(2, 4, -2). tab(3, 1, 10). tab(3, 2, -1). tab(3, 3, -4). tab(3, 4, 2). Niech warunek siodlo(i, J) wyraża, to że element a ij tak zadanej macierzy jest punktem siodłowym, tj. zachodzi: Napisz predykat siodlo(i, J). ( k )( l ) a kj a ij a il 1. Czy potrafisz tak napisać predykat siodlo(i, J) aby znajdował wszystkie punkty siodłowe przykładowej macierzy A w mniej niż 100 wnioskowań (użyj predykat time/1 do pomiaru). 2. Wskazówka: użyj negację. Przykład pomiaru liczby wnioskowań przy wyznaczaniu wszystkich punktów siodłowych:?- time((siodlo(_, _), fail)). % 63 inferences, CPU in seconds (84% CPU, Lips) Zadanie 3 Załóżmy, że formuły iap(e1, N, E2) wyrażają fakt, że element E1 jest częścią (isa-part) elementu E2 i występuje w nim w N egzemplarzach (np. iap(kolo, 2, rower). Poniżej przedstawiono kilka faktów opisujących obiekt o1 złożony z obiektów o2, o3, o4, o5: iap(o2, 2, o1). iap(o3, 3, o1). iap(o4, 2, o3). iap(o5, 5, o3). Powyższe fakty można zrozumieć następująco: 1. Aby zmontować jedną sztukę o1 należy połączyć ze sobą dwie sztuki o2 i trzy sztuki o3. 8

9 2. Aby zmontować jedną sztukę o3 należy połączyć ze sobą dwie sztuki o4 i pięć sztuk o5. 3. Elementy o2, o4 i o5 nie są montowane zatem należy je zakupić. Napisz predykat zamowienie(produkt, N, Lista), który planuje wielkość zakupów na potrzeby wyprodukowania N egzemplarzy Produktu. Zamówienie powinno być w postaci listy o elementach postaci Liczba * Element, wyrażających potrzebę zamówienia danej liczby elementów. Przykładowy dialog:?- zamowienie(o1, 10, X). X = [20*o2, 60*o4, 150*o5].?- zamowienie(o3, 50, X). X = [100*o4, 250*o5]. 9

Programowanie w Logice

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

Bardziej szczegółowo

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

Bardziej szczegółowo

Programowanie w Logice Struktury danych (Lista 2)

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

Bardziej szczegółowo

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.1 Elementy języka Prolog: fakty i zapytania. Przemysław Kobylański

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.1 Elementy języka Prolog: fakty i zapytania. Przemysław Kobylański Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.1 Elementy języka Prolog: fakty i zapytania Przemysław Kobylański Część I Wprowadzenie 1 Stałe i zmienne Jedynym dostępnym w języku Prolog rodzajem

Bardziej szczegółowo

Programowanie w Logice Przykłady programów. Przemysław Kobylański

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 ;

Bardziej szczegółowo

PODSTAWY SZTUCZNEJ INTELIGENCJI

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

Bardziej szczegółowo

PROLOG INNE PRZYKŁADY MACIEJ KELM

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

Bardziej szczegółowo

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

Bardziej szczegółowo

Programowanie w Logice Środowisko programowania i dialog z systemem (Lista 0)

Programowanie w Logice Środowisko programowania i dialog z systemem (Lista 0) Programowanie w Logice Środowisko programowania i dialog z systemem (Lista 0) Przemysław Kobylański Wstęp Podczas laboratorium będziemy korzystać z systemu SWI-Prolog. Należy go ściągnąć i zainstalować

Bardziej szczegółowo

Programowanie w logice

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,

Bardziej szczegółowo

Podstawy Sztucznej Inteligencji (PSZT)

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ęść 2/3 Dzisiaj Literały i klauzule w logice predykatów Sprowadzania

Bardziej szczegółowo

Programowanie w Logice

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

Bardziej szczegółowo

Metoda Tablic Semantycznych

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 α, β,

Bardziej szczegółowo

Programowanie w logice Prolog 2

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]

Bardziej szczegółowo

PROLOG. Prolog. Programowanie, W.F. Clocksin, C.S. Mellish, HELION Prolog, język sztucznej inteligencji, Eugeniusz Gatnar, Katarzyna Stąpor, Wyd.

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,

Bardziej szczegółowo

Prolog 2 (Filip Wroński, Łukasz Betkowski, Paweł Świerblewski, Konrad Kosmatka)

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,

Bardziej szczegółowo

Dana jest baza: kobieta(katarzyna). kobieta(anna). kobieta(maria). kobieta(marianna). kobieta(marta). Zdefiniujemy predykat kobiety/0 następująco:

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,

Bardziej szczegółowo

Programowanie w Logice

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

Bardziej szczegółowo

I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych.

I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych. I. Podstawowe pojęcia i oznaczenia logiczne i mnogościowe. Elementy teorii liczb rzeczywistych. 1. Elementy logiki matematycznej. 1.1. Rachunek zdań. Definicja 1.1. Zdaniem logicznym nazywamy zdanie gramatyczne

Bardziej szczegółowo

Projekt 4: Programowanie w logice

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

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

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

Bardziej szczegółowo

Programowanie w logice

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

Bardziej szczegółowo

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykłady 12 i 13. Dowód i dowodzenie w KRP. Tezy KRP

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykłady 12 i 13. Dowód i dowodzenie w KRP. Tezy KRP Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykłady 12 i 13. Dowód i dowodzenie w KRP. Tezy KRP 1 Pojęcie dowodu w KRP Pojęcia: formuły zdaniowej języka Klasycznego Rachunku

Bardziej szczegółowo

Wprowadzenie do Prologa

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

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Algorytmy i Struktury Danych, 9. ćwiczenia

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

Bardziej szczegółowo

Podstawy Sztucznej Inteligencji (PSZT)

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

Bardziej szczegółowo

Laboratorium przedmiotu Paradygmaty Programowania

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

Bardziej szczegółowo

Składnia rachunku predykatów pierwszego rzędu

Składnia rachunku predykatów pierwszego rzędu Początek Gramatyka Kwantyfikatory Poprawność Logika obliczeniowa Instytut Informatyki Początek Gramatyka Kwantyfikatory Poprawność Plan wykładu 1 Na (dobry) początek Zrozumieć słowa Oswoić znaki 2 Gramatyka

Bardziej szczegółowo

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe

Bardziej szczegółowo

Klasyczny rachunek predykatów

Klasyczny rachunek predykatów Kultura logiczna Klasyczny rachunek predykatów Bartosz Gostkowski bgostkowski@gmail.com Alfabet klasycznego rachunku zdań reguły konsytutywne języka Alfabet klasycznego rachunku predykatów (KRP Do alfabetu

Bardziej szczegółowo

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych: stos, kolejka, lista, drzewo Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja

Bardziej szczegółowo

Listy, krotki, słowniki, funkcje

Listy, krotki, słowniki, funkcje Listy, krotki, słowniki, funkcje Listy Lista jest najbardziej elastycznym typem obiektu uporządkowanej kolekcji. Może zawierać różne typy danych - liczby, łańcuchy znaków, a nawet inne listy. Tworzy się

Bardziej szczegółowo

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru. Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4

Bardziej szczegółowo

Adam Meissner.

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

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

Bardziej szczegółowo

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

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

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

Celem ćwiczenia jest zapoznanie się z podstawowymi możliwościami języka Prolog w zakresie definiowania faktów i reguł oraz wykonywania zapytań.

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

Bardziej szczegółowo

Porządek symetryczny: right(x)

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)

Bardziej szczegółowo

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

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

Bardziej szczegółowo

Adam Meissner STUCZNA INTELIGENCJA

Adam Meissner STUCZNA INTELIGENCJA Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis STUCZNA INTELIGENCJA Elementy programowania w logice Literatura

Bardziej szczegółowo

Programowanie deklaratywne

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

Bardziej szczegółowo

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew 1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

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.

Bardziej szczegółowo

1. Składnia. Logika obliczeniowa - zadania 1 SKŁADNIA Teoria

1. Składnia. Logika obliczeniowa - zadania 1 SKŁADNIA Teoria Logika obliczeniowa - zadania 1 SKŁADNIA 1. Składnia 1.1. Teoria 1. Składnia oznacza reguły tworzenia... z.... 2. Rachunek predykatów pierwszego rzędu (w skrócie: rachunek predykatów) wyróżnia cztery zbiory

Bardziej szczegółowo

Programowanie logiczne a negacja

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

Bardziej szczegółowo

Programowanie deklaratywne

Programowanie deklaratywne Języki i paradygmaty programowania Lista (elementy języka Oz) Przemysław Kobylański Zaprogramuj w języku Oz rozwiązania poniższych zadań. Na ocenę dostateczną trzeba rozwiązać wszystkie zadania bez gwiazdek.

Bardziej szczegółowo

Programowanie deklaratywne

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

Bardziej szczegółowo

Elementy języka Prolog

Elementy języka Prolog Elementy języka Prolog Cechy języka Podstawy Zamrażanie celów (korutyny) Programowanie ograniczeń Cechy języka Deklaratywne programowanie w logice Formuły rachunku predykatów Rezolucja liniowa Atrybuty

Bardziej szczegółowo

Semantyka rachunku 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

Bardziej szczegółowo

Wstęp do logiki. Klasyczny Rachunek Predykatów I

Wstęp do logiki. Klasyczny Rachunek Predykatów I Wstęp do logiki Klasyczny Rachunek Predykatów I KRZ jest teorią stanowiącą wstępną część logiki formalnej, część zakładaną przez inne teorie. Przypomnijmy, jest on teorią związków logicznych między zdaniami

Bardziej szczegółowo

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

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.

Bardziej szczegółowo

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych. Elementy logiki i teorii zbiorów. 1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych. Pojęcia pierwotne to najprostsze

Bardziej szczegółowo

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.

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

Bardziej szczegółowo

Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne

Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki Wykład 11b. System aksjomatyczny Klasycznego Rachunku Predykatów. Aksjomaty i reguły inferencyjne Istnieje wiele systemów aksjomatycznych

Bardziej szczegółowo

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów Mariusz Urbański Instytut Psychologii UAM Mariusz.Urbanski@amu.edu.pl Plan na pytanie o odniesienie przedmiotowe zdań odpowiedź

Bardziej szczegółowo

Programowanie deklaratywne

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

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

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

Bardziej szczegółowo

Programowanie w logice Wykład z baz danych dla

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

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Adam Meissner SZTUCZNA INTELIGENCJA

Adam Meissner SZTUCZNA INTELIGENCJA Instytut Automatyki i Inżynierii Informatycznej Politechniki Poznańskiej Adam Meissner Adam.Meissner@put.poznan.pl http://www.man.poznan.pl/~ameis SZTUCZNA INTELIGENCJA Elementy wnioskowania automatycznego

Bardziej szczegółowo

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące

Bardziej szczegółowo

Problem. Uzgadnianie wyrażeń rachunku predykatów. Instancja wyrażenia. Podstawienie termu za zmienną. Joanna Józefowska

Problem. Uzgadnianie wyrażeń rachunku predykatów. Instancja wyrażenia. Podstawienie termu za zmienną. Joanna Józefowska Problem Instytut Informatyki jedzenie(x 1 ) lubi(adam, x 1 ) jedzenie(jabłko) jedzenie(kurczak) je(x 1, x 2 ) żyje(x 1 ) jedzenie(x 2 ) je(bogdan, orzeszki) żyje(bogdan) je(bogdan, x 2 ) je(zuzia, x 2

Bardziej szczegółowo

mgr inż. Adam Pinkowski

mgr inż. Adam Pinkowski mgr inż. Adam Pinkowski Tel. 058 661 78 50 tel. kom. (0) 502 180 637 Adres domowy: 81-342 Gdynia, ul. Waszyngtona 18/23 e-mail: pinkowski@geoprogram.eu INSTRUKCJA UŻYTKOWANIA PROGRAMU PROFILGEO (v.7.1.235)

Bardziej szczegółowo

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski METODA SYMPLEKS Maciej Patan Uniwersytet Zielonogórski WSTĘP Algorytm Sympleks najpotężniejsza metoda rozwiązywania programów liniowych Metoda generuje ciąg dopuszczalnych rozwiązań x k w taki sposób,

Bardziej szczegółowo

Uzgadnianie formuł rachunku predykatów

Uzgadnianie formuł rachunku predykatów Składanie podstawień Plan wykładu Uzgadnianie Logika obliczeniowa Instytut Informatyki Plan wykładu Składanie podstawień 1 Składanie podstawień Podstawienie Motywacja Złożenie podstawień 2 Uzgadnianie

Bardziej szczegółowo

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny Informatyka klasa III Gimnazjum wymagania na poszczególne oceny Algorytmika i programowanie Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem komputera, stosowanie podejścia algorytmicznego

Bardziej szczegółowo

Zadanie projektowe nr 1

Zadanie projektowe nr 1 Zadanie projektowe nr 1 Badanie efektywności operacji dodawania (wstawiania), usuwania oraz wyszukiwania elementów w podstawowych strukturach danych Należy zaimplementować oraz dokonać pomiaru czasu działania

Bardziej szczegółowo

Języki programowania deklaratywnego

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

Bardziej szczegółowo

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

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:

Bardziej szczegółowo

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

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

Bardziej szczegółowo

Wykład 2. Relacyjny model danych

Wykład 2. Relacyjny model danych Wykład 2 Relacyjny model danych Wymagania stawiane modelowi danych Unikanie nadmiarowości danych (redundancji) jedna informacja powinna być wpisana do bazy danych tylko jeden raz Problem powtarzających

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Proste algorytmy sortowania Witold Marańda maranda@dmcs.p.lodz.pl 1 Pojęcie sortowania Sortowaniem nazywa się proces ustawiania zbioru obiektów w określonym porządku Sortowanie

Bardziej szczegółowo

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: Struktura danych Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: rekord tablica lista stos kolejka drzewo i jego odmiany (np. drzewo

Bardziej szczegółowo

Optymalizacja systemów

Optymalizacja systemów Optymalizacja systemów Laboratorium Zadanie nr 3 Sudoku autor: A. Gonczarek Cel zadania Celem zadania jest napisanie programu rozwiązującego Sudoku, formułując problem optymalizacji jako zadanie programowania

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Podstawowe zapytania SELECT (na jednej tabeli)

Podstawowe zapytania SELECT (na jednej tabeli) Podstawowe zapytania SELECT (na jednej tabeli) Struktura polecenia SELECT SELECT opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje FROM nazwy tabel lub widoków WHERE warunek (wybieranie wierszy) GROUP

Bardziej szczegółowo

METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ

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ą

Bardziej szczegółowo

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Tabele 9 Klucze 10 Relacje 11 Podstawowe zasady projektowania tabel 16 Rozdział 2. Praca z tabelami 25 Typy danych 25 Tworzenie tabel 29 Atrybuty kolumn

Bardziej szczegółowo

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty

TECHNOLOGIE INTERNETOWE WYKŁAD 6. JavaScript Funkcje i obiekty 1. Co to jest funkcja? Funkcja jest oddzielnym blokiem kodu, który może być wielokrotnie wykonywany w danym programie, poprzez jej wielokrotne wywoływanie. Do funkcji przekazujemy przeważnie jakieś argumenty,

Bardziej szczegółowo

Definicje wyższego poziomu

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

Bardziej szczegółowo

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków: 2008 04 25

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków: 2008 04 25 MS Excel 2007 Kurs zaawansowany Obsługa baz danych prowadzi: Dr inż. Tomasz Bartuś Kraków: 2008 04 25 Bazy danych Microsoft Excel 2007 udostępnia szereg funkcji i mechanizmów obsługi baz danych (zwanych

Bardziej szczegółowo

Język rachunku predykatów Formuły rachunku predykatów Formuły spełnialne i prawdziwe Dowody założeniowe. 1 Zmienne x, y, z...

Język rachunku predykatów Formuły rachunku predykatów Formuły spełnialne i prawdziwe Dowody założeniowe. 1 Zmienne x, y, z... Język rachunku predykatów 1 Zmienne x, y, z... 2 Predykaty n-argumentowe P(x, y,...), Q(x, y...),... 3 Funktory zdaniowe,,,, 4 Kwantyfikatory: istnieje, dla każdego Język rachunku predykatów Ustalenie

Bardziej szczegółowo

Przeszukiwanie z nawrotami. Wykład 8. Przeszukiwanie z nawrotami. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 238 / 279

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

Bardziej szczegółowo

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

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

Bardziej szczegółowo

Drzewo binarne BST. LABORKA Piotr Ciskowski

Drzewo binarne BST. LABORKA Piotr Ciskowski Drzewo binarne BST LABORKA Piotr Ciskowski zadanie 1. drzewo binarne - 1 Zaimplementuj drzewo binarne w postaci: klasy Osoba przechowującej prywatne zmienne: liczbę całkowitą to będzie klucz, wg którego

Bardziej szczegółowo

PRZYKŁADOWY TEST EGZAMINACYJNY

PRZYKŁADOWY TEST EGZAMINACYJNY European Computer Competence Certificate PRZYKŁADOWY TEST EGZAMINACYJNY Europejskiego Certyfikatu Kompetencji Informatycznych ECCC Moduł: IT M3 Arkusze kalkulacyjne Poziom: B Średniozaawansowany FUNDACJA

Bardziej szczegółowo

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

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu 1 Algorytmika i programowanie Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem komputera, stosowanie

Bardziej szczegółowo

Statyczne i dynamiczne predykaty

Statyczne i dynamiczne predykaty Statyczne i dynamiczne predykaty Dynamiczne dowodzą lub odwołują pewne reguły, Statyczne nie potrafią tego co dynamiczne, ponieważ ich punkty zostały zebrane w całość, która działa szybciej, ale nie jest

Bardziej szczegółowo

CLP Programowanie logiczne z ograniczeniami.

CLP Programowanie logiczne z ograniczeniami. CLP Programowanie logiczne z ograniczeniami. Wstęp Programowanie z ograniczeniami (Constraint Programming CP) stało się w ostatnich latach popularnym sposobem modelowania i rozwiązywania wielu problemów

Bardziej szczegółowo

Optymalizacja systemów

Optymalizacja systemów Optymalizacja systemów Laboratorium Sudoku autor: A. Gonczarek Cel zadania Celem zadania jest napisanie programu rozwiązującego Sudoku, formułując problem optymalizacji jako zadanie programowania binarnego.

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Podstawy języka PROLOG

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

Bardziej szczegółowo

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element

Bardziej szczegółowo

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią. Semantyczne twierdzenie o podstawianiu Jeżeli dana formuła rachunku zdań jest tautologią i wszystkie wystąpienia pewnej zmiennej zdaniowej w tej tautologii zastąpimy pewną ustaloną formułą, to otrzymana

Bardziej szczegółowo

Dariusz Banasiak. Instytut Informatyki, Automatyki i Robotyki. Politechniki Wrocławskiej

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.

Bardziej szczegółowo

Tablice. Jones Stygar na tropie zmiennych

Tablice. Jones Stygar na tropie zmiennych Tablice Jones Stygar na tropie zmiennych Czym jest tablica? Obecnie praktycznie wszystkie języki programowania obsługują tablice. W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg (lub wektor),

Bardziej szczegółowo