Äärillinen automaatti (KA) on algoritmien teoriassa matemaattinen abstraktio , malli diskreetistä laitteesta , jolla on yksi tulo, yksi lähtö ja joka on yhdessä tilassa useista mahdollisista kulloinkin. Se on abstraktin diskreetin automaatin erikoistapaus , jonka mahdollisten sisäisten tilojen määrä on äärellinen .
Toiminnan aikana tulotoiminnot vastaanotetaan peräkkäin SC:n sisääntulossa ja lähdössä SC generoi lähtösignaaleja. Yleensä syötevaikutuksissa automaatin syöte hyväksytään yhden aakkoston symbolien syötteeksi , ja KA:n lähtö toimintaprosessissa antaa symboleja yleensä erilaisessa, ehkä jopa ei leikkaa aakkosten kanssa. syöttö, aakkoset.
Äärillisten automaattien lisäksi on olemassa myös äärettömiä diskreettejä automaatteja - automaatteja, joissa on ääretön määrä sisäisiä tiloja, esimerkiksi Turingin kone .
Siirtyminen avaruusaluksen sisäisestä tilasta toiseen voi tapahtua paitsi ulkoisista vaikutuksista myös spontaanisti.
On olemassa deterministisiä KA -automaatteja, joissa seuraava tila määräytyy yksiselitteisesti nykyisen tilan mukaan ja lähtö riippuu vain nykyisestä tilasta ja nykyisestä sisääntulosta sekä epädeterministinen KA , jonka seuraava tila on yleensä määrittelemätön ja vastaavasti. , lähtösignaalia ei ole määritetty. Jos siirtyminen seuraaviin tiloihin tapahtuu tietyllä todennäköisyydellä, niin tällaista CA:ta kutsutaan todennäköisyyspohjaiseksi CA : ksi.
Mikä tahansa digitaalinen järjestelmä, esimerkiksi tietokoneet tai jotkin tietokoneiden loogiset solmut muistitriggereillä ja muilla laitteilla , voivat toimia esimerkkeinä KA:n fyysisestä toteutuksesta . Yhdistelmäsekvenssilogiikka ei voi olla CA, koska sillä ei ole sisäisiä tiloja (sillä ei ole muistia).
Abstraktista näkökulmasta CA tutkii diskreetin matematiikan osaa - äärellisten automaattien teoriaa .
Äärillisten automaattien teoriaa käytetään käytännössä laajalti esimerkiksi jäsentimissä ja leksereissä , mallipohjaisissa ohjelmistotestauksissa .
Muodollisesti CA määritellään joidenkin joukkojen järjestetyksi viideksi elementiksi:
missä on äärellinen joukko automaatin tiloja; ovat viimeiset tulo- ja lähtöaakkoset, joista muodostetaan merkkijonoja, jotka automaatti lukee ja tulostaa; - siirtymätoiminto; on lähtöjen funktio.Abstraktia automaattia, jolla on jokin valittu tila (tätä tilaa kutsutaan alkutilaksi ) , kutsutaan aloitusautomaatiksi . Koska jokaisella KA:lla on äärellinen määrä tiloja ja mikä tahansa sen tila voidaan määrittää alkutilaksi, vastaa sama automaatti alkuautomaatteja, eli KA:n sisäisten tilojen lukumäärää. Siten abstrakti CA määrittelee alkuautomaattien perheen. Jos alkutilaa ei ole määritelty, niin automaattinen käyttäytyminen on aina epädeterminististä, automaatin lähtösana riippuu alkutilasta, joten automaatin täydellinen deterministinen kuvaus tulee olemaan [1] :
KA:lla on kaksi luokkaa: Moore-automaatti - KA, jossa lähtösignaali riippuu vain sisäisestä tilasta, kuvan mukaan Moore-automaatilla ei ole yhteyttä tulosta lähtötoimintoon ja Mealy-automaatti - lähtösignaali riippuu sekä sisäisestä että tulon tilasta.
On olemassa useita tapoja määrittää algoritmi äärellisen automaatin toiminnalle. Esimerkiksi äärellinen automaatti voidaan määritellä joidenkin joukkojen järjestetyksi viideksi elementiksi :
missä on syöteaakkosto (äärellinen joukko syöttösymboleita ), joista syötesanat muodostetaan ja jonka äärellinen automaatti havaitsee; on joukko sisäisiä tiloja ; - alkutila ; - joukko lopullisia tai lopullisia tiloja ; on siirtymäfunktio, joka määritellään kuvaukseksi siten, että ts. järjestetyn parin (tila, tulosymboli tai tyhjä merkkijono) siirtymäfunktion arvo on joukko kaikkia tiloja, joihin siirtyminen tietystä tilasta on mahdollista annettu syöttösymboli tai tyhjä merkkijono, joka yleensä merkitään kirjaimellaCA:ta analysoitaessa on tapana olettaa, että äärellinen automaatti alkaa jostain alkutilasta , vastaanottaa peräkkäin yhden merkin syöttösanasta (syöttömerkkien ketju). Lukumerkki voi siirtää automaatin uuteen tilaan tai olla siirtymättä uuteen tilaan siirtymäfunktion mukaisesti.
Vastaanottaa syötetyn merkkijonon ja tehdä siirtymiä tilasta tilaan, automaatti kun on vastaanottanut viimeisen merkin[ selventää ] syöttösana on jossain tilassa .
Jos tämä tila on lopullinen, automaatin sanotaan hyväksyneen sanan[ tyhjentää ]
Alkutila _ |
seuraava osavaltio | ||
---|---|---|---|
Syötä merkki a |
Syötä merkki b |
Mikä tahansa muu hahmo | |
p0 | p1 | p0 | p0 |
p1 | p1 | p2 | p1 |
p2 | p3 | p4 | p2 |
p3 | p3 | p5 | p3 |
p4 | p4 | p4 | p4 |
p5 | p3 | p5 | p5 |
Tilakoneet jaetaan deterministisiin ja ei- deterministisiin .
Jos tarkastellaan tapausta, jossa automaatti määritellään muodollisesti seuraavasti: , missä on automaatin alkutilojen joukko , jolloin , tulee kolmas epädeterminismin merkki - useiden alku- (aloitus)tilojen läsnäolo automaatilla .
Määrittelylause väittää, että mille tahansa äärellistilakoneelle voidaan rakentaa vastaava deterministinen äärellinen kone (kahden äärellistilakoneen sanotaan olevan ekvivalentti, jos niiden kielet ovat samat[ selkeä ] ). Koska tilojen määrä vastaavassa DFA:ssa pahimmassa tapauksessa kasvaa eksponentiaalisesti alkuperäisen NFA:n tilojen lukumäärän kasvaessa, ei käytännössä tällainen määrittäminen aina ole mahdollista. Lisäksi äärelliset automaatit ulostulolla ovat yleensä indeterministisiä.
Kahdesta viimeisestä huomautuksesta johtuen epädeterminististen äärellisten automaattien monimutkaisemmasta monimutkaisuudesta huolimatta juuri NFA:ita käytetään pääasiassa tekstinkäsittelyyn liittyviin tehtäviin. .
Äärilliselle automaatille on mahdollista määritellä aakkosissa kieli (sanajoukko), jonka se sallii , eli kutsutaan sanoja, joiden lukeminen siirtää automaattin alkutilasta johonkin lopputiloista.
Kleenen lause sanoo, että kieli on säännöllinen silloin ja vain, jos jokin kyseisessä kielessä käytettävä tilakone sallii sen.
Jokaiselle säännölliselle kielelle on olemassa ainutlaatuinen, isomorfismiin asti , automaatti, joka hyväksyy tämän kielen ja jolla on pienin mahdollinen määrä tiloja. Deterministisen äärellisen automaatin antaman kielen minimiautomaatti voidaan toteuttaa polynomiajassa, jolloin voidaan optimoida automaatin kanssa työskentelyyn tarvittava muistinkulutus sekä ratkaista ongelmia, kuten kahden automaatin vastaavuuden tarkistaminen polynomiajassa. .
Graafisessa kielessä SFC ohjelmaa kuvataan kaavamaisena vaiheiden sarjana, jotka yhdistetään siirtymillä.
Rajallisten automaattien avulla voit rakentaa malleja rinnakkaisista prosessointijärjestelmistä, mutta jos haluat muuttaa rinnakkaisten prosessien määrää tällaisessa mallissa, sinun on tehtävä merkittäviä muutoksia itse malliin. Lisäksi yritys kehittää äärellisellä automaatilla toteutettu monimutkainen malli johtaa automaatin tilojen määrän nopeaan kasvuun, mikä tekee tällaisen mallin kehittämisestä lopulta erittäin aikaavievää. Kuten edellä todettiin, jälkimmäinen ongelma voidaan ratkaista käyttämällä ei-determinististä automaattia.
Vastaus annetaan eri termein riippuen siitä, onko automaatti (vastaavasti P-kone) itsenäinen vai ei [2] . Autonominen äärellinen automaatti, joka alkaa tietystä syklistä, voi generoida vain jaksollisen sekvenssin tiloja x (vastaavasti P-kone on sarja lähtösymboleja y ). Jos tämä sarja koostuu vain yhdestä symbolista, niin tämä tarkoittaa, että automaatti saavuttaa tasapainotilan äärellisessä määrässä syklejä. Jos tämä sekvenssi sisältää useita symboleja, tämä tarkoittaa, että automaatti kulkee peräkkäin näitä symboleja vastaavien tilojen läpi, jolloin automaatin toiminta toistuu määräajoin loputtomasti. Lisäksi, olipa äärellisen pituisten tilojen jaksollinen järjestys mikä tahansa, voidaan aina rakentaa autonominen äärellinen automaatti, joka toisesta jaksosta alkaen generoi tämän sekvenssin. Mitään muuta, paitsi saman tilan tai äärellisen tilasarjan jaksoittaista toistamista, autonominen automaatti ei voi "tehdä". Kuitenkin johtuen siitä, että tietyn toimintasyklin peräkkäinen suorittaminen on tyypillistä monille modernin teknologian alueille, dynaamisia järjestelmiä, joita hyväksyttävässä idealisaatiossa voidaan pitää autonomisena automaatina, käytetään laajalti.
Klassinen esimerkki on nukkeautomaatit, jotka suorittavat monimutkaisia toimintosarjoja, esimerkiksi: tietyn tekstin kirjoittaminen paperille, valmiiden soittojen soittaminen pianolla jne.
Nykyaikainen esimerkki ovat monet automaattiset koneet, automaattiset linjat ja automaattiset ohjausjärjestelmät syklistä tuotantoa varten. Jos automaatti ei ole itsenäinen, eli syötteen tila muuttuu syklistä toiseen, niin vastaus kysymykseen, mitä äärellinen automaatti voi "tehdä" ja mitä ei "tehdä", voidaan antaa eri termein. Vastaus voidaan muotoilla esimerkiksi tapahtumaesityskielellä. Itse asiassa ei-autonominen äärellinen automaatti tai peräkkäinen kone muuntaa vain syötetyt merkkisekvenssit tila- tai ulostulomerkkijonoiksi, ja sanoa, mitä äärellinen automaatti voi ja ei voi "tehdä", on selvittää, mitkä sekvenssimuunnokset ovat mahdollisia äärellisessä automaatissa ja jotka ovat mahdottomia. Mutta koska tilojen (vastaavasti lähtösymbolien) määrä on äärellinen, tämä kysymys vastaa seuraavaa kysymystä: missä tulosekvenssissä kukin mahdollinen tila (tai jokainen lähtösymboli) esiintyy? Tämä viimeinen kysymys äärellisten automaattien teoriassa hyväksytyin termein on muotoiltu seuraavasti: mitä tapahtumia voidaan ja mitä ei voi esittää äärellisessä automaatissa kullakin mahdollisella tilalla (tai jokaisella lähtösymbolilla).
Vastauksen antavat Kleenen lauseet . Tämä vastaus on oikea, koska Kleenen lauseet asettavat välttämättömät ja riittävät edellytykset tapahtumasarjan esitettävyydelle automaatissa, nimittäin: erityiset syötesymbolien sarjat erotetaan - säännölliset joukot . Sitä, että syötesekvenssi ilmestyy tällaisesta joukosta, kutsutaan vastaavaksi säännölliseksi tapahtumaksi. Kleenen lauseet osoittavat, että vain säännölliset tapahtumat voidaan esittää äärellisessä automaatissa. Tapahtumien esittämisen kielellä vastaus kysymykseen, mitä äärellinen automaatti voi "tehdä", on siis annettu yksiselitteisesti: äärellinen automaatti voi edustaa vain säännöllisiä tapahtumia. Useat tärkeät syöttösekvenssit, joita käytännössä joutuu usein käsittelemään, ovat ilmeisen säännöllisiä. Joten esimerkiksi joukon, joka koostuu mistä tahansa äärellisestä määrästä äärellisen pituisia syötesarjoja, tiedetään olevan säännöllisesti säännöllinen; minkä tahansa jaksollisen syöttösekvenssin joukko; joukko äärettömiä sekvenssejä, jotka sisältävät tietyt äärelliset sekvenssit muutaman viime syklin ajalta jne.
Yleisessä tapauksessa, jos ääretön joukko syötesarjoja annetaan jollain mielivaltaisella tavalla, niin kysymys siitä, onko tämä joukko säännöllinen, jää avoimeksi. Asia on siinä, että säännöllisen joukon käsite otetaan käyttöön induktiivisesti, eli muodostetaan algoritmi minkä tahansa säännöllisen joukon muodostamiseksi. Ei kuitenkaan ole olemassa riittävän tehokasta tapaa ratkaista käänteisongelma, eli määrittää, onko jokainen annettu joukko säännöllinen.
Vaikka Kleenen teoreemat vastaavat kysymykseen, mitä tilakone voi tehdä, ne vastaavat tähän kysymykseen tehottomasti. Ensimmäiset yritykset on tehty rakentamaan muita kieliä, joilla vastaus voidaan antaa tehokkaasti. Tämä kieliongelma, jolla on keskeinen rooli tehokkaan vastauksen saamisessa kysymykseen siitä, mitä äärellinen automaatti voi ja mitä ei voi "tehdä", on myös ratkaiseva automaatisynteesin ensimmäisille vaiheille, toisin sanoen, jotta voidaan vastata automaation toiseen vaiheeseen. yllä oleviin kysymyksiin. Jos laajennamme dynaamisten järjestelmien luokkaa, jonka olemme määrittäneet termeillä "äärellinen automaatti" ja "peräkkäinen kone", sisällyttämällä siihen äärettömän muistin (äärettömän muistin malli voi olla esimerkiksi ääretön nauha symbolien tallentamiseen tai ääretön määrä tiloja), sitten tämän laajemman luokan dynaamisille järjestelmille (tämän luokan abstrakteja järjestelmiä kutsutaan Turingin koneiksi ) vastaus kysymykseen "mitä he voivat tehdä?" paljon yksinkertaisempi - ne voivat toteuttaa minkä tahansa ennalta määritellyn algoritmin . Samaan aikaan algoritmin käsite tulkitaan modernissa matematiikassa minkä tahansa rekursiivisen funktion arvojen laskemisen toteutuksena . Tällainen yksiselitteinen ja selkeä vastaus kysymykseen "mitä Turingin kone voi tehdä?" mahdollistaa Turingin koneen käsitteen asettamisen algoritmin käsitteen määrittelyn perustaksi: algoritmi on mikä tahansa prosessi, joka voidaan suorittaa äärellisellä automaatilla, jota on täydennetty äärettömällä muistilla, eli algoritmisesti täydellisillä koneilla, Turingin koneella, Postikoneella jne.
Muodolliset kielet ja viralliset kieliopit | |
---|---|
Yleiset käsitteet | |
Tyyppi 0 | |
Tyyppi 1 |
|
Tyyppi 2 | |
Tyyppi 3 |
|
jäsentäminen |
Bibliografisissa luetteloissa |
---|