Jazyky pro umělou inteligenci RNDr. Jiří Dvořák, CSc.
Jazyky pro umělou inteligenci Řešení problémů umělé inteligence (UI) lze naprogramovat i v běžných programovacích jazycích, jako je Pascal nebo C. Vzhledem k charakteru problémů UI jsou pro tento účel často používány speciální programovací jazyky, jako např. Lisp (používaný zejména v USA) a Prolog (populární zejména v Evropě). Speciální programovací jazyky pro UI jsou obvykle založeny na jiných paradigmatech programování (programovacích stylech) než klasické programovací jazyky.
Programovací styly Program = algoritmus + datové struktury Algoritmus = funkce (logika) + řízení Imperativní programovací styl Je kladen důraz na řídicí složku, tj. JAK se má výpočet provést. Program je tvořen posloupností příkazů. Neimperativní (deklarativní) programovací styly Řídicí složka je potlačena a důraz je kladen na to CO má být vypočteno. Program je např. tvořen souborem definic funkcí a jejich aplikací ve formě výrazů (funkcionální programování) nebo souborem logických formulí (logické programování), které specifikují řešený problém.
Neimperativní programovací jazyky Příklady jazyků pro funkcionální programování: Lisp, FP, Hope, Miranda, Haskell Příklady jazyků pro logické programování: Prolog, ECL i PS e, Gödel, Mercury Použití neimperativních jazyků: –Řešení speciálních problémů (např. problémů UI) –Vytvoření prototypu programu, po jehož ověření se může pokračovat imperativním způsobem
Obsah předmětu 1.Funkcionální programování. Jazyk Lisp - struktura programu, typy dat. 2.Základní funkce, definice funkcí, mechanismus vyhodnocování. 3.Funkce pro zpracování seznamů a čísel, predikáty, vyhodnocovací funkce. 4.Rekurze a iterace, mapovací funkcionály, definice a vyhodnocení maker. 5.Modifikace struktur, reprezentace atomů, vstup a výstup, správa paměti. 6.Příklady aplikací jazyka Lisp na řešení problémů umělé inteligence.
7.Logické programování. Jazyk Prolog - struktura programu, datové objekty. 8.Deklarativní a procedurální sémantika programu, zpracování seznamů a čísel. 9.Operátorová notace, typové a meta-logické predikáty, rozklad a vytváření termů. 10.Řez, negace, práce s databází. 11.Vstup a výstup, navracení a predikát repeat. 12.Tvorba expertních systému v Prologu. 13.Příklady aplikací jazyka Prolog na řešení dalších problémů umělé inteligence.
Literatura Kolář, J.: Jazyky pro umělou inteligenci. Skripta. ČVUT Praha Kalaš, I.: Iné programovanie - stretnutie s jazykom Lisp. Alfa, Bratislava Polák, J.: Prolog. Grada Koschmann, T.D.: The Common Lisp Companion. John Wiley & Sons Clocksin, W.F., Mellish, C.S.: Programming in Prolog. Springer- verlag Charniak, E. et al.: Artificial Intelligence Programming. LEA Publishers Bratko, I.: Prolog Programming for Artificial Intelligence. Addison- Wesley 1990.