Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Prolog Příklady Marek Menšík. 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.

Podobné prezentace


Prezentace na téma: "Prolog Příklady Marek Menšík. 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."— Transkript prezentace:

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 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ý. A B C D E F cesta(a,b). cesta(a,c). cesta(a,e). cesta(b,e). cesta(c,f). cesta(e,f).

4 Příklad 1 ověř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). -> cesta(a,c)ok -> cesta(c,f)ok Yes ?-test(a,c,f). 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 1 hledá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). -> cesta(a,X)X = b -> cesta(b,f)fail ?-test(a,X,f). <- 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 NO <-test(a,X,f)

6 Příklad 2 zadání 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) 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.

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. -> N1 is 2 - 1N1 = 1 -> suma(1,X1)X1 = 1 ?-suma(2,X). <- X is 1 + 2 X = 3 suma(1,1). suma(N,Suma):-N1 is N - 1, suma(N1,Suma1), Suma is Suma1 + N. Predikát is je 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é číslo a Suma je součet čísel od 1 do N. -> N1 is 3 - 1N1 = 2 -> suma(2,X1) ?-suma(3,X). -> N11 is 2 - 1N1 = 1 -> suma(1,X11)X11 = 1 <- X1 is 1 + 2X1 = 3 <- X is 3 + 3 X = 6 suma(1,1). suma(N,Suma):-N1 is N - 1, suma(N1,Suma1), Suma is Suma1 + N.

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([2],X1) -> secti([],X11)X11 = 0 ?-secti([1,2],X). <- X1 is 0 + 2X1 = 2 <- X is 2 + 1 X = 3 secti([],0). secti([X|Y],Soucet):-secti(Y,Soucet1), Soucet is Soucet1+X. 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 [].


Stáhnout ppt "Prolog Příklady Marek Menšík. 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."

Podobné prezentace


Reklamy Google