Artificiell Intelligens Lektion 4

Relevanta dokument
Artificiell Intelligens Övningsuppgifter

Lek$on 3: Kunskapsrepresenta$on. Robin Keskisärkkä

Lek$on 4: Kunskapsrepresenta$on. Robin Keskisärkkä och Jonas Rybing

Normalisering av meningar inför resolution 3. Steg 1: Eliminera alla och. Steg 2: Flytta alla negationer framför atomära formler

729G06 Föreläsning 1 Objektorienterad programmering

Grundläggande logik och modellteori (5DV102)

Predikatlogik: Normalformer. Klas Markström

Kap. 7 Logik och boolesk algebra

Att referera till objekt

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Grundläggande logik och modellteori

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

729G43'Ar*ficiell'intelligens' Kunskapsrepresenta*on' Kunskapsrepresenta*on' Kunskapsbaserade'agenter' Kunskapsbaserad'agent' Arne'Jönsson' HCS/IDA' '

Kunskapsbaserad agent. Kunskapsrepresentation. Wumpus-världen. Wumpusvärlden. Bris. Bris. Bris. Bris. Bris. Bris. Stank. Stank.

Utsagor (Propositioner) sammansatta utsagor sanningstabeller logisk ekvivalens predikat (öppna utsagor) kvantifierare Section

DD1361 Programmeringsparadigm HT15

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Klasser och objekt, referenser Grundkurs i programmering med Python

Föreläsning 4: Poster

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska kunnas?

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Tommy Färnqvist, IDA, Linköpings universitet. 1 Kursadministration 1. 2 Introduktion Varför logik? Satslogik... 2

Pythons standardbibliotek

DD1361 Programmeringsparadigm HT17

Prova på-laboration i Ruby

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Tentamenskod: Inga hjälpmedel är tillåtna

Sätt att skriva ut binärträd

Avslutning. Vad? Hur? Anmärkningar inför tentan 2. Vad ska ni kunna?

Antag att följande träd genereras i ett spelförande program om vi applicerar evalueringsfunktionen

MATEMATIKENS SPRÅK. Avsnitt 1

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

DD1361 Programmeringsparadigm HT16

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

MATEMATIKENS SPRÅK. Syftet med denna övning är att med hjälp av logik lära oss att uttrycka matematik mer exakt, lära oss

Java, klasser, objekt (Skansholm: Kapitel 2)

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Ordlistor, filhantering och ut på webben. Linda Mannila

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

DD1311 Programmeringsteknik för S1 Laborationer läsåret

PROMETHEUS. Ett typat, objektorienterat programmeringsspråk av Tim Andersson.

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

En snabb titt på XML LEKTION 6

Robin Stenwall Lunds universitet

de var svåra att implementera och var väldigt ineffektiva.

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

MATEMATIKENS SPRÅK. Syftet med denna övning är att med hjälp av logik lära oss att uttrycka matematik mer exakt,

Objektorienterad Programmering (TDDC77)

Artificial Intelligence

Sanningsvärdet av ett sammansatt påstående (sats, utsaga) beror av bindeord och sanningsvärden för ingående påståenden.

DD1350 Logik för dataloger. Fö 2 Satslogik och Naturlig deduktion

Laboration 1 - Grunderna för OOP i Java

Logik och kontrollstrukturer

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

Robin Stenwall Lunds universitet

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

729G43 Artificiell intelligens Planering

Classes och Interfaces, Objects och References, Initialization

Övning 6. Ali Tofigh 24 Oktober, 2006

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

TDDD78 Objektorientering i Java, del 2

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

Språket Python - Del 1 Grundkurs i programmering med Python

729G04 Programmering och diskret matematik. Föreläsning 7

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

TDDE44 Programmering, grundkurs

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Varför är logik viktig för datavetare?

Övningshäfte 1: Logik och matematikens språk

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Grundläggande datalogi - Övning 1

Grundläggande Datalogi

Grundläggande logik och modellteori

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Övning 3. Datateknik A, Java I, 5 poäng

Transkript:

Frames Filmdomän Artificiell Intelligens Lektion 4 Frames (Lab4) Resolution & unifiering Frames system Lagrar hierarkisk information Attribut lagras i attributvärdesstrukturer Attribut kan ha egenskaper Regler för arv Olika typer av värden Huvudfunktionlitet Store lagra info om ramar och attribut Tell Lagra värden för attribut Ask Fråga efter värden på attribut get- och put-metoder Get-metoder: ärvning lokalt värde (ingen ärvning) Put-metoder: ersätt lägg till Attributvärden Enkla värden Tal, strängar, booleska värden et.c. Sammansatta värden Listor med värden av enkel typ Procedural attachments Procedur räknar ut värdet istället för att det är lagrat direkt (ask-association) Kan även finnas vid tell (ingår ej i labben) Frames Arkitektur

