Presentation laddar. Vänta.

Presentation laddar. Vänta.

Föreläsning 15 Logik med tillämpningar 97-12-12. Innehåll u Programmeringsstil i Prolog u Expertsystem u Att kunna inför tentan u Kapitel 13 och 14.3.

Liknande presentationer


En presentation över ämnet: "Föreläsning 15 Logik med tillämpningar 97-12-12. Innehåll u Programmeringsstil i Prolog u Expertsystem u Att kunna inför tentan u Kapitel 13 och 14.3."— Presentationens avskrift:

1 Föreläsning 15 Logik med tillämpningar

2 Innehåll u Programmeringsstil i Prolog u Expertsystem u Att kunna inför tentan u Kapitel 13 och 14.3 i Sterling/Shapiro.

3 Hur ska man skriva program i Prolog?  Man skriver klausuler på formen sort(Xs, Ys) :- permutation(Xs, Ys), ordered(Ys). u Dvs, man skriver både klausulens huvud och samtliga delmål på egen rad. Delmålen indenteras till exempel med en tab.

4 u Man brukar normalt hålla samman definitionen av ett predikat; dvs, man skriver alla klausuler som definierar ett predikat efter varandra: u permutation([], []). permutation([X|Xs], Ys) :- permutation(Xs, Zs), insert(X, Zs, Ys). Programstil forts.

5 Anonyma variabler u De flesta prologsystem tillåter att man ersätter de variabler som förekommer endast en gång i en regel med en anonym variabel, för att understryka de variabler som är relevanta vid unifieringen. u member(X,[X | Xs]). member(X,[Y | Ys]) :- member(X,Ys). u member(X,[X | _]). member(X,[_ | Ys]) :- member(X,Ys).

6 Kommentarer u Alltid viktigt att kommentera koden! u Allt som står mellan % och radslut är en kommentar. Allt som står mellan /* och */ (inklusive radslut) är en kommentar. u Det är inte alltid nödvändigt att tala om hur en procedur fungerar, men man ska alltid tala om vad samtliga predikat i ett program gör. u Detta görs lämpligen på raden innan definitionen av relationen.

7 Läsbarheten hos ett program u Beror på layout och namn på variabler. u Predikatnamnen beskriver relationer mellan objekt i programmet. u Man har standardardiserade variabelnamn tex Xs, Ys etc för listor och X, Y för element. u ett_predikat och EnVariabel - man visar på två ord på olika sätt för predikat och variabler. u Det viktigaste är att man är konsekvent!

