Cog101 Johdatus Kognitiotieteeseen KOTITEHTÄVÄ 2: KOMPUTAATIO Otto Lappi
Laskennan teorian perusteet, komputationaalinen kompleksisuus ja algoritmit saattavat vaikuttaa hyvin abstrakteilta käsitteiltä, ja niiden relevanssia mielen/aivojen toiminnan ymmärtämisen kannalta on ehkä vaikea aluksi hahmottaa. Syynä on se, että käsitteet ja tapa tarkastella tiedon esittämistä ja käsittelyä on hyvin abstrakti. Käsitteet ovat kuitenkin relevantteja kognitiotieteen kannalta, ja kuuluvat kognition ymmärtämisen kannalta välttämättömiin käsitteellisiin perustyökaluihin. Relevanssi on helpoin hahmottaa suhteessa komputationaaliseen hypoteesiin mielestä/aivoista: mielen/aivojen ajatellaan olevan jonkinlainen laskennallinen automaatti, informaation esittämiseen ja prosessointiin perustuva, mekaanista laskentaa suorittava systeemi. Tämä tarkoittaa fysikaalisesti implementoitua formaalia systeemiä, l. komputationaalista järjestelmää, joka muuttaa tietoesityksiä (representaatiotia) toisikseen niiden formaalin rakenteen ja tämän rakenteen suhteen sensitiivisten sääntöjen mukaisesti. Tiedon käsittelyn ajatellaan tapahtuvan mekaanisesti tai automaattisesti siinä erityisessä mielessä että systeemin toiminta (tai sen täsmällinen kuvaaminen) ei edellytä sitä että systeemi muodostaisi tulkinnan käsittelemiensä merkkien merkityksestä, tai että systeemin tarvitsisi konsultoida jotain itsensä ulkopuolista mentaalista avustajaa. Hypoteesi siitä että aivot on mekaanista laskentaa suoritaava automaatti on klassisen kognitiotieteen (ks. esim. Haugeland, 1981, Block & Segal, 1998), perusoletus. Se on tietenkin myös perusidea erään tärkeän teknisen sovelluksen, modernin digitaalisen tietokoneen toiminnan taustalla. Automaattien teoria määrittelee arkkitehtuuriltaan erilaisia laskennallisia, formaaleja systeemejä. Automaateista tarkastellaan tässä ns. Turingin konetta, joka on perinteinen tapa esittää a) mekaanisen laskennan käsite täsmällisessä eli eksaktissa muodossa 1 b) universaalin laskennallisen systeemin idea Kognitiotieteen kannalta kiinnostavaa laskennan teoriassa on se, että se antaa käsitteelliset välineet ymmärtää miten materiaalinen systeemi (mekanismi) voi olla siten organisoitunut että se pystyy suorittamaan näköjään älyä vaativia tehtäviä. 1 Turingin kone oli matemaatikko Alan Turingin muotoilema tapa jäsentää mekaanisen laskennan idea täsmällisemmässä muodossa. Mekaaninen tässä tarkoittaa laskentaa joka voidaan pelkistää niin yksinkertaisiin ja yksikäsitteisiin rutiineihin että ne voidaan antaa tehtäväksi laskijalle tai mekaaniselle automaatille (computer) joka ei osaa tulkita merkkejä. Mekanismin tai rutiinin käsite sinällään on intuitiivinen, ei täsmällinen, samoin kuin tulkinnan käsitekin. Turingin koneen spesifikaatio ei sisällä mitään oletuksia merkkien tulkinnasta. Voidaan siis esittää, että oikeasti tietyn funktion laskeva kone implisiittisesti antaa käsittelemilleen merkeille tulkinnan. Huomaa että tämän väitteen esittäminen ei kuitenkaan ole sama asia kuin täsmällinen kognitiivinen teoria tulkinnan antamisesta ilmiönä.
On kuitenkin tärkeää ymmärtää, että kun väitetään mielen/aivojen toimivan kuten Turing kone, on kysymys erittäin abstraktin tason matemaattisesta samankaltaisuudesta. Oletus ei siis tarkoita, että aivoissa olisi fyysisesti yksiulotteisia nauhoja, ja näillä liikkuvia lukupäitä. Väite tulee erottaa tietokonemetaforasta, jonka mukaan aivot ovat kuin tietokone siinä mielessä niissä on prosessoreita, nopea mutta rajallinen työmuisti, tallennuskapasiteetiltaan hyvin paljon suurempi pitkäkestoinen muisti jne. 2.1. Algoritmit & komputaatio Informaatiota voidaan paitsi siirtää paikasta toiseen signaalien välityksellä, myös prosessoida komputationaalisesti. Komputationaalinen eli laskennallinen tarkoittaa tässä monisteessa syntaktista eli formaalia tiedon prosessointia. Syntaktinen sääntö formaalin systeemin hyvinmuodostettujen ilmaisujen (symbolien) johtamiseksi järjestelmän toisista ilmaisuista on sääntö, joka sanoo että kun meillä on käsillä ilmaisuja joilla on tietty rakenne, voidaan näiden nojalla johtaa ("päätellä mekaanisesti") lisää ilmaisuja joilla on tietty toinen rakenne. Säännön oikein soveltaminen ei edellytä symbolien merkityksen tuntemista tai ymmärtämistä. Säännön ilmaisuun soveltaminen muodostaa päättelyjärjestelmässä sallitun "päättelyaskeleen", t. komputaation.
Laskettavuus & kompleksisuus Laskennan teoria juontaa juurensa matemaatikoihin kuten Kurt Gödel, Alan Turing ja Alonzo Church, jotka osoittivat, että tietyt ongelmat ovat sellaisia että niitä ei voi ylipäätään ratkaista laskennallisesti - vaikka ne ovat täsmällisesti määritelyjä, ja niihin on olemassa ratkaisuja 2. Tällä tarkoitetaan siis sellaisia tehtäviä, joiden suorittamiseen ei ole olemassa (matemaattisessa mielessä) yleistä mekaanista ratkaisumenetelmää, säännöstöä tai algoritmia jonka soveltaminen yleisessä tapauksessa takaisi halutun lopputuloksen. Laskennan teoriassa ongelmat luokitellaan täsmällisesti niihin, jotka voidaan ratkaista tietokoneella ja niihin, joita ei voida. Ratkeavat ongelmat voidaan vastaavasti luokitella sen mukaan miten vaikeita ne ovat. Tehtävän laskennallisella kompleksisuudella tarkoitetaan yksinkertaisesti sitä, kuinka vaikea se on ratkaista, kuinka paljon mentaalista laskutyötä tai laskennallisia resursseja minimissään tarvitaan ratkaisun löytämiseksi 3. Kätevä mittayksikkö on esimerkiksi se, kuinka monta perusoperaatiota (aikaaskelta) Turingin kone vaatii tehtävän suorittamiseen syötteen pituuden funktiona, tai kuinka monessa nauhan eri ruudussa se käy (tarvittava muistikapasiteetti). Kompleksisuusteoria siis kysyy, miten laskentatyö eli komputaation määrä tulisi määritellä kvantitatiivisesti, miten tehtävän (tai informaation) kompleksisuus voitaisiin arvioida (mielellään niin että määrä on mahdollista laskea), ja mikä ylipäätään tekee joistakin ongelmista komputationaalisesti vaikeita ja toisista helppoja. Tehtävien kompleksisuuden analysointia varten on luotu järjestelmä, jonka mukaan tehtävät luokitellaan niiden kompleksisuuden mukaan matemaattisessa mielessä helppoihin ja vaikeisiin. Kompleksisuus on siis tehtävän itsensä ominaisuus, ei automaatin tai valitun mekaanisuuden käytännön määritelmän ominaisuus. Laskennallisten systeemien välillä on eroja siinä miten vahvoja ne ovat (s.o. mitä niilla voidaan laskea). Automaattien teoria käsittelee matemaattisten laskennan mallien määritelmiä ja ominaisuuksia. Laskennan teoria ja kompleksisuusteoria vaativat täsmällisen määritelmän laskentaa suorittavalle koneelle; intuitiivisen mekaanisuuden idean ja sen että tulkintaa ei tarvita muotoilemisen matemaattisen täsmällisesti. Tulkinnan ja mekaanisuuden käsite eivät sinällään ole täsmällisiä, vaan intuitiivisia arkikäsitteitä. Automaattien teoria tarjoaa formaalin määritelmän tietokoneelle, ja eri vahvuisille laskennallisille systeemeille. 2 Matemaattisen olemassaolon mielessä. Samassa mielessä kuin ääretön määrä luonnollisia lukuja on olemassa. Ne ovat kuitenkin abstrakteja olioita ne eivät ole olemassa missään päin fyysistä maailmankaikkeutta. 3 Esimerkiksi numerolistan järjestäminen nousevaan suuruusjärjestykseen on helppo tehtävä. Sen sijaan esimerkiksi sopivien yliopiston luentoaikataulun laatiminen niin ettäkaksi luentoa ei satu päällekkäin samaan luokkaan on paljon kompleksisempi rajoitelaskennallinen (constraint satisfaction) tehtävä johon tuskin on olemassa kovinkaan tehokasta efektiivistä menetelmää - joten yrittäkää ymmärtää amanuensseja.
TIETO MÄÄRITTELY -JOUKKO (argumentit) laskettava funktio (relaatio) ARVO- JOUKKO (arvot) koodi, formaali jäsennys TIEDON ESITTÄ- MINEN & KÄSITTELY symbolirakenne 1 algoritmi (säännöstö) symbolirakenne 2 TOTEU- TUS fyysinen tila 1 prosessi (mekanismi) fyysinen tila 2 KUVA1 Komputationaalisen systeemin idea.komputaatio, representaatio & implementaatio viittaavat David Marrin (1982) tapaan erotella kolme tapaa tarkastella kognitiivisia systeemejä. Esimerkki Ajatellaan vaikkapa funktiota: f(x,y) = x+y Siis esimerkiksi: (1,1) 2 (1,2) 3 (1,3) 4 jne. Se että jokin järjestelmä on tietokone t. komputationaalinen systeemi tarkoittaa juuri tätä: systeemin tilasiirtymien ja jonkin matemaattisen funktion välillä on systemaattinen yhteys. Funktion määrittelyjoukko ja arvojoukko vastaavat systeemin representaatiotiloja, ja systeemi on siten organisoitu, että tietty input-representaatio (esimerkissä numeropari joka edustaa l. representoi kahta lukua) johtaa vastaavaan output representaatioon (numero joka edustaa edellisten lukujen summaa).
Tässä yleisimmässä mahdollisessa muotoilussa myös taulukko on tietokone. Jos määrittelyjoukko ja arvojoukko ovat äärellisiä, funktio voidaan toteuttaa tilasiirtymätaulukkona, jossa jokainen määrittelyjoukon alkion (lukuparin) representaatio on assosioitu vastaavaan arvojoukon representaatioon. Äärettömien joukkojen tapauksessa tämä ei ole mahdollista. (0,0) 0 (0,1) 1 (1,1) 2 (1,2) 3 (2,2) 4 (1,3) 4 (2,3) 5 (3,3) 6 Taulukko josta voidaan lukea funktion f(x,y) = x+y arvot kun x:n ja y:n arvot on rajattu välille [0,3] ja [0,6]. HUOM. parit eivät ole järjestettyjä pareja, siten esim. (0,1) ja (1,0) eivät tarvitse erillisiä rivejä. Funktion arvoja eri syötteillä voidaan kuitenkin ratkaista myös laskennallisesti l. algoritmisesti. Algortimilla tarkoitetaan säännöstöä askel askeleelta etenevän symbolimanipulaation suorittamiseksi, niin sääntöjen toistuva soveltaminen tuottaa tulosteen (output) joka on syötteen (input) funktio. Algoritmin säännöstön tulee olla siten laadittu, että: a) säännön noudattaminen on mekaanisesti toteutettavissa - ts. se ei vaadi "älykkyyttä", ja voidaan muotoilla formaalisti siten ettei prosessoinnin suorittaminen edellytä symbolien merkityksen tuntemista tai tulkintaa. Sääntöjen noudattaminen voidaan koodata fysikaalisen informaationprosessointijärjestelmän toimintaan ilman että järjestelmän oikea toiminta edellyttää missään vaiheessa "mentaalista interventiota", sillä järjestelmän ei tarvitse koskaan aidosti päättää mitä tehdä seuraavaksi, algoritmisäännöstön määrätessä yksikäsitteisesti kunkin askeleen 4. b) symbolimanipulaatioiden (t. näiden representoimien tiedonkäsittelyoperaatioiden) sarja toteuttaa annetun matemaattisen funktion, niin että voidaan taata että algoritmi kuhunkin syöte (input) symboliin tai symbolikonstruktioon sovellettuna tuottaa tuloste (output) symbolin tai symbolikonstruktion, ka että tulosteen suhde syötteeseen on systemaattisesti 4 Huom. Mekaanisen toteutettavuuden käsitteen matemaattista muotoilua ei ole luotu kognitiotieteen, psykologian tai neurotieteen tarpeita silmälläpitäen, eikä se varsinaisesti perustu syvällisemmälle ja yleisemmälle kognitiiviselle taustateorialle älykkyyden (mentaalisen) ja mekaanisuuden (fysikaalisen) metafyysisestä olemuksesta. Sen perusta ruohonjuuritasolla on symbolinen logiikka (Boole, Hilbert, Frege, Russell & Whitehead, Wittgenstein).
annetun funktion mukainen. Tällöin sanotaan, että funktio voidaan komputoida (laskea, suorittaa laskennallisesti) kyseisen algoritmin avulla. Esimerkiksi jokainen meistä on ala-asteella oppinut algoritmit luonnollisten lukujen yhteenlaskua varten ( allekkainlasku ). Harjoitustehtävissä esitellään toinen niinikään jo satoja vuosia vanha algoritmi. On ihmeellistä, että jo 5-10 vuotiaana ihmisen aivot kykenevät ymmärtämään tällaisen potentiaalisesti äärettömän laskennallisen periaatteen. Mikään muu eläinlaji ei näytä pystyvän samaan; syytä tähän ei tiedetä. Olennaista on oivaltaa, että laskumenetelmä on siinä mielessä ääretön, että säännöstö ei aseta mitään ylärajaa sille miten suuria lukuja voidaan laskea yhteen: Arabialainen numerojärjestelmä sallii minkä tahansa luonnollisen luvun 5 esittämisen numerojonona, vain kymmentä perussymbolia (0,,9) ja näiden paikkaa numerojonossa käyttämällä (paikkasysteemi perustuu kantaluvun kymmenen potenssien käyttöön: esim. luku 42 = 4x10 1 +2x10 0 merkitään 42 ) 6, ja niin kauan kuin käytettävissä on riittävän suuri ruutupaperi ja riittävästi aikaa, voidaan muutamaa yksinkertaista sääntöä noudattaen tuottaa mikä tahansa mielivaltaisen suuri numero, joka vastaa täsmälleen allekkain kirjoitettujen lukujen summaa (samassa systeemissä). Usein komputationaalisella tarkoitetaankin nimenomaan formaalia systeemiä (tai sen fysikaalista implementaatiota) joka kykenee tällaiseen vahvempaan, kompleksisiin konstituenttirakenteisiin perustuvaan laskentaan s.o. informaation prosessointiin, ei vain valmiiden ratkaisuiden listamuistista lukemiseen. 2.2. Turingin kone Turingin koneen määrittelyn taustalla oli pyrkimys määritellä mekaanisen laskennan käsite niin täsmällisesti, että olisi mahdollista matemaattisen järkeilyn avulla löytää vastaus seuraavaan peruskysymykseen: Mitkä ovat mekaanisin, s.o. algoritmisin, menetelmin tapahtuvan laskennan perustavat rajoitukset? Onko olemassa sellaisia täsmällisiä formaaliin muotoon puettavissa olevia ongelmia joihin kuitenkaan ei ole mahdollista tuottaa täsmälleen oikeita vastauksia laskennallisesti? Tehtävän ratkeavuudella t. laskettavuudella (computability) tarkoitetaan sitä, onko tehtävä lainkaan suoritettavissa minkään äärellisen algoritmisen menetelmän avulla (jos äärettömän suuri taulukko sallitaan, voidaan kaikki ongelman instanssit assosioida suoraan vastaavaan vastaukseen). 5 Luonnolliset luvut: 1, 2, 3, 4, joukko on ääretön, koska ei ole olemassa suurinta luonnollista lukua. Jokainen luku itse (ja vastaavasti sen desimaalisysteemiin perustuva esitys l. representaatio) on kuitenkin äärellinen. 6 Lainausmerkkien käyttö erottaa toisistaan numeron käytön ja maininnan. Ensimmäisessä tapauksessa luku mainitaan, ja sen nimeä (numeroa) käytetään. Toisessa tapauksessa mainitaan luvun nimi, ja käytetään numeron nimeä 42 (tässä on käytetty luvun nimen nimen nimeä luvun nimen nimen mainitsemiseen). Sama luku voidaan mainita myös käyttämällä jotain toista nimeä (esim. XLII), tai määräistä kuvausta (esim. luku joka on vastaus suureen kysymykseen elämästä, maailmankaikkeudesta ja kaikesta muusta sellaisesta).
Turingin kone (Turing machine) on matemaattinen (abstrakti) kuvaus algoritmeja toteuttavasta symboliprosessointijärjestelmästä. Turingin kone on abstrakti spesifikaatio laskentajärjestelmästä, konetta ei siis ole tarkoitettu kuvaukseksi mistään konkreettisesta symboliprosessointijärjestelmän implementaatiosta 7. Kone koostuu rajattoman pitkästä nauhasta, ja lukupäästä joka pystyy lukemaan ja kirjoittamaan symboleja nauhalta/nauhalle, ja liikkumaan nauhaa pitkin molempiin suuntiin. Symbolit voivat olla esimerkiksi 0 ja 1, mutta mikä tahansa äärellinen diskreetti aakkosto kelpaa periaatteessa. Merkkien määrän kasvattaminen ei lisää koneen laskentavoimaa. Mikä tahansa formaali representaatio voidaan uudelleen koodata l. palauttaa biteiksi. Jokaisena ajan hetkenä lukupää on täsmälleen yhden symbolin kohdalla, ja täsmälleen tietyssä sisäisessä tilassa, joita lukupäällä on niinikään äärellinen määrä. Periaatteessa kone voisi lukea useitakin symboleja yhtä aikaa, mutta Turing osoitti, että tämän tarkkaavaisuuden ikkunan kasvattaminen ei lisää koneen laskentavoimaa, koska useamman merkin lukeminen/kirjoittaminen yhtä aikaa voidaan palauttaa yhden merkin kerrallaan lukemiseksi/kirjoittamiseksi. Lukupää on äärellinen tilasiirtymätaulukko. Lukupään toimintasäännöt voidaan ilmaista äärellisesti (ne voidaan antaa esim. taulukkona joka määrää jokaista mahdollista tilan ja symbolin yhdistelmää vastaavan toiminnon). Jokaista luettua symboli/lukupään tila paria vastaa siis tietty toiminto (nauhalla oleva symboli voidaan poistaa tai korvata toisella symbolilla, ja/tai voidaan siirtyä askel oikealle ja vasemmalle ja/tai lukupää siirtyy uuteen tilaan). Mahdollisia lukupään tiloja on äärelleinen määrä. Lukupään kohdalla oleva symboli ja lukupään tila yhdessä määräävät sen, mihin tilaan kone seuraavaksi siirtyy - lukupää voi korvata symbolin toisella, muuttaa sisäistä tilaansa, ja siirtyä yhden askeleen vasemmalle tai oikealle tai pysähtyä (ks. Kuva 2). Turingin kone suorittaa komputaatioita siten, että se muuntaa annetun syötteen ("syöteinformaatio", symbolirakenne nauhalla ennen ensimmäistä laskennan askelta) tulosteeksi (symbolirakenne nauhalla koneen pysähtyessä) systemaattisesti, aina tiettyä matemaattista funktiota noudattaen. 7 Myös formaalina systeeminä se on kovin kömpelö käytännön sovelluksiin tämän takia teknisiä sovelluksia laadittaessa laskennalliset menetelmät käytännössä spesifioidaan käyttäen jotain ohjelmointikieltä (kuten Java, Lisp tai Prolog).
Lukupää i0:0 * H i#:# * H i1:1 a a0:1 b a1:1 a b1:1 b b#:# c c1:# * H i Lukupään toimintaohjeet ( viisikot ) Koneen tila Nauha 1 0 1 KUVA 2 Yksinkertainen Turingin kone. Koneen tilat ovat i, a, b, c,, sekä H joka on erityinen pysähtymistila. Merkit joita voidaan lukea/kirjoittaa koostuvat aakkostosta 0, 1, lisäksi viisikoissa on erillinen merkki tyhjälle ruudulle #. tarkoittaa oikealle siirtymistä, vasemmalle siirtymistä vastaavasti, ja * tarkoittaa sitä että kone pysyy paikallaan. (huom. kaksoispiste : on ylimääräinen merkki jonka on vain tarkoitus helpottaa viisikoiden lukemista, kone itse ei siis näe sitä. Se erottaa viisikon ehto- ja toimintaosat toisistaan). Viisikot luetaan siten, että ensin haetaan koneen tilaa vastaavalla merkillä alkava viisikko, ja näistä se jonka toinen merkki vastaa nauhalta luettua merkkiä. Esimerkiksi yllä kone on tilassa i ja lukee merkin 1, viisokko jonka ehto-osaa tämä vastaa on siis i1 kolmannella rivillä.tämän jälkeen nauhalle kirjoitetaan viisikossa kolmantena oleva merkki (tässä 1), minkä jälkeen kone siirtyy vasemmalle, oikealle (kuten esimerkin kone), tai pysyy paikallaan ja muuttaa lukupään tilaksi viisikon viimeisen merkin (a). Koneen toiminnasta lisää harjoitustehtivässä. (Turingin koneen perustoimintaperiaate käydään myös Cog101 Johdatus kognitiotieteeseen monisteessa; ks. myös Davis (2000) jonka merkintätapaa käytetään tässä). Turingin kone määrittelee hyvin vahvan, tila-automaatteja vahvemman, laskennallisen arkkitehtuurin. Opintomonisteessa myös esiteltyjä äärellisten tilojen automaatteja sivutaan tällä kurssilla vain lyhyesti lintujen laulun ja luonnollisen kielen yhteydessä (mutta niistä kerrotaan lisää kurssilla Cog131 Kieli Merkitys & Logiikka). Ns. Church-Turing teesin mukaan Turingin kone spesifioi laskennallisen arkkitehruurin (menetelmien luokan) jonka avulla on laskea kaikki funktiot jotka ylipäätään ovat mekaanisesti laskettavissa. S.o. mille tahansa laskettavalle funktiolle ja vain niille voidaan laatia Turingin kone M, joka laskee funktion arvoja. Universaalin Turingin koneen idea perustuu siihen, että koska lukupää on vain äärellinen taulukko, voidaan se itse koodata jonkin toisen koneen nauhalle. Universaali Turing kone on kone, jolle voidaan antaa syöteinformaationa minkä tahansa Turingin koneen M lukupään informaatio (viisikot sopivasti koodattuna), ja tämän koneen M ymmärtämä syöteinformaatio x (s.o. sellainen hyvin muodostettu symbolirakenne joka kuuluu koneen M komputoiman funktion määrittelyjoukkoon), jolloin kone tuottaa
tulosteena täsmälleen sen tulosteinformaation jonka kyseinen kone M kyseisellä syötteellä x olisi tuottanut, tai jos k.o. kone ei kyseisellä syötteellä pysähdy, ei myöskään UTM pysähdy. Jos Church-Turing teesi on tosi, Universaali Turingin kone (Universal Turing Machine UTM) pystyy komputoimaan kaikki ne funktiot jonka suorittamiseksi on ylipäätään mahdollista laatia algoritminen suoritusmekanismi, ja vain ne. Universaalin Turing koneen idea on siis ohjelmoitavan tietokoneen idea ohjelman (program) ollessa emuloitavan Turing koneen lukupään viisikoiden koodi, ja datan ollessa ko. koneen ymmärtämä koodi. (Turingin diskreetti ja symbolinen kone on ehkä kovin keinotekoiselta vaikuttava tapa esittää asia; itse periaate on kuitenkin hyvin yleinen: UTM on systeemi joka voi erilaisiin alkutiloihin perustuen toimia minä tahansa digitaalisena tietokoneena). Lukupäässä ja nauhalla oleva informaatio (ohjelma ja data) ovat jossain mielessä vaihdannaisia. Lukupäätä voidaan yksinkertaistaa jos se tehdään samalla universaaliksi: tehtävien oikea suorittaminen edellyttää silloin paitsi datan myös ohjelman ( alkutila ) spesifiointia. Nauha (siis se että toisin kuin lukupäässä olevan informaaiton kohdalla, nauhalle voidaan lukea/kirjoittaa) antaa systeemille rajoittamattoman suuren dynaamisen muistin ja tekee koneesta tila-automaatteja vahvemman systeemin joka pystyy laskemaan arvoja äärettömien funktioiden mukaisesti (vaikka lukupää ja nauhalla olevat tietoesitykset ovatkin aina äärellisiä). Tämä on olennainen sisältö kun sanotaan ihmismielen/aivojen olevan laskennallisesti Turingin kone, eikä tila-automaatti. Kyseessä on siis väite siitä että aivojen kognitiivinen kapasiteetti sisältää kontrollirakenteen (voidaan esittään vuokaaviona tai taulukkona, lukupää ) lisäksi dynaamisen muistin ( nauha ) ja ohjelmoitavuuden periaatteen - eri asia kuin se että aivoissa olisi keskusprosessori ja muisti implementaatiotason komponentteina siten kuin tietokoneissa.
Tehtävät 2.1. Seuraavilla sivuilla on kuvattu viisi Turingin konetta (A-E). Koneet toimivat siten kuin opintomonisteessa kuvan 2 kuvatekstissä selitetään. Kone käynnistetään aina siten että lukupää nauhalle kirjoitetun symbolijonon vasemmassa reunassa. Mitkä koneista A-D pysähtyvät kuvassa annetuilla syötteillä? Perustele vastauksesi lyhyesti. 2.2. (a) Pysähtyykö kone A? Perustele. (b) Pysähtyykö B? Perustele. (c) Pysähtyykö C? Perustele. (d) Pysähtyykö D? Perustele. Pysähtymisjoukolla (halting set) tarkoitetaan kaikkia niitä syötteitä, joilla käynnistettynä kone päätyy pysähtymistilaan H. Millainen on koneen E pysähtymisjoukko? Mitä voit sanoa koneen antamasta tulosteesta, joka on nauhalla koneen pysähdyttyä?
Turingin koneet A-E tehtäviin 1 & 2 Lukupään toimintaohjeiden tulkinta: i, a, b, c, Koneen tilat (Kone käynnistyy aina tilassa i, tila H on erityinen d, H pysähtymistila, koska yksikään viisikko ei ala H:lla). 0, 1, # Koneen lukema/kirjoittama aakkosto, # on tyhjä ruutu Ennen seuraavan merkin lukemista, kone siirtyy yhden ruudun verran oikealle Ennen seuraavan merkin lukemista, kone siirtyy yhden ruudun verran vasemmalle * Ennen seuraavan merkin lukemista, kone ei liiku Kone A Kone B
Kone C Kone D Kone E
2.3. Olemme kiinnostuneita oheisen koneen käyttäytymisestä, kun se saa syötteinä merkkijonoja jotka ovat muotoa [=, 1 n, x, 1 m, x]. Indeksit n ja m ovat positiivisia kokonaislukuja Luetaan: =, n kappaletta ykkösiä, x, ja sen jälkeen m kappaletta ykkösiä, toinen x, ja tämän rakenteen molemmin puolin vain tyhjiä ruutuja. Koneen käyttäytymisestä muilla syötteillä ei tarvitse välittää. Kone käynnistyy aina tilassa i, symbolin = kohdalta. Koneella on hiukan laajempi aakkosto kuin koneiden A-D {0, 1, #}; x ja = ovat kuitenkin vain merkkejä siinä missä 0 ja 1. Miten koneen käyttäytyminen voidaan tulkita? Perustele vastauksesi. (Käy läpi koneen käyttäytymistä erilaisilla syötteillä ja selitä vastauksessasi omin sanoin mitä se tekee ). Kone on muodostettu lähteessä (Wells, 1998) esitetyn koneen pohjalta. i1 : 1 i im : M b ix : x a i= : = i a1 : M b am : M a ax : x*d b1: M c bm : M b bx : x b b= : = c c1 : 1 c cm : 1 c cx : x a c= : = c c# : 1 i dx : # d d1 : # d dm : # d d= : #*H i = 1 1 x 1 x
Lähteet: Alkuperäisiä lähteitä: Turing, A. (1936) On Computable Numbers, with an application to the Entscheidungsproblem, Proceedings of the London Mathematical Society 42 (2): 230-265. Correction (1937); ibid. 43: 544-546. Lisälukemista: Block, N. & Segal, D. (1998). The Philosophy of Psychology. Teoksessa A.C.Garyling (toim.). Philosophy 2: further through the Subject. Davies, P. (2000). Engines of logic. New York: Norton. Haugeland, J. (1981). Semantic Engines: An Introduction to Mind Design. Teoksessa J. Haugeland (toim.) Mind Design. MIT Press. Pylyshyn, Z. (1984). Computation and Cognition: Toward a Foundation for Cognitive Science. MIT Press. Russell, S. & Norvig, P. (2003). Artificial Intelligence, A Modern Approach. 2 nd ed. Pearson Education inc. Wells, A.J. (1998). Turing s Analysis of Computation and Theories of Cognitive Architecture. Cognitive Science, 22 (3): 269-294.