Prolog- Programming In Logic
|
|
- Beata Bukowska
- 9 lat temu
- Przeglądów:
Transkrypt
1 Prolog- Programming In Logic Agnieszka Nowak 28 kwietnia Prolog- Programming In Logic Należy do klasy języków deklaratywnych, gdzie opisuje się rozwiązywany problem, a nie tak jak przy językach imperatywnych(proceduralnych)- w których wskazuje się algorytm rozwiązania problemu. Dzięki zautomatyzowaniu procesu dowodzenia twierdzeń logicznych, a szczególnie dzięki opracowaniu przez Robinsona w 1965 roku tzw. zasady rezolucji- stało się możliwe automatyczne wywnioskowania rozwiązania na podstawie zbioru formuł logicznych opisujących problem. Programowanie w prologu składa się z: 1. deklarowania Faktów dotyczących obiektów i związkow między nimi. 2. Definiowania Reguł dotyczyczących obiektów i związków między nimi. 3. Zadawania pytań o obiekty i związki między nimi. 2 Budowanie baz wiedzy w Prologu Jak wiadomo baza wiedzy to zazwyczaj zbiór złożony z faktów i reguł. 2.1 Fakty proste Przykładem prostego faktu odzwierciedlającego zdanie: Jest słonecznie. jest predykat zapiany następująco: sunny. W języku Prolog spytamy o prawdziwość tego stwierdzenie następująco:? sunny. A więc używamy przed nazwą predykatu znaków?, które oznaczają pytanie o prawdziwość danego faktu. Oczywiście stwierdzenia(fakty) nie muszą być jedynie funktorami jednoargumentowymi, ale mogą być również wieloargumnetowe. Ogólna składnia predykatu wygląda następująco: relation(< argument1 >, < argument2 >,..., < argumentn >).,gdzie relation oznacza po prostu nazwę funkcji pełnionej przez dany predykat, 1
2 zaś parametry: < argument1 >, < argument2 >,..., < argumentn >oznaczają kolejne argumenty tej funkcji. I tak, w języku Prolog, stwierdzenie: likes( john, mary). oznacza, że John lubi mary. 2.2 Zadawanie pytań i interpretacja odopowiedzi na pytania? Kiedy już wiemy jak zapisywać stwierdzenia(fakty) zawsze możemy pytać o ich prawdziwość. Jeśli przykładowy program wygląda następująco: eats( f red, oranges)./* Fred je pomarańcze */ eats(tony, apple)./* Tonyjejabłko */ eats(john, apple)./* Johnjejabłko */ To jeśli teraz zapytamy:? eats( f red, oranges). /*czytopasujedozapisówwbaziewiedzywprologu?.*/ Widać, iż tak, więc Prolog odpowie: yes /* yes,ponieważdokładniepokrywasiętoz1zapisemwbazie.*/ Podobnie zadając pytanie:? eats(john, apple). Uzyskamy odpowiedź: yes Zaś jeśli spytamy:? eats(mike, apple). prolog odpowie: no /*ponieważniemażadnejrelacjimiędzy mikeiapple,gdyżwnaszejbazienie mawcaleinformacjiomike*/ 2.3 Zmienne w Prologu W prologu nie musimy zadawać konretnych pytań. Możemy na przykład zawsze zapytaćwnaszymprzykładowymzbiorzektojejabłko?albocojefred? Jeśli więc dla naszego przykładowego programu: eats(fred,oranges).jeśli zapytamy:? eats( f red, what). Prolog odpowie ku naszemu zaskoczeniu: no. Powodem tego jest fakt, że Prolog będzie szukał dopasowania w swojej bazie f rediwhat.jeślinatomiastchcieliśmyużyćzmiennejwprologu,tosąonetutaj wyróżnione przez fakt, że zaczynają się zawsze od wielkiej litery.przykładowo: X/* pojedyncza litera*/ VaRiAbLe/* wyraz zaczynający się od wielkiej litery*/ Two words/* dwa wyrazy oddzielone znakiem podkreślenia*/ Zatem w naszym przypadku, gdy chcieliśmy spytać Co je Fred? powinniśmy użyć np składni:? eats( f red, What) Wówczas Prolog odpowie: 2
3 What = oranges yes Podobnie możemy spytać: Kto je pomarańcze? zapisująco owo zapytanie tak:? eats(who, oranges). W tym wypadku, Prolog odpowie: Who= f red yes Jeśli zaś spytamy:? eats(who, apple). Pierwszą odpowiedzią będzie: [Who = tony] ponieważ jest to pierwsze dopasowanie znalezione w bazie. Teraz Prolog będzie czekał aż wcisnieś jakiś znak. Jeśli wybierzesz znak[enter] Prolog będzie oczekiwał no nowe pytanie. Jeśli zaś użyjesz klawisza [; ], Prolog będzie dalej przeszukiwał swoją bazę w celu znalezienia kolejnych dopasowań(podstawień za zmienną Who). W ten sposób Prolog znajdzie kolejną odpowiedź [Who = john]. Jeśli teraz ponownie wciśniemy znak: [; ] prolog ponownie będzie chciał szukać kolejnych dopasowań. Wynikiem jednak będzie odpowiedź: [no] ponieważ faktycznie w bazie nie ma więcej dopasowań (unifikacji) dla tego stwierdzenia.? eats(who, apple). Who=tony; Who= john; no 2.4 Reguły w Prologu Rozważmy zdanie: Wszystki jabłka to owoce. Takie zdanie możemy wyrazić również w Prologu, następująco: f ruit(x) : apple(x). Zdanie to można odczytać jako: X jest owocem jeśli X jest jabłkiem. Teraz rozważmy zdanie(fakt): Gloster jest typem jabłka. W Prologu zapiszemy to tak: f ruit(x) : apple(x). apple(gloster). Jeśli teraz spytamy w Prologu:? f ruit(gloster).uzyksamy odpowiedź: yes Prolog użyje zdefiniowanej przez nas reguły, zgodnie z którą X jest owocem, jeśli jest jabłkiem. Zatem dzięki stwierdzeniu: apple(gloster), Prolog wygeneruje nowy fakt: f ruit(gloster). W regułach również możemy stosować zmienne. Zatem możemy spytać: Jaki X jest owocem?:? f ruit(x). na co Prolog powinien odpowiedzieć: X=gloster Oczywiście reguły mogą mieć w części przesłankowej(warunkowej) więcej elementów połączonych operatorem logicznym and lub or. Czasami bowiem, do tego samego stwierdzenia możemy dojść różnymi drogami. Przykładowo, zda- 3
4 nie:cośjestsmacznejeślijestowocemimasłodkismaklubjeślizawieracukier. To zdanie można następująco zapisać w Prologu: tasty(x) : /*cośjestsmacznejeśli*/ f ruit(x),/*jestowocemi*/ is sweet(x)./* jest słodkie*/ tasty(x) : /*albocośjestsmacznejeśli*/ has sugar(x)/* zawiera cukier*/ Zatemwtakimprogramie,są2drogi,abydowiedzieć,sięczycośjestsmaczne czy nie. Jeśli pierwsza reguła nie pozwoli wykazać prawdziwości tego stwierdzenia, to wówczas Prolog będzie probował wykazać prawdziwość drugiej reguły. Należy pamiętać, iż tak samo nazwane zmienne w regule są traktowane jako ta sama zmienna. Zatem takie same zmienne w różnych regułach są traktowane jako różne zmienne i są w tym względzie niezależne. Przykładowo w programie: tasty(x) : f ruit(x), is sweet(x). tasty(x) : has sugar(x). Prolog będzie traktował nasze zapisy jako: tasty(x 1 ) : f ruit(x 1), is sweet(x 1). tasty(x 2 ) : has sugar(x 2). 3 Środowisko do programowania w Prolog u Krótkie fakty dotyczące Prolog: Prolog- stworzony w 1971 roku przez Alaina Colmeraurera i Phillipe a Roussela na Uniwersytecie w Marsylii. Podczas pracy nad zastosowaniem logiki predykatow(klauzul Horna) do NLP. Pierwszy kompilator Prologu powstal w Algolu. Od polowy lat 70-tych wspolpraca z Robertem Kowalskim na Uniwersytecie w Edynburgu(Szkocja). 3.1 Implementacje- Narzędzia darmowe Ciao Prolog ECLIPSE GNUProlog SWI-Prolog YAPProlog 4
5 Rysunek 1: Konsola GNU Prolog 3.2 Implementacje- Narzędzia komercyjne ALSProlog Amzi! Prolog IFProlog LPAProlog MINERVA SICStus Prolog 3.3 CzymjestGNUProlog? GNU Prolog(gprolog), to otwarte oprogramowanie pod GNU General Public License. Źródło:[ Jest to narzędzie w pełni darmowe, autorem jest Daniel Diaz, napisane w języku C. Prócz wbudowanego kompilatora, zawiera także interpreter typu(top-level) i debugger. 3.4 CzymjestSWIProlog? SWI-Prolog to również samodzielne darmowe środowisko do programowania w Prologu. Źródło:[ Zawiera edytor i program uru- 5
6 Rysunek 2: Konsola SWI Prolog chomieniowy. Wraz z narzędziem XPCE pozwala na edycje programów w Prologu nie w notatniku, a właśnie w edytorze XPCE, pozwalającym m.in. na kolorowanie składni programu. 6
7 Rysunek 3: Edytor XPCE dla SWI Prolog 4 Prolog w praktyce 4.1 Przykładowa baza:[prolog.pl] 4.2 Wnioskowanie na bazie[prolog.pl] 7
8 8
9 9
10 10
11 5 Prolog w przykładach 5.1 Przykład nr 1: wprowadzenie do Prologu Przykład nr 1: Lubi(Jarek, ryby) Lubi(Jarek, Maria) Lubi(Maria, ksiazka) Lubi(Jan, ksiazka) Lubi(Jan, Francja) Teraz gdybyśmy chcieli wywnioskować z tych faktów czy Jarek lubi pieniadze:? lubi(jarek, pieniadze) Odp Prologu: no? lubi(maria, Jarek) Odp Prologu: no? lubi(jarek, Maria) Odp Prologu: yes Przykład: Lubi(Jan, kwiaty) Lubi(Jan, Maria) Lubi(Pawel, Maria) Teraz gdybyśmy chcieli wywnioskować z tych faktów co lubi Jan? PYTANIE:? lubi(jan, X) 11
12 Odp Prologu: X=kwiaty (zmienna X jest odtąd UKONKRETNIONA!) PYTANIE:? lubi(x, Maria) Odp Prologu: X=Jan; X=Pawel; No; cooznaczazeniemajużwięcejodpowiedzimożliwych! KONIUNKCJE: Przykład: Lubi(Maria, czekolada) Lubi(Maria, wino) Lubi(Jan, wino) Lubi(Jan, Maria) Wówczas: Pytanie:? lubi(jan, Maria), lubi(maria, Jan) Odp Prologu: no; Pytanie:? lubi(maria, X), lubi(jan, X) czyliczyistniejecoścojednocześnielubiąimariaijan Odp Prologu: X=wino; no; REGUŁY: Janlubikażdegoktolubiwino Lubi(Jan, X) : Lubi(X, wino). Jan lubi kobiety, które lubią wino Lubi(Jan, X) : Kobieta(X), Lubi(X, wino). 5.2 Przykład nr 2: Rozkład lotów 2 predykaty są dane: Rejsy(skąd, dokąd, odlot, przylot) (wyraża dostępne loty między miastami USA) Połączenie(skąd, dokąd, odlot, przylot) (znajduje połączenia pośrednie i bezpośrednie, ale na każdą przesiadkę rezerwuje minimum godzinę między przylotem a odlotem.) Dane są: Rejsy(SF, DEN, 930, 1230) Rejsy(SF, DAL, 900, 1430) Rejsy(DEN, CHI, 1500, 1800) Rejsy(DEN, DAL, 1400, 1700) 12
13 Rejsy(DAL, CHI, 1530, 1730) Rejsy(CHI, NY, 1500, 1930) Rejsy(CHI, NY, 1900, 2200) Rejsy(CHI, NY, 1830, 2130) Polaczenie(X, Y, O, P) : rejsy(x, Y, O, P) Polaczenie(X, Y, O, P) : rejsy(x, Z, O, T1), Polaczenie(Z, Y, T2, P), T2>= T Teraz w celu znalezienia połączeń z San Francisco(SF) do Chicago(CHI) zadajemy następujące pytanie:? Polaczenie(SF, CHI, Odlot, Przylot). A prolog odpowiada: Odlot = 930, Przylot = 1800; Odlot = 900, Przylot = 1730; No. NatomiastjeślichcemywyleciećzSFdoNYpogodzinie900,tomożemyznaleźć odpowiednie połączenie zadając pytanie:? polaczenie(sf, NY, Odlot, Przylot), Odlot > 900. Wówczas Prolog odpowie: Odlot = 930, Przylot = 2200; No. 5.3 Przykład nr 3 Windsor W Prolog u zapiszemy to następująco: male( james1). male(charles1). male(charles2). 13
14 male( james2). male(george1). /*female(p)istruewhenpisfemale*/ f emale(catherine). f emale(elizabeth). f emale(sophia). /*parent(c,p)istruewhenchasaparentcalledp*/ parent(charles1, james1). parent(elizabeth, james1). parent(charles2, charles1). parent(catherine, charles1). parent( james2, charles1). parent(sophia, elizabeth). parent(george1, sophia). Teraz możliwe jest zdefiniowanie kilku pytań: WasGeorgeItheparentofCharlesI? parent(charles1, george1). Who was Charles I s parent? parent(charles1, Parent). whowerethechildrenofcharlesi? parent(child, charles1). 5.4 Przykładnr4- student Przypuśćmy, że mamy następujące zdania w języku PROLOG: teaches(dr f red, history).. teaches(dr f red, english).. teaches(dr f red, drama). teaches(dr f iona, physics). studies(alice, english). studies(angus, english). studies(amelia, drama). studies(alex, physics). Roważmy następujące pytania i odpowiedzi na nie:? teaches(dr f red, Course), studies(student, Course). odpowiedź: Course = english Student=alice; Course = english Student=angus; Course = drama Student=amelia; No 14
15 5.5 Przykładnr5- Windsorcd. Rozważmy zdania: born(charles, elizabeth2, philip). born(anne, elizabeth2, philip). born(andrew, elizabeth2, philip). born(edward, elizabeth2, philip). born(diana, f rances, edwardspencer). born(william, diana, charles). born(henry, diana, charles). Rozważmy więc zapytanie:? born(s, elizabeth2, Y)andborn(G, M, S). Jaka będzie odpowiedź? 5.6 Przykładnr6- MetrowLondynie Schemat metra jest zamieszczony na rysunku. Zaś baza zapisana w Prologu wygląda następująco: connected(bond street, ox f ord circus, central). connected(ox f ord circus, tottenham court road, central). connected(bond street, green park, jubilee). connected(green park, charing cross, jubilee). connected(green park, piccadilly circus, piccadilly). connected(piccadilly circus, leicester square, piccadilly). 15
16 connected(green park, ox f ord circus, victoria). connected(ox f ord circus, piccadilly circus, bakerloo). connected(piccadilly circus, charing cross, bakerloo). connected(tottenham court road, leicester square, northern). connected(leicester square, charing cross, northern). nearby(bond street, ox f ord circus). nearby(ox f ord circus, tottenham court road). nearby(bond street, tottenham court road). nearby(bond street, green park). nearby(green park, charing cross). nearby(bond street, charing cross). nearby(green park, piccadilly circus). nearby(piccadilly circus, leicester square). nearby(green park, leicester square). nearby(green park, ox f ord circus). nearby(ox f ord circus, piccadilly circus). nearby(piccadilly circus, charing cross). nearby(ox f ord circus, charing cross). nearby(tottenham court road, leicester square). nearby(leicester square, charing cross). nearby(tottenham court road, charing cross). Wykonaj teraz zapytania:? nearby(tottenham court road, W) oraz? connected(tottenham court road, W, L). Czy zapisy: nearby(x, Y) : connected(x, Y, L). nearby(x, Y) : connected(x, Z, L), connected(z, Y, L). dokładnie odpowiadają zawartości całej bazy? 5.7 Ćwiczenia Załóżmy, że przykładowa baza wygląda następująco: incumbent(cspro f essor, davis). incumbent(cspro f essor, rowe). incumbent(cspro f essor, wu). incumbent(cspro f essor, zyda). incumbent(cschairman, lum). incumbent(dean ips, marshall). incumbent(provost, shrady). 16
17 incumbent(superintendent, shumaker). incumbent(director milops, bley). bossed by(cspro f essor, cschairman). bossed by(cschairman, dean ips). bossed by(orchairman, dean ips). bossed by(dean ips, provost). bossed by(provost, superintendent). bossed by(director milops, superintendent). gdzie incumbent oznacza, że osoba będąca drugim argumentem ma pracę opisaną jako pierwzy argument. bossed by zaś oznacza, że szefem(boss) osoby będącej pierwszym argumentem, jest osoba będąca drugiem argumentem. predicate meansthatthebossofthefirstargumentisthesecondargument. Sformułuj poniższe pytania w języku angielskim:? bossed by(cspro f essor, X), bossed by(x, Y).? bossed by(x, Y), incumbent(x, rowe), incumbent(y, Z).? incumbent(dean ip, X); incumbent(dean ips, X).? incumbent(j, P), (bossed by(j, provost); bossed by(j, dean ips)).? bossed by(p, superintendent), not(incumbent(p, shrady)). 17
18 6 Dodatki 6.1 Wybórregułifaktów-kolejnośćregułifaktówwbazie Reguły mogą być składowymi bazy Prologowej tak samo jak fakty. Wówczas interpreter wykorzystuje zarówno reguły jak i fakty do odpowiedzi na pytania. Ważna jest jednak kolejność(porządek) obu tych zbiorów. Aby to uzasadnić, rozważmy kilka różnych kombinacji metod rozumowania(wnioskowania) dla tej samej reguły, trzema różnymi drogami ustalającymi kolor czegoś: color object(x, C) : color(x, C); (part o f (X, Y), color(y, C)); (part o f (X, Y), part o f (Y, Z), color(z, C)). Oczywiście nie jest problemem zajęcie przez dane pytanie czy regułę więcej niż jednej linii zapisu. Długie zapisy są jednak mało czytelne, dlatego też dla złożnych reguł lepiej jest stosować kilka oddzielnych reguł(3) z taką samą formą lewej ich strony: color object(x, C) : color(x, C). color object(x, C) : part o f (X, Y), color(y, C). color object(x, C) : part o f (X, Y), part o f (Y, Z), color(z, C).Terazprawastronakażdej reguły(tzw. warunki, przesłanki reguły) przedstawie odpowiednie warunkidotegoabylewastronaregułyzostałauznanazaprawdziwą.każdazreguł przedstawia inną drogę ustalenia koloru jakiegoś obiektu, ale nie wszystkie reguły muszą być spełnione. Innymi słowy: nie dla wszystkich przypadków color object musi być zostać pokryte faktami w bazie. Oczywiście ma znaczenie kolejność tych regył względem siebie. Zawsze, gdy pytanie dotyczące predykatu color object z dwoma argumentami zostanie zadane, reguły będą usiłowały odpowiedzieć na pytanie, przeszukując kolejno bazę. Porządek przedstawiony tutaj zdaje się być optymalnym, gdyż jako pierwsza zostanie uaktywniona najprostsza reguła, potem dopiero kolejne, bardziej złożone. Oczywiście fakty powinny być umieszczone w bazie przez regułami. Dzieje się tak dlatego, iż fakty zwykle wymagają mniej zadania dopasowywania niż reguły. 6.2 Nawroty w regułach Nawroty są stosowane zawsze wtedy, gdy następuje próba dopasowania poszczególnych wyrażeń w bazie do pytania. Jeśli predykat w pytaniu ma regułę, wówczas interpreter zachowuje się tak, jakby prawa strona definicji była wprowadzona jak część pytania zamiast pojedynczego predykatu z lewej strony. Stosowanie nawrotów oznacza powtórne wykonywanie tych samych reguł. Jest to proces trudny w wykonniu, gdyż wiąże się z wielokrotnym przesuwaniem w lewą lubprawąstronędowodu.częstoteżpowodujeskokiwdółlubgórędrzewawywodu. To jest niewątpliwie spory problem w sensie mocy obliczeniowej takich języków jak Prolog. Rozważmy jednak następujący przykład: Zakładając, że mamy dwa rodzaje faktów dotyczących organizacji: wydział zatrudnianiający pracowników, i zarządzający tym wydziałem. Załóżmy, że definujemyszefaużywającdwóchargumentów: Boraz E,któremówią,że Bjest szefem Ejeśli Bzarządzawydziałem Dwktórym Ejestzatrudniony. Dbędzie 18
19 zmienną lokalną. Zakładamy też, że Tom pracuje w wydziale sprzedaży, Harry w wydziale produkcji, zaś Dick zarządza wydziałem sprzedaży a Mary zarządza wydziałem produkcji. Wówczas w baza w Prologu ujmującą tą wiedzę wyglądałaby następująco: department(tom, sales). department(harry, production). manager(dick, sales). manager(mary, production). boss(b, E) : department(e, D), manager(b, D). Teraz, załóżmy, że chcemy znaleźć szefa innego niż Tom. Stworzymy więc pytaniezezmienną X:? boss(x, Y), not(boss(x, tom)). Jak widać, nie ma faktów w bazie pasujących wprost do pytania. Jest natomiast reguła. Należy zatem znaleźć dopasowanie pierwszego wyrażenie prawej strony reguły: department(e, D). Pasujetodopierwszęgofaktu,przezco E=tomiD=sales.Teraz,przesuwając się do drugiego wyrażenia w regule: manager(b, D), interpreter znajdzie dopasowanie trzeciego faktu w bazie: B = dick, przez co cała reguła zostanie pomyślnie uaktywniona, i pierwsze wyrażenie w pytaniu zostanie spełnione, przez co uzyskamyodpowiedzi:x=dickiy=tom. Teraz, przesuwając się do drugiego(ostatniego) wyrażenia w pytaniu: not(boss(x, tom)), interpreter próbuje sprawdzić, czy Dick jest szefem(boss) Toma. Nie ma jednak żadnych zapisów tego dotyczących więc następuje powrót do reguły. Ponownie, oba predykaty prawej strony reguły mogę być dopasowywane do faktów, przez co reguła zostanie uaktywniona. Ale warunek w pytaniu oryginalnym jest negacją(zaprzeczeniem) tego, przez co druga część oryginalnego pytania zawodzi(kończy się porażką), i interpreter wraca do pierwszego wyrażenia. Nawroty kończą się sukcesem tylko wtedy, gdy poprzednio znaleziono jakieś nowe dopasowania. Skoro więc nie dodano żadnego nowego szefa w dziale sprzedaży, muisimy więc wrócić do pierwszej części reguły: department(e, D) z nie zadanymi BiE. Naszczęściemamyinnywybór: E=harryiD=production. Teraz interpreter może powtórnie uruchomić prawą stronę reguły. Polegać to będzie na ponownym rozważaniu reguły. Teraz możemy znaleźć dopasowanieb = mary(pamiętając że teraz D = production). Reguła zostanie uaktywniona, a pierwszewyrażeniewyprowadzi: X=maryiY=harry. W drugiej części pytania, musimy sprawdzić, czy nieprawdą jest, że Mary jest szefem Toma? Aby tego dokonać, musimy próbować sprawdzić, czy prawdziwa jest reguła boss dla B = mary i Toma jako drugiego argumentu. Z pierwszej częsci prawej strony reguły, możemy wywnioskować, że mozna dopasować D do sprzedaży, ale nie ma faktu, że Mary zarządza tym działem. Dlatego reguła zakończy sięporażką,ażeniemawięcejregułna boss,całydowódzakończysięporażką. Jednak odkąd mamy negację z przodu wyrażenia, całe pytanie pasuje, więc: X = mary jest odpowiedzią, której szukaliśmy. 19
20 6.3 Przechodniość wnioskowań Formy pewnych reguł szczególnie często pojawiają się w sztucznej inteligencji. Bardzo ważną formę określa pzechodniość predykatów dwuargumentowych. Dla przykładu rozważmy przykład szefów w organizacji. Jeśli Twój szef ma szefa kolejnego, ten duży szef jest również Twoim szefem. Jeśli i ten szef ma jakiegoś szefa, to nawet ten jest po części i Twoim szefem. Stąd relacja szefostwa tworzy łańcuchy, i to nazywamy właśnie przechodniością. Formalnie, predykat relacji r jest przechodni jeśli następująca reguła jest poprawna: r(x, Y) : r(x, Z), r(z, Y). Oznaczatomniejwięcej,żejeślipredykat rdziałaodjakiegoś Xdojakiegoś Z,i również od Z do jakiegoś Y, wówczas mówimy, że predykat ten również przechodzi od jakiegoś X do Y. Można tej reguły używać również rekurencyjnie, również dla reguł a nie tylko faktów. Dla przykładu, rozważmy fakty przed regułami w bazie Prolog: r(a, b). r(b, c). r(c, d). Teraz, jeśli zadamy następujące pytanie:? r(a, d), na które nie ma dopasowania, interpreter użyje reguł, i najpierw zapyta:? r(a, Z). Teraz, Z pasuje do b w pierwszym fakcie. Interpreter zapyta więc kolejno:? r(b, d). Na to nie ma niestety żadnego dopasowania, stąd reguła musi być użyta powtórnie.dlanowegowywołaniareguły: X=biY=d,zatemkolejnepytanie będzie miało formę:? r(b, Z). To nowe Z różni się od poprzedniego Z, odkąd każda powtórne wywołanie posiada własne zmienne. Teraz interpreter potrafi dopasować Z do c ponieważ istnieje fakt r(b, c),iterazdrugaczęśćregułystajesiępytaniem:? r(c, d). To jest fakt w bazie. Stąd reguła została pomyślnie uaktywniona i dowiodła r(b, d)-awięcoryginalnepytanie.wielerelacjijestprzechodnich: a kind o f, part o f, right o f.przykłady: IftheVinsonisakindofcarrier,andthecarrierisakindofship,then thevinsonisakindofship. Iftheelectricalsystemispartofthecar,andthebatteryispartofthe electrical system, then the battery is part of the car. IftheVinsonisnorthoftheEnterprise,andtheEnterpriseisnorthofthe Kennedy, then the Vinson is north of the Kennedy. IfduringthedayMondayyouhadameetingwithyourboss,andduring themeetingyoufoundoutyougotpromoted,thenduringthedaymonday 20
21 you found out you got promoted. IfanumberXisgreaterthananumberY,andYisgreaterthananumber Z,thenXisgreaterthanZ Ćwiczenia: klocki Rozważmy przykład faktów dotyczących sterty klocków na stole. Klocek jest nad innymklockiemjeślinanimspoczywa.klocek bjestnadklockiem aaklocek c nad klockiem b, zaś klocek d nad klockiem c. Przez relację przechodniości powiemy,żeklocek djestnadklockiem a. 6.4 Dziedziczenie wnioskowań Dziedziczenie jest jeszcze bardziej istotne niż przechodniość. Rozważmy przykład organizacji biurokratycznej. Jeśli ma ona tylko jeden adres biura, jest to wówczas adres wszystkich zatrudnionych w tym biurze. Nie ma więc sensu dla komputera trzymanie oddzielnie adresów(faktów o adresie) dla każdego pracownika. Zamiast tego bardziej wskazane jest pamiętanie jednego adresu z nazwą organizacji. Teraz adres dziedziczony jest z organizacji na pracowników. Dziedzicznie zawsze wymaga dwóch predykatów, właściwości i relacji. Formalnie powiemy, że właściwość predykatu p dziedziczy w odniesieniu do relacji predykatu r jeśli ta reguła jest poprawna: p(x, Value) : r(x, Y), p(y, Value). Zatem, potrafimy wykazać, że właściwość p dla obiektu X posiada wartość Value jeślipotrafimywykazać,że YjestzwiązanyzXpredykatem r,i,że Yposiada wartość Value dla właściwości p. To uogólnia regułę dla predykatu color object Ćwiczenia: drzewo genealogiczne Napisz reguły dla wnioskowania o geneologii czy drzewie rodzinnym. Załóżmy, że genealogia jest prezentowana za pomocą faktów w jednej z czterech form: child(< name o f f ather>,< name o f mother>,< name o f child>,< sex>). Zdefiniuj następujące predykaty: f ather(x, Y),znaczy,że Xjestojcem Y mother(x, Y),znaczy,że Xjestmatką Y son(x, Y),znaczy,że Xjestemsynem Y grand f ather(x, Y),znaczy,że Xjestdziadkiem Y sister(x, Y),znaczy,że Xjestsiostrą Y uncle(x, Y),znaczy,że Xjestwujkiem Y ancestor(x, Y),znaczy,że Xjestprzodkiem Y hal f sister(x, Y),znaczy,że Xjestsiostrąprzyrodnią Y 21
22 7 Literatura Pawlak Z.,(1983) Information Systems- theoretical foundations[polish], WNT, W-wa. Pogorzelski W.A.,(1973), Klasyczny rachunek zdan. Zarys teorii, PWN, Warszawa, Poland Cholewa W., Pedrycz W.,(1987), Systemy doradcze, skrypt Politechniki Śląskiej nr 1447, Gliwice, Poland Cichosz P.,(2001), Systemy uczące się, WNT,Warszawa, Poland Grzegorczyk A.,(1969), Zarys logiki matematycznej, PWN, Warszawa, Poland Paprzycka K., Samouczek logiki zdań i logiki kwantyfikatorów- dostępny na stronie: Nilsson U., Małuszyński J.,(2000), Logic, programming and Prolog(2ED), ulfni/lpp Flach P.,(1994), University of Bristol, United KingdomSimply Logical- Intelligent Reasoning by Example 22
Prolog - Programming In Logic
Dodatek do rachunku zdań i predykatów Instytut Informatyki, Uniwersytet Śląski, ul. Będzinska 39, Sosnowiec, Polska Tel (32) 2 918 381, Fax (32) 2 918 283 Wykład IVa Należy do klasy języków deklaratywnych,
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,
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
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
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
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,
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
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 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
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
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
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ć.
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. Programmation en Logique. Michał Bereta
PROLOG Programmation en Logique Michał Bereta Programmation en Logique Stworzony w 1971 roku przez Alaina Colmeraurera i Phillipe'a Roussela na Uniwersytecie w Marsylii Podczas pracy nad zastosowaniem
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
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
Systemy ekspertowe. Wnioskowanie w systemach regułowych. Część piąta. Autor Roman Simiński.
Część piąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa.
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 α, β,
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
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
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
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
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
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.
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 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
Logika stosowana. Ćwiczenia Programowanie w logice i PROLOG. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski
Logika stosowana Ćwiczenia Programowanie w logice i PROLOG Marcin Szczuka Instytut Informatyki, Uniwersytet Warszawski Wykład monograficzny w semestrze letnim 2018/2019 Marcin Szczuka (MIMUW) Logika stosowana
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
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
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
Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń
Elementy logiki Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń 1 Klasyczny Rachunek Zdań 1.1 Spójniki logiczne Zdaniem w sensie logicznym nazywamy wyrażenie, które jest
Rachunek zdań i predykatów
Rachunek zdań i predykatów Agnieszka Nowak 14 czerwca 2008 1 Rachunek zdań Do nauczenia :! 1. ((p q) p) q - reguła odrywania RO 2. reguła modus tollens MT: ((p q) q) p ((p q) q) p (( p q) q) p (( p q)
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
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
Hoare Advanced Homework Assistant
Aleksy Schubert 1 Tadeusz Sznuk 2 1 alx@mimuw.edu.pl 2 tsznuk@mimuw.edu.pl 3 października 2013 Cele projektu Cel Przeniesienie nauczania semantyki na wydziale w XXI wiek. Na początek chcemy się skupić
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
Instrukcje dla zawodników
Płock, 17 marca 2018 r. Instrukcje dla zawodników Arkusze otwieramy na wyraźne polecenie komisji. Wszystkie poniższe instrukcje zostaną odczytane i wyjaśnione. 1. Arkusz składa się z 3 zadań. 2. Każde
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
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
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:
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
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,
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
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
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
Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie
Logika Matematyczna. Zadania Egzaminacyjne, 2007
Logika Matematyczna Zadania Egzaminacyjne, 2007 I Rok Językoznawstwa i Informacji Naukowej UAM Jerzy Pogonowski Zakład Logiki Stosowanej UAM www.logic.amu.edu.pl Podajemy rozwiązania zadań egzaminacyjnych.
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
Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW
Logika Stosowana Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta Marcin Szczuka Instytut Informatyki UW Wykład monograficzny, semestr letni 2016/2017 Marcin Szczuka (MIMUW) Logika
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
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
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
Metoda Karnaugh. B A BC A
Metoda Karnaugh. Powszechnie uważa się, iż układ o mniejszej liczbie elementów jest tańszy i bardziej niezawodny, a spośród dwóch układów o takiej samej liczbie elementów logicznych lepszy jest ten, który
Wykład 1. Informatyka Stosowana. 3 października Informatyka Stosowana Wykład 1 3 października / 26
Wykład 1 Informatyka Stosowana 3 października 2016 Informatyka Stosowana Wykład 1 3 października 2016 1 / 26 Wykłady : 45h (w semestrze zimowym) ( Egzamin) 30h (w semetrze letnim ) ( Egzamin) Zajęcia praktyczne:
Programowanie w języku C++ Grażyna Koba
Programowanie w języku C++ 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 zasad
Java pierwszy program w Eclipse «Grzegorz Góralski strona własna
Strona 1 z 9 «Przykładowe zadania do cz. III ćwiczeń z genetyki Java pierwsze kroki w programowaniu (01)» Kategoria: java, Tagi: eclipse - java - programowanie. Autor: Grzegorz, napisał dnia: February
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ę
Indukcja matematyczna
Indukcja matematyczna 1 Zasada indukcji Rozpatrzmy najpierw następujący przykład. Przykład 1 Oblicz sumę 1 + + 5 +... + (n 1). Dyskusja. Widzimy że dla n = 1 ostatnim składnikiem powyższej sumy jest n
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
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
PRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Kierunek: Informatyka Rodzaj przedmiotu: obowiązkowy w ramach treści kierunkowych, moduł kierunkowy oólny Rodzaj zajęć: wykład, laboratorium I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK
JEZYKOZNAWSTWO. I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 11 czerwca Imię i Nazwisko:... FIGLARNE POZNANIANKI
JEZYKOZNAWSTWO I NAUKI O INFORMACJI, ROK I Logika Matematyczna: egzamin pisemny 11 czerwca 2012 Imię i Nazwisko:........................................................... FIGLARNE POZNANIANKI Wybierz
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,
Lekcja 3: Elementy logiki - Rachunek zdań
Lekcja 3: Elementy logiki - Rachunek zdań S. Hoa Nguyen 1 Materiał a) Zdanie proste, złożone b) Spójniki logiczne (funktory zdaniotwórcze):,,,,, (alternatywa wykluczająca - XOR). c) Tautologia, zdanie
Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym
S t r o n a 1 Bożena Ignatowska Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym Wprowadzenie W artykule zostaną omówione zagadnienia związane z wykorzystaniem funkcji tekstowych w arkuszu
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
LOGIKA Klasyczny Rachunek Zdań
LOGIKA Klasyczny Rachunek Zdań Robert Trypuz trypuz@kul.pl 5 listopada 2013 Robert Trypuz (trypuz@kul.pl) Klasyczny Rachunek Zdań 5 listopada 2013 1 / 24 PLAN WYKŁADU 1 Alfabet i formuła KRZ 2 Zrozumieć
Podstawowe Pojęcia. Semantyczne KRZ
Logika Matematyczna: Podstawowe Pojęcia Semantyczne KRZ I rok Językoznawstwa i Informacji Naukowej UAM 2006-2007 Jerzy Pogonowski Zakład Logiki Stosowanej UAM http://www.logic.amu.edu.pl Dodatek: ściąga
Metoda 5-WHY. Metoda 5-WHY. Wydanie 1. Zbigniew Huber. Maj 2006. Artykuł dostępny na stronie autora: http://www.huber.pl.
Metoda 5-WHY Wydanie 1 Zbigniew Huber Maj 2006 Artykuł dostępny na stronie autora: http://www.huber.pl Copyright by Zbigniew Huber Strona 1 z 6 Wstęp Rozwiązanie jakiegoś problemu i wprowadzenie skutecznego
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
Dalszy ciąg rachunku zdań
Dalszy ciąg rachunku zdań Wszystkie możliwe funktory jednoargumentowe p f 1 f 2 f 3 f 4 0 0 0 1 1 1 0 1 0 1 Wszystkie możliwe funktory dwuargumentowe p q f 1 f 2 f 3 f 4 f 5 f 6 f 7 f 8 f 9 f 10 f 11 f
Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie:
Ciągi rekurencyjne Zadanie 1 Znaleźć wzór ogólny i zbadać istnienie granicy ciągu określonego rekurencyjnie: w dwóch przypadkach: dla i, oraz dla i. Wskazówka Należy poszukiwać rozwiązania w postaci, gdzie
Technologie baz danych
Plan wykładu Technologie baz danych Wykład 2: Relacyjny model danych - zależności funkcyjne. SQL - podstawy Definicja zależności funkcyjnych Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów
Projekt Śnieżna wojna
Nazwa implementacji: Stworzenie gry "Śnieżna wojna" Autor: mdemski Opis implementacji: Scenariusz gry "Śnieżna wojna" oraz implementacja w Scratch 2.0. Wersja podstawowa i propozycja rozbudowy gry dla
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).
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
Podstawy programowania funkcjonalnego
Podstawy programowania funkcjonalnego haskell.mariuszrozycki.pl Mariusz Różycki Churchill College, University of Cambridge rev. 2014.03.27.1 Wprowadzenie Materiały haskell.mariuszrozycki.pl Slajdy (w tym
SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel
SQL, LIKE, IN, CASE, EXISTS Marcin Orchel Spis treści 1 LIKE 2 2 BETWEEN 4 3 IN 5 4 EXISTS 6 5 WYRAŻENIA CASE 7 6 Zadania 9 1 Rozdział 1 LIKE Predykat LIKE jest testem dopasowującym wzorzec łańcucha. Składnia
Kopiowanie, przenoszenie plików i folderów
Kopiowanie, przenoszenie plików i folderów Pliki i foldery znajdujące się na dysku można kopiować lub przenosić zarówno w ramach jednego dysku jak i między różnymi nośnikami (np. pendrive, karta pamięci,
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.
Zmienne powłoki Zmienne powłoki (shell variables) to tymczasowe zmienne, które mogą przechowywać wartości liczbowe lub ciągi znaków. Związane są z powłoką, Przypisania wartości do zmiennej następuje poprzez
WYBUCHAJĄCE KROPKI ROZDZIAŁ 1 MASZYNY
WYBUCHAJĄCE KROPKI ROZDZIAŁ 1 MASZYNY Witaj w podróży. Jest to podróż matematyczna oparta na historii mojej, Jamesa, która jednak nie wydarzyła się naprawdę. Kiedy byłem dzieckiem, wynalazłem maszynę -
Elementy Teorii Obliczeń
Wykład 2 Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 stycznia 2009 Maszyna Turinga uwagi wstępne Maszyna Turinga (1936 r.) to jedno z najpiękniejszych i najbardziej intrygujacych
SZTUCZNA INTELIGENCJA
SZTUCZNA INTELIGENCJA WYKŁAD 10. WNIOSKOWANIE W LOGICE ROZMYTEJ Częstochowa 2014 Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska WNIOSKOWANIE W LOGICE DWUWARTOŚCIOWEJ W logice
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
Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
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
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Jak logik przewozi kozę przez rzekę?
Jak logik przewozi kozę przez rzekę? 1. Koza i kapusta 1.1. Problem Na lewym brzegu rzeki, na przystani promowej, znajdują się: chłop, koza i kapusta. Prom jest samoobsługowy (może obsługiwać go tylko
Logika intuicjonistyczna
Logika intuicjonistyczna Logika klasyczna oparta jest na pojęciu wartości logicznej zdania. Poprawnie zbudowane i jednoznaczne stwierdzenie jest w tej logice klasyfikowane jako prawdziwe lub fałszywe.
Java Developers Day. Silniki reguł biznesowych
Java Developers Day Silniki reguł biznesowych Mariusz Kaczor mariusz.kaczor@altkom.pl Łukasz Szandecki lukasz.szandecki@altkom.pl slide 1 Agenda Mamy problem.. Programowanie deklaratywne Drools przykład
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 ;
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
Laboratorium 1 (ZIP): Style
Wojciech Myszka Laboratorium 1 (ZIP): Style Spis treści 1. Wstęp............................................. 1 1.1. Cel laboratorium.................................... 1 1.2. Wymagania.......................................
Notacja. - operator implikacji, - operator koniunkcji v operator alternatywy - operator równoważności ~ operator negacji Duża litera (np.
Systemy ekspertowe Notacja - operator implikacji, - operator koniunkcji v operator alternatywy - operator równoważności ~ operator negacji Duża litera (np. A) - fakt Klauzula Horna Klauzula Horna mówi,
Języki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
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ą
Programowanie w CLIPS
Programowanie w CLIPS CLIPS - środowisko open source do tworzenia systemów ekspertowych. Stworzone w NASA - Johnson Space Center. System ekspertowy - jest to program lub zestaw programów komputerowych
Obliczenia iteracyjne
Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej
Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych
Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych ELEMENTY SZTUCZNEJ INTELIGENCJI Laboratorium nr 6 SYSTEMY ROZMYTE TYPU MAMDANIEGO