Budou průběžně doplňovány podle potřeby, prozatím uvádím:
Test č.1 - předběžně 7. týden
Základní pojmy a prvky jazyka Prolog, stromy struktur, analýza dotazů a programů, výpočtové stromy, definování jednoduchých predikátů.
Test č.2 - předběžně 12. týden
Teorie logického programování, induktivní logické programování, definování jednoduchých predikátů.
(Doporučeno odevzdat do 2.12.09)
K "relační databázi" uložené v souboru KIZI.PL připojte program, který bude v menu (vyvolaném predikátem menu/0) nabízet následující funkce:
Při psaní programu dodržujte v maximální míře deklarativní styl programování a dbejte na znovupoužitelnost jednotlivých predikátů!
Podstata úkolu je v implementaci rozsáhlejšího programu v Prologu - dle varianty A, B nebo C. Kromě samotného programu je třeba odevzdat i soubor s dokumentací. Rozsah ani formát dokumentace nejsou specifikovány; měla by popisovat práci s programem a základní principy použité při jeho tvorbě, a vysvětlit, jaké výhody Prolog pro vývoj tohoto programu poskytl ve srovnání s imperativními programovacími jazyky.
Zvolte si úlohu řešitelnou pomocí prohledávání stavového prostoru nebo pomocí řešení soustavy omezení, a realizujte toto řešení v Prologu. Prohledávání stavového prostoru může mít charakter prohledávání do hloubky, do šířky, nebo i složitějším způsobem. Soustava omezení musí mít netriviální charakter, způsob její formalizace nesmí být na první pohled zřejmý, ale musí vyžadovat jistou míru invence. Jako úloha může být zvolen libovolný problém, ať už s charakterem hry nebo např. plánování akcí v reálném světě.
Soustřeďte se zejména na deklarativní popisy stavů a přechodových operátorů, resp. prvků úlohy a omezení. Důsledně je oddělte od procedurální částí (řídící kód aplikace, výpisové predikáty).
Řešení dále doplňte (v komentáři nebo samostatném komentářovém souboru) zběžnou analýzou výpočetní složitosti -
nemusí být ve striktně matematickém smyslu, stačí např. v případě stavových prostorů zjistit/odhadnout počet možných stavů,
délku optimálního reseni, průměrný počet operátorů aplikovatelných v témže stavu apod.;
podobně i v případě soustavy omezení (kde je prohledávání stavového prostoru přítomno implicitně,
v rámci odvozování prologovského inferenčního mechanismu).
Navrhněte program využívající DC gramatiky (případně i jiné techniky) k analýze/syntéze vět/slov přirozeného jazyka, pro úzce vymezený účel. Příklady:
Program bude zahrnovat alespoň 2 z následujících činností:
Při psaní programu dodržujte v maximální míře deklarativní styl programování a dbejte na znovupoužitelnost jednotlivých predikátů!
Po předchozí dohodě s vyučujícím vytvořte program, vhodně využívající prostředky Prologu pro samostatně zvolenou úlohu. Program bude mít přiměřený rozsah, a bude doplněn dokumentací (v rámci komentářů ke kódu, nebo v samostatném souboru).
Při psaní programu dodržujte v maximální míře deklarativní styl programování a dbejte na znovupoužitelnost jednotlivých predikátů!