u mel Á i nteligenci a prednáška č. 10

28
Katedra kybernetiky a umelej inteligencie FEI, TU v Košicia ch 1/ 28 UMELÁ INTELIGENCIA prednáška č. 10 Programovacie jazyky pre umelú inteligenciu [email protected] http:// neuron.tuke.sk/~machm

Upload: dane-cote

Post on 30-Dec-2015

27 views

Category:

Documents


4 download

DESCRIPTION

U MEL Á I NTELIGENCI A prednáška č. 10. Programovacie jazyky pre umelú inteligenciu Marian.Mach @ tuke.sk http :// neuron.tuke.sk/~machm. Osnova prednášky. Úvod Ukážkový problém FOR jazyk IN (Lisp, Prolog, Clips) - PowerPoint PPT Presentation

TRANSCRIPT

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 1/ 28

UMELÁ INTELIGENCIA prednáška č. 10

Programovacie jazykypre

umelú inteligenciu

[email protected]:// neuron.tuke.sk/~machm

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 2/ 28

Osnova prednáškyÚvodUkážkový problémFOR jazyk IN (Lisp, Prolog, Clips)

vybrané charakteristiky jazyka (nevyhnutne potrebné pre pochopenie ukážok programov)

demo programy poznámky k programom (diskusia)

Záver

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 3/ 28

UI využíva tri typy programovacích jazykov: štandardné jazyky ‘špeciálne’ jazyky (so všeobecným použitím) špecializované jazyky (clp, reprezentácia znalostí)

Väčší dopyt po širokom spektre jazykov pochádza zo symbolickej vetvy UI

Jazyková ochutnávka: Common Lisp - funkcionálne programovanie Prolog - logické (deklaratívne) programovanie Clips - pravidlové programovanie

Jazyky pre UI

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 4/ 28

Potrebný taký problém, aby: riešenie nebolo dlhé nebol príliš špecializovaný (šitý pre nejaký jazyk) vyžadoval základné programové konštrukcie bol všeobecne pochopiteľný

Požiadavky na demo problém

čo tak si zaspievať ?

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 5/ 28

Jednoduchý problém (implementovaný v niekoľkých stovkách jazykov)

Demo problém

99 bottles of beer on the wall. Take one down, and pass it around.99 bottles of beer on the wall. Take one down, and pass it around.......2 bottles of beer on the wall. Take one down, and pass it around.2 bottles of beer on the wall. Take one down, and pass it around.1 bottle of beer on the wall. Take one down, and pass it around.1 bottle of beer on the wall. Take one down, and pass it around.Now, they are all gone.Now, they are all gone.

cyklus, iterácia (99,...,2,1) vetvenie (‘bottles’ vers. ‘bottle’) sekvencia (tlač textu po častiach)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 6/ 28

Jedným z hlavných znakov je (rozsiahle) používanie rekurzie

V C jazyku možné, avšak používané výnimočne Príklad: vytlačiť zopár hviezdičiek za sebou

Common Lisp (1)

void tlacvoid tlac(int x)(int x){{ if( x <= 0 ) return;if( x <= 0 ) return; printf(“ * ”);printf(“ * ”); tlac(--x);tlac(--x);}}

int tlacint tlac(int x)(int x){{ if( x > 0 ) printf(“ * ”,tlac(--x));if( x > 0 ) printf(“ * ”,tlac(--x));}}

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 7/ 28

Funkcionálne programovanie aplikácia funkcie na vstupné dáta produkuje výsledok funkcia vždy vracia výsledok (môže mať aj iný

(vedľajší) efekt, napr. výstup alebo zmenu hodnoty) problém so sekvenciou

Lispovský program pozostáva (najmä) z funkcií návratová hodnota jednej funkcie sa priamo používa

ako vstup inej funkcie

Common Lisp (2)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 8/ 28

Dátové typy atómy (čísla a symboly) zoznamy reťazce (vektory znakov)

Zoznamy reprezentujú dáta alebo program ! () - prázdny zoznam (pondelok utorok (sobota nedeľa)) (< 3 4 5), (sqrt (+ (* x x) (* y y)))

Common Lisp (3)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 9/ 28

Vyhodnotenie symbolu vráti hodnotu (value) hodnota môže byť nedefinovaná, alebo to je niečo,

napr. iný symbol

Funkčné vyhodnotenie symbolu vráti fvalue

Špeciálne symboly: t (hodnota je true), nil (hodnota je nil)

