Autom tu teorijas elementi
This presentation is the property of its rightful owner.
Sponsored Links
1 / 16

Automātu teorijas elementi PowerPoint PPT Presentation


  • 176 Views
  • Uploaded on
  • Presentation posted in: General

Automātu teorijas elementi. Datorzinātnes pamati. m. k. Galīgs automāts kā abstrakta mašīna. Abstrakta mašīna – vadības bloks + datu bloks, komandas izpilde maina norādi uz kārtējo instrukciju vadības blokā, maina datu informāciju.

Download Presentation

Automātu teorijas elementi

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Autom tu teorijas elementi

Automātu teorijas elementi

Datorzinātnes pamati


Gal gs autom ts k abstrakta ma na

m

k

Galīgs automāts kā abstrakta mašīna

Abstrakta mašīna – vadības bloks + datu bloks, komandas izpilde maina norādi uz kārtējo instrukciju vadības blokā, maina datu informāciju.

Galīgais automāts – vienkāršākā abstraktā mašīna, tikai vadības bloks.

Galīgs skaits dažādu stāvokļu un pārejas starp tiem.

“Kafijas automāts”:

Katrā brīdī atrodas vienā no 2 “stāvokļiem”:

Var pieņemt monētu, vai var izdot kafiju.

Stāvokli nosaka iepriekšējā darbību secība.

Galīgs dažādu stāvokļu skaits, galīgs skaits variantu, kā automāts var reaģēt pašreizējā situācijā.

Ir sistēmas, ko var adekvāti aprakstīt ar galīgu automātu.

Cita veida sistēmām galīgs automāts var būt “abstrakcija”, kas var atspoguļot vairākas (lai arī ne visas) būtiskas sistēmas īpašības.


Gal gs autom ts akceptors

Galīgs automāts (akceptors)

Galīgu automātu (akceptoru) raksturo:- Galīga stāvokļu kopa Q (kādos stāvokļos automāts var atrasties).- Galīgs ieejas simbolu alfabēts I (kādus ieejas simbolus automāts var saņemt / kādos notikumos automāts var piedalīties).- Pāreju attiecība  QIQ. q,a,q’   apzīmējam arī kā q -a q’, pieraksts tam, ka no stāvokļa q, saņemot ieejā simbolu a, automāts var pāriet uz stāvokli q’.- Sākuma stāvokļu kopa S  Q, beigu stāvokļu kopa F  Q.

Definējam, ka automāts “ir” kortežs: A = Q, I, , S, F (minētie 5 elementi automātu raksturo viennozīmīgi).

Automāts “akceptē vārdu”. I* - galīgo vārdu kopa alfabētā I.

(x  I* )  k: x = a1a2…ak, ik ai  I.

Rakstam q -x q’, ja q -a1 q1 –a2 q2 … –ak qk =q’ – pāreja ar vārdu x no stāvokļa q uz stāvokli q’.

Definīcija. Automāts A akceptē vārdu x  I* , ja q  S, q’  F: q -x q’.

Definīcija. Automāta A valoda L(A) = {x  I* | A akceptē x}.


Gal gi autom ti turpin ts

Galīgi automāti, turpināts

Galīgs automāts A = Q, I, , S, F, kur   QIQ, S  Q, F  Q.

Definīcija. Automāts A ir determinēts, ja (1) ! qS (viens sākuma stāvoklis) un(2) qQ, aI: q –aq’  q –aq’’  q’ = q’’ (ne vairāk kā 1 pārejas iespēja).

Automāts ir “nedeterminēts”, ja tam neizpildās kāda no prasībām (1) vai (2).

Kādreiz lieto vārdus “nedeterminēts automāts”, lai uzsvērtu, ka nav zināms tas, ka automāts ir determinēts (bet tas nav arī izslēgts, ka automāts var izrādīties determinēts). Varam rakstīt Det  Aut, kur Det – determinēto automātu kopa, bet Aut – visu (vispār sakot, iespējams, ka nedeterminētu) automātu kopa.

Automāts definē diskrēto procesu: katrā brīdī automāts atrodas noteiktā stāvoklī. Ienākošie simboli maina automāta stāvokli. Katrs no stāvokļiem parāda, kādas ir tālākās iespējamās automāta darbības (sk. kafijas automāts).

Katram automātam tā darbības laikā iespējams galīgs “iekšējo situāciju” skaits.

