25
Föreläsning 16 Logik med tillämpningar 020319

Föreläsning 16

  • Upload
    eljah

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Föreläsning 16. Logik med tillämpningar 020319. Innehåll. Information kring kursvärdering och tentagenomgång Genomgång av övningstenta 2. Kursvärdering och tentagenomgång. Kursvärdering öppnas torsdag 21/3 Sammanfattning på webben Lösningsförslag på webben Tentamensresultat via mail - PowerPoint PPT Presentation

Citation preview

Page 1: Föreläsning 16

Föreläsning 16

Logik med tillämpningar020319

Page 2: Föreläsning 16

Innehåll

Information kring kursvärdering och tentagenomgång

Genomgång av övningstenta 2

Page 3: Föreläsning 16

Kursvärdering och tentagenomgång

Kursvärdering öppnas torsdag 21/3– Sammanfattning på webben

Lösningsförslag på webben Tentamensresultat via mail Tentagenomgång

– ska vi ha det?– när? (Tis 2/4 enda vettiga alternativet…)

Page 4: Föreläsning 16

Övningstentan

Gavs 010421 av mig – omtenta på DV-prog. Täcker samma material som kommande

tentamen. Maxpoäng 40p (3, 4, 5 på 20, 26

respektive 32p) Är en ”normalsvår” tenta.

Page 5: Föreläsning 16

Uppgift 1 Redovisa stegen i algoritmen inte bara svaret. Förklara vad du gör i varje steg med några ord.

– Kan dock göra flera likadana omskrivningar i varje steg. Exempelvis flytta in alla negationer på en gång.

Visa tydligt vad i ditt svar som är slutsatsen.– Dvs vilken formel du anser vara ditt svar– (Läs noga är det PCNF eller klausulmängd som efterfrågas?)

Använd gärna olika parenteser för att visa vad som hör ihop med vad. {[()]}

Svar: {p(x1) q(x1,f(x1)) q(x1, g(x1)), p(x2) q(x2,f(x2)) r(g(x2), z2)}

Page 6: Föreläsning 16

Döp om variablerx(p(x) {y q(x, y) v[q(x, v) z r(v, z)]})Ta bort konnektiv utom , och x(p(x) {y q(x, y) v[q(x, v) z r(v, z)]})Flytta in negationerx(p(x) {y q(x, y) v[q(x, v) z r(v, z)]})Flytta ut kvantifierarexyvz (p(x) {q(x, y) [q(x, v) r(v, z)]})Gör om matrisen till CNFxyvz (p(x) {[q(x, y) q(x, v)] [q(x, y) r(v, z)]})xyvz ([p(x) q(x, y) q(x, v)] [p(x) q(x, y) r(v, z)])Skolemiseraxvz ([p(x) q(x, f(x)) q(x, v)] [p(x) q(x, f(x)) r(v, z)])xz((p(x) q(x,f(x)) q(x, g(x))) (p(x) q(x,f(x)) r(g(x), z))) Mängden: {p(x1) q(x1,f(x1)) q(x1, g(x1)), p(x2) q(x2,f(x2)) r(g(x2), z2)}

Page 7: Föreläsning 16

Uppgift 2 Måste förklara hur och varför roten i tablån ser ut

som den gör. Varför negera? Måste dra en slutsats från trädet, kan inte bara visa

trädet. Det är inte ett svar. Om tablån för negationen av formeln är öppen måste

en ny tablå göras. Inga förenklingar av formeln får göras varken före,

under eller efter man applicerar algoritmen. Svar: Formeln valid

Page 8: Föreläsning 16

Formeln är valid eftersom negationen är en motsägelse.

xy(p(x, y) (y p(y, x) r(y)))

y(p(a, y) (y p(y, a) r(y)))

y(p(a, y) (yp(y, a) r(y))), (p(a, a) (y p(y, a) r(a)))

y(p(a, y) (yp(y, a) r(y))), p(a, a), (y p(y, a) r(a)))

