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



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

729G43 Artificiell intelligens Kunskapsrepresentation. Arne Jönsson HCS/IDA

Artificiell Intelligens Lektion 4

HKGBB0, Artificiell intelligens

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

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

Grundläggande logik och modellteori (5DV102)

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Sätt att skriva ut binärträd

Innehåll. Föreläsning 7. Satslogiken är för grov. Samma sak i predikatlogik: Första ordningens predikatlogik. Logik med tillämpningar

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

*UXSS YQLQJ±/RJLNPHGWLOOlPSQLQJDUYW

Artificiell Intelligens Övningsuppgifter

Föreläsning 3: Booleans, if, switch

Tentamen i Statistik, STA A13 Deltentamen 2, 5p 24 januari 2004, kl

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

Föreläsning 13 och 14: Binära träd

HSB BRF HAMNEN, ÅSIKTEN ETAPP TVÅ

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

Probabilistisk logik 1

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 9 i programmeringsparadigm. Unifiering (Brna Chapter 4.1).

Logik för datavetare DVK:Log Tisdagen 28 oktober Institutionen för dataoch systemvetenskap David Sundgren

Substitution och unifiering

Grundläggande logik och modellteori

C++ - En introduktion

Artificial Intelligence

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

Probabilistisk logik 2

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Programmering för språkteknologer II, HT2014. Rum

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

TENTAMEN OOP

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

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

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

Introduktion till programmering SMD180. Föreläsning 12: Klasser och objekt

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

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

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

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Tentamen OOP

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Skillnader mellan Python och Java

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Outline. TSFS06 Diagnos och övervakning Föreläsning 10 - Sannolikhetsbaserad diagnos och Bayesianska nätverk. Sneak-peak. Outline

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

LÖSNINGSFÖRSLAG TENTAMEN

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

Matematisk statistik för D, I, Π och Fysiker

En uppsats i Språkteknologi av Niklas Vargensten e-post: d99-nva@d.kth.se

Enkla variabler kontra referensvariabel

Artificiell Intelligens

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Grundläggande datalogi - Övning 1

Filosofisk logik Kapitel 18. Robin Stenwall Lunds universitet

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

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

10. Mängder och språk

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Uppgifter teknik HT17 (uppdaterad v. 40)

Matematisk statistik 9 hp Föreläsning 4: Flerdim

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

Användarhandledning Version 1.2

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Hos vad? och bör därför vara instanseller klassvariabel i vilken klass?

SF1901: SANNOLIKHETSTEORI OCH FLERDIMENSIONELLA STOKASTISKA STATISTIK VARIABLER. Tatjana Pavlenko. 8 september 2017

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

TENTAMEN OOP

Artificiell intelligens En agent som spelar Black Jack Andreas Perjons [andpe813]

2D1418, språkteknologi. Vad är WordNet? Hans Eriksson december Datorpost personnummer:

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

Kontraktsprogrammering

Tentamen i Objektorienterad programmering

1 Begrepp och Hypoteser. 2 Inlärning genom sökning. 3 Objektiv inlärning. Inlärning av en boolsk funktion från exempel.

Anna: Bertil: Cecilia:

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Introduktion till programmering SMD180. Föreläsning 8: Listor

Dugga Datastrukturer (DAT036)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Lösningar: Tentamen i Datavetenskapens grunder för D1, SDU, TDV A

Pythons standardbibliotek

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 14-16

MMA132: Laboration 1 Introduktion till MATLAB

Flera kvantifierare Bevis Direkt bevis Motsägelse bevis Kontrapositivt bevis Fall bevis Induktionsprincipen. x y (x > 0) (y > 0) xy > 0 Domän D = R

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

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

Övning 6. Ali Tofigh 24 Oktober, 2006

Transkript:

Kunskapsrepresenta*on' 729G43'Ar*ficiell'intelligens' Kunskapsrepresenta*on' Arne'Jönsson' HCS/IDA' ' Introduk*on' WumpusEvärlden' FOPL,'Inferens' Resolu*on,'Unifiering' Representa*on'av'kunskap' Ontologi' Strukturerad'representa*on/seman*ska'nät' Kunskapsbaserade'agenter' Generell'kunskap'om'världen' Deklara*v'beskrivning'' (jfr'agent'med'procedurell'kunskap)' Resonemang' Flexibla' explicita'mål' ny'kunskap' Par*ellt'observerbara'världar'(jfr'sökning)' Kunskapsbaserad'agent' Har'en'kunskapsbas'som'innehåller'fakta'och' resonemangmekanismer'för'ax'dra'slutsatser'baserat'på' dessa'fakta' Agenten' tolkar'percept'vid'en'*d't' uppdaterar'kb'med'perceptet' väljer'handling'baserat'på'kb' uppdaterar'kb'med'handling'vid't' UZör'handling'och'uppdaterar'*den'

