1 / 33

U MEL Á I NTELIGENCI A

U MEL Á I NTELIGENCI A. Programovacie jazyky pre umelú inteligenciu Marian.Mach @ tuke.sk http :// neuron.tuke.sk/~machm November, 2005. Osnova prednášky. Úvod Zopár faktov z histórie ( Lisp, Prolog) KKUI Ukážkový problém FOR jazyk IN (Lisp, Prolog, Clips)

fedora
Download Presentation

U MEL Á I NTELIGENCI A

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UMELÁ INTELIGENCIA Programovacie jazyky pre umelú inteligenciu Marian.Mach@tuke.sk http:// neuron.tuke.sk/~machm November, 2005 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  2. Osnova prednášky • Úvod • Zopár faktov z histórie (Lisp, Prolog) • KKUI • Ukážkový problém • FOR 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. Jazyky pre UI • 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 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  4. Lisp • 1956 - 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 Lispu • Lisp 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é stroje • Peter 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 KKUI • doc. 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. Prolog • 1972 - 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 person he analyzes is sick. Jacques is a psychiatrist in Marseille. Is Jacques a person? Where is Jacques? Is Jacques sick? Yes. In Marseille. I don't know. Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  11. Vývoj Prologu • Dva 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 KKUI • doc. 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.html Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  14. Požiadavky na demo problém • 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ý čo tak si zaspievať ? Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  15. Demo problém • Jednoduchý problém (implementovaný v niekoľkých stovkách jazykov) 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. 1 bottle of beer on the wall. Take one down, and pass it around. 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. Common Lisp (1) • 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 void tlac(int x) { if( x <= 0 ) return; printf(“ * ”); tlac(--x); } int tlac(int x) { if( x > 0 ) printf(“ * ”,tlac(--x)); } Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  17. Common Lisp (2) • 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 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  18. Common Lisp (3) • 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))) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  19. Symbol value : fvalue : ... : Common Lisp (4) • 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 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  20. Common Lisp (5) • 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 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  21. C int a, b; b = 8; a = b; => a obsahuje 8 Lisp (setq b 8) (setq a b) => a obsahuje 8 (setq a ‘b) => a obsahuje B (set a ‘c) => b obsahuje C => a obsahuje B Common Lisp (6) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  22. Common Lisp (7) /* C */ int sum(int n){ int i, s = 0; for(i=0; i<n; i++) s += i; return(s); } ; Lisp (defun sum (n) (let ((s 0)) (dotimes (i n s) (incf s i)))) 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. Prolog (1) • 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 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  25. Prolog (2) • 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]) 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). pocasie([vietor, hmla]). teplota(Chladno). prsi. Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  27. Prolog (4) • 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 pocasie(zle) :- dazd(husty); teplota(chladno). meno([jano| OSTATNI]) :- meno(OSTATNI). sirota(Kto) :- not(matka(Matka, Kto)), not(otec(_, Kto)). Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  28. Prolog (5) • 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 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  29. Prolog (6) • 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 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  30. Prolog (7) o ?- pocasie(zle). yes ?- pocasie(pekne). no ?- pocasie(X). X = zle yes ?- pocasie(X). X = zle ; X = zle ; X = zle ; no pocasie(zle) :- dazd(husty); teplota(chladno). pocasie(pekne) :- slnko(svieti), teplota(teplo). pocasie(zle) :- slnko(nesvieti). pocasie(zle) :- not(pocasie(pekne)). pocasie(zle). slnko(svieti). teplota(chladno). dazd(ziadny). Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  31. pocasie(X) dazd(husty) 1 teplota(chladno) X = zle ; 7 slnko(svieti) teplota(teplo) 2 6 slnko(nesvieti) 3 pocasie(pekne) 4 X = zle ; X = zle ; 5 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. Domáca úloha (namiesto záveru) • Pohľadať na Internete: • dostupné implementácie • komerčné • nekomerčné (FLOSS) • aplikácie postavené na prezentovaných jazykoch Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

More Related