y(p(a, y) (yp(y, a) r(y))), p(a, a), y p(y, a), r(a)))

y(p(a, y) (yp(y, a) r(y))), p(a, a), yp(y, a), r(a))), p(a, a)

X

Page 9: Föreläsning 16

Uppgift 3 Var noga att kolla vad ni ska göra och att svara på alla

deluppgifter.E = p(x, y) q(f(x), z) r(v, u) = { xf(y), y f(a), z u} = { y g(a), u z, v f(f(a))}

E = p(f(y),f(a)) q(f(f(y)), u) r(v,u) E = p(x, g(a)) q(f(x), z) r(f(f(a)), z) E = p(f(g(a)),f(a)) q(f(f(g(a))), z) r(f(f(a)),z) = { x f(g(a)), y f(a), u z, v f(f(a))}

Page 10: Föreläsning 16

Uppgift 4

För att veta om den fungerar så gör man en sanningstabell för uttrycket

Uttrycket blev inte lika som output. Alltså fungerar inte kretskortet som etiketten säger. För att få en formel kan man ta de rader där output är T.

p q r q r p (q r) T T T T T T T F F T T F T F T T F F F T F T T T T F T F F F F F T F F F F F F F

Page 11: Föreläsning 16

Vi får då:(p q r) (p q r) (p q r)

den kan förenklas (alla formler från och med ovanstående är OK som svar, man behöver inte förenkla…)

(p r) (q q) (p q r)(p r) (p q r)(p (p q)) r(p p) (p q) r(p q) r

Page 12: Föreläsning 16

Uppgift 5a)

bar(1,N)

1 >= 2 (f)

bar(2,N)

2 >= 2 (s)

bar(3,N)

3 >= 2 (s)

foo(M, N)

p(M), bar(M,N) p(Z), N is Z*3

N is 1*3 (s)

N is 2*3 (s)

N is 3*3 (s)

{M=1} {M=2} {M=3} {Z=1} {Z=2} {Z=3}

{N=1} {N=2} {N=3}

M = 2 M = 3 N = 3; N = 6; N = 9; noN = 2; N = 3;

Page 13: Föreläsning 16

5b)

!, bar(1,N)

1 >= 2 (f)

foo(M, N)

p(M), bar(M,N) p(Z), N is Z*3

!, N is 1*3 (s)

{M=1} {Z=1}

{N=1}

SVAREN blirN = 3; no

Page 14: Föreläsning 16

Uppgift 6

Skriv vad du tänker, det kan i princip aldrig bli för mycket text…

Antag att U är en mängd satslogiska formler, dvs U = {A1, A2, ..., An}, antag dessutom att A och B också är satslogiska formler. Visa att om U {A} |= B så gäller att U |= A B.

Page 15: Föreläsning 16

 Svar Om U {A} |= B så innebär det att för alla tolkningar v så att v(U {A} ) = T så är v(B) = T Om v(U {A} ) = T så är v(U) = T och v(A) = T.  Enda tillfället då U |= A B inte gäller är om det finns en tolkning v så att v(U) =v(A) =T och v(B) = F. Men om v(U) =v(A) =T så är v(U {A} ) = T och då vet vi att v(B) = T. Alltså gäller påståendet.

Page 16: Föreläsning 16

Uppgift 7

Kom ihåg att om det står omm måste man bevisa ”åt båda hållen”.

Svar– Antag att S' satisfierbar då finns en modell v så att v(C) =

T för alla klausuler C i S'. Lägg till i tolkningen att v(l) = T. Då blir v(C) = T för alla klausuler C i mängden S- S'.

– Om S satisfierbar så är S' satisfierbar eftersom S' är en delmängd av S.

Page 17: Föreläsning 16

Uppgift 8Ett exempel på lösning är:% everynth(N, L1, L2)% Tar var N:te element ur listan L1% och returnerar det i L2...everynth(_, [], []).everynth(N, Xs, Ys) :-

everynth(N, 1, Xs, Ys). 

