4IZ530 - Logické programování

(Doc. Ing. Vojtěch Svátek, Dr.)

Informační zdroje

Budou průběžně doplňovány podle potřeby, prozatím uvádím:

Termíny a náplň kontrolních testů

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ů.




Zadání úkolu č.1 - aplikace nad "databází"

(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:

  1. Výpis všech předmětů ve tvaru Ident - Název.
  2. Výpis všech předmětů učitele (zadaného příjmením) - ident a název.
  3. Výpis všech učitelů předmětu (zadaného identem) - jméno a příjmení.
  4. Zjištění počtu osob se zadaným titulem.
  5. Zjištění počtu předmětů, které mají větší, menší resp. stejný rozsah přednášek jako cvičení.

Při psaní programu dodržujte v maximální míře deklarativní styl programování a dbejte na znovupoužitelnost jednotlivých predikátů!


Zadání úkolu č.2 - souhrnně

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.

Zadání úkolu č.2, varianta A - řešení úlohy ve stavovém prostoru nebo složité soustavy omezení

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).


Zadání úkolu č.2, varianta B - zpracování přirozeného jazyka

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ů!


Zadání úkolu č.2, varianta C - program na volné téma

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ů!


Vojtěch Svátek - výuka
Vojtěch Svátek - hlavní stránka



Vojtěch Svátek , aktualizováno 16.1.2010