- specifikuje se pouze čeho je třeba dosáhnout, aniž by bylo třeba rozepisovat přístup jak
- příkazy lze formulovat podle jazyka pred. logiky, tzn. definice v téměř přirozeném jazyce, což zefektivňuje práci jak programátora, tak uživatele
- program lze modifikovat (přidávat a odebírat pravidla) v průběhu jeho vykonávání
Všechny tyto vlastnosti umožňují reprezentovat úlohu formou symbolického popisu. Základem logického programování jsou termy a výrazy, které jsou reprezentovány: fakty, dotazy, pravidly
Fakta
Fakta jsou nejjednodušší výrazy vyjadřující vztah, relaci mezi objekty.otec(petr, pavel) – Petr je otec Pavla
Stejně jako v před. logice se otec nazývá predikát a jména objektů atomy. Nejjednodušší program v jazyce PROLOG pak představuje konečná množina faktů. predikáty mohou být unární i bez parametru.
Dotaz
Dotaz je další formou logického výrazu. Jeho význam spočívá v podání odpovědi, zda určitá forma predikátu vyjadřuje vztah mezi objekty, nebo ne.Dotaz ?-otec(petr,pavel) vrátí yes
Dotaz se liší od faktu předřazením ?- a v jazyce prolog se mu říká goal. Vzhledem k tomu, že PROLOG má pouze dvouhodnotovou logiku, odpověď no pak může znamenat buďto, že Petr není otcem anebo, že dané osoby vůbec neexistují. Kromě objektů lze stejně jako v predikátové logice použít proměnné.
?-otec(petr,X) vrátí X-pavel
Kromě konkrétních proměnných lze použít i anonymní proměnné, na jejichž významu nezáleží. Lze použít, pokud potřebujeme zjistit, zda je vůbec objekt v relaci:
?-otec(petr,_) vrátí yes tzn. petr je otcem
Opět stejně jako v před. logice výše uvedné jsou termy. Ty jsou tvořeny atomy, proměnnými, složenými termy. Ty se skládají z funktoru f a posloupnosti argumentů:
kniha(autor(alois, jirásek), název(staré_pověsti_české)) Spolu se složenými termy se uplatňuje i konjunkce dotazů:
?-otec(jan,X), muž(X) vrátí pouze mužské potomky Jana (tj. syny)
Pravidla
Pravidla jsou typem výrazů, jež umožňují definovat nové vztahy mezi termy na základě termů, které již existují. Pravidlo má tvar přičemž A je hlava pravidla a B tvoří tělo pravidla. Pravidlo lze interpretovat přirozeným jazykem jako: „A platí, jestliže platí B1 a B2 a … a Bn“. Nové vztahy lze definovat jako:syn (X,Y) otec(X,Y), muž(X) Odvození se pak provádí použitím pravidla modus ponens, tj. z platnosti B a existence AB vyplývá B. Dotaz ?-syn(X,jan) se převede na ?-otec(jan,X), muž(X) a výsledkem jsou synové Jana. Predikát může mít někdy více možností tj.:
rodič(X,Y) otec(X,Y) rodič(X,Y) matka(X,Y)
Program vyhodnotí první možnost, pokud není nalezen výsledek, pokračuje na další možnost.
Fakta, dotazy a pravidla se také nazývají Hornovy klauzule a samotný logický program jazyka PROLOG je jejich konečná množina.
Seznam
Jak už bylo řečeno, jazyky umělé inteligence vyžadují bohatou vnitřní strukturu. U jazyka prolog to jsou seznamy a stromy. Prvky seznamu mohou být buďto atomy, složené termy nebo opět seznamy. Seznam je také tvořen hlavou (jedním prvek) a tělem (zbytkem seznamu). Seznam může být prázdný. Zapisuje se jako:[první, druhý, třetí] nebo [první | [druhý, třetí]]
Seznam lze pak vypsat např. násl. způsobem:
vypis_seznam{[]}. //pokud je seznam prázdný vrať true
vypis_seznam{[H,T]} :- write(H), vypis_seznam(T). //Rozděl seznam na první prvek (Hlava H) a zbytek seznamu (Tělo T). Vypiš H a zpracuj T


děkuji..
2013 ©