1 / 28

U MEL Á I NTELIGENCI A prednáška č. 10

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)

dane-cote
Download Presentation

U MEL Á I NTELIGENCI A prednáška č. 10

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 prednáška č. 10 Programovacie jazyky pre umelú inteligenciu Marian.Mach@tuke.sk http:// neuron.tuke.sk/~machm Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  2. Osnova prednášky • Úvod • 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. 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

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

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

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

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

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

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

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

  12. Common Lisp (7) Demo príklady Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

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

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

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

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

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

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

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

  20. Prolog (8) Demo príklady Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  21. Clips (1) • 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í Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

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

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

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

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

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

  27. Clips (7) Demo príklady Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

  28. Domáca úloha (namiesto záveru) • 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? pocet(0). pocet(X) :- pocet(Y), X is Y + 1. Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach

More Related