Frames (ramar) Skapa datatyper för frame Instansvariabler name isa attributes Metoder konstruktor get_attribute(attributename) set_attribute(attributename, value)... Kunskapsbas Skapa datatyper för kunskapsbas Instansvariabler kb Metoder konstruktor get_frame(framid) store_frame(frameid, frame)... Frames-system Skapa datatyper för frames-system Instansvariabler kb Metoder konstruktor store_frame(frameid, frame) store_attribute(attributename, getmethod, setmethod) ask(frameid, attributename) tell(frameid, attributename, value) MovieKB = KB() Skapa Frames-system FS = FrameSystem(MovieKB) FS.store_frame('Movie', None) FS.store_frame('Drama', 'Movie') FS.store_frame('Crime', 'Drama') FS.store_frame('LA Confidential','Crime') FS.store_frame('Omhetsbevis','Drama') FS.store_attribute('blood', FrameSystem.inherit, FrameSystem.replace) FS.store_attribute('review', FrameSystem.local, FrameSystem.add)... TELL Nytt attribut läggs in i attributlistan FS.tell('Movie', 'blood', 'unk') FS.tell('Movie', 'violence', 5) Ersätt gammalt värde med nytt FS.tell('Movie', 'blood', 0) FS.tell('Movie', 'violence', 0) Lägg till nytt värde till gammalt FS.tell( LA Confidential', review', Bra skådisar ) FS.tell( LA Confidential', review', Tråkig ) Ask Lokalt värde hämtas FS.ask('The Matrix', 'review') LA Confidential has the following values for review: Tråkig Bra skådisar FS.ask('The Matrix', 'actors') Value is missing for actors in LA Confidential Ärvning från en kategori högre upp i hierarkin FS.ask('LA Confidential', 'genre') Attribute genre has value 'drama' for frame LA Confidential

Ask Procedural attachment anropas för att beräkna värdet FS.ask('LA Confidential', 'age-limit') Attribute age-limit has value 15 for frame LA Confidential Procedural attachments Definiera funktionen def calculate_age_limit(frameid): blood = FS.ask-value(frameid, 'blood') violence = FS.ask-value(frameid, 'violence') age = (blood + violence) * 2 + 3 return age Lagra funktionsnamnet som värde FS.tell('Movie', 'age-limit', calculate_age_limit) I ask, kontrollera om värdet är en funktion type(value) is types.functiontype (eller: callable(value) ) Applicera funktionen på aktuell frame value(frameid) Python - Dictionary Skapa initial tom dictionary dict = {} Lägg till ett object i dictionary dict[nyckel] = värde Hämta ett objekt ur dictionary dict[nyckel] > värde Tips: använd dictionary för kunskapsbasen, attributtyper och attributvärden Domän Välj en domän ni vill lagra kunskap om Alla typer av tell och ask ska förekomma, fundera ut lämpliga attribut Domänen ska gå att representera hierarkiskt Exempel: Böcker, mat, växter, djur, fordon, geografisk info... Egen (ska godkännas av handledare) Resolution Övning Översätt följande meningar till predikatlogik: Idag är det många arbetslösa Hög arbetslöshet betyder att konjunkturen är låg Det är bättre tider vid högkonjunktur än lågkonjunktur Det var högkonjunktur förr Visa med resolution att: Det var bättre förr Predikatlogik HögArbetslöshet(Idag) t HögArbetslöshet(t) LågKonjunktur(t) t1,t2 HögKonjunktur(t1) LågKonjunktur(t2) Bättre(t1,t2) HögKonjunktur(Förr) Bättre(Förr,Idag)

Konvertering till konjunktiv form: Eliminera implikationer HögArbetslöshet(Idag) t HögArbetslöshet(t) LågKonjunktur(t) t1,t2 (HögKonjunktur(t1) LågKonjunktur(t2)) Bättre(t1,t2) HögKonjunktur(Förr) Reducera negationernas räckvidd HögArbetslöshet(Idag) t HögArbetslöshet(t) LågKonjunktur(t) t1,t2 HögKonjunktur(t1) LågKonjunktur(t2) Bättre(t1,t2) HögKonjunktur(Förr) (Standardisera variabler) (Konvertera till prenexform) (Eliminera existenskvantifierare (Skolemisera)) Skippa prefix HögArbetslöshet(Idag) HögArbetslöshet(t) LågKonjunktur(t) HögKonjunktur(t1) LågKonjunktur(t2) Bättre(t1,t2) HögKonjunktur(Förr) (Konvertera till en konjunktion av disjunktioner) (Bilda klausuler) (Döp om variabler) Negera och konvertera slutsatsen Bättre(Förr,Idag) HögArbetslöshet(Idag) HögArbetslöshet(t) LågKonjunktur(t) HögKonjunktur(t1) LågKonjunktur(t2) Bättre(t1,t2) HögKonjunktur(Förr) Bättre(Förr,Idag)

5 + 3 {t1/förr, t2/idag} = HögKonjunktur(Förr) LågKonjunktur(Idag) 6 + 4 = LågKonjunktur(Idag) 7 + 2 {t/idag} = HögArbetslöshet(Idag) 8 + 1 = MOTSÄGELSE Unifiering - Övning Unifiera uttrycken h(a, g(b, d)) och h(d, g(e, A)) Unifiering - Exempel Unifiering - Exempel Konvertering till CNF 1.Eliminera implikation 2.Reducera negationernas räckvidd 3.Standardisera variabler 4.Eliminera existenskvantifierare 5.Konvertera till prenex form 6.Skippa prefix 7.Konvertera till konjunktion av disjunktioner 8.Bilda klausuler 9.Döp om variabler