2015-06-29 1 Logikprogrammering ons 4/9 Rebecca Jonson.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Snabbguide och tips.
BAS-M Hur du på ett enkelt sätt administrerar din båtklubbs register.
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Talföljder formler och summor
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Gymnasiearbetet Tekniker och resurser för informationssökning
En genomgång av spelet: Dubbelkrig-Grön
Välkommen till internet för nybörjare
PowerPoint av Bendik S. Søvegjarto Koncept, text och regler av Skage Hansen.
Golv, väggar, tak. fönster och en dörr
hej och välkomna EKVATIONER Ta reda på det okända talet.
Datavetenskapens roll. Datavetenskap •Vad är datavetenskapens roll i kognitionsvetenskapen?
Funktioner och programorganisation
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
2D1311 Programmeringsteknik med PBL
Prolog, Mån 16/9 Rebecca Jonson.
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
Logikprogrammering Ons, 25/9
Dcg-notation 21.2 G 2.3 M (BBS 8). dagens föreläsning extra argument i dcg-notation prolog-anrop i dcg-notation avslutande kommentarer om dcg.
Insändare Struktur och respons.
Att programmera i språket Java
Introduktion Logikprogrammering HT-02 Staffan Larsson.
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Grundläggande programmering
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 7: Cut och negation (kap. 10) Teori –Förklarar hur man kontrollerar Prologs backtracking-beteende.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Föreläsning 3: rekursion Teori –Introducera rekursiva definitioner i Prolog –Fyra exempel –Visa att.
Prolog PROgramming LOGic (programmation en logique)
Relationer skapas, upprätthålls och avbryts genom tal
Programmering B PHP Lektion 2
Programmering B PHP Lektion 3
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Programmering B PHP Lektion 2
Logikprogrammering och Prolog
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Om konsten att bedöma trovärdigheten hos det du ser, hör och läser
Tabeller.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
En mycket vanlig frågeställning gäller om två storheter har ett samband eller inte, många gånger är det helt klart: y x För en mätserie som denna är det.
Logikprogrammering 21/10 Binära träd
En guide för arbeten i SO
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Logik med tillämpningar
Logikprogrammering 16/ : operatorer Staffan Larsson.
Labgrupper: 2 pers/grupp fr o m lab 2 schema ENKÄT.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz Logikprogrammering –Undervisningsmaterialet NYTT för 2013: –Learn Prolog Now! –SWI Prolog-tolk, startas.
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
Aritmetik 3.4 M 8.2 E 2.2. dagens föreläsning operatorer för aritmetik tillämpningar.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
1 Föreläsning 8 Mer om klasser och objektorientering.
Föreläsning 13 Logik med tillämpningar Innehåll u Aritmetik i Prolog u Rekursiva och iterativa program u Typpredikat u Metalogiska predikat.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
Program. Symboliska samband Symboliska beteenden Matematisk kausalitet (orsak – verkan) 2x = y, y = x^2, y = kx + l.
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
KPP053, HT2015 MATLAB, Föreläsning 4
Python.
Föreläsning 16: Tentan, att förbereda sig…
Presentationens avskrift:

Logikprogrammering ons 4/9 Rebecca Jonson

Repetition mån 2/9 Procedurella/Imperativa vs. Deklarativa språk Procedurella: HUR problemet ska lösas –Java, C++, Pascal etc. Deklarativa: VAD problemet är, datorn bestämmer hur det ska lösa Prolog (Programming in Logic), Universitetet i Marseille –Naturligt språk, Artificiell Intelligens –Enkel, läsbar och koncis programmering.

Repetition forts. Prolog som databas med fakta om relationer –gillar(pelle,lisa). Predikatet gillar/2 –Ställighet, antal argument Frågor/Mål ställs till databasen. Svar om huruvida målen uppfylls. ?- gillar(pelle,lisa).yes ?- gillar(pelle,Vad).Vad = lisa; Vad = ….

Rep. Forts. Variabler –Stor bokstav –Skiljer sig från andra programspråk: behåller ej värdet utan ”instantieras” (ersätts med olika värden som löser frågan). Sammansatta frågor/Konjunktion -?gillar(lisa,Vad), gillar(astrid, Vad). Backtracking –Svar i olika ordning beroende på hur frågan ställts –Prolog söker uppifrån och ner, samt försöker läsa det första (vänstraste) målet innan den fortsätter.

