Konačni automat

From Wikipedia, the free encyclopedia

Konačni automat (još i konačni stroj, automat konačnih stanja[1]) je diskretni matematički model koji se sastoji od konačnog broja stanja, prijelaza između tih stanja, i akcija koje obavlja.

Koncepti i vokabular

Stanje sprema informacije o prošlosti, tj. odražava promjene na ulazu od početka sustava do sadašnjosti. Prijelaz indicira promjenu stanja i opisan je uvjetom koji treba biti zadovoljen da bi se prijelaz omogućio. Akcija je opis aktivnosti koja treba biti obavljena u danom trenutku. Postoji nekoliko tipova akcija, ovisno o tipu automata:

Akcija ulaska
izvrši akciju za vrijeme ulaska u stanje
Akcija izlaska
izvrši akciju za vrijeme izlaska iz stanja
Ulazna akcija
izvrši akciju ovisno o trenutnom stanju i ulaznim uvjetima
Prijelazna akcija
izvrši akciju dok se obavlja određeni prijelaz

Konačni automati su najčešće predstavljeni dijagramom stanja ili tablicom prijelaza. Najuobičajenija reprezentacija prikazana je u nastavku odlomka: kombinacija trenutnog stanja (B) i uvjeta (Y) uzrokuje prijelaz u sljedeće stanje (C). Potpune informacije o akcijama mogu biti dodane samo preko fusnota. Definicija konačnog automata koja uključuje potpune informacije o akcijama je moguća koristeći tablice prijelaza.

   Trenutno stanje/
Uvjet
Stanje AStanje BStanje C
Uvjet X.........
Uvjet Y...Stanje C...
Uvjet Z.........
Tablica prijelaza

Pored uporabe u modeliranju reaktivnih sustava poput onih ovdje predstavljenih, uporaba konačnih automata je značajna u mnogim različitim područjima, uključujući elektrotehniku, lingvistiku, računarstvo, filozofiju, biologiju, matematiku i logiku. Konačni automati su klasa automata proučavana u teoriji automata i teoriji računanja

U računarstvu, konačni automati se koriste za modeliranje ponašanja aplikacije, dizajn digitalnih sustava, programsko inženjerstvo, jezične procesore, mrežne protokole te proučavanje računanja i jezika.

Razredba

Postoje dvije različite skupine: prihvatitelji/priznavatelji i transduktori.

Prihvatitelji i prepoznavatelji

Thumb
Slika 2, konačni automat prihvatitelj: parsiranje riječi nice

Prihvatitelji i prepoznavatelji (također i slijedni detektori) stvaraju binarni izlaz, govoreći da ili ne kao odgovor na pitanje prihvaća li stroj ulaz ili ne. Za sva stanja konačnog automata kažemo da su ili prihvatljiva ili neprihvatljiva. U trenutku kad je sav ulaz obrađen, ako je trenutno stanje prihvatljivo, ulaz je prihvaćen; inače je odbijen. U pravilu su ulazi simboli (karakteri); akcije se ne koriste. Primjer na slici 2 prikazuje konačni automat koji prihvaća engl. riječ nice - u ovom konačnom automatu jedino prihvatljivo stanje je pod brojem 7.

Stroj može biti opisan i definiranjem jezika koji bi sadržavao sve riječi koje stroj prihvaća i nijednu od onih koje odbija; kažemo da tada taj jezik stroj prihvaća. Prema definiciji, jezik koji prihvaća neki konačni automat je regularni jezik, odnosno jezik je regularan ako postoji neki konačni automat koji ga prihvaća (usp. Kleenejev teorem).

Početno stanje

Početno je stanje obično naznačeno strelicom koja "pokazuje ni od kuda" (Sipser (2006.) str. 34)

Prihvatljivo stanje

Prihvatljivo stanje (ponekad se naziva i prihvaćajuće stanje) je stanje u kojem je stroj uspješno obavio svoj namjenski postupak. Obično je predstavljen dvostruko koncentričnim krugom.

Primjer prihvatljivog stanja se pojavljuje na lijevoj strani ovog dijagrama determinističkog konačnog automata koji odlučuje sadrži li binarni ulaz paran broj znamenki 0.

Thumb

S1 (koji je također i početno stanje) indicira stanje u kojem je pročitan paran broj znamenki 0 te je stoga definiran i kao prihvatljivo stanje.

Transduktori

Transduktori generiraju izlaz na osnovu danog ulaza i/ili stanja koristeći akcije. Koriste se za upravljačke primjene. Ovdje razlikujemo dvije vrste:

Mooreov automat
Konačni automat koristi samo akcije ulaska, tj. izlaz ovisi samo o stanju. Prednost Mooreovog modela jest pojednostavljenje ponašanja. Primjer na slici 3 prikazuje Mooreov konačni automat vrata lifta. Stroj stanja prepoznaje dvije naredbe: command_open i command_close koje okidaju promjene stanja. Akcija ulaska (E:) u stanju Opening pokreće motor koji otvara vrata, akcija ulaska u stanju Closing pokreće motor u drugom smjeru zatvarajući vrata. Stanja Opened i Closed ne obavljanju nikakve akcije, već samo služe za signalizaciju vanjskom svijetu (npr. ostalim strojevima stanja) situacije: "vrata su zatvorena" ili "vrata su otvorena".
Thumb
Slika 4, transduktorski konačni automat: primjer Mealyjevog modela
Mealyev automat
Konačni automat koristi samo ulazne akcije, tj. izlaz ovisi o ulazu i stanju. Uporaba Mealyjevog automata često vodi ka redukciji broja stanja. Primjer na slici 4 pokazuje Mealyjev konačni automat koji ostvaruje isto ponašanje kao i onaj u primjeru Mooreovog automata (ponašanje ovisi o izvršnom modelu ostvarenog konačnog automata i radit će za npr. virtualni KA ali ne i za događajem upravljani KA). Dvije su ulazne akcije (I:): "pokreni motor za zatvoriti vrata ako dođe naredba command_close" i "pokreni motor u drugom smjeru za otvoriti vrata ako dođe naredba command_open".

U praksi se koriste miješani modeli

Više se detalja o razlikama i uporabi Mooreovih i Mealyjevih modela, uključujući izvodivi primjer, može naći u vanjskoj tehničkoj bilješki "Mooreov ili Mealyjev model?"

Daljnja je razlika između determinističkih (DKA) i nedeterminističkih (NKA, PNKA) automata. U determinističkim automatima, za svako stanje postoji točno jedan prijelaz za svaki mogući ulaz. U nedeterminističkim automatima može postojati više od jednog prijelaza za dani ulaz. Ova je razlika važna u praksi, ali ne i u teoriji, jer postoji algoritam koji može pretvoriti svaki NKA u istovjetni DKA, iako ova pretvorba obično znatno poveća složenost automata.

Konačni se automat sa samo jednim stanjem zove kombinatorni konačni automat i koristi samo ulazne akcije. Ovaj koncept je koristan u slučajevima kada se zahtijeva da više konačnih automata rade zajednički, te kad je zgodno razmatrati samo čisto kombinatorni dio kao oblik konačnog automata kako bi se prilagodilo alatima za dizajniranje.

Logika konačnog automata

Thumb
Slika 5, logika konačnog automata

Sljedeće stanje i izlaz konačnog automata je funkcija ulaza i trenutnog stanja. Logika konačnog automata je prikazana na slici 5.

Matematički model

Ovisno o tipu postoji nekoliko definicija. Konačni automat prihvatitelj je petorka , gdje:

  • je ulazna abeceda (konačan neprazan skup simbola).
  • je konačan neprazan skup stanja.
  • je početno stanje, element skupa . U nedeterminističkom konačnom automatu, je skup početnih stanja.
  • je funkcija prijelaza: .
  • je skup konačnih stanja, (potencijalno prazan) podskup od .

Transduktorski konačni automat je šestorka , gdje:

  • je ulazna abeceda (konačan neprazan skup simbola).
  • je izlazna abeceda (konačan neprazan skup simbola).
  • je konačan neprazan skup stanja.
  • je početno stanje, element skupa . U nedeterminističkom konačnom automatu, je skup početnih stanja.
  • je funkcija prijelaza: .
  • je izlazna funkcija.

Ako je izlazna funkcija funkcija stanja i ulazne abecede(), tad ta definicija odgovora Mealyjevom modelu. Ako izlazna funkcija ovisi samo o stanju (), tad ta definicija odgovora Mooreovom moelu. Konačni automat bez izlazne funkcije je poznat kao poluautomat ili prijelazni sustav.

Optimizacija

Optimiziranje konačnog automata znači pronalaženje stroja s minimalnim brojem stanja koji obavlja istu funkciju. Jedna je mogućnost korištenja implikacijske tablice ili Mooreova redukcijskog postupka. Druga je mogućnost odozdorni algoritam za acikličke konačne automate Arhivirana inačica izvorne stranice od 17. veljače 2020. (Wayback Machine).

Implementacija

Sklopovske primjene

Thumb
Slika 6, dijagram sklopa za 4-bitni TTL brojač, vrstu stroja stanja

U digitalnim krugovima, konačni automat može biti načinjen koristeći programibilni logički uređaj, programibilni logički kontroler, logička vrata i bistabile ili releje. Konkretnije, sklopovsko ostvarenje zahtijeva registar za pohranjivanje varijabli stanja, blok kombinatorne logike koji određuje prijelaz stanja i drugi blok kombinatorne logike koji određuje izlaz konačnog automata. Jedan od klasičnih sklopovskih ostvarenja jest Richardov kontroler.

Programske primjene

Sljedeći su koncepti često rabljeni za razvoj programske podrške konačnim automatima:

  • Događajem upravljan konačni automat
  • Virtualni konačni automat (VKA)
  • Programiranje zasnovano na automatima

Vidi još

Vanjske poveznice

Izvori

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.