1 / 11

Föreläsning 13: Resolution

Föreläsning 13: Resolution. Resolution i satslogiken Resolution i predikatlogiken. Resolution i satslogiken. Logisk programmering bygger på logiska inferensregler som används för att härleda korrekta slutsatser  inferensreglerna måste kunna implementeras på ett enkelt och effektivt sätt

ciara
Download Presentation

Föreläsning 13: Resolution

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Föreläsning 13: Resolution • Resolution i satslogiken • Resolution i predikatlogiken Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  2. Resolution i satslogiken • Logisk programmering bygger på logiska inferensregler som används för att härleda korrekta slutsatser inferensreglerna måste kunna implementeras på ett enkelt och effektivt sätt • Resolution (Robinson 1965), som bygger på en enda regel, uppfyller det kravet • Resolution används vanligtvis i indirekta bevis, dvs för att härleda en motsägelse • Vi fokuserar på specialfallet som ligger till grund för programspråket Prolog Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  3. Resolution i satslogiken (2) • Vi betraktar en mängd av satser på formen P  P1  …  Pn (Hornklausuler) där P och alla Pi är atomer. Satserna uttrycker de förhållanden som tas för givet. De kallas regler. Om n=0 så är regeln ett faktum och man skriver bara P • Ett mål (eng. query) är en sats M = Q1 … Qm(som också skrivs  Q1 … Qm) • Resolution syftar på att hitta mål M1,…,Mk sådana attM  M1  …  Mk där Mk är det tomma målet (m=0). •  är en motsägelse – man har då bevisat Q1 … Qm(dvs att Q1 … Qm är en logisk följd av regelmängden) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  4. Resolution i satslogiken (3) Resolutionsprincipen: Har vi ett mål Q1 … Qm och regelmängden innehåller en Hornklausul P  P1  …  Pn där Qi=P, säg t.ex. Q1 = P,så får målet ersättas med P1 … PnQ2 … Qm. Om det ursprungliga målet M var satisfierbart så är det nya målet M' också det. (Om M är sant så är något Qj sant. Om ji så är alltså M' sant. Om Qi=P är sant måste enligt Hornklausulen något Pl vara vara falskt och därmed är M' igen sant.) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  5. Exempel Hornklausuler: B  A, C  A  B , C  D  B, A Vi vill bevisa C (dvs att det är en logisk följd av de här antagandena). Målet är alltså C. Resolution gerC A  B (resolution med andra klausulen) B (resolution med fjärde klausulen) A (resolution med första klausulen)  (resolution med fjärde klausulen) (Observera att man kan hamna i lägen där det inte går vidare, t.ex. genom att använda tredje klausulen i första steget  backtracking kan vara nödvändig.) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  6. Resolution i predikatlogiken I predikatlogiken är resolution inte precis lika lätt eftersom atomerna nu är atomära formler som består av predikatsymboler, funktionssymboler och variabler. Exempel: Bevisaperson(Olle) person(Olle) (x = Olle) person(mor(Olle)) (x = mor(Olle)) gift(mor(Olle),y) (y = Lasse)  person(x)  gift(x,y) person(x) person(mor(x)) gift(mor(Olle), Lasse) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  7. Resolution i predikatlogiken (2) • En substitution är en tilldelning s av termer till variabler • Att substituera variablerna i en formel P enligt s skrivs s(P) • En unifierare för termer eller formler P, Q är en substitution s som gör dem lika: s(P) = s(Q) • Om en unifierare för P och Q existerar så finns det en unik mest generell unifierare (mgu) smgu. "Mest generell" betyder att varje unifierare s för P och Q kan delas upp i smgu och någon unifierare s'därs = s'  smgu Variablerna måste alltså substitueras med lämpliga termer. Lämpliga termer hittas med hjälp av unifiering. Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  8. Resolution i predikatlogiken (3) Exempel: t1 = f(g(x,y),f(g(x,b),y)) och t2 = f(z,f(z,y))(där x,y,z är variablerna)  smgu = [z := g(x,b), y := b] Det finns en enkel algoritm för att hitta smgu • börja med s = [] • om t1 = t2 så är s = smgu,annars hitta första positionen där termerna är olika (på exemplet g(x,y) och z) • om en av dem är en variabel, säg x, och den andra är en term, säg t, som inte innehåller x, låt sx=[x := t] (annars avslutas algoritmen – ingen unifierare existerar).Låt s:=sxs och ti:=sx(ti)och fortsätt med steg 2. Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  9. Resolution i predikatlogiken (4) Resolutionsprincipen för predikatlogik: Har vi ett målQ1 … Qm och en Hornklausul P  P1  …  Pn där något Qi, säg t.ex. Q1,kan unifieras med Pså får målet ersättas med smgu(P1) … smgu(Pn) smgu(Q2) … smgu(Qm). Om det ursprungliga målet var satisfierbar så är det nya målet också det. Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  10. Exempel • Djur som kan flyga har två benhar_ben(x1,2)  kan_flyga(x1) • Djur som har fyra ben äter inte honung medan djur med två ben äter honung.äter(x2,honung)  har_ben(x2,4) äter(x3,honung)  har_ben(x3,2) • Djur som inte äter honung äter nötter äter(x4,nötter)  äter(x4,honung) • Det finns djur som inte äter honungäter(a, honung) • Djur som äter nötter äter djur som äter honung äter(x5, y)  äter(x5,nötter)  äter(y, honung) • Svalor kan flyga kan_flyga (svalor) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

  11. Exempel (forts) • Finns det något djur som äter svalor?Negation: 7) äter(z,svalor) • äter(z,nötter)  äter(svalor,honung) (5+7; x5 :=z, y:=svalor) • äter(z,nötter)  har_ben(svalor,z) (3+8; x3:=svalor) • äter(z,nötter)  kan_flyga(svalor) (1+9; x1:=svalor) • äter(z,nötter) (6+10) • äter(z,honung) (3+11; x4:=z) • [ ] (4+12; z:=a) Lennart Edblom, Frank Drewes, Inst. f. datavetenskap

More Related