Iekšējā situācija – raksturo, kas ar automātu noticis pagātnē, un kas ar to var notikt nākotnē. Galīga, ierobežota atmiņa par to, kas ir noticis pagātnē.

C++, PASCAL programma: vadības informācija + dati, mainīgo vērtības, var izdarīt vairāk, nekā ar galīgo automātu.


Gal gi autom ti piem ri

b

a

a

b

a

a

c

b,c

b

a

c

b

a,b,c

Galīgi automāti: piemēri

Galīgs automāts A = Q, I, , S, F, kur   QIQ, S  Q, F  Q.

1) I = {a,b}, L = { x  I* | #(b,x) ir nepāra skaitlis }(#(b,x) – burta b ieiešanas reižu skaits vārdā x).

Katrs no stāvokļiem raksturo saņemto b burtu skaitu – pāra skaits, vai nepāra skaits. Automāts nevar atšķirt, vai saņemti 5 vai 9 b burti.

2) I = {a,b,c}, L = { x  I* | y,z I*, x = y a b b z } (akceptē tos un tikai tos vārdus, kas satur fragmentu abb).

Katrs no stāvokļiem raksturo to sākuma fragmentu no vārda “abb”, kas jau ir nolasīts. Šis sākuma fragments raksturo, kādas darbības ar ieejas simboliem veicamas turpmāk.


Gal gie autom ti iesp jas un ierobe ojumi

Galīgie automāti: iespējas un ierobežojumi

Galīgs automāts var atpazīt valodas:

I = {a,b}, L = { x  I* | #(b,x) ir nepāra skaitlis } . Var būt arī burta ieiešanas reižu skaita dalīšanās ar citu skaitli, noteikts minimāli nepieciešamais burtu skaits, u.taml.

I = {a,b,c}, L = { x  I* | y,z I*, x = y a b b z } (akceptē tos un tikai tos vārdus, kas satur fragmentu abb). Var būt jebkurš cits fragments. Var būt gan apakšvārds, gan apakšvirkne, u.c. Piemērus var turpināt.

Valodas, ko galīgs automāts var atpazīt – t.s. regulārās valodas (sk. automātu teorija).

Valodas, ko neviens galīgs automāts nevar atpazīt (piemēri):

L = { an bn I n  N }, vārdi, kas sastāv no noteikta skaita a burtiem, kam seko tikpat daudz b burti.

Automātam, kas šādu valodu atpazītu, būtu jāakceptē katru no tajā ietvertajiem vārdiem, un tas nedrīkstētu akceptēt nevienu citu vārdu. Var pierādīt, ka šāds galīgs automāts nav iespējams (“pa ceļam” jāatceras potenciāli neierobežots informācijas daudzums – cik tad a burtu līdz šim bija?).

L = { x  I* | x ir simetrisks } (ja I sastāv no vismaz 2 simboliem).


Nedetermin ti autom ti valodas

a,b

a

a,b

a,b

a,b

a,b

Nedeterminēti automāti: valodas

Teorēma. Katram nedeterminētam automātam A eksistē atbilstošs determinēts automāts A’, kuram L(A’) = L(A).

Automāts A’ akceptē tos un tikai tos vārdus, kurus akceptē automāts A.

Ja automātam A ir n stāvokļi, tad automātam A’ stāvokļu skaits nepārsniegs 2n.

Konstrukcijas ideja (no A iegūt A’):Ja A =Q, I, , S, F, tad A’ = 2Q, I, ’, {S}, F’, kur jaunās stāvokļu kopas 2Qelementi ir visas kopas Q apakškopas; Q1 -a’ Q2, ja Q2 = {q | q’ Q1: q’ -aq};Q1 F’, ja q Q1: q F.

Daudzos gadījumos konstrukcijas var būt vienkāršākas (mazāk stāvokļus prasošas).

Novērojums: dažādas abstrakto mašīnu klases (Det un Aut), tomēr viena un tā pati izteiksmes spēja (spēja akceptēt vienas un tās pašas valodas).

Piemērs: uzkonstruēt atbilstošu determinētu automātu.


Nedetermin ti autom ti diskr tas iek rtas

a

a

a

Nedeterminēti automāti: diskrētas iekārtas

Ja mēģinām nedeterminētu automātu “izpildīt”, ar kādu diskrēto procesu sastopamies?

Kas notiek tad, ja vienā brīdī dažādas iespējas izpildīt pāreju, kas atbilst saņemtajam ieejas simbolam a?

Klasiskā pieeja (kā iepriekšējā slaidā): automāts atceras visas iespējas, kādas bija izdarīt šo pāreju (atceras visus stāvokļus, līdz kuram ar līdz šim saņemto vārdu bija iespējams aiziet) un procesa (ieejas vārda) beigās apskatās, vai starp visām iespējām bija kāda, kas ir “laba” (noved līdz akceptējošam stāvoklim).

Reālā laika pieeja: automāta iekšienē notiek nedeterminēta “izvēle” katra simbola saņemšanas brīdī.

Vai šādi 2 automāti ir ekvivalenti (uzskatām, ka visi automātu stāvokļi ir akceptējoši).

Abi automāti akceptē vienu un to pašu valodu: a* ( {an | n  N } ).

Reālā laika izpratne: labās puses automātā iespējams “dedloks” – stāvoklis, no kura nav iespējama neviena tālāka pāreja. Reālā laika sistēmām tas ir slikti.


Gal gu autom tu anal ze

Galīgu automātu analīze

Ja dots galīga automāta apraksts (automāta diagramma, automāta pāreju uzskaitījums teksta formā, vai kā citādi), vai mēs varam kaut ko pateikt par to diskrēto procesu, ko šis automāts realizē? Par valodu, ko šis automāts apraksta?

Automātu analīzes problēmas (piemēri):

Pēc dota automāta A noskaidrot, vai L(A) =  ?

Pēc dota automāta A un dota a  I noskaidrot, vai L(A) satur kādu vārdu x, kurā ir vismaz viens (vai tieši viens) a burts?

Pēc dota automāta A un dota q  Q noskaidrot, vai automātā eksistē ceļš no kāda sākuma stāvokļa līdz stāvoklim q?

Pēc 2 dotiem automātiem A un B noskaidrot, vai L(A) = L(B) ?

Fakts. Visas šeit minētās (un daudzas citas radniecīgas) galīgo automātu analīzes problēmas ir algoritmiski atrisināmas (katrai no šīm problēmām eksistē algoritms, kas to risina).

Motivācija: automātam ir galīgs skaits stāvokļu, visus tos ir iespējams “pārlasīt”.

Jautājums: vai mēs negribētu algoritmus līdzīgu problēmu risināšanai attiecībā uz C++ vai PASCAL programmām, kuras mēs rakstām?


Gal gu autom tu anal ze piem rs

Galīgu automātu analīze: piemērs

Pēc dota automāta A = Q, I, , S, F noskaidrot, vai L(A)   (t.i., vai L(A) satur vismaz vienu vārdu)?

Būvējam kopas Ri – ne vairāk, kā i soļos no S sasniedzamo stāvokļu kopa.

R0 = S -- Visi sākuma stāvokļi, sasniedzami 0 soļos no S.

Ri+1 = Ri  { q Q | q’  Ri b I: q’ -bq } -- i+1 soļos sasniedzamie stāvokļi

Beidzam, kad Ri+1 = Ri. Apskatāmies, vai Ri  F  .

Kāpēc šāds brīdis būs?

Tāpēc, ka R0  R1  R2  …  Q – galīga kopa.

Kāpēc programma izdos pareizu atbildi?

Tā kā Ri = Ri+1 tad Ri+1 = Ri+2 , tātad k: Ri = Ri+k . Secinām s N Rs  Ri tātad Ri =  { Rs | s N } – visu sasniedzamo stāvokļu kopa.

Tātad, L(A)  tad un tikai tad, jaRi  F  .

Programmas pseidokods:

Kopai X  Q rakstām X(q) = 1, ja q X, citādi X(q) = 0.

Mainīgie (masīvi): R(q), q Q – kārtējā kopa Ri+1 ,T(q), q Q – “iepriekšējā” kopa Ri


Gal gu autom tu anal ze piem rs programma

Galīgu automātu analīze: piemērs, programma

Pēc dota automāta A = Q, I, , S, F un dota a  I noskaidrot, vai L(A) satur kādu vārdu x?

Programmas pseidokods:

Kopai X  Q rakstām X(q) = 1, ja q X, citādi X(q) = 0.

Mainīgie (masīvi): R(q), q Q – kārtējā kopa Ri+1 ,T(q), q Q – “iepriekšējā” kopa Ri

q T(q) := 0; q R(q) := S(q);/* sākuma inicializācija R1 := S */

while q: ( R(q)  T(q)) do

q T(q) := R(q); /* Nokopējam kārtējās vērtības uz “iepriekšējām” */

for all q Q, T(q) = 1 if b I: q -bq’ then R(q’) = 1;

end for/* Ciklā veidojam jaunas “kārtējās” vērtības */

end while

if q: R(q) = 1  F(q) = 1 then print ‘Yes!’ else print ‘No ..’


Gal gu autom tu anal ze piem rs 2

Galīgu automātu analīze: piemērs (2)

Pēc dota automāta A = Q, I, , S, F un dota a  I noskaidrot, vai L(A) satur kādu vārdu x, kurā ir vismaz viens a burts?

Kopas Ri– ne vairāk, kā i soļos no S sasniedzamo stāvokļu kopa, Rai– ne vairāk, kā i soļos no S sasniedzamo stāvokļu kopa ar vārdu, kas satur vismaz vienu a simbolu.

R0 = S, Ra0 = 

Ri+1 = Ri  { q Q | q’  Ri b I: q’ -bq }

Rai+1 = Rai  { q Q | q’  Ri : q’ -aq }  { q Q | q’  Rai : b I: q’ -bq }

Beidzam, kad Ri+1 = Ri un Rai+1 = Rai . Apskatāmies, vai Rai  F  .

Kāpēc šāds brīdis būs?

Tāpēc, ka R0  R1  R2  …  Q – galīga kopa un Ra0  Ra1  Ra2  …  Q .

Kāpēc programma izdos pareizu atbildi?

Definējam R =  {Rs | s  N } , Ra =  {Ras | s  N }

Ra – to stāvokļu kopa, kas sasniedzami ar vārdu, kurš satur a.

Tā kā Ri = Ri+1, tad Ri+1 = Ri+2un pēc indukcijask: Ri = Ri+k, tātad Ri = R.

Tā kā Ri = Ri+1  Rai = Rai+1, tad Ri+1 = Ri+2  Rai+1 = Rai+2un pēc indukcijask: Ri = Ri+k Rai = Rai+k, tātad Ri = R  Rai = Ra.

Tātad Rai  F    Ra  F   un algoritms izdos pareizu atbildi.


Gal gu autom tu anal ze piem rs programma 2

Galīgu automātu analīze: piemērs, programma (2)

Pēc dota automāta A = Q, I, , S, F un dota a  I noskaidrot, vai L(A) satur kādu vārdu x, kurā ir vismaz viens a burts?

Programmas pseidokods:

Kopai X  Q rakstām X(q) = 1, ja q X, citādi X(q) = 0.

Mainīgie (masīvi): R(q), q Q – kārtējā kopa Ri+1 ,T(q), q Q – “iepriekšējā” kopa RiRa(q), q Q – kārtējā kopa Rai+1 ,Ta(q), q Q – “iepriekšējā” kopa Rai.

q T(q) := 0; q R(q) := S(q);/* sākuma inicializācija R1 := S */

q Ta(q) := 0; q Ra(q) := 0;

while q: ( R(q)  T(q)  Ra(q)  Ta(q) ) do

q T(q) := R(q); q Ta(q) := Ra(q);

for all q T(q) if b I: q -bq’ then R(q’) = 1;

if q -aq’ then Ra(q’) = 1; end for

for all q Ta(q) if b I: q -bq’ then Ra(q’) = 1; end for

end while

if q: Ra(q) = 1  F(q) = 1 then print ‘Yes!’ else print ‘No ..’


Papla in tie autom ti strukt ra

Paplašinātie automāti: struktūra

Galīgs automāts A = Q, I, , S, F. Paplašināts automāts: vadības bloks + dati.

Paplašināts automāts: A = Q, D, L, V, E, S, D0, FQ – galīga vadības stāvokļu kopaD – (iespējams, ka) bezgalīga datu vērtību kopa (piemēram, galīga mainīgo kopa Var,   D ir funkcija  : Var  Z)L – galīga notikumu (ieejas un izejas simbolu) kopaV – (iespējams, ka) bezgalīga ieejas un izejas datu vērtību kopaE – šķautņu kopa, eE definētas funkcijass(e) Q- izejas virsotne, t(e) Q – ieejas virsotne, l(e) L – iezīme (notikums),p(e): D x V  {0,1} – šķautnes predikāts,(e): D x V  D x V – datu transformācija ( e = s,t,l,p,  ). S  Q – sākuma virsotņu kopa, F  Q – beigu virsotņu kopa, D0  D – sākuma datu elementu kopa.

Vienkāršāks variants: V = {}, p(e): D  {0,1}, (e): D  D.

Pāreju attiecība:   (Q x D) x (V x L x V) x (Q x D)

Pāreja notiek pa šķautni e no q,d uz q’,d’ , automātam piedaloties notikumā l(e), saņemot ieejā v un izdodot izejā v’, ja p(e)(d,v) = 1 un (e)(d,v) = (d’,v’).


Papla in tie autom ti koment ri

Paplašinātie automāti: komentāri

Paplašināts automāts: A = Q, D, L, V, E, S, D0, F , eE e = s, t, l, p,  

Pāreja notiek pa šķautni e no q,d uz q’,d’ , automātam piedaloties notikumā l(e), saņemot ieejā v un izdodot izejā v’, ja p(e)(d,v) = 1 un (e)(d,v) = (d’,v’).

Tipiska paplašināto automātu klase: D balstās uzgalīgu mainīgo kopu Var,   D ir funkcija  : Var  Val (Val – mainīgo vērtību kopa, tipiski bezgalīga).

Blokshēmu programmas (ar piešķiršanas, salīdzināšanas operatoriem) var tikt uzlūkotas kā paplašināti automāti.

Programma (procedūra) valodā PASCAL, C++ arī var tikt uzlūkota kā paplašinātais automāts (ja programmā nav apakšprogrammas, klases, u.taml.). Ja izmanto apakšprogrammas un rekursiju, tad arī vadības stāvokļu kopai D jābūt potenciāli bezgalīgai.

No modelēšanas viedokļa paplašinātie automāti šķiet (un ir) būtiski spēcīgāki par galīgajiem automātiem. Kā ir ar analīzes iespējām? Vispārīgajā gadījumā automātiskas analīzes iespējas ļoti ierobežotas.

Konkrētas paplašināto automātu klases: kāds datu apgabals D, kāda veida predikāti p(e), kādas transformācijas (e)?

Datorzinātnē pētītas problēmas: salīdzināt modelēšanas un analīzes iespējas dažādām paplašināto automātu klasēm.


Papla in tie autom ti koment ri 2

Paplašinātie automāti: komentāri (2)

Paplašināts automāts: A = Q, D, L, V, E, S, D0, F , eE e = s, t, l, p,  

Pāreja notiek pa šķautni e no q,d uz q’,d’ , automātam piedaloties notikumā l(e), saņemot ieejā v un izdodot izejā v’, ja p(e)(d,v) = 1 un (e)(d,v) = (d’,v’).

Paplašinātā automātā labi uzskatīt, ka D ir bezgalīga kopa, kaut arī reālā datorā vienmēr pastāv atmiņas apjoma noteikti datu vērtību ierobežojumi. Tomēr arī reālā datorā iespējamās datu vērtības ir ļoti “tuvas” bezgalīgām:- uzskatām, ka dators var realizēt “visus” algoritmus (to nevarētu uzskatīt, ja par datoru domātu kā par galīgu automātu); - arī analīzes laikā nevar pārlasīt tās visas, kā pārlasīti galīga automāta stāvokļi).

“Abstrakcija” – atteikšanās no izpratnei par sistēmu sekundārām (otršķirīgām) lietām, koncentrēšanās uz būtisko.

Materiāls punkts, ideāla gāze – abstrakcijas.

Abstrakcija vai modelis – labs, ja uz tā bāzes var izdarīt derīgus secinājumus par faktisko realitāti (“Haleja komēta nākamo reizi parādīsies pēc 76 gadiem”).

Arī programmējot vai analizējot programmas svarīgi domāt par jēdzienu sistēmām, kurās mēs to darām.

Var domāt arī par galīgo automātu kā paplašināta automāta “abstrakciju”. Ja kāds stāvoklis nav sasniedzams galīgā automātā, tas nebūs sasniedzams arī paplašinātajā automātā (otrādi gan var nebūt tiesa).


  • Login