9. Matemaattisista koneista. Monia tietojenkäsittelytehtäviä, digitaalisia komponetteja, ohjelmia jne. voidaan mallintaa äärellistilaisella matemaattisella koneella. Matemaattinen kone on myös tietojenkäsittelijän malli. Se sisältää sekä syötön, äärellisen muistin, kontrollin ja mahdollisesti tulostuksen. Matemaattisia koneita on erityyppisiä. Yhteiset osat: Äärellinen tilojen joukko, alkutila, syöttöaakkosto, siirtofunktio, joka kuvaa miten kone siirtyy tilasta toiseen kohdatessaan syötön. Tarkasteltavat konetyypit Jonokone: Matemaattinen kone joka sisältää myös tulostuksen. Äärellinen automaatti: Matemaattinen kone, jonka tulostus rajoittuu syötön hyväksymiseen. Lopuksi tarkastellaan matemaattisia koneita, joiden muisti on ääretön.
9.1. Jonokone Jonokone: Malli tietojenkäsittelijästä, joka pystyy muuntamaan syöttöä äärellisen muistinsa ja "ohjelmansa"avulla. Määritelmä Jonokone (finite-state machine)on järjestetty kuusikko M = (S, I, O, f S, f O, s 0 ), missä S = M:n tilojen (äärellinen) joukko, I = syöttösymbolien (äärellinen) joukko, O = tulostussymbolien (äärellinen) joukko, ja f S sekä f O kuvauksia f S : S I S ja f O : S I O, f S = (siirtofunktio) seuraavan tilan kuvaus (ja tämä riippuu edellisestä tilasta ja syötöstä (=input) f O = tulostusfunktio (outputfunktio) ja s 0 on alkutila.
Toiminta Jokaiseen tila, syöttösymboli pariin s, a liitetään tila f S (s, a) (=seuraava tila) ja tulostus f O (s, a). Jonokone aloittaa alkutilassa s 0 lukemaan syöttösanaa vasemmalta oikealle. Jokaisen syöttösymbolin lukemisen yhteydessä kone siirtyy senhetkisen tilan ja syöttösymbolin määräämään tilaan ja tulostaa jotain. Esimerkki 9.1. Olkoon jonokone missä M = ({s 0, s 1 }, {a, b}, {0, 1}, f S, f o, s 0 ), f S (s 0, a) = s o, f S (s 0, b) = f S (s 1, a) = f S (s 1, b) = s 1 ja f O (s 0, a) = f O (s 1, b) = 0, f O (s 0, b) = f O (s 1, a) = 1. Silloin syöttöön aabba liittyy tulostus... Jonokone taulukkona Taulukkomuodossa esitetään tila ja tulostusfunktiot kahtena taulukkona. Taulukko (todellisuudessa kaksi taulukkoa) määrittelevät funktiot f S ja f O.
Jonokoneen graafina Jonokoneeseen liittyvä suunnattu graafi (tarkasti painotettu suunnattu multigraafi) rakennetaan seuraavasti: Tilat merkitään solmuina. Nuoli viivojen solmujen s i ja s j välillä painona x, y tarkoittaa, että Syöttönä siis x ja tulostuksena y f S (s i, x) = s j ja f O (s i, x) = y. Esimerkki 9.2. Määrää Esimerkin 9.1 jonokoneen esitys tilataulukkona ja suunnattuna graafina. M = ({s 0, s 1 }, {a, b}, {0, 1}, f S, f o, s 0 ), missä f S (s 0, a) = s o, f S (s 0, b) = f S (s 1, a) = f S (s 1, b) = s 1 ja f O (s 0, a) = f O (s 1, b) = 0, f O (s 0, b) = f O (s 1, a) = 1.
Huomioita jonokoneesta Jonokoneen tilojen lukumäärä on äärellinen, joten ajanhetkeä ei voi käyttää tilana. Syöttömerkit ohjaavat konetta. Tyhjä sana λ ei voi olla syöttösana, koska silloin jonokone tekisi jotain ilman ohjetta. Toiminta on synkronoitu erillisiin ajanhetkiin 0, 1, 2,... (vrt. kellopulssi). Kone toimii deterministisesti eli jokaiseen tila syöttöpariin liitetään täsmälleen yksi seuraava tila ja tulostussymboli (f S ja f O ovat funktioita). Esimerkki 9.3. Kun kokonaisluku jaetaan kolmella, niin jaon mennessä tasan, jakojäännös on 0, ja kun jako ei mene tasan voi jakojäännös olla 1 tai 2. Laadi jonokone, joka syötetystä symboleja a ja b sisältävästä sanasta tulostaa aina siihen mennessä syötetyn a b jonon a:n lukumäärän 3:lla jakamisen antaman jakojäännöksen. Kerro koneen syötöt ja tulostukset, sekä selosta,mistä koneen tilat muodostuvat.
Esimerkki 9.4. Esimerkki 9.4. Määrää kahden binäärisen numeron yhteenlaskua suorittavan jonokoneen tilagraafi. Huomaa, että luvut voivat olla keskellä kahta pitkää binäärilukua. Mitkä ovat koneet syötöt, tulostukset ja koneen tilat. Kuinka lukujen esikäsittelyssä otetaan huomioon binäärilukujen mahdollinen erilainen pituus. Esimerkki 9.5. Televisioon oli mahdollista virittää täsmälleen 4 kanavaa ja virityksen jälkeen televisiota säädettiin pelkästään kaukosäätimellä. Virityksen jälkeen kanavapaikalla 1 näkyi ohjelma 1, kanavapaikalla 2 ohjelma 2 ja kanavapaikalla 3 ohjelma 3. Kanavapaikalla 4 näkyi vain "lumisadetta". Kaukosäätimessä on kolme ohjelmapainiketta V (virtapainike), E (eteenpäinpainike) ja T (taaksepäinpainike). Virta kytkettiin painamalla painiketta V, jolloin televisio alkoi näyttää ohjelmakanavan 2 ohjelmaa. Virran ollessa kytkettynä näppäimen V painaminen kytki virran pois ja kuva sammui. Virran ollessa kytkettynä ja television näyttäessä kanavapaikan i ohjelmaa, E:n painaminen ohjasi television näyttämään kanavapaikan i + 1 ohjelmaa (i = 1, 2, 3) ja kun TV näytti kanavapaikan 4 ohjelmaa, E:n painaminen ohjasi TV:n näyttämään kanavapaikan 1 ohjelmaa.
Vastaavasti virran ollessa kytkettynä ja television näyttäessä kanavapaikan j ohjelmaa, T:n painaminen ohjasi television näyttämään kanavapaikan j 1 ohjelmaa (j = 2, 3, 4) ja kun TV näytti kanavapaikan 1 ohjelmaa, T:n painaminen ohjasi TV:n näyttämään kanavapaikan 4 ohjelmaa. Kun virta ei ollut kytkettynä E:n ja T:n painamisella ei ollut vaikutusta TV:n näyttämään ohjelmaan. Laadi jonokone joka kuvaa ylläselostetun kaukosäätimen toimintaa. Selitä mistä muodostuvat jonokoneen syötöt, tulostukset ja tilat. Esimerkki 9.6. Tutkitaan amerikkalaista virvoitusjuoma-automaattia (tässä automaatti ei tarkoita matemaattista konetta nimeltä automaatti), joka 30:llä centillä (=c) antaa omenajuoman (OJ) tai appelsiinijuoman (AJ). Automaatti hyväksyy 5c:n, 10c:n ja 25c:n kolikot ja antaa välittömästi tarvittavat vaihtorahat ja syötetyt ylimääräiset rahat. Juomien tilaamista varten koneessa on painonapit O ja A omena- ja appelsiinijuomille. Määrää virvoitusjuoma-automaattiin liittyvän jonokoneen tilaverkko ja tilataulu. Selitä jonokoneen tilat, syötöt ja tulostukset.
Esimerkki 9.7. Sanoissa käytettäviä merkkejä ovat 0, 1, 2, 3; lisäksi on käytössä sanan loppumisen osoittava merkki x. Salakirjoitetaan sanoja seuraavasti: Lopetusmerkki säilyy ennallaan. Kun kirjoitettavana on 0, niin salaaja kirjoittaa sen sijasta 3:sen, kun kirjoitettavana on 1, niin salaaja kirjoittaa sen sijasta 2:sen, kun kirjoitettavana on 2, niin salaaja kirjoittaa sen sijasta 1:sen ja kun kun kirjoitettavana on 3, niin salaaja kirjoittaa sen sijasta 0:n Salakirjoitettavissa sanoissa ei koskaan ole kolmea samaa merkkiä peräkkäin. Laadi jonokone, joka avaa edelläkuvatulla tavalla salakirjoitetut sanat takaisin alkuperäisiksi sanoiksi. Lisäksi, jos avaaja löytää kolme samaa merkkiä peräkkäin, se tulostaa kolme sanan päättymismerkkiä ja siirtyy aloitustilaan. Kone on suunniteltava siten, että se kykenee avaamaan useita peräkkäisiä sanoja. Piirrä jonokoneen tilaverkko ja selitä sen tilat, syötöt ja tulostukset. 9.2. Äärellinen deterministinen automaatti Matemaattisten koneiden sovelluksia: Kielen sanojen tunnistaminen. Kääntäjien suunnittelu ja konstruointi Tietoliikennesovellukset Koodaus Jonokonetta voidaan käyttää kielen sanojen tunnistamiseen: Jonokoneen tulostaa symbolin 1 aina kun siihen mennessä luettu sana on halutun kielen sana ja symbolin 0 muulloin. Hyväksyminen voidaan kuitenkin tehdä myös ilman tulostusta äärellisen automaatin avulla. Tulostuksen sijasta äärellinen automaatti hyväksyy/hylkää syötön.
Määritelmä Deterministinen äärellinen automaatti on järjestetty viisikko M = (S, I, f, s o, F ), missä S = M:n tilojen (äärellinen)joukko I = inputsymbolien (äärellinen) joukko eli syöttöaakkosto f = siirtofunktio, f : S I S (seuraava tila funktio) joka määrää jokaiseen edellinen tila input yhdistelmään kuuluvan seuraavan tilan s o alkutila (s o S) F S lopputilojen/hyväksyvien tilojen joukko. Tilagraafi ja taulukkoesitys Huom. Kuten jonokone, myös automaatti (eli siirtofunktio f ) voidaan esittää suunnatun graafin (=tilagraafin, tarkasti painotettu suunnattu multigraafi) tai taulukon avulla. Tilagraafissa lopputilan solmut esitetään kaksinkertaisina ympyröinä. Esimerkki 9.8.Olkoon M = ({s 0, s 1, s 2 }, {a, b}, f, s 0, {s 2 }) automaatti, missä f (s 0, a) = s 1, f (s 0, b) = s 0, f (s 1, a) = s 2, f (s 1, b) = s 1 ja f (s 2, a) = f (s 2, b) = s 2. Määrää automaatin tilagraafi ja taulukkoesitys.
Siirtofunktion laajennus f on funktio f : S I S: Jokaista tila, syöttösymboli paria vastaa täsmälleen 1 seuraava tila eli automaatti on deterministinen. Laajennetaan f kuvaukseksi S I S seuraavasti: f (s, λ) = s kaikilla s S, f (s, a 1 a 2 a n ) = t n, jos on olemassa sellainen jono tiloja t i S, että f (s, a 1 ) = t 1, f (t 1, a 2 ) = t 2,..., f (t n 1, a n ) = t n. Esimerkki 9.9.Esimerkin 9.8 automaatille on f (s 0, baba) = s 2, sillä f (s 0, b) = s 0, f (s 0, a) = s 1, f (s 1, b) = s 1 ja f (s 1, a) = s 2. Eli f (s 0, baba) = f (s 0, aba) = f (s 1, ba) = f (s 1, a) = s 2. Automaatin hyväksymä kieli Automaatti M = (S, I, f, s o, F ) hyväksyy (=tunnistaa) sanan w, jos f (s 0, w) F. Toisin sanoen w hyväksytään, jos lähdettäessä alkutilasta ja luettaessa sana w vasemmalta oikealle loppuun asti automaatti pysähtyy lopputilaan. Automaatin M hyväksymä (=tunnistama) kieli on L(M) = {w f (s 0, w) F } eli kaikkien automaatin hyväksymien sanojen muodostama kieli. Kieli L on tunnistettavissa deterministisellä automaatilla, jos on olemassa sellainen deterministinen automaatti M, että L = L(M).
Esimerkki 9.10. Määrää Esimerkin 9.8. automaatin hyväksymä kieli. Ratk. M = ({s 0, s 1, s 2 }, {a, b}, f, s 0, {s 2 }) missä f (s 0, a) = s 1, f (s 0, b) = s 0, f (s 1, a) = s 2, f (s 1, b) = s 1 ja f (s 2, a) = f (s 2, b) = s 2.... Tyhjän sanan hyväksyminen Huom. Tyhjä sana λ on automaatin M hyväksymä sana täsmälleen silloin kun automaatin alkutila on myös lopputila.
Esimerkki 9.11. Rakenna äärellinen deterministinen automaatti, joka hyväksyy kaikki aakkoston {a, b} sanat, jotka eivät sisällä kirjainta a, ja hylkää muut. Esimerkki 9.12. Rakenna äärellinen deterministinen automaatti, joka hyväksyy 0, 1-jonoista täsmälleen ne, joissa ainakin kerran esiintyy 3 samaa merkkiä peräkkäin, ja hylkää muut.