Artificiell Intelligens Java - .och funktionaliteten för att definiera tillåtna steg kan implementeras

Embed Size (px)

Text of Artificiell Intelligens Java - .och funktionaliteten för att definiera tillåtna steg kan...

  • ArtificiellIntelligensochJava

    Kandidatavhandling

    MatiasMyren,32696

    InstitutionenfrInformationsteknologi

    Vren2011

  • i

    ReferatDet kommer att antas att grunderna i Java r bekanta fr lsaren och sledes

    kommerdessa inteattgs igenom.Dremotkommer frdelarnamedJavanrdet

    gllerattprogrammeraartificiella intelligenseratttasupp.Avhandlingenrdelad i

    tvhuvuddelar,en teoridelochenmerapraktiskt inriktaddel.Teoridelen tarupp

    huvudtankegngarnasomkrvsfrattfrstexempelprogrammenipraktikdelen.

    Definitionenavenproblemrymdochhurdetillstndsomenartificiellintelligenskan

    befinna sig ipresenteras, svendatastrukturerna fr tillstndsgraferochhuren

    tillstndsgraf byggs upp. Skningar genom tillstndgrafer med hjlp av knda

    skalgoritmer, dribland djupfrstskning (depthfirstsearch) och breddfrst

    skning (breathfirstsearch) gs genom. Drefter fljer en genomgng av enkla

    heuristiker fr tillstndsgrafer och hur bstfrstskning (bestfirstsearch)

    definieras.Bakgrunden tillmaskininlrningochhurenartificiell intelligenskan lra

    sig eller bygga upp en tillstndsrymd presenteras med hjlp av exempel och

    generaliseringar.TeorinkommerattframhvasmedhjlpavexempelskrivnaiJava.

  • ii

    Innehllsfrteckning

    Referat............................................................................................................................i

    Innehllsfrteckning......................................................................................................ii

    1.Inledning....................................................................................................................1

    2.Java............................................................................................................................3

    3.Skning......................................................................................................................4

    3.1Breddfrstskningochdjupfrstskning.......................................................5

    3.2Heuristikochbstfrstskning..........................................................................7

    4.Maskininlrning.......................................................................................................11

    4.1Maskininlrningsalgoritmer...............................................................................12

    5.Javaexempelpskning..........................................................................................14

    6.Javaexempelpmaskininlrning.............................................................................16

    7.Avslutning................................................................................................................21

    8.Kllor........................................................................................................................22

    9.Bilaga1....................................................................................................................25

    10.Bilaga2..................................................................................................................29

  • 1

    1. InledningIntelligensrettsvrdefinierbartbegreppochrngotsommngaharfilosoferatp

    genomrhundradena.Detfinnstroligtvislikamngadefinitioneravintelligenssom

    det finnspersoner som forskar idet.Tilldeallmnnastedefinitionernahrbland

    annat frmgan att lra sig, att frst vadman lrt sig, att tnka abstrakt, frst

    iderochsprk[1].Medartificiellintelligensmenasalltsenkonstgjordintelligens,

    ngot sommnniskanhar skapat. Fr endator rdet enkelt att frst komplexa

    matematiskaformlerochproblemochsnabbthittaen lsningpdessa,medanen

    mnniskamed livslngerfarenhetavmatematikkanbehvaenbetydligt lngretid

    ellerkanskeinteallsserenlsningpproblemet.Endatorhardockmycketsvrare

    att frstnaturligasprk, tillexempelmeningenHonstalhanshjrta.Meningen

    kan tolkas p tv olika stt; antingen handlar det om krlek eller en organtjuv.

    Vilkendera det gller kan ses ur sammanhanget. En dator som bara gr igenom

    textenserintesammanhangetochkansledesintefrstvadmeningenegentligen

    betyder.Orsakentilldettarattmatematikharklarafastslagnagrnserochregler,

    medannaturligasprkbaserarsigmeraphurngontingsgs,ivilketsammanhang

    ochdekanhadoldameningar[2].

    Hollywoodsfilmerhari40rdrmtuppenbildavartificiellaintelligenser.IStanley

    Kubricks film 2001: Ett rymdventyr frn 1968 finnsdenpsykotiskadatornHAL

    9000somgerensortsbildavvadmanstrvattillattuppn(kanskeinteenpsykotisk

    dator,menenmaskin somuppfyllerde flestakravenpen intelligensoch frstr

    naturliga sprk). Dagens teknologi har inte ntt fram till detta ml nnu, men

    teknologingralltidframtochendagdetkanskeexisterarenartificiell intelligens

    som r jmlikmnniskans hjrna p att lra sig och frst.Men detmste dock

    pekas ut att meningen med en artificiell intelligens inte alltid r att simulera

    mnsklig intelligens.Enartificiell intelligenskan lsaettproblemsomenmnniska

    eller ett djur skulle lsa det. En artificiell intelligens r dock inte bunden till de

    metoderenmnniskaellerettdjurskulleanvndautandenkananvndametoder

  • 2

    somrmeramatematikbaseradeochsledesenklarefrenmaskinattarbetamed.

    [3]

    Mlet med denna kandidatavhandling r dock inte att uppfinna ngot

    revolutionerandeutanattgeenbakgrund tillvissaavdealgoritmersomexisterar

    idag, ochmed hjlp av programmeringssprket Java ge exempel p lsningar till

    ngraproblem.Detexisterarvenandrabrasprk frdettandaml, tillexempel

    Prolog och Lisp. Alla tre sprken har sina frdelar, vilket tas upp i kapitel 2.

    DessutomkanmanvenprogrammeramedsammastiliJavasommangriProlog

    ochLisp,mendetr intesagtattmanuppnrsammaoptimeringsgradellerskan

    programmenblisinveckladeattdettaintelnarsig.Javarvendetnyasteavde

    tre sprken och ett av de sprk som anvnds mest i

    informationsteknologiutbildningenochprogramvaruindustrin idag[4],drfrrdet

    intressantattsehurJavakananvndasveninomartificiellintelligensforskningen.

  • 3

    2. JavaOmrdet fr artificiell intelligens r vldigt brett, och inget programmeringssprk

    kanansessomdetendatnkbarasprketattprogrammeraenartificiell intelligens

    med. Artificiell intelligens har djupa grunder inommatematiken och drmed har

    venprogrammeringssprksombaserarsigpmatematikutformatsfrattenklare

    kunna representera problem och lsningar [5]. Speciellt kanman nmna Prolog,

    medgrunderinomfrstaordningenspredikatlogik,ochLisp,somrettfunktionellt

    sprk. Java, som r objektorienterat, skiljer sig mrkvrt frn Lisp och Prolog

    speciellt iprogrammeringsstil,mendetvisarsigatt Javasobjektorientering lmpar

    sigocksfratt implementeraenartificiellintelligens[6].Detrvldigtsllansom

    detrsiffrorochstrngarsomenartificiellintelligensinteragerarmed;oftastrdet

    ngonsortssymbolerellertillstndochdessakanenkeltrepresenterasavobjekt i

    Java. Vidare gr det i Java att definiera grnssnitt fr objekt och implementera

    funktioner och klasser som agerar mot grnssnitten [7]. Detta leder till en viss

    abstraktion som ven det r en av Javas styrkor, och programkod kan enkelt

    teranvndasfrolikandaml[6].

    Java r nd inte det ideala sprket fr att programmera en artificiell intelligens

    med.Nrdettillexempelgllerexpertsystem,detvillsgaettprogramsomhrmar

    enmnskligexpertpettspecifiktomrde,srdetPrologsombriljerar.Detgr

    med ett simpelt program skrivet i Prolog att beskriva ett enkelt expertsystem.

    MotsvarandeprogramiJavaskullevaramycketmeraomfattandeochkomplext[6].

    Allt r ndmjligt att implementera i Java,men varjeprogrammeringssprkhar

    sina egna specifika problem som de kan briljeramed att lsa p ett enkelt stt.

    Eftersom Javas styrka ligger i abstraktion, kan skning i tillstndsrymder och

    maskininlrninglsasiJavapettlmpligtstt[6][7].

  • 4

    3. SkningTidig forskning inom artificiell intelligens fokuserades mest p optimering av

    skalgoritmer fr tillstndsgrafer. Detta var ett logiskt frsta steg fr en hel del

    uppgifter somen artificiell intelligens ska lsa.Detta grsgenom attdefinieraen

    klarproblemrymdochurdenfentillstndsgraf.Denbstalsningenpproblemet

    hittasgenomeneffektivskninggenomtillstndsgrafen.Skningrsledesgrunden

    frbdeutvecklingavteoretiskamodelleroch lsningarppraktiskatillmpningar

    [5] [8].Med hjlp av bde effektiva algoritmer och heuristik, tilldela vrden till

    tillstndenbaseratphurnraenlsningtillstndetr,kanskningarnaoptimeras.

    vengenomattsparaextradata iminnetkanskningareffektiviserasochsledes

    ger de ett bttre resultat. Extra minneslagring gr sktiden snabbare och kan

    effektiviseraframtidaskningarinomsammatillstndsgraf[6][8].

    FrdelenmedJava idethrskedetrattJavasstd frabstraktionochgrnssnitt

    gr det enklare att implementera olika skalgoritmer som opererar p samma

    tillstndsgraf.Gemensamma faktorer s som representationen av tillstndsgrafen

    och funktionaliteten frattdefiniera tilltnastegkan implementeras ienabstrakt

    klassmedhjlpavJava.Despecifikaskalgoritmernakansedandefinierasskiltoch

    sledesdelapfunktionalitetmellanklasserna.Pdethrsttetkanskalgoritmen

    frittbytasutelleroptimerasutanattgrundfunktionalitetenpverkas.[6][8]

    Det finns tv huvudelement som mste definieras fr att kunna bygga upp en

    tillstndsgraf. Frst och frmst mste det finnas en formell representation av

    tillstnden.Detkantnkasatttillstndenrstegenmotenlsning.Frstatillstndet

    rursprungstillstndet,hurproblemetserut justnu.Drefter frgrenarsiggrafen

    frvarjemjligtsteg tillnsta tillstnd,vilketkanvaraetteller fleraberoendep

    hurstegenmellan tillstndenrdefinieradeochomdet tilltsattsamma tillstnd

    besks flera gnger [6] [8]. Den andra saken som k