8 setof och bagof u Alla lösningar till en fråga kan samlas i en lista med hjälp av setof eller bagof. Skillnaden är att setof tar bort duplikat medan bagof verkligen ger alla lösningar. u setof(X,member(X,[a,b,d,a,e,b,c],Y). Y= [a,b,c,d,e] u bagof(X,member(X,[a,b,d,a,e,b,c],Y). X=_0, Y= [a,b,d,a,e,b,c]

9 Egna operatorer u Egna operatorer kan definieras med op. op tar tre argument, ett precedensvärde, operatorns associativ- itet samt operatornamnet. u Exempel:op(200, xfy, ^) u Precedensvärdet måste vara mellan 0 och (systemberoende). Associativiteten specificeras som en av fx, fy prefixoperator xf, yf postfixoperator xfx, xfy, yfx, yfy infixoperator

10 Egna operatorer forts. u Nuvarande precedens och associativitet kan efterfrågas med current_op. Varför inte prova lista alla op:ar med u bagof((X,Y,Z),current_op(X,Y,Z),Ls).

11 Systematiskt programmerande? u Kan vara enklare att programmera om man utgår från en skelettkod som byggs ut.  list([X|Xs]) :- list(Xs). list([]).  Kan byggas ut till: length([X|Xs], N) :- length(Xs, N1), N is N1+1. length([], 0).

12 Expertsystem u Ska härma en mänsklig expert och fatta de beslut hon skulle ha gjort. u Kan likna ett expertsystem med en svart låda. Vi skickar in ett antal input och vill få ett (eller flera) svar. u Hur fyller man lådan på bästa sätt? Logiska regelbaser, fuzzy logik, artificiella neurala nätverk, statistiska formler m.m. u En tillämpning inom AI - Artificiell Intelligens.

13 Några andra tillämpningar inom AI u Behandling av naturligt språk u Teorembevisning u Robotar u Automatisk programmering u Kombinatoriska och schemaläggnings problem u Perception - syn, hörsel etc

14 Eliza u En utmaning: Kan man programmera en dator så att den beter sig som en människa? eller Kan man se skillnad på en dators konversation och en människas? u Joseph Weizenbaum skrev ett program som skulle härma en psykoterapeuts sätt att närma sig en patient.

15 Eliza u Referens: Weizenbaum: ”Eliza - A computer program for the study of natural langauage communication between man and machine.” Communications of the ACM, Volym 9, Nummer 1, Januari u Finns implementerad i Emacs som kommandot ”doctor”

16 Exempel på dialog: I am unhappy. How long have you been unhappy? Six months. Can you help me? What makes you think I can help you? You remind me of my father and brother. Please tell me more about father …

17 Hur fungerar Eliza? u Matcha det som ges som input mot ett mönster som bildar ett standardsvar. Ex. I am (*). How long have you been (*)? I like (*). Does anyone else in your family like (*)? (*) you (**) me. What makes you think I (**) you? u Finns som Prolog-program sidan 275 i Shapiro.

18 Att kunna inför tentan u Följande kapitel ingår: –Ben-Ari: 1, , , , –Sterling-Shapiro: 1 - 3, , , 12.1, , 13, 14.1, 14.3

19 u Samtliga definitioner, speciellt viktiga är –Tolkning (interpretation) –Logisk ekvivalens –Satisfierbarhet, validitet, falsifierbarhet, motsägelse, tautologi –Beslutsprocedur –Satisfierbar mängd, modell –Logisk konsekvens –Teori, teorem, axiom –Atom, literal, kompletterande par –Sundhet och fullständighet –Gentzen och Hilbertsystem (dvs kunna beskriva dem inte bevisa i dem) Bevis, bevisbarhet –CNF, PCNF

20 u Definitioner forts. –Klausul, klausulform, klausulmängd, enhetsklausul –S  S’, subsumering –Tomma klausulen –Resolutionsproceduren –Relation, predikat, kvantifierare, funktioner, termer, stängda termer –Substitution –Fria och bundna variabler, universell och existensiell closure –Instansiering –Herbranduniversum, herbrandtolkning, herbrandbas, herbrandmodell –Grund term, grund klausul, grund literal, grund atom, horn klausuler

21 u Definitioner forts, –Mgu –Fakta, regler, mål (fråga), program –Meningen med ett logikprogram –Korrekt program, fullständigt program –Databas, rekursiva regler –Lista, träd –Negation as failure, closed world assumption, not i Prolog –Backtracking –Redundanta lösningar –=, ==, =:=, is, =/=, \==, = =, etc –typredikaten integer, atom, compound, constant, symbol, list –målordning, regelordning och hur det påverkar körningen av programmet

22 u Förstå samtliga teorem och deras bevis, speciellt: –Sambandet mellan  och  –Sammanhanget mellan validitet och osatisfierbarhet och mellan satisfierbarhet och falsifierbarhet –Teoremen sidan –Sambandet mellan  och  –De fyra lemmana som beskriver hur man minskar en klausulmängd så att S  S’ –E(  ) = (E  )  –  (  ) = (  )

23 u Boolska operatorer och deras sanningsvärden. u Använda sanningstabeller u Skriva om en formel med hjälp av logiska ekvivalenser (bl. a. fig 2.9 och fig 3.2) u Semantiska tablåer för sats- och predikatlogik u Veta vad en refuteringsmetod är u Omvandla en godtycklig formel till CNF, PCNF eller klausulform u Minska en klausulmängd S så att S  S’ u Utföra resolution u Kunna se på en formel vad som är variabler, konstanter, funktioner och predikat. u Utföra substitution, unifiering u Robinsons unifieringsalgoritm

24 u Standardisera isär variabler u SLD-resolution u Förklara vilka skillnader som finns mellan logikprogrammering i teorin och Prolog u Kunna tolka ett Prologprogram procedurellt och deklarativt (och veta skillnaden mellan detta!) u Kunna bygga ett sökträd för ett logikprogram u Följa konventionen när man programmerar i Prolog u Programmera i Prolog… u Veta vad som menas med rekursiva och iterativa program i Prolog u Skriva om ett rekursivt program till ett iterativt eller tvärtom. u functor/3, arg/3, =../2, var, nonvar u !, röda och gröna cut


Ladda ner ppt "Föreläsning 15 Logik med tillämpningar 97-12-12. Innehåll u Programmeringsstil i Prolog u Expertsystem u Att kunna inför tentan u Kapitel 13 och 14.3."

Liknande presentationer


Google-annonser