Predikát funkcia vracajúca t alebo nil

Common Lisp (4)

SymbolSymbol

value value ::fvalue fvalue ::... ... ::

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 10/ 28

Interaktívny mód: read-eval-print loop

Eval je definovaný: ak výraz je atóm, vráť value ak je zoznam, testuj prvý prvok v zozname

ak špeciálna forma, tak ju a jej argumenty ošetri osobitne ak makro, tak ho expanduj a choď na začiatok ak funkcia, tak:

nájdi fvalue prvého symbolu v zozname vyhodnoť všetky argumenty aplikuj funkciu na argumenty vráť hodnotu

Common Lisp (5)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 11/ 28

Common Lisp (6)

LispLisp

(setq b 8)(setq b 8)

(setq a b)(setq a b)=> => aa obsahuje 8 obsahuje 8

(setq a ‘b)(setq a ‘b)=> => aa obsahuje B obsahuje B

(set a ‘c)(set a ‘c)=> => bb obsahuje C obsahuje C=> => aa obsahuje B obsahuje B

CC

int a, b;int a, b;b = 8;b = 8;a = b;a = b;

=> => aa obsahuje 8 obsahuje 8

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 12/ 28

Common Lisp (7)

Demo príklady

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 13/ 28

Interaktívny režim kladenie otázok, ktoré sa systém snaží zodpovedať na

základe svojej databázy otázka je považovaná za výrok

ktorý sa systém snaží dokázať systém stanoví podmienky za ktorých je výrok platný

systém obsahuje zabudovaný odvodzovací mechanizmus

stačí povedať čo sa má robiť, nie je potrebné definovať ako sa to má urobiť

možno ho využiť vo väčšej alebo menšej miere

Prolog (1)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 14/ 28

Objekty jazyka (termy): konštanty

čísla atómy (napr. textové konštanty začínajúce malým písmenom)

premenné Januar (veľké písmeno), _ (špeciálna anonymná premenná)

štruktúry funktor a argumenty (árnosť = počet argumentov) ma(jano, rokov(20)) - klasický zápis operátorový zápis (árnosť 1 alebo 2) - jano ma 20 rokov zoznam (špeciálny zápis - [jano, fero, miso])

Prolog (2)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 15/ 28

Prolog (3)

Databáza obsahuje klauzuly (fakty a pravidlá): fakty

sú to štruktúry (ľubovoľnej árnosti) definujú to čo platí

Model ‘uzavretého sveta’ - čo nie je v databáze, alebo sa z nej nedá odvodiť, to neplatí

osoba(meno,priezvisko).osoba(meno,priezvisko).pocasie([vietor, hmla]).pocasie([vietor, hmla]).teplota(Chladno).teplota(Chladno).prsi.prsi.

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 16/ 28

Databáza obsahuje klauzuly (fakty a pravidlá): pravidlá

binárne štruktúry tvaru: HLAVA :- TELO definujú vzťahy medzi cieľmi (rozklad cieľa na podciele)

Premenné sú lokálne, ich platnosť je iba v rámci jednej klauzuly

Prolog (4)

pocasiepocasie(zle) (zle) :- dazd(husty); teplota(chladno). :- dazd(husty); teplota(chladno).meno([jano| OSTATNI]) :- meno(OSTATNI).meno([jano| OSTATNI]) :- meno(OSTATNI).sirota(Kto)sirota(Kto) :- not(matka(Matka, Kto)), :- not(matka(Matka, Kto)),

not(otec(_, Kto)).not(otec(_, Kto)).

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 17/ 28

Unifikácia (zhodnosť) neviazaná premenná sa môže unifikovať na ľubovoľný

objekt, naviaže sa naň unifikáciou dvoch neviazaných premenných vzniknú

zdieľané premenné ak jedna získa hodnotu, tak ju bude mať aj druhá

štruktúry sú unifikovateľné, ak majú rovnaký funktor a počet argumentov, a jednotlivé argumenty sú unifikovateľné

Viazaná premenná nemôže zmeniť svoju hodnotu

Prolog (5)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 18/ 28

Dokazovanie (prehľadávanie) pokus o splnenie cieľa

DB sa prehľadáva zhora nadol, začína sa od začiatku

pokus o opätovné splnenie (hľadanie alternatívy) DB sa prehľadáva zhora nadol, začína sa od posledne nájdenej

možnosti

v prípade neúspešného pokusu sa systém vracia k posledne úspešnému splneniu a pokúša sa o novú alternatívu