Innehåll dagens föreläsning Termer –Atomer, Tal, Variabler Klausuler –Fakta, Regler, Frågor/Mål Regler Rekursiva Regler

Termer Argumenten till ett predikat är termer: Atomer börjar med liten bokstav eller citationstecken –ronaldo, rödvin, sagan_om_ringen, agent007 –’Ronaldo’,’rödvin’, ’+’, ’112’ Tal består enbart av siffror, men kan föregås av minustecken. Kan vara decimaltal. –112, 0, -76, 78.05, Variabler stor bokstav eller understreck Sammansatta termer (senare föreläsningar)

Variabler Variabler börjar med stor bokstav eller understreck (_) följt av bokstäver, siffror eller understreck T.ex. Vad, Ronaldo, Hej_hopp, _vem, X, X2000 -?studerar(åsa,Vad). (sök alla ersättningar för Vad som uppfyller frågan) -?gillar(X,X). (X måste i båda fallen ersättas med samma sak, d v s vi letar efter ngn/ngt som gillar sig själv. ) -?studerar(Vem,Vad). (Vem och Vad kan här vara antingen olika eller samma).

Den anonyma variabeln Variabeln understreck (_) används när man inte är intresserad av en instantiering av variabeln d v s när man in vill ha något svar som ersätter variabeln (t.ex Vad = lisa). T.ex. -?gillar(Vem,_). ( Bara svar på vilka som gillar något och inget svar om vad de gillar.) -?gillar(_,_). (Frågar huruvida det finns en relation gillar mellan några objekt, innebär inte att objekten måste vara samma. )

Klausuler Ett prologprogram består av en mängd klausuler som definierar ett antal predikat eller relationer. Klausuler är: Fakta: relationer som är villkorslöst sanna –huvudstad(madrid, spanien). Regler: relationer som är villkorsberoende –miljardarvinge(X) :- barntill(X,stenbeck). Frågor/Mål ställs till prologprogram för att få svar om relationer uppfylls (är sanna). -? huvudstad(madrid,spanien).

Regler En regel består av ett huvud och en kropp. HUVUD :- KROPP Där kroppen består av en lista med mål skiljda åt med komma. lycklig(P) :- rik(P), berömd(P). länkade(Sida1,Sida2) :- finns_länk(Sida1,Sida2).

Regler forts. Och dubbel_länkade(S1,S2):- finns_länk(S1,S2), finns_länk(S2,S1). Eller länkade(S1,S2):- finns_länk(S1,S2). länkade(S1,S2):- finns_länk(S2,S1). Krav på variabeln, bara personer som kan gilla tycker_om(Ngn, Ngt):- gillar(Ngn,Ngt), människa(Ngn).

Rekursiva regler nåbar(Sida2,Sida1) :- finns_länk(Sida1,Sida2). nåbar(Sida3,Sida1):-finns_länk(Sida1,Sida2), finns_länk(Sida2,Sida3). nåbar(Sida4,Sida1):-finns_länk(Sida1,Sida2), finns_länk(Sida2,Sida3), finns_länk(Sida3,Sida4). …… Långt program, djupet alltid begränsat.

Rekursiva regler forts. Mer elegant och mindre kod genom rekursion d v s genom att predikatet anropar sig självt: nåbar(X,Z) :- finns_länk(Z,X). nåbar(X,Z) :- finns_länk(Z,Y), nåbar(X,Y). En sida X är nåbar från startsidan om det finns en länk från startsidan till sidan eller om det finns en länk från startsidan till en annan sida som är nåbar för den aktuella sidan X. OBS! ordningen på målen i kroppen viktigt eftersom Prolog försöker lösa första målet först. Likaså är ordningen på reglerna viktiga.

Filen links.pl finns_länk(cling,lingvistik). finns_länk(cling,gslt). finns_länk(lingvistik,språkfrågelådan). finns_länk(språkfrågelådan,svenska_akademin). finns_länk(lingvistik,kognitionsvetenskap). nåbar(X,Z) :- finns_länk(Z,X). nåbar(X,Z) :- finns_länk(Z,Y), nåbar(X,Y).

Rekursion forts. Efter kompilering ställer vi en fråga till vårt program -? nåbar(Sida,cling). Sida = lingvistik ; Sida = gslt ; Sida = språkfrågelådan ; Sida = kognitionsvetenskap ; Sida = svenska_akademin ; no