Download
prolog n.
Skip this Video
Loading SlideShow in 5 Seconds..
Prolog PowerPoint Presentation

Prolog

130 Views Download Presentation
Download Presentation

Prolog

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Prolog Příklady Marek Menšík

  2. Příklad 1 Dva kamarádi se rozhodli, že půjdou navštívit svou spolužačku, která bydlí na opačné straně města. Jelikož je město rozlehlé a cesta tramvají trvá přes hodinu, protože objíždí celé město, tak si řekli, že půjdou pěšky přes místí kanalizační síť, neboť kamarádka na ně bude čekat jen 30 minut. Kanalizační síť je rozlehlá a proto si vzali mapu. Netušili však, že se prováděly opravy a tudíž některé cesty byly zablokovány (nevěděli které – to víme jen my). Vaším úkolem je těmto kamarádům pomoct. Aby to neměli tak lehké, tak jim můžete pouze odpovědět ano v případě, že se jimi zvolenou cestou dostanou v časovém limitu ke spolužačce, a ne v případě neúspěchu. Cesta mezi každými dvěmi vstupy trvá 15 minut.

  3. B E A D C F Příklad 1 Kamarádi se nacházejí u vstupu A, jejich spolužačka u vstupu F. Uzel D se opravuje, tedy je nepřístupný. cesta(a,b). cesta(a,c). cesta(a,e). cesta(b,e). cesta(c,f). cesta(e,f).

  4. Příklad 1ověřování- existuje cesta obsahující pouze 1 přestup? cesta(a,b).cesta(a,c).cesta(a,e).cesta(b,e).cesta(c,f).cesta(e,f). test(Vstup,Pres,Vystup) :- cesta(Vstup,Pres),cesta(Pres,Vystup). ?-test(a,c,f). -> cesta(a,c) ok -> cesta(c,f) ok Yes Druhá možnost: Test1(Vstup,Vystup) :- cesta(Vstup,Pres), cesta(Pres,Vystup). ?-test1(a, f).  cesta(a,e), cesta(e,f) Yes (ale přes co?)

  5. Příklad 1hledání - která cesta vyhovuje? cesta(a,b).cesta(a,c).cesta(a,e).cesta(b,e).cesta(c,f).cesta(e,f). test(Vstup,Pres,Vystup) :- cesta(Vstup,Pres),cesta(Pres,Vystup). ?-test(a,X,f). -> cesta(a,X) X = b ->cesta(b,f) fail <- cesta(a,X) X = c ->cesta(c,f) ok X = c ; <-cesta(c,f) fail <- cesta(a,X) X = e ->cesta(e,f) ok X = e ; <-cesta(e,f) fail <- cesta(a,X) fail <-test(a,X,f) NO

  6. Příklad 2 zadání Stojí před vámi člověk. Máte zavázané oči, takže jej nevidíte a ani nesmíte s ním mluvit. Pouze víte následující: Osoba před vámi je postižená. Všichni, co jsou slepí nebo žijí, jsou hluší. Každý, kdo je hluchý a žije, je postižený. Každý, kdo je slepý a žije, je postižený. Všichni postižení jsou slepí. Otázka… Je tato osoba hluchá? P(a) x[(S(x)  Z(x))  H(x)] x[(H(x)  Z(x))  P(x)] x[(S(x)  Z(x))  P(x)] x[P(x)  S(x)] ------------------------------- H(a)

  7. Příklad 2 převod do log. programu P(a) x[(S(x)  Z(x))  H(x)] x[(H(x)  Z(x))  P(x)] x[(S(x)  Z(x))  P(x)] x[P(x)  S(x)] ------------------------------- H(a) postiz(a). hluchy(X):- slepy(X); zije(X). postiz(X):- hluchy(X), zije(X). postiz(X):- slepy(X), zije(X). slepy(X):- postiz(X). -------------------------------  ?- hluchy(a). Výpočet: 2. klauzule (X=a), ?- slepy(a) 5. klauzule (X=a), ?- postiz(a) 1. klauzule: YES

  8. Příklad 3 Vytvořte predikát suma(N,Suma), kde N je přirozené číslo a Suma je součet čísel od 1 do N. suma(1,1). suma(N,Suma) :- N1 is N-1, suma(N1,Suma1), Suma is Suma1 + N. ?-suma(2,X). ->N1 is 2 - 1 N1 = 1 ->suma(1,X1) X1 = 1 <-X is 1 + 2 X = 3 Predikát isje speciálnípredikát: na pravé straně musí být aritmetický výraz, jeho výsledek se unifikuje s proměnnou na levé straně.

  9. Příklad 3 Vytvořte predikát suma(N,Suma), kde N je přirozené čísloa Suma je součet čísel od 1 do N. suma(1,1). suma(N,Suma) :- N1 is N-1, suma(N1,Suma1), Suma is Suma1 + N. ?-suma(3,X). -> N1 is 3 - 1 N1 = 2 ->suma(2,X1) ->N11 is 2 - 1 N1 = 1 ->suma(1,X11) X11 = 1 <-X1 is 1+2 X1 = 3 <- X is 3 + 3 X = 6

  10. Příklad 4 Vytvořte predikát secti(Sez,Suma), kde Sez je seznam přirozených čísel a Suma je součet všech čísel v seznamu. secti([],0). secti([X|Y],Soucet) :- secti(Y,Soucet1), Soucet is Soucet1+X. ?-secti([1,2],X). ->secti([2],X1) -> secti([],X11) X11 = 0 <-X1 is 0 + 2 X1 = 2 <-X is 2 + 1 X = 3 Datová struktura seznam: „nekonečná uspořádaná n-tice“. Zadání tvaru [Hlava, Tělo], kde Hlava je prvek a Tělo je opět seznam. Prázdný seznam [].