Page 18: Föreläsning 16

everynth(_, _, [], []).everynth(N, M, [X | Xs], [X | Ys]):-

A is M mod N,A == 0,M1 is M + 1,everynth(N, M1, Xs, Ys).

everynth(N, M, [X |Xs], Ys) :- A is M mod N,A \== 0,M1 is M + 1,everynth(N, M1, Xs, Ys).

Page 19: Föreläsning 16

Vilka lösningar ger ditt program på frågan everynth(3, X, [1, 2])?

X = [_A,_B,1,_C,_D,2] ? ;X = [_A,_B,1,_C,_D,2,_E] ? ;X = [_A,_B,1,_C,_D,2,_E,_F] ? ;No Där _A till _F är namn på anonyma variabler

Page 20: Föreläsning 16

Uppgift 9 Läs uppgiften noga, kan finnas flera frågor i en fråga. Kortfattade svar:

a) En algoritm är en beslutsprocedur om den terminerar och ger svaret 'yes' om formeln A tillhör U och 'no' om den ej tillhör U.b) Negera formeln och om den är osatisfierbar så är den falsk i alla tolkningar. Om v(A) = F i alla tolkningar så är v(A) = T i alla tolkningar dvs A är valid.

Page 21: Föreläsning 16

Uppgift 9c) Om X förekommer flera gånger i listan kommer programmet att lyckas

flera gånger. Detta kan undvikas antingen genom att skriva om programmet member(X, [X |Xs]).member(X, [Y|Xs]) :- X \== Y, member(X, Xs).

eller genom att lägga till ett rött cutmember(X, [X |Xs]):- !.member(X, [Y|Xs]) :- member(X, Xs).

Det går att argumentera för båda varianterna. Huvudargument alt.1 är att det fortfarande är ett logiskt korrekt program. Den andra varianten är mer effektiv med avseende på exekveringshastigheten.

Page 22: Föreläsning 16

Uppgift 10 Det finns tre typer av studenter: vanliga, exjobbare

och forskarstudenter. x(fostud (x) vanlig(x) exjobbare(x))

Studenter är inte forskarstudenter om det finns studenter som läst mer än dem. xy(läst_mer(x, y) fostud (y))

De studenter som läst mer än andra studenter är inte vanliga studenter. xy(läst_mer(x, y) vanlig(x))

Page 23: Föreläsning 16

Uppgift 10

Studenter är inte exjobbare om det finns andra studenter som läst mer och som är exjobbare. xy(läst_mer(x, y) exjobbare(x) exjobbare(y))

Jane har läst mer än Jill som i sin tur har läst mer än Mary läst_mer(Jane,Jill) läst_mer(Jill,Mary)

 Sedan vet vi också att egenskapen ”läst mer” är transitiv, dvs att följande förhållande gäller:xyz(läst_mer(x,y) läst_mer(y,z) läst_mer(x,z))

Page 24: Föreläsning 16

b)1. läst_mer(x1,y1) fostud (y1) 2. läst_mer(x2,y2) vanlig(x2)3. fostud (x3) vanlig(x3) exjobbare(x3)4. läst_mer(x4,y4) läst_mer(y4,z4) läst_mer(x4,z4)5. läst_mer(x5,y5) exjobbare(x5) exjobbare(y5)6.  läst_mer(Jane,Jill)

7. läst_mer(Jill,Mary)

Page 25: Föreläsning 16

c)

8. exjobbare(Jane)9. läst_mer(Jane,y5) exjobbare(y5) {x5Jane} 5 o 810. exjobbare(Jill) {y5 Jill} 6 o 911. fostud (Jill) vanlig(Jill) {x3 Jill} 3 o 1012. läst_mer(x1,Jill) vanlig(Jill) {y1 Jill} 1 o 1113. läst_mer(x1,Jill) läst_mer(Jill, y2) {x2 Jill} 2 o 1214. läst_mer(Jill, y2) {x1 Jane} 6 o 1315. [] {y2 Mary} 7 o 14