zrušia sa viazania premenných, ktoré prebehli pri práve rušenej unifikácii

Prolog (6)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 19/ 28

Prolog (7) opocasiepocasie(zle) :- (zle) :-

dazd(husty); dazd(husty); teplota(chladno).teplota(chladno).

pocasie(pekne) :- pocasie(pekne) :- slnko(svieti), slnko(svieti), teplota(teplo).teplota(teplo).

pocasie(zle) :- pocasie(zle) :- slnko(nesvieti).slnko(nesvieti).

pocasie(zle) :-pocasie(zle) :-not(pocasie(pekne)).not(pocasie(pekne)).

pocasie(zle).pocasie(zle).slnko(svieti).slnko(svieti).teplota(chladno).teplota(chladno).dazd(ziadny).dazd(ziadny).

?- ?- pocasie(zle).pocasie(zle).yesyes

?- ?- pocasie(pekne).pocasie(pekne).nono

?- ?- pocasie(X).pocasie(X).X = zleX = zleyesyes

?- ?- pocasie(X).pocasie(X).X = zle X = zle ;;X = zle X = zle ;;X = zle X = zle ;;nono

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 20/ 28

Prolog (8)

Demo príklady

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 21/ 28

Poskytuje tri možné prístupy: funkcionálny - štandardné volanie funkcií, vrátane

definovania vlastných objektový - abstrakcia, zapúzdrenie, dedičnosť,

polymorfizmus pravidlový - implementujúci dopredné reťazenie

pravidiel

Tieto prístupy sa dajú používať samostatne alebo vo vzájomnom kombinovaní

Clips (1)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 22/ 28

Základné elementy (pravidlový prístup): fakty (umiestnené v oddelenej dátovej pamäti - DP) pravidlá (v osobitnej báze pravidiel)

Fakty: fakt obsahuje jeden alebo viacero symbolov pozičné alebo nepozičné

(muzi fero miso) - záleží na poradí symbolov

fakt v DP získava identifikátor, pomocou ktorého je možné s týmto faktom manipulovať (mazať z DP, filtrovať výpis obsahu DP)

Clips (2)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 23/ 28

Pravidlá: všeobecný tvar je: LHS => RHS LHS obsahuje

vzory, ktoré je možné porovnávať s obsahom DP ďalšie podmienky (and, or, negácia, testy)

RHS obsahuje akcie (príkazy), ktoré sa majú vykonať

manipulácia s obsahom DP iné (napr. tlač)

Clips (3)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 24/ 28

Premenné: lokálna platnosť iba pre dané pravidlo, v ktorom sa

vyskytujú špeciálna syntax: ?kto (začínajú otáznikom) možné priradiť hodnotu tromi spôsobmi:

zrovnanie s obsahom DP (LHS) priradenie identifikátora faktu (LHS) priradenie hodnoty (RHS)

Clips (4)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 25/ 28

Pravidlo môže byť aktivované všetky vzory z LHS pravidla je možné úspešne

porovnať s DP (môže dôjsť k priradeniu premenných)

ostatné podmienky v LHS sú splnené

Aktivácie sa ukladajú do agendy

Ak vzory z LHS je možné porovnať viacerými spôsobmi s DP, pre každý z nich sa získa jedna aktivácia

Clips (5)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 26/ 28

Aktivácia pravidiel a ich uloženie do agendy

Usporiadanie pravidiel v agende podľa priority v rámci rovnakej priority podľa nejakej nastavenej

stratégie (je niekoľko rôznych stratégií)

Prvé pravidlo/ aktivácia sa odpáli (vyberie z agendy a vykoná jeho RHS)

Neplatné aktivácie sú z agendy odstránené, nové aktivácie sú pridané

Ak agenda nie je prázdna, choď na krok 2.

Clips (6)

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 27/ 28

Clips (7)

Demo príklady

Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 28/ 28

Pohľadať na Internete: odkedy sa prezentované jazyky používajú dostupné implementácie (komerčné a nekomerčné) trochu z histórie vývoja jazykov aplikácie postavené na prezentovaných jazykoch

Čo bude Prolog generovať, ak pre nasledujúci obsah databázy a otázku ?-pocet(Kolko) na ľubovoľnú odpoveď systému budete žiadať ďalšiu alternatívu?

Domáca úloha (namiesto záveru)

pocetpocet(0). (0). pocet(X) :- pocet(Y), X is Y + 1.pocet(X) :- pocet(Y), X is Y + 1.