U MEL Á I NTELIGENCI A
-
Upload
shelagh-kennefick -
Category
Documents
-
view
47 -
download
0
description
Transcript of U MEL Á I NTELIGENCI A
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 1
UMELÁ INTELIGENCIA
Programovacie jazykypre
umelú inteligenciu
[email protected]:// neuron.tuke.sk/~machm
November, 2005
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 2
Osnova prednáškyÚvodZopár faktov z histórie (Lisp, Prolog)
KKUIUkáž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
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
Lisp1956 - John McCarthy - prvé myšlienky o jazyku ktorý sa stal Lispom
1958 - začala implementácia => Lisp 1.0 Vznikol ‘Lispovský’ model
if-then-else dátové typy ‘funkcia’ a ‘symbol’ premenná je pointer, hodnota má typ rekurzia garbage collector program je strom výrazov stála dostupnosť jazyka (prepojenie read - compile - run)
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 5
Vývoj LispuLisp 1.0, Lisp 1.5 v pol. 60-tych rokov prenesený na rôzne architektúry:
Univac M 460, IBM 7090, PDP-1, PDP-6
70-te a 80-te roky: chaos verzií MacLisp, InterLisp, Standard Lisp, Elisp, Lisp Machine Lisp,
ZetaLisp, Franz Lisp, VAX Interlisp, Lisp360, Lisp370, ....
1975: Scheme (ANSI štandard v 1991)
1981: Common Lisp - 1984 - ‘Common Lisp: The Language’ 1992 - draft štandardu, 1994 - ANSI štandard
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 6
Lispovské strojePeter Deutch (1973) - návrh jednoužívateľského mikropočítača špecializovaného pre beh Lispu a lispovského vývojového prostredia MIT AI LAB - CONS (1975), CADR (1978) - pre
komercionalizáciu vznikli firmy: Lisp Machine Inc. - klony CADR Symbolics - klony CADR, 3600 (1982), ďalšie rady 36xx
zatvoril ‘maintenance facility’ v 2005
Xerox PARC - Alto (1973), Dolphin (1979), Dandelion (1981), Dorado (1983)
TI - Explorer (1983), Explorer II (1987)
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 7
Symbolics: Lispovské stroje
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 8
Lisp na KKUIdoc. Ing. Tomáš Sabol, CSc.
KKUI - použitie v medzinárodných projektoch začiatky: 1986 na SM3 aktívne obdobie: druhá polovica 90-tych rokov Výuka: Teoretické základy UI Projekty:
ENCODE - ENvironment for COnfiguration DEsign (Allegro CL + Windows) 1995-98
ENRICH - Enriching Representations of Work to Support of Organisational Learning (Allegro CL + Linux)
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 9
Prolog1972 - oficiálny dátum vzniku
Robert Kowalski (University of Edinburgh) teoretický rámec na ktorom je Prolog postavený
(procedurálna interpretácia logiky Hornových klauzulí)
Alain Colmerauer (University of Aix-Marseille) so svojou skupinou vytvorili theorem prover ktorý bol
použitý pre implementáciu komunikačného systému v prirodzenom jazyku – tento systém nazvali PROLOG (PROgrammation et LOGique - PROgramming in LOGic).
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 10
Programmation et Logique
Every psychiatrist is a person.Every psychiatrist is a person.Every person he analyzes is sick.Every person he analyzes is sick.
Jacques is a psychiatrist in Marseille.Jacques is a psychiatrist in Marseille.
Is Jacques a person?Is Jacques a person?
Where is Jacques?Where is Jacques?
Is Jacques sick?Is Jacques sick?
Yes.Yes.
In Marseille.In Marseille.
I don't know.I don't know.
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 11
Vývoj ProloguDva z hlavných dialektov pochádzajú zo zakladateľských univerzít: Marseille: prvý prologovský interpreter (Roussel)
bežal na počítači IBM 360-67 v Grenobli, Marseille mala teletypové pripojenie na ten počítač
Edinburg: prvý prologovský kompilátor (D. Warren) mnoho ďalších riešení bolo tiež postavených na WAM
Prolog bol dlho ignorovaný, až kým sa nestal súčasťou japonského ‘Fifth Generation Project’
ISO Prolog štandardizácia: ISO/IEC 13211-1 bol publikovaný v 1995
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 12
Prolog na KKUIdoc. Ing. Július Csontó, CSc.
KKUI - jedno z prvých centier Prologu v ČSSR aktívne obdobie: od 1986 až do pol. 90-tych rokov Publikácie
1986 - prvé skriptá v ČSSR (Csontó - Slota) 1988, 1989 v JZD Agrokombinát Slušovice
Výuka: Aplikácia jazyka Prolog v UI Výskum: aplikačné použitie Prologu Projekty:
Prolex - prázdny expertný systém (MVS-CP/M, XT) Kravex - diagnostikovanie chorôb hov. dobytka (XT)
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 13
Popularita jazykov (November 2005)The TIOBE Programming Community Index založený na výbere z Google, MSN a Yahoo! Sleduje 100 jazykov
http://www.tiobe.com/tpci.htmlhttp://www.tiobe.com/tpci.html
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 14
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 15
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 16
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 17
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 18
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 19
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 20
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 21
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 22
Common Lisp (7)
; Lisp; Lisp(defun sum (n)(defun sum (n) (let ((s 0))(let ((s 0)) (dotimes (i n s)(dotimes (i n s) (incf s i))))(incf s i))))
/* C *//* C */int sum(int n){int sum(int n){ int i, s = 0;int i, s = 0; for(i=0; i<n; i++)for(i=0; i<n; i++) s += i;s += i; return(s);return(s);}}
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 23
Common Lisp (8)
Demo príklady
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 24
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 25
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 26
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 27
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 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 29
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 30
pocasiepocasie(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).
Prolog (7) o?- ?- 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 31
dazd(husty)dazd(husty)
slnko(svieti)slnko(svieti)
teplota(chladno)teplota(chladno)
slnko(nesvieti)slnko(nesvieti)
pocasie(pekne)pocasie(pekne)
teplota(teplo)teplota(teplo)
pocasie(X)pocasie(X)
1
2
3
4
5
7
6
X = zle
X = zle
X = zle
;
;
;
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 32
Prolog (8)
Demo príklady
Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach 33
Pohľadať na Internete: dostupné implementácie
komerčné nekomerčné (FLOSS)
aplikácie postavené na prezentovaných jazykoch
Domáca úloha (namiesto záveru)