Kunskapsbaserad'agent' WumpusEvärlden' KB = [ ] t = 0 def KBagent(percept): tell(kb, makeperceptsentence(percept, t)) action = ask(kb, makeactionquery(t)) tell(kb, makeactionsentence(action, t)) t = t + 1 return action Stank Stank Stank Bris Bris HÅL Bris HÅL Bris Bris HÅL Bris WumpusEvärlden' Percept'(Stank,'Bris,'GliXer,'Bump,'Skrik)' Wumpusen's*nker'en'ruta'ver*kalt'och'horsiontellt' Hål'ger'bris'en'ruta'ver*kalt'och'horisontellt' Guld'gliXrar' Bump'i'vägg' Döende'wumpus'skriker' WumpusEvärlden' Handlingar'(framåt,'(sväng'höger),'(sväng'vänster),'ta,' skjut,'kläxra)' Om'agenten'är'vid'skaXen'innebär' ta 'ax'agenten'har'guldet' Om'agenten'står'riktad'mot'wumpusen'och'skjuter'dör'wumpusen' Om'agenten'är'vid'startplatsen'och'kläXrar'kommer'den'ut' Om'agenten'hamnar'i'hål'eller'hos'wumpusen'dör'den'

WumpusEvärlden'resonemang' Om'det'blåser'på'ruta'x'och'ruta'a,'b,'c'och'd'är' angränsande'rutor'så'kan'det'finnas'hål'på'a,'b,'c'och'd' Om'det'inte'blåser'på'ruta'x'och'a,'b,'c'och'd'är' angränsande'rutor'så'kan'det'inte'finnas'hål'på'a,'b,'c' eller'd' Om'det'finns'eX'hål'på'ruta'x'eller'y'och'det'inte'finns'eX' hål'på'x'så'finns'det'ex'hål'på'y' Wumpusvärlden' Percept = [Stench, Breeze, Glitter, Bump, Scream] Action = [Forward, Right, Left, Grab, Shoot, Climb] Representera tid och välja handling Ex Antag Percept([s, b, Glitter, m, c], 5) ask( a bestaction(a, 5)) bör ge Grab tell(grab, 5) Representa*on'av'världen' Rutor'[x,'y]' Närliggande'rutor' x,'y,'z,'w'adjacent([x,'y],[z,'w])' '' [z,'w]' '{[x+1,y],'[xe1,y],'[x,'y+1],'[x,'ye1]}' Lagra'uZorskning,'ex' s,t'at(agent,'s,'t)' 'Breeze(t)' 'Breezy(s)' Diagnosregler'(diagnos*cerar'från'effekter'*ll'fakta)' s'breezy(s)' ' r'adjacent(r,s)' 'Pit(r)' Kausalregler'(modellbaserade'resonemang)' r'pit(r)' '[ s'adjacent(r,s)' 'Breezy(s)]'' Hantera'föränding' Vill'uXrycka'hur'en'handling'påverkar'världen'i'FOPL' Inför'situa*onsvariabel'för'fluents'dvs'sådant'som'ändrar' sig'' Ex'At(Agent,'[1,'1],'S0),'At(Agent,'[1,'2],'S1)' Saker'som'inte'ändrar'sig'behöver'ingen'si*a*onsvariabel,'ex'Wall([0,'1])' Uppdatera'världen.'Inför'Result(ac*on,'situa*on)' Result(Forward,'S0)'='S1' Result(Grab,'S1)'='S2'

Situa*onskalkyl' Världen'består'av'en'sekvens'situa0oner2 Handlingar'resulterar'i'nya'situa*oner' Fluents'är'predikat'som'beskriver'rela*oner'eller' egenskaper'som'kan'påverkas'av'handlingar,'' dessa'tar'ex'extra'situa*onsargument' Funk*onen'Result(ac*on,'situa*on)'används'för' representera'övergången'mellan'två'situa*oner' Situa*onskalkyl' 'Exempel' Beskrivning'av'wumpusvärldens'ini*al*llstånd' At(agent,'[1'1],'s0)' Direc*on(agent,'east,'s0)' At(wumpus,'[1'3])' At(pit1,'[3'1])' At(pit2,'[3'3])' At(pit3,'[4'4])' At(gold,'[2'3])' Effektaxiom' Wumpusvärldens'handlingar' s'at(agent,'(x'y),'s)' 'Direc*on(agent,'east,'s)' ' '''''At(agent,'(x+1'y),'Result(forward,'s))' s'direc*on(agent,'east,'s)' ' '''''Direc*on(agent,'north,'Result(turnElen,'s))' s'at(agent,'(x'y),'s)' 'At(gold,'(x'y),'s)' ' '''''Holding(agent,'gold,'Result(grab,'s))' Kallas'effektEaxiom,'beskriver'det'som'förändras' Situa*onskalkyl'E'exempel' Handlingsekvens' s1'='result(forward,'s0)' s2'='result'(turnelen,'s1)' s3'='result(forward,'s2)' s4'='result(forward,'s3)' s5'='result(grab,'s4)'

Förändringar'i'världen' Antag'' At(Agent,'[2,3],'S0),'Portable(guld),'Present(guld,'S0)' Grab'ger'Holding(guld,'S1)' Antag'aX'agenten'går'framåt' At(Agent,'[2,3],'Result(Forward,'S1))'ger' At(Agent,'[2,4],'S2)' Men'agenten'har'också'guldet'med'sig,'dvs' a,x,s'holding(x,'s)' '(a Release)' 'Holding(x,'Result(a,'s))' och' a,x,s' Holding(x,s)' '(a Grab)' ' (Present(x,s)' 'Portable(x))' ' Holding(x,'Result(a,s))' Kallas'frameaxiom' Frameproblemet' Hur'representera'vad'som'påverkas''och'vad'som'inte' påverkas'av'en'handling.' Representa*onsproblemet:'representa*on'av'handlingar' Inferensproblemet:'representa*on'av'sekvenser'av'handlingar' Relaterade'problem:' Qualifica*on'problem' Hur'räknar'vi'upp'under'vilka'omständigheter'en'handling'lyckas' Ramifica*on'problem' Hur'räknar'vi'upp'alla'implicita'konsekvenser'av'en'handling' SuccesorEstateEaxiom' Successor5state2axiom2beskriver'hur'fluents'förändras' över'*d' Kombinera'effektEoch'frameaxiom' Handling'som'gör'något'sant' ' redan'sant'och'ingen'handling'som'gör'falskt' s'at(agent,'(x+1'y),'result(a,'s)' ' '''''[(a'='forward' 'At(agent,'(x'y),'s)' '' ''''''Direc*on(agent,'east,'s))]' ' '''''(a' forward' 'At(agent,'(x+1'y),'s))'' Skapa'en'kunskapsbas' 1. Itera*v'process' 2. Iden*fiera'uppginen' 3. Hämta'relevant'domänkunskap' 4. Definiera'en'vokabulär' 'Ontologi' 5. Skriv'axiom'som'beskriver'domänen' 6. Gör'en'problemkodning' 7. Testa'och'använd' 8. Debug'

Inferens' Tre'typer:' Framåtsökning' Söker'från'reglerna'framåt' Bakåtsökning' Söker'från'reglerna'bakifrån' Resolu*on' Exempel' 1. Rökning' 'Eld' 'Rök' 2. Rök' 'Rökdetektor' 'Larm' 3. Larm' 'Brandkåren'kommer' 4. Rökning' 'Larm' 'Falsklarm' 5. Brandkåren'kommer' 'Falsklarm' 'Arga'brandmän' 6. Rökning' 7. Rökdetektor' 8. Arga'brandmän?' Framå*nferens' 1. Rökning Eld Rök 2. Rök Rökdetektor Larm 3. Larm Brandkåren kommer 4. Rökning Larm Falsklarm Bakå*nferens' 1. Rökning Eld Rök 2. Rök Rökdetektor Larm 3. Larm Brandkåren kommer 4. Rökning Larm Falsklarm Börja'i'någon'premiss' 5. Brandkåren kommer Falsklarm Arga brandmän 6. Rökning Börja'i'slutsatsen' 5. Brandkåren kommer Falsklarm Arga brandmän 6. Rökning 7. Rökdetektor 8. Arga brandmän? 7. Rökdetektor 8. Arga brandmän? Falsklarm Rökdetektor Rökning Rök Larm Brandkåren Arga brandmän Arga brandmän Brandkåren Larm Rök Rökdetektor Falsklarm Rökning

Resolu*on' Mekanisk'bevismetod' Ex,'satslogik' Rökning' 'Rök' Rök' Brandvarnarlarm' Implika*on'transi*v,'dvs'Rökning' 'Brandvarnarlarm' α' 'β'kan'skrivas'som' α' 'β' 'Rökning' 'Rök' ' 'Rök' 'Brandvarnarlarm' Dvs' Rökning' 'Brandvarnarlarm' Kallas'resolvent'' Resolu*on' 1. Konvertera'alla'satser'*ll'konjunk*v'normalform' 2. Negera'vad'som'skall'visas,'konvertera'*ll'konjunk*v' normalform'och'lägg'*ll'kunskapsbasen' 3. Upprepa'*ll'kontradik*on'eller'ingen'förbäXring'eller' annat'stoppvillkor' a. Välj'två'klausuler' b. Resolvera'dessa.'Resolventen'är'disjunk*onen'av'alla'termer' med'lämpliga'subs*tu*oner.' c. Om'resolventen'tomma'mängden'så'returnera'kontradik*on,' annars'lägg'resolventen'*ll'kb' Exempel' 1. Rökning' 'Eld' 'Rök' 2. Rök' 'Rökdetektor' 'Larm' 3. Larm' 'Brandkåren'kommer' 4. Rökning' 'Larm' 'Falsklarm' 5. Brandkåren'kommer' 'Falsklarm' 'Arga'brandmän' 6. Rökning' 7. Rökdetektor' 8. Arga'brandmän?' Gör'om'*ll'konjunk*v'form,'1' 1. (Rökning' 'Eld)' 'Rök' 2. (Rök' 'Rökdetektor)' 'Larm' 3. Larm' 'Brandkåren'kommer' 4. (Rökning' 'Larm)' 'Falsklarm' 5. (Brandkåren'kommer' 'Falsklarm)' 'Arga'brandmän' 6. Rökning' 7. Rökdetektor' 8. Arga'brandmän'

Gör'om'*ll'konjunk*v'form,'2' 1. (Rökning' 'Eld)' 'Rök' '( Rökning' ' Eld)' 'Rök' 1. Rökning' 'Rök' 2. Eld' 'Rök' 2. (Rök' 'Rökdetektor)' 'Larm' '( Rök' ' Rökdetektor)' 'Larm'' 1. Rök' ' Rökdetektor' 'Larm' 3. Larm' 'Brandkåren'kommer' 4. (Rökning' 'Larm)' 'Falsklarm' '( Rökning' ' Larm)' ' Falsklarm'' 1. Rökning' ' Larm' 'Falsklarm' 5. (Brandkåren'kommer' 'Falsklarm)' 'Arga'brandmän' 1. Brandkåren'kommer' ' Falsklarm' 'Arga'brandmän' 6. Rökning' 7. Rökdetektor' 8. Arga'brandmän' Konjunk*v'form' 1. Rökning' 'Rök' 2. Eld' 'Rök' 3. Rök' ' Rökdetektor' 'Larm' 4. Larm' 'Brandkåren'kommer' 5. Rökning' ' Larm' 'Falsklarm' 6. Brandkåren'kommer' ' Falsklarm' 'Arga'brandmän' 7. Rökning' 8. Rökdetektor' 9. Arga'brandmän' Härled'en'motsägelse' Plocka'två'satser,'t.ex.'1+2'och'lägg'*ll'KB' Rökning' ' Eld' 'Rök' Eller'3+8'' Rök' 'Larm' 10+11'ger' Rökning' ' Eld' 'Larm' 6+9'ger' Brandkåren'kommer' ' Falsklarm'' 4+13'ger' Larm' ' Falsklarm' 14+5'ger' Rökning' ' Larm' 15+7'ger' Larm' 3+16'ger' Rök' ' Rökdetektor'' 1+17'ger' ' Rökning' ' Rökdetektor'' 18'+'7'ger' Rökdetektor'' 19'+'8'ger'en'motsägelse' 1. Rökning Rök 2. Eld Rök 3. Rök Rökdetektor Larm 4. Larm Brandkåren kommer 5. Rökning Larm Falsklarm 6. Brandkåren kommer Falsklarm Arga brandmän 7. Rökning 8. Rökdetektor 9. Arga brandmän Resolu*on'för'predikatlogik' Variabler'och'kvan*fierare' Ex'' 1. At(Wumpus,'[1,2],'5)' 2. At(Wumpus,'[1,'3],'6)' Ger'resolventen' At(Wumpus,'[1,'3],'6)' 'At(Wumpus,'[1,2],'5)' medan' 3. ' At(Wumpus,'l,'t)'och'1.' med'{l/[1,2],'t/5}'(l'subs*tueras'med'[1,2]'och't'subs*tueras'med'5)' ger'en'motsägelse,'dvs'en'tom'klausul''

Unifiering' För'aX'lyckas'med'resolu*on'i'FOPL'behöver'man' använda'unifiering' Variabler'byts'mot'andra'variabler'eller'konstanter,'en' subs*tu*on' Ona'söker'man'den'mest'generella'unifieringen,'MGU' Unifiering' 'Exempel' Gillar(Olga,'x)' x/mask' '''''''''''Gillar(y,'mask)' ' ''''''''''''''''''y/olga' ' Gillar(Olga,'mask)' ' Gillar(Olga,'x)'och'Gillar(y,'mask)'kan'alltså'unifieras'med' hjälp'av'subs*tu*onen'{x/mask,'y/olga)' Subs*tu*oner'propageras' 'Ex' x'hund(x)' 'Skäller(x)'kan'konverteras'*ll' Hund(x)' 'Skäller(x)'om'vi'antar'aX'variabler'all*d'är'allkvan*fierade' Hund(Pluto)' 1+2'med'[x/Pluto]'ger'Skäller(Pluto),'dvs'x'har'subs*tuerats'i'båda' predikaten' Unifiering' 'Exempel' Unifiera'Flagga(blå,x)'med'Flagga(blå,gul)' {Flagga(blå,x)'='Flagga(blå,gul)}' {blå=blå,'x=gul}' {x=gul}'

Unifiering' 'Exempel' Unifiera'Flagga(blå,x)'med'Flagga(y,gul)' {Flagga(blå,x)'='Flagga(y,gul)}' {blå=y,'x=gul}' {y=blå,'x=gul}' Unifiering' 'Exempel' Unifiera'Flagga(blå,x)'med'Flagga(y,KomplemenZärg(y))' {Flagga(blå,x)'='Flagga(y,KomplemenZärg(y))}' {blå=y,'x=komplemenzärg(y)}' {y=blå,'x=komplemenzärg(y)}' {y=blå,'x=komplemenzärg(blå)}' Unifiering' 'Exempel' Unifiera'Flagga(blå,x)'med'Flagga(x,gul)' {Flagga(blå,x)'='Flagga(x,gul)}' {blå=x,'x=gul}' {x=blå,'x=gul}' FEL' Unifieringsalgoritmen,'1' def unify(x, y, subst): if subst=="fail": return "Fail" elif x==y: return subst elif variable(x): unifyvar(x, y, subst) elif variable(y): unifyvar(y, x, subst) elif isinstance(x, list) and isinstance(y, list): unify(rest(x), rest(y), unify(first(x), first(y), subst)) else: return "Fail"

Unifieringsalgoritmen,'2' def unifyvar(var, x, subst): if getsubst(var, subst): unify(lookup(var, subst), x, subst) elif variable(x) and getsubst(x, subst): unify(var, lookup(x, subst), subst) elif occursin(var, x, subst): return "Fail" else: extendsubst(var, x, subst) Exempel' Unifiera Smelly([1,2]) och Smelly(l) unify([ Smelly, [1,2] ], [ Smelly,l],[]) x = [ Smelly, [1,2] ], y = [ Smelly,l] 1. subst Fail 2. x y 3. x eller y inte variabler 4. x och y listor 5. unify( [1,2], l, unify([ Smelly ], [ Smelly ],[]) 6. x==y alltså inga nya substitutioner 7. l variabel så unify ger anrop till unifyvar(l, [1,2],[]) 8. unifyvar hittar inga substitutioner så 9. extendsubst(l, [1,2], []) returnerar {l/ [1,2] } Större'exempel'(med'förenklingar)' unify([ F,[ G, A, m], [ F, k, m]], [ F, l, [ F, l, [ G, A, B ]]], [ ]) unify([[ G, A, m], [ F, k, m]], [l, [ F, l, [ G, A, B ]]], unify( F, F, [ ])) [ ] unify([[ G, A, m], [ F, k, m]], [l, [ F, l, [ G, A, B ]]], [ ]) unify([ F, k, m], [ F, l, [ G, A, B ]], unify([ G, A, m], l, [ ])) unify-var(l, [ G, A, m], [ ]) [l/[g, A, m]] unify([k, m], [l, [ G, A, B ]], unify( F, F, [l/[g, A, m]] )) [l/[g A m]] unify([k, m], [l, [ G, A, B ]], [l/[g, A, m]] )) unify(m, [ G, A, B ], unify(k, l, [l/[g, A, m]] )) unify-var(k, l, {l/[g, A, m]}) unify(k, [ G, A, m], [l/[g, A, m]] ) unify-var(k, [ G, A, m], [l/[g, A, m]]) [k/[g A m]] unify(m, [ G, A, B ], [k/[g, A, m], l/[g, A, m]] ) unify-var(m, [ G, A, B ], [k/[g, A, m], l/[g, A, m]] ) [m/[g A B]] [m/[g A B], k/[g A m], l/[g A m]] Konvertering'*ll'konjunk*v'normalform' 1. Eliminera'implika*on' 2. Reducera'nega*onernas'räckvidd' xp(x) x P(x),' xp(x) x P(x),' x P(x) xp(x),' x P(x) xp(x)''' 3. Standardisera'variabler' 4. Eliminera'existenskvan*fierare,'skolemisering' 5. Konvertera'*ll'prenex'form' 6. Skippa'prefix' Allt'är'allkvan*fierat' 7. Konvertera'*ll'konjunk*on'av'disjunk*oner' 8. Bilda'klausuler' 'Implicit'konjuk*on'mellan'klausuler' 9. Döp'om'variabler'

Skolemisering' ErsäXer'existenskvanifierade'variabler'med'konstant,'eller' funk*on'som'vid'behov'tar'fram'den'individ'för'vilken'uxrycket' gäller' Ex.' xp(x)' 'P(S)'där'S'är'en'skolemkonstant'och'står'för'den' individ's'för'vilken'p(x)' Ex.'Alla'har'eX'hjärta' x'person(x)' ' y'hjärta(y)' 'Har(x,y)' Skolemkonstant'ger' x'person(x)' 'Hjärta(S)' 'Har(x,S),'dvs' alla'har'samma'hjärta'vilket'är'fel' Inför'skolemfunk*on,'g(x),'som'beror'av'allkvan*fierade' variabeln'x'ger' x'person(x)' 'Hjärta(g(x))' 'Har(x,g(x))'' Exempel,'1' x'{p(x)' '( y[p(y)' 'P(f(x,'y))]' ' y[q(x,'y)' 'P(y)])}' ' 1'Eliminera'implika*on' ' x'{ P(x)' '( y[ P(y)' 'P(f(x,'y))]' ' y[ Q(x,'y)' 'P(y)])}' 2'Reducera'nega*onernas'räckvidd' ' x'{ P(x)' '( y[ P(y)' 'P(f(x,'y))]' ' y[q(x,'y)' ' P(y)])}' 3'Standardisera'variabler' ' x'{ P(x)' '( y[ P(y)' 'P(f(x,'y))]' ' z[q(x,'z)' ' P(z)])}' 4'Eliminera'existenskvan*fierare' ' x'{ P(x)' '( y[ P(y)' 'P(f(x,'y))]' '[Q(x,'g(x))' ' P(g(x))])}' 5'Konvertera'*ll'prenex'form' ' x' y{ P(x)' '([ P(y)' 'P(f(x,'y))]' '[Q(x,'g(x))' ' P(g(x))])}' Exempel,'2' 6 Skippa prefix { P(x) ([ P(y) P(f(x, y))] [Q(x, g(x)) P(g(x))])} 7 Konvertera till konjunktion av disjunktioner [ P(x) P(y) P(f(x, y))] [ P(x) Q(x, g(x))] [ P(x) P(g(x))] 8 Bilda klausuler P(x) P(y) P(f(x, y)) P(x) Q(x, g(x)) P(x) P(g(x)) 9 Döp om variabler P(x) P(y) P(f(x, y)) P(z) Q(z, g(z)) P(w) P(g(w)) Exempel' 1. Ber*l'var'pudel' 2. Ber*l'föddes'1955' 3. Ingen'hund'lever'längre'än'50'år'' 4. Pudlar'är'hundar' 5. Alla'hundar'är'däggdjur' 6. Nu'är'det'2015' 7. Visa'aX'det'finns'döda'pudlar'nu'

Exempel,'översäX' 1. Ber*l'var'pudel' Pudel(Ber*l)' 2. Ber*l'föddes'1955' Född(Ber*l,'1955)' 3. Ingen'hund'lever'längre'än'50'år' x,s,t'hund(x)' 'Född(x,'s)' 'gt(tes,'50)' 'Död(x,'t)' 4. Pudlar'är'hundar' x'pudel(x)' 'Hund(x)' 5. Alla'hundar'är'däggdjur' x'hund(x)' 'Däggdjur(x)' 6. Nu'är'det'2015' Nu'='2015' 7. Det'finns'döda'pudlar'nu' x'pudel(x)' Död(x,'Nu)' Exempel,'konvertera'1' 1. Pudel(Ber*l)' 2. Född(Ber*l,'1955)' 3. x,s,t'hund(x)' 'Född(x,'s)' 'gt(tes,'50)' 'Död(x,'t)' ' (Hund(x)' 'Född(x,'s)' 'gt(tes,'50))' 'Död(x,t)' ' Hund(x)' ' Född(x,'s)' ' gt(tes,'50)' 'Död(x,t)' 4. s'pudel(x)' 'Hund(x)' Pudel(x)' 'Hund(x)' 5. s'hund(x)' 'Däggdjur(x)' Hund(x)' 'Däggdjur(x)' 6. Nu'='2015' 7. x'pudel(x)' Död(x,'Nu)' ' x'pudel(x)' Död(x,'Nu)' '' x' '(Pudel(x)' Död(x,'Nu))' ' Pudel(x)' ' Död(x,'Nu)' Exempel,'konvertera'2' 1. Standardisera'variabler' 2. Pudel(Ber*l)' 3. Född(Ber*l,'1955)' 4. Hund(x)' ' Född(x,'s)' ' gt(tes,'50)' 'Död(x,t)' 5. Pudel(p)' 'Hund(p)' 6. Hund(h)' 'Däggdjur(h)' 7. Nu'='2015' 8. Pudel(w)' ' Död(w,'Nu)' Resolu*onsstrategier' Ta'bara'satser'med'komplement' Föredra'små'resolventer' Unit'preference' Set'of'support' Behåll'en'bra'delmängd.'Börja'med'slutsatsen' Eliminera'satser'som'subsumeras'av'andra'

1. Pudel(Bertil) 1. Pudel(Bertil) 2. Född(Bertil, 1955) 2. Född(Bertil, 1955) Resolu*onsexempel' (7) (1) 3. Hund(x) Född(x, s) gt(t-s, 50) Död(x,t) 4. Pudel(p) Hund(p) 5. Hund(h) Däggdjur(h) 6. Nu = 2015 Resolu*onsexempel,'2' 3. Hund(x) Född(x, s) gt(t-s, 50) Död(x,t) 4. Pudel(p) Hund(p) 5. Hund(h) Däggdjur(h) 6. Nu = 2015 {w/bertil} 7. Pudel(w) Död(w, Nu) 7. Pudel(w) Död(w, Nu) 8. Död(Bertil, Nu) (6) 10. Hund(Bertil) Född(Bertil, s) gt(2015-s, 50) (2) {Nu/2015} (4) {s/1955} 11. Hund(Bertil) gt(2015-1955, 50) 9. Död(Bertil, 2015) (3) {p/bertil} gt(2013-1955, 50) gt(60,50) T F {x/bertil, t/2015} (1) 12. Pudel(Bertil) 10. Hund(Bertil) Född(Bertil, s) gt(2015-s, 50) Motsägelse, alltså Det finns en död pudel nu Ontologi' Toppontologi' Kategorier'och'objekt' Fysiska'objekt' SammansaXa'objekt' MåX'och'enheter' Handlingar,'situa*oner'och'händelser' Situa*onskalkyl,'Frameproblemet' Tid,'rum'och'förändring' Händelser'och'processer' Abstrakta Objekt Allt Generaliserade händelser Mängder Tal Repr. Objekt Intervall Platser Fysiska objekt Processer Kategorier Meningar Mått Händelser Saker Materia Tidsintervall' Mentala'objekt'och'uppfaXningar' Tider Vikter Djur Agenter Fast Flytande Gas Människor

Exempel'på'genrella'ontologier' CYC' CYC' Thing Stort'(239000'koncept)'AIEKR'projekt' Logikbaserat'representa*onsspråk'CycL' WORDNET' IndividualObject Intangible RepresentedThing Stor'(117000'synsets)'lexikal'taxonomi'' Baserat'på'psykolingvis*ska'studier' Event Stuff IntangibleObject Collection Process IntangibleStuff AtributeValue Relationship Slot WORDNET' {thing, entity} {living thing, organism} {non-living thing, object} {plant, flora} {animal, fauna} {artifact} {food} Kategorier' Resonerar'inte'om'objekt'utan'om'koncept,'kategorier' Ex'Guld,'inte'Guld32' Gör'predikat'*ll'objekt'i'språket' Ex'Guld'refererar'*ll'kategorin'Guld,'x' 'Guld'betyder'aX'x'är'guld.' Kallas'reifica*on'kan'skriva't.ex.'Färg(Guld)'='gul' Kategorier'ärver'egenskaper' Ex'Guld' 'Ädelmetall'betyder'aX'Guld'är'en'subklass'av'Ädelmetall'och' ärver'alla'dess'egenskaper,'t.ex.'ax'vara'värdefull' Ex' x','x' 'Guld' 'GliXrar(x)' 'Dyrt(x)' {person, human being} {natural object} {substance}

Händelser' Situa*onskalkyl'är'diskret.'Behöver'en'kon*nuerlig'variant' Ex.'At(Wumpus,'Gold)'säger'inget'om'när'det'är'sant' T(At(Wumpus,'Gold),'t)'säger'aX'det'är'sant'vid'*dpunkten't' Andra'predikat:' Happens(e,'i)'säger'aX'e'händer'under'intervallet'i' Ini*ates(e,'f,'t)'säger'aX'e'får'f'aX'starta'vid'*den't' Terminates(e,'f,'t)'säger'aX'e'får'f'aX'avslutas'vid'*den't' Clipped(f,'i)'säger'aX'f'slutar'aX'vara'sant'i'intervallet'i' Restored(f,'i)'säger'aX'f'blir'sant'nångång'under'intervallet'i' Tid,'intervall'och'handlingar' Allens'temporala'logik' Definierar'eX'intervall' i'intervall(i)' 'Dura*on(i)'='(Time(End(i))E Time(Start(i)))' Huvudsakligen'fyra'olika'rela*oner' Temporala'rela*oner' Strukturerad'representa*on' Meet(i, j) i,j Meet(i,j) Time(End(i)) = Time(Start(j)) i j Frames'och'seman*ska'nät' Egenskapsärvning' Before(i,j) After(j,i) i,j Before(i,j) Time(End(i)) < Time(Start(j)) i j Default'och'undantag' Mul*pel'ärvning' During(i,j) i,j During(i,j) Time(Start(j)) Time(Start(i)) Time(End(j)) Time(End(i)) i j Förändring,'ickemonotonicitet' Overlap(i,j) i,j Overlap(i,j) k During(k,i) During (k,j) i j

Strukturerad'representa*on' Seman*ska'nät' Baserat'på'associa*onsteorier,'t.ex.'Quillian'&'Collins' 1969' Experiment.'Ställer'olika'frågor,'t.ex.:' Är'undulaten'en'fågel?' Kan'undulater'flyga?' Kan'undulater'sjunga?' Resultat' Kan'undulater'flyga? ''tar'längre'*d'ax'besvara'än' Kan' undulater'sjunga? '' Hypotes' Människor'lagrar'informa*on'så'abstrakt'som'möjligt' Alla'fåglar'flyger'men'inte'alla'fåglar'sjunger'' Vingar har Fjädrar har är en kan sjunga Undulat Djur har Skinn är ett är ett Fågel kan flyga true Fisk är en true Struts kan flyga false Ärvningshierarki' Undulat Sjunger: T Putte Vän: Instans Fågel Flyger: T Ben: 2 Vän Emu Flyger: F Olga Instans Levande varelse Lever: T Djur RörSig: T Elefant Färg: grå Vikt: 3500 Clyde Färg: vit Däggdjur Ben: 4 Hund Vikt: 5 Bertil Vikt: 10 Typ: Pudel Instans Instans Instans Delfin Ben: 0 Vikt: 500 Flipper AXributEvärdestrukturer' Seman*ska'nät'och'frames'lagrar'kunskapen'aXributE värdestrukturer' AXributen'kan'också'ha'egenskaper,'t.ex.:' Tillåtna'klasser,'ex'aXributet'Inkomst'är'inte'intressant'för'objekt'av' typen'emu' Värdebegränsningar,'ex'Vikt(Hund)'<'500'kg' Default' Regler'för'ärvning' Procedurer'för'aX'räkna'ut'värden,'ex'för'aX'räkna'ut'åldern' Kopplar'procedurer'(demoner)'*ll'aXributen.'Kallas'också' procedural' axachements '

Mul*pel'ärvning' Sällskapsfågel Instans Fågel Flyger: T Ben: 2 Emu Flyger: F Instans Sällskapsfågel Fågel Flyger: T Ben: 2 Emu Flyger: F Australisk Emu Västkust Emu Hantering'av'osäker'kunskap' IckeEstandardlogik.' Inte'en'teori'utan'många' Rivaler:'' ' tar'bort'teorem,'t.ex.'a'v' A' Utvidgningar:'' ' lägger'*ll'teorem'som'ona'är'oformulerbara'i'fopl' Olga Instans Olga Instans Väljer den mest specifika Inferensavståndet, dvs undersöker om det finns på vägen IckeEstandardlogik' Rivaler2 Probabilis*sk'logik' logik'baserad'på'sannolikhet' Flervärd'logik' inför'fler'sanningsvärden' Fuzzy'logic' sannolikhet'ax'höra'*ll'en' mängd' Utvidgningar2 Modal'logik' L:'nödvändigt'sann' M:'möjligen'sann' Temporal'logik' *dslogik' IckeEmonoton'logik' *llåter'satser'som'inte' bevisats'