10
1.1 Kafli 1.1 Þessi kafli fjallar um nokkur stærðfræðileg atriði sem byggt er á síðar, sér í lagi: A hugtök í mengjafræði Rithátt fyrir mengi t.d. {upptalning staka}, {x ˛ G: skilyrði sem x uppfyllir} o.fl. Mengjaaðgerðir (sammengi/sniðmengi/mengjamismunur/fyllimengi) Tómamengið Veldismengi (mengi allra hlutmengja í A, táknað 2 A eða P (A)) Faldmengi (mengi af pörum, t.d. R×R) B. Hugtök tengd föllum Skilgreining falls Stærðarstig (o, O, W, Q lítið sem ekkert notað í námskeiðinu) C. Hugtök í netafræði Net (graph), hnútur (vertex), leggur (edge), vegur (path), hringrás (cycle), lykkja (loop), tré, rót, lauf, foreldri, barn, hæð, þrep (level) D. Þrepasannanir Tekið er einfalt dæmi um þrepasönnun í sýnidæmi 1.8, en við skoðum svo betra dæmi í sýnidæmi 1.13. 1.2 Kafli 1.2 Hér eru kynnt til sögunnar þrjú aðalhugtök námskeiðsins, mál (languages), mállýsingar (grammars), og vélar (eða reiknivélarautomata, et. automaton). 1. Mál Mál (language) er mengi af strengjum og strengur er runa af táknum sem hvert er í tilteknu stafrófi. Stundum passar betur að hugsa sér að mál sé mengi af setningum og hver setning sé runa af orðum. Þá er stafrófið mengi allra orða. Dæmi um mál með stafróf {a, b} eru: L 1 = {a, b, ab, aab} L 2 = {a n b n : n 0} = {l, ab, aabb, aaabbb,...} (l táknar tóma strenginn), og mál með ensk orð sem stafróf gæti verið: L 3 = {the dog eats, a man runs, an umbrella unfolds} Nokkrar aðgerðir / hugtök sem tengjast strengjum (v, w eru strengir og S er stafróf): samskeyting (concatenation), táknað vw viðsnúningur (reverse), táknaður w R lengd, táknuð |w| forskeyti (prefix) og viðskeyti (postfix) endurtekning, táknað w n allir strengir (úr stafrófi S), táknað * S , og allir strengir nema sá tómi, táknað + S 1.3 Nokkrar aðgerðir tengdar málum (L, L 1 og L 2 eru mál): fyllimál, L viðsnúið mál, L R (mengi viðsnúinna strengja í L) samskeyting mála L 1 L 2 og L n stjörnu-lokun (star-closure), L * plús-lokun, L + (L * fyrir utan l) 2. Mállýsingar Mállýsing (grammar) er leið til að segja hvaða strengir tilheyra tilteknu máli. Margir kannast við Backus-Naur snið sem er ein gerð af mállýsingu. Dæmi: {+, *, (, ), x, y, z, 0, 1, 2,...., 9} | | * | |( ) x|y|z | 0|1|2|3|4|5|6|7|8|9 E T E T T FT F F CV E V C D DC D S= + (við vinnum samt með talsvert einfaldari dæmi til að byrja með) John Backus (Bandarískur, 19242007), bjó til Fortran (m.fl.) og Backus-Naur-snið. Peter Naur (danskur, f. 1928), Algol (m.fl.) og BNF-snið. 1.4 Málrit (Syntax-rit): Backus-Naur-snið: <expression> ::= <term> | <expression> "+" <term> <term> ::= <factor> | <term> "*" <factor> <factor> ::= <constant> | <variable> | "(" <expression> ")" <variable> ::= "x" | "y" | "z" <constant> ::= <digit> | <digit> <constant> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

1.1

Kafli 1.1 Þessi kafli fjallar um nokkur stærðfræðileg atriði sem byggt er á síðar, sér í lagi:

A hugtök í mengjafræði · Rithátt fyrir mengi t.d. {upptalning staka}, {x ÎG: skilyrði sem x uppfyllir} o.fl. · Mengjaaðgerðir (sammengi/sniðmengi/mengjamismunur/fyllimengi) · Tómamengið · Veldismengi (mengi allra hlutmengja í A, táknað 2

A eða P (A))

· Faldmengi (mengi af pörum, t.d. R×R) B. Hugtök tengd föllum · Skilgreining falls · Stærðarstig (o, O, W, Q – lítið sem ekkert notað í námskeiðinu)

C. Hugtök í netafræði · Net (graph), hnútur (vertex), leggur (edge), vegur (path), hringrás (cycle),

lykkja (loop), tré, rót, lauf, foreldri, barn, hæð, þrep (level)

D. Þrepasannanir · Tekið er einfalt dæmi um þrepasönnun í sýnidæmi 1.8, en við skoðum svo betra

dæmi í sýnidæmi 1.13.

1.2

Kafli 1.2 Hér eru kynnt til sögunnar þrjú aðalhugtök námskeiðsins, mál (languages), mállýsingar (grammars), og vélar (eða reiknivélar–automata, et. automaton).

1. Mál Mál (language) er mengi af strengjum og strengur er runa af táknum sem hvert er í tilteknu stafrófi. Stundum passar betur að hugsa sér að mál sé mengi af setningum og hver setning sé runa af orðum. Þá er stafrófið mengi allra orða. Dæmi um mál með stafróf {a, b} eru:

L1 = {a, b, ab, aab} L2 = {a

nb

n : n ³ 0} = {l, ab, aabb, aaabbb,...}

(l táknar tóma strenginn), og mál með ensk orð sem stafróf gæti verið:

L3 = {the dog eats, a man runs, an umbrella unfolds}

Nokkrar aðgerðir / hugtök sem tengjast strengjum (v, w eru strengir og S er stafróf): samskeyting (concatenation), táknað vw viðsnúningur (reverse), táknaður w

R

lengd, táknuð |w| forskeyti (prefix) og viðskeyti (postfix) endurtekning, táknað w

n

allir strengir (úr stafrófi S), táknað *S , og allir strengir nema sá tómi, táknað +S

1.3 Nokkrar aðgerðir tengdar málum (L, L1 og L2 eru mál):

fyllimál, L viðsnúið mál, L

R (mengi viðsnúinna strengja í L)

samskeyting mála L1L2 og Ln

stjörnu-lokun (star-closure), L*

plús-lokun, L+ (L

* fyrir utan l)

2. Mállýsingar Mállýsing (grammar) er leið til að segja hvaða strengir tilheyra tilteknu máli. Margir kannast við Backus-Naur snið sem er ein gerð af mállýsingu.

Dæmi: {+, *, (, ), x, y, z, 0, 1, 2,...., 9}

|| *| | ( )

x | y | z|

0 |1 | 2 | 3 | 4 | 5 | 6 | 7 |8 | 9

E T E T

T F T F

F C V E

V

C D DC

D

S =

® +

®

®

®

®

®

(við vinnum samt með talsvert einfaldari dæmi til að byrja með)

John Backus (Bandarískur, 1924–2007), bjó til Fortran (m.fl.) og Backus-Naur-snið.

Peter Naur (danskur, f. 1928), Algol (m.fl.) og BNF-snið.

1.4 Málrit (Syntax-rit):

Backus-Naur-snið: <expression> ::= <term> | <expression> "+" <term> <term> ::= <factor> | <term> "*" <factor> <factor> ::= <constant> | <variable> | "(" <expression> ")" <variable> ::= "x" | "y" | "z" <constant> ::= <digit> | <digit> <constant> <digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Page 2: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

1.5 Nákvæmlega þá er mállýsing fernd G = (V, T, S, P) þar sem

V er mengi af breytum, T er mengi af lokatáknum (terminal symbols; stafróf málsins), S VÎ er kallað byrjunarbreyta (eða -tákn) P er mengi af reglum (productions)

Gæta þarf þess að láta V og T ekki hafa nein sameiginleg tákn. Reglurnar eru af taginu x ® y þar sem x og y eru strengir í stafrófinu V TÈ .

Ef strengur inniheldur vinstri hlið reglu sem hlutstreng þá má beita reglunni með því að breyta þessum hlutstreng í hægri hlið reglunnar, og fá þannig nýjan streng. Byrjað er með strenginn S, og síðan er reglum beitt koll af kolli þar til fenginn er strengur sem er bara með lokatáknum. Allir strengir lokatákna sem fá má með þessu móti tilheyra málinu sem mállýsingin lýsir (og ekki aðrir).

Nánar tiltekið (sbr. bls. 21): Strengur w = uxv Breytist í z = uyv þegar reglunni x ® y er beitt Þetta er táknað w zÞ

Með því að beita reglum lýsingarinnar í einhverri röð á þennan hátt fáum við runu:

1 2 ... nS w w wÞ Þ Þ Þ (sem rita má *nS wÞ )

og ef *nw TÎ þá er wn er í málinu sem lýsingin lýsir.

1.6 Dæmi Í tímanum skoðum við dæmi um lýsingar fyrir málin á „glæru“ 1.2:

L1 = {a, b, ab, aab} L2 = {a

nb

n : n ³ 0} = {l, ab, aabb, aaabbb,...}

L3 = {the dog eats, a man runs, an umbrella unfolds}

Einnig verður litið á sýnidæmi 1.12, 1.13 og 1.14 bls. 23–26: 1.12:

S Ab

A aAb

A l

®

®

®

1.13: S SS

S

S aSb

S bSa

l

®

®

®

®

1.14: ||

S aAb

A aAb

l

l

®

®

Reynt verður að setja málin fram með mengjatáknun, {stak : skilyrði} sbr. L2 að ofan.

1.7 3. Reiknivélar Reiknivél (automaton) er stærðfræðilegt líkan af tölvu, sem er yfirleitt mjög einföld. Í námskeiðinu verður einkum fjallað um þrjár grunngerðir reiknivéla, endanlegar stöðuvélar (finite state machines), staflavélar (stack-machines) og Turing-vélar. Sjá skýringarmynd á bls. 26.

Sérhver reiknivél hefur inntak, sem er runa af táknum í einhverju stafrófi, og úttak sem er yfirleitt annaðhvort já/nei eða önnur runa af táknum. Allar vélar hafa líka endanlegt mengi af stöðum (state) og á hverjum tímapunkti eða í hverju skrefi eru þær staddar í tiltekinni stöðu. Auk þess hafa staflavélar og Turingvélar minni, sem er líka runa af táknum. Vél með já/nei úttak nefnist samþykkjandi (accepter), og vél með streng sem úttak nefnist „transducer“.

Ástand (configuration) vélarinnar á hverjum tíma ákvarðast af því hvað kemur næst í inntakinu, hvað stendur í minninu, og í hvaða stöðu hún er.

Reikningar fara fram í stakrænum skrefum og breyting úr einu ástandi í það næsta nefnist færsla (move).

Tvær grunngerðir véla eru svo löggengar (deterministic) og brigðgengar (non-

deterministic) vélar. Í fyrrnefndu gerðinni ákvarðar núverandi ástand næsta ástand einkvæmt, en ekki í þeirri síðarnefndu.

1.8

Kafli 1.3 (hagnýting) Reiknað er með að þið lesið þennan kafla sjálf. Hann fjallar annarsvegar um mállýsingar fyrir forritunarmál (með dæmi um lýsingu á breytunöfnum) og hinsvegar um vél fyrir samlagningu í tvíundakerfi.

Kafli 2.1. Löggengar endanlegar stöðuvélar Endanleg stöðuvél samanstendur af fimm hlutum, M = (Q, S, 0, , , q f Fd ) þar sem

Q er mengi af stöðum S er inntaksstafrófið

:Q Qd ´S ® er færslufall (transition function)

0q QÎ er upphafsstaða F QÍ er mengi af lokastöðum

Vélin vinnur þannig að hún er í upphafi stödd í stöðunni q0. Hún les síðan runu inntakstákna (inntaksstreng), eitt tákn í hverju skrefi, og notar inntaksfallið til að ákvarða næstu stöðu. Ef hún er stödd í stöðu q og les x þá fer hún næst í stöðuna

( , )q xd . Ef hún endar í lokastöðu eftir að hafa lesið síðasta táknið í inntaksstrengn-um þá svarar hún „já“, annars „nei“.

Page 3: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

1.9

Tímadæmi 1 Dæmi 1.2: 11, 12, 13, 14abcef bls. 28–29: 11. Find grammars for S = {a, b} that generate the sets of all strings with

(a) exactly one a, (b) at least one a, (c) no more than three a’s, (d) at least three a’s.

12. Give a simple description of the language generated by the grammar with productions:

13. What language does the grammar with these productions generate?

14. For each of the following languages, find a grammar that generates it:

2.1 Kafli 2.1. Löggengar endanlegar stöðuvélar Löggeng endanleg stöðuvél samanstendur af fimm hlutum, M = (Q, S, 0, , , q f Fd ) þar sem

Q er mengi af stöðum S er inntaksstafrófið

:Q Qd ´S® er færslufall (transition function)

0q QÎ er upphafsstaða F QÍ er mengi af lokastöðum

Vélin vinnur þannig að hún er í upphafi stödd í stöðunni q0. Hún les síðan runu inntakstákna (inntaksstreng), eitt tákn í hverju skrefi, og notar inntaksfallið til að ákvarða næstu stöðu. Ef hún er stödd í stöðu q og les x þá fer hún næst í stöðuna

( , )q xd . Ef hún endar í lokastöðu eftir að hafa lesið síðasta táknið í inntaksstrengn-um þá svarar hún „já“, annars „nei“. Dæmi. Í bókinni eru ýmis dæmi um endanlegar stöðuvélar og í fyrirlestri verða fleiri dæmi skoðuð. Sér í lagi verður skoðað hvernig hægt er að teikna myndir af þeim, sbr. myndir 2.2, 2.3, 2.4, 2.5 bls. 39–44 (þrjár þær fyrstu eru á næstu skyggnu)

2.2

2.3 Stöðuvélar og mál

Ritað er *( , )q wd fyrir stöðuna sem fæst með því að byrja í q og fylgja færslufallinu

d þegar öll táknin í strengnum w eru lesin. Ef t.d. 0 3( , )q a qd = og 3 5( , )q a qd = þá verður *

0( , )q abd = q5.

Til hverrar stöðuvélar M svarar mál L(M) sem er mengi af þeim strengjum sem láta stöðuvélina enda í lokastöðu þegar þeir eru lesnir með henni. Sagt eð vélin M þekki málið (accepts). Stærðfræðilega má rita:

L(M) = * *0{ : ( , ) }w q w FdÎS Î

Í fyrirlestri verða nokkur dæmi skoðuð.

Regluleg mál Mál nefnist reglulegt ef hægt að búa til löggenga endanlega vél sem þekkir það.

Page 4: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

2.4 Tímadæmi 2

Reiknið dæmi 2ace:

og 12 í æfingakafla 2.1:

3.1

Kafli 2.2. Brigðgengar endanlegar stöðuvélar Brigðgeng endanleg stöðuvél (non-deterministic finite accepter, nfa) er ólík löggengri vél á tvennan hátt. Í fyrsta lagi þá eru margir möguleikar á næstu stöðu í stað þess að hún sé ótvírætt ákvörðuð af núverandi stöðu og innlesnu tákni, og í öðru lagi getur vélin fært sig í næstu stöðu án þess að lesa tákn (það er kallað l-færsla).

Stærðfræðilega er færslufallið nú fall : ( { }) 2QQd l´ SÈ ® . Næsta staða er hlutmengi en ekki stak í stöðumenginu Q og l-færslur frá stöðu q eru gefnar með

( , )qd l . Ath. að þar sem tómamengið er eitt af hlutmengjum Q þá getur vélin haft ástand (staða, innlesið tákn) þannig að engin færsla sé möguleg.

Venjulegar tölvur eru ekki af þessu tagi, þótt skrifa megi forrit sem líkja eftir brigðgengri vél með því að nota backtracking til að prófa alla möguleika. Notagildi brigðgengra véla er þannig að talsverðu leyti fræðilegt. Það er t.d. oft mun auðveldara að búa til brigðgenga stöðuvél fyrir tiltekið mál heldur en löggenga, og þar með sýna fram á að málið sé reglulegt (sbr. skyggnu 3.4 á eftir).

Brigðgengar vélar gegna líka veigamiklu hlutverki í tengslum við fræði um flækjustig reiknirita. Svonefnd NP-verkefni (NP-problems) heita það vegna þess að þau má leysa með brigðgengri vél á margliðutíma (non-deterministic polynomial

time), að vísu Turing vél en ekki endanlegri stöðuvél. Um notagildi brigðgengis er fjallað nánar á bls. 53–54.

3.2 Dæmi. Hér eru brigðgengar stöðuvélar úr bókinni:

Í teikningum af brigðgengum stöðuvélum er í fyrsta lagi hægt að hafa margar örvar eða enga ör úr tiltekinni stöðu fyrir gefið innlesið tákn og svo eru örvar merktar með l mögulegar (l-færslurnar).

3.3

Kafli 2.3. Jafngildi löggengra og brigðgengra véla. Í þessum kafla er fjallað um þá staðreynd að ef til er brigðgeng endanleg vél sem þekkir tiltekið mál, þá er líka til löggeng vél sem þekkir það. Þar sem löggengar vélar eru bara ein tegund af brigðgengum vélum er augljóst að öfuga fullyrðingin gildir: Mál sem þekkist af löggengri vél þekkist líka af brigðgengri.

En fyrri fullyrðingin krefst sönnunar. Bókin setur fullyrðinguna fram sem Theorem

2.2 á bls. 59 og gefur slíka sönnun með reikniriti (nfa-to-dfa) sem fyrir gefna brigðgenga vél býr til löggenga vél sem þekkir sama mál.

Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til staðan {q0}. Fyrir hvert tákn a í S er svo athugað í hvaða stöður hægt er að komast úr q0 þegar a er lesið. Mengi þessara staða er bætt við MD sem hnút sem tengist {q0} með ör sem merkt er a. Ef það er t.d. hægt að komast í q1 og q3 úr q0 þá er hnút sem merktur er {q1, q3} bætt við. Segjum nú sem svo að í MN sé hægt að komast úr q1 í q2 og úr q3 í q4 þegar b er lesið og ekki séu fleiri möguleikar að færast úr q1 eða q3 við lestur b. Þá verður ör merkt b frá {q1, q3} yfir í hnútinn merktan {q2, q4} bætt við MD síðar í framkvæmd reikniritsins.

Ath. að þegar sagt er „færast úr q1 í q2 við lestur b“ þá gæti það bæði gerst beint

með færslu 1 2bq q¾¾® eða í skrefum, t.d. 1 2 2

bq q ql¾¾® ¾¾® .

Page 5: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

3.4 Reikniritið nfa-to-dfa (bls. 59):

3.5 Dæmi Sýnidæmi 2.13 á bls. 60–61 gefur nokkuð ítarlegt dæmi um framkvæmd reikniritsins nfa-to-dfa. Hér eru myndirnar í því:

3.6 Ath. Ein augljós afleiðing af Setningu 2.2 er að ef brigðgeng stöðuvél þekkir mál þá er það reglulegt (sbr. skilgr. á reglulegu máli á skyggnu 2.3).

Kafli 2.4. Fækkun á stöðum í stöðuvélum. Það hefur augljósa kosti að hafa ekki óþarflega margar stöður í stöðuvél. Í bókinni er sett fram reiknirit til að reyna að fækka stöðum án þess að breyta málinu sem vél þekkir. Það er sett fram í tvennu lagi. Reikniritið mark ákvarðar stöður sem eru jafngildar, sem sé þannig að ef byrjað er í annarri að lesa tiltekinn streng þá gefur vélin sama svar (já eða nei) og ef byrjað er í hinni með sama streng. Reikniritið mark:

3.7 Nýja vélin hefur hnúta sem svara til jafngildisflokka skv. reikniritinu mark. Þegar þeir hafa verið fundnir er bætt við leggjum og lokastöður ákvarðaðar með reikniriti reduce. Bókin gefur svo dæmi um notkun á bls. 66–67.

Page 6: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

4.1

Kafli 3.1. Reglulegar segðir Í 1. og 2. kafla bókar er fjallað um hvernig hægt er að setja mál fram með mengjatáknun, mállýsingum og stöðuvélum. Í 3. kafla er fjórða aðferðin kynnt til sögunnar, nefnilega að skilgreina mál með svonefndum reglulegum segðum (regular expressions).

Margir kannast við reglulegar segðir úr Unix, m.a. í tólunum/forritunum grep, awk, sed, vi, auk þess sem fjölmörg nýrri forritunarmál gefa kost á notkun þeirra. Reglulegar segðir í þessum forritunarmálum má m.a. nota til að leita að strengjum sem uppfylla tiltekin skilyrði, og slíkir strengir eru sagðir passa við segðina (á ensku er sagt: the expression matches the string).

Þannig passar segðin a+[bc].*(12|23) við strenginn acuvv23 því hann byrjar á einu eða fleiri a-um svo kemur b eða c, síðan kemur runa af einhverjum táknum (hér uvv) og að lokum 12 eða 23. Í þessum forritunarsegðum þýðir . hvaða tákn sem er, [xyz] þýðir eitthvert af táknunum x, y eða z, * þýðir 0 eða fleiri af tákni á undan, + þýðir 1 eða fleiri af tákni á undan, |merkir eða og svigar sýna röð aðgerða.

Táknmál formlegra mála (þ.m.t. kennslubókar) er svipað, en þó talsvert einfaldað. Ekkert tákn er fyrir „1 eða fleiri“, og heldur ekki fyrir „hvaða tákn sem er“, hornklofar eru ekki notaðir og + er notað fyrir eða. Ef stafrófið er {a,b,c,u,v,1,2,3} þá mætti rita segðina að framan: aa*(b+c)(a+b+c+u+v+1+2+3)*(12+23).

4.2 Bókin notar reyndar líka × fyrir samskeytingu segða í byrjun, en hættir því svo og ritar segðina r1 × r2 einfaldlega r1r2. Formleg skilgreining á máli fyrir reglulega segð er svona (sbr. bls. 73; r, r1 og r2 eru regluegar segðir).

1. Æ er regluleg segð sem táknar tóma málið 2. l er regluleg segð fyrir málið L = {l} 3. Ef a Î S þá er a regluleg segð fyrir L = {a} 4. L(r1 + r2) = L(r1) È L(r2) 5. L(r1 r2) = L(r1) L(r2) 6. L((r1)) = L(r1) 7. L(r*) = L(r)*

Reglulegar segðir í Drögum að Unixbók eftir KJ:

4.3 Í bókinni koma svo nokkur dæmi um reglulegar segðir og tilheyrandi mál:

1. (a + b)*(a + bb) 2. (aa)*(bb)*b 3. (0 + 1)*00(0 + 1)* 4. (1*011*)*(0 + l) + 1*(0 + l) 5. (1 + 01)*(0 + l)

Segð nr. 3 passar við mál strengja með a.m.k. eitt par af samliggjandi núllum og segðir nr. 4 og 5 (sem eru jafngildar) passa við mál strengja með ekkert par samliggjandi núlla.

Kafli 3.2. Reglulegar segðir og regluleg mál Í þessum kafla er sýnt

A: að mál sérhverrar reglulegrar segðar sé reglulegt, og B: að hægt sé að búa til reglulega segð fyrir sérhvert reglulegt mál.

4.4 A Endanlegar stöðuvélar útfrá reglulegum segðum Bókin gefur fyrst myndir sem sýna brigðgengar stöðuvélar fyrir segðir 1–3 á skyggnu 4.2, nefnilega Æ, l og a:

Svo koma myndir sem sýna hvernig búa má til vélar fyrir r1 + r2, r1 r2 og r1* útfrá vélum fyrir r1 og r2: r1r2:

r1 + r2:

r1*:

Page 7: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

4.5 Sýnidæmi 3.7 á bls. 80: Að lokum er dæmi um stöðuvél fyrir segðina (a + bb)*(ba* + l) útfrá stöðuvélum fyrir segðirnar a + bb og ba* + l, með eftirfarandi myndum

Stöðuvél fyrir a + bb Stöðuvél fyrir ba* + l

Stöðuvél fyrir (a + bb)*(ba* + l)

4.6 B Reglulegar segðir útfrá endanlegum stöðuvélum

Til að búa til reglulega segð fyrir tiltekna stöðuvél er notast hugtak sem bókin nefnir generalized transition graph eða GTG, en það er í raun stöðuvél þar sem örvar frá einni stöðu í aðra eru merktar með reglulegum segðum, og merkingin er sú að ef lesinn er strengur sem passar við segðina, þá er hægt að færast milli staða eftir örinni.

Bókin útskýrir síðan aðferð til að fækka stöðum í slíkum vélum um eina í einu (samtímis því sem reglulegu segðirnar í henni verða flóknari).

Fyrstu skrefin: Til að finna reglulega segð fyrir tiltekna nfa-vél er byrjað á að merkja allar örvar sem merktar eru með fleiri en einu tákni, a, b, c..., með tilsvarandi reglulegri segð, a + b + c... (þetta eru færslur sem vélin framkvæmir ef lesið er a eða b eða c...).

Síðan er bætt við örvum til að búa til svonefnt fullskipað GTG (complete GTG) með því að bæta við ör p ® q sem merkt er Æ allsstaðar þar sem hana vantar.

Lokaskrefið: Þegar búið er að fækka stöðum niður í tvær (sbr. mynd til hliðar – Fig. 3.10 í bók)) þá fæst lokasegðin sem:

r = r1*r2(r4 + r3r1*r2)*

4.7 Milliskref:

Fækkun á stöðum úr þremur í tvær er sýnd á myndum 3.11 og 3.12 á bls. 83. Gerum ráð fyrir færslum:

1 2 3

e g

a c

b d

f

q q q¾¾® ¾¾®¬¾¾ ¬¾¾1 2 3

e

b d1 21 2

f

q1 21 21 21 21 21 21 21 21 21 21 2

g

3

g

og 1 3

i

hq q¾¾®¬¾¾

Þegar q2 er sleppt þá breytist:

1 1eq q¾¾® í *

1 1e af bq q+

¾¾¾®

3 3gq q¾¾® í *

3 3g df cq q+

¾¾¾® og

1 3

i

hq q¾¾®¬¾¾ í

*

1 3*

i af c

h df bq q

+

+

¾¾¾®¬¾¾¾ .

Samsvarandi breytingar má gera til að fækka fjórum stöðum í þrjár, fimm í fjórar o.s.frv.

4.8 Tímadæmi 3

1. Fleytitölufastar í einföldu forritunarmáli eru runa af tölustöfum sem í má vera punktur, á undan má koma mínus og á eftir má koma tugveldi: E eða E– og heiltala. Fasti verður að innihalda annaðhvort punkt eða tugveldi. Dæmi: 4.33, .67, –100.E–47. Sýnið reglulega segð fyrir slíkan fasta (af prófi í maí 2013).

2. Notið aðferð bókar (sbr. skyggna 4.4) til að búa til brigðgenga stöðuvél sem

þekkir málið L(ab*aa + bba*ab) (þetta er æfing 3.2.1 í kennslubók). 3. Notið aðferð bókar (sbr. skyggnur 4.6 og 4.7) til að búa til reglulega segð fyrir

nfa-vélina:

Page 8: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

5.1 Kafli 3.3. Reglulegar mállýsingar Við höfum fram til þessa séð fjórar aðferðir til að lýsa málum: mengjatáknun, mállýsingar, endanlegar stöðuvélar, og reglulegar segðir. En það er ekki hægt að lýsa öllum málum með seinni tveimur aðferðunum heldur bara reglulegum málum. Fyrri tvær aðferðirnar duga fyrir stærri flokk mála.

Í þessum kafla er fjallað um hvaða skorður þarf að setja á mállýsingar til að málin sem þau lýsa verði regluleg.

Línulegar mállýsingar

Jöfnur fyrir línuleg föll í stærðfræði má rita A = xB þar sem A og B eru breytur og x er tala eða vigur, t.d. A = 5B eða A = (3,4) ∙ B. Föll af taginu A = 5 eru líka línuleg.

Ef allar reglur í mállýsingu eru af taginu:

A ® xBy eða A ® x

þar sem A og B eru breytur og x og y eru mengi lokatákna þá nefnist mállýsingin línuleg (linear). Ef allar reglurnar eru með tómt y og þar með af taginu:

A ® xB eða A ® x

nefnist lýsingin hægri-línuleg og ef þær eru allar af taginu

A ® Bx eða A ® x

nefnist hún vinstri-línuleg.

Skilgreining: Mállýsing nefnist regluleg ef hún er hægri-línuleg eða vinstri-línuleg

5.2 Reglulegar mállýsingar og regluleg mál.

Eins og nöfnin benda til þá eru tengsl á milli reglulegra mála og reglulegra mál-lýsinga. Eftirfarandi setningar skýra þessi tengsl nánar.

Setning: Ef G er hægri-línuleg mállýsing þá er L(G) reglulegt mál. Setning: Ef L er reglulegt mál þá er til hægri-línuleg mállýsing fyrir það.

Þessar setningar eru Theorem 3.3 og 3.4 í bókinni og eru sannaðar þar. Litið verður á þessar sannanir í fyrirlestri. Báðar þessar sannanir eru „konstrúktívar“ í þeim skilningi að þær sýna hvernig hægt er að búa til stöðuvél útfrá tiltekinni mállýsingu, og öfugt hvernig búa má til mállýsingu útfrá stöðuvél og við lítum á slík dæmi (sjá næstu skyggnu).

Með því að skoða málið LR af öllum viðsnúnum strengjum L, sem er reglulegt þþaa

L sé regluleg skv. dæmi 2.3.12, má skipta út hægri-línuleg með vinstri-línuleg í þessum setningum og þar með sjá að það gildir:

Setning: L er reglulegt mál þþaa til sé regluleg mállýsing fyrir það

(þetta er setning 3.6 í bók, og setning 3.5 sýnir jafngildi vinstri- og hægri-línulegra lýsinga).

5.3 Dæmi 1. Búum til stöðuvél útfrá reglulegu lýsingunni:

S ® abcA A ® a | B | aaA B ® bA | l

Dæmi 2. a) Búum til hægri-línulega (og þar með reglulega) mállýsingu fyrir stöðuvélina:

Dæmi 3. Sönnunin á setningu 3.4 í bók gerir ráð fyrir að vélin sem búin er til lýsing fyrir sé löggeng, en það er mjög auðvelt að slaka á þeirri kröfu. Í þessu dæmi þarf þess:

Snúum vélinni í dæmi 2 við, búum til hægri línulega lýsingu fyrir viðsnúnu vélina og þar með vinstri línulega lýsingu fyrir upphaflegu vélina.

5.4 Tímadæmi 4

Dæmi 3.4.1 og 3.3.2, nefnilega:

Page 9: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

6.1 Kafli 4. Eiginleikar reglulegra mála Í fjórða kafla kennslubókar er fjallað meira um regluleg mál. Skoðað er hvort aftur fáist reglulegt mál ef tekið er sammengi, sniðmengi eða samskeyting tveggja reglulegra mála. Fleiri möguleikar á að tengja saman regluleg mál eru skoðaðir, og m.a. eru kynntar til sögunnar tvær nýjar málaaðgerðir: sammótunarmál og kvótamál reglulegs máls. Í ljós kemur að allar þessar aðgerðir gefa aftur reglulegt mál. Svo er athugað hve auðvelt sé að ákvarða hvort reglulegt mál sé endanlegt, og ennfremur hvort tvö regluleg mál séu eins. Kaflinn endar svo með dælusetningu fyrir regluleg mál, en hún gefur aðferð til að sanna að tiltekið mál sé ekki reglulegt. Seinna í bókinni verða fleiri dælusetningar skoðaðar.

Kafli 4.1 Lokunareiginleikar reglulegra mála Ef aðgerð sem beitt er á stök í tilteknu mengi gefur alltaf nýtt stak í menginu þá er sagt að mengið sé lokað gagnvart aðgerðinni (the set is closed under the operation). Þannig er t.d. mengi heilla talna lokað gagnvart samlagningu og margföldun en ekki gagnvart deilingu.

Setning: Flokkur reglulegra mála er lokaður gagnvart sammengi, sniðmengi, sam-skeytingu, fyllimengi og stjörnulokun (þ.e. ef L1, L2 og L eru regluleg þá eru 1 2L LÈ ,

1 2L LÇ , L1L2, L og *L líka regluleg).

Þessi setning er sönnuð í bókinni, og sönnunin fyrir sammengi, samskeytinu og stjörnu-lokun er reyndar beint af augum með aðstoð reglulegra segða. Sönnunin fyrir fyllimengi fæst með því að skipta á lokastöðum og ekki-loka-stöðum, og fyrir sniðmengi fæst sönnun

6.2 með því að búa til nýja vél sem hefur stöðu fyrir sérhvert par af stöðum (p, q) þar sem p er staða í vél fyrir L1 og q er staða í vél fyrir L2. Bókin og KJ í fyrirlestri sanna líka eftirfarandi setningu.

Setning: Regluleg mál eru lokuð gagnvart viðsnúningi: LR er reglulegt ef L er það.

Hér koma svo skilgreiningar á sammótunarmáli og kvótamáli.

Sammótun: Látum h vera fall sem varpar táknum í strengi, h: S ® G* fyrir stafróf S og G. Svo er búin til sammótun (homomorphism) úr h með því að útvíkka það svo það varpi strengjum í strengi með því að skilgreina h(a1a2...an) = h(a1)h(a2)...h(an). Ef L er mál þá er sammótunarmál (homomorphic image) þess mengið:

h(L) = {h(w) | w Î L}.

Kvótamál: Lát L1 og L2 vera mál. Kvótamál þeirra fæst með því að byrja á að finna alla strengi í L1 sem enda á streng sem er í L2. Fyrripartur fundinna strengja lendir í kvótamálinu, 1 2L L . Ef t.d. L1 = {sápukúla, ljósapera, hitaveita} og L2= {kúla, pera} þá verður 1 2L L = {sápu, ljósa}.

Bókin sannar svo eftirfarandi (setningar 4.3 og 4.4):

Setning: Ef L, L1 og L2 eru regluleg þá eru h(L) og 1 2L L það líka.

6.3 Kafli 4.2 Þrjár setningar um regluleg mál

Í þessum kafla er safnað saman þremur setningum um regluleg mál, sem skilgreind hafa verið með endanlegri stöðuvél, reglulegri segð eða reglulegri mállýsingu. Í eftirfarandi setningum eru L, og L1 slík regluleg mál.

Setning: Ef w er strengur þá er til reiknirit til að kanna hvort w LÎ .

Setning: Til er reiknirit til að athuga hvort L sé tómt, endanlegt eða óendanlegt.

Setning: Til er reiknirit til að athuga hvort L = L1.

6.4 Kafli 4.3 Dælusetning fyrir regluleg mál. Kaflinn byrjar á að tala um skúffuregluna, sem nefnist pigeon hole principle á ensku og notar hana til að sanna að málið L = {a

nb

n | n ³ 0} sé ekki reglulegt. Þessi sönnun er reyndar einfaldlega aðlögun á sönnun á dælusetningunni (sem kemur næst í kaflanum) að þessu sértilviki.

Setning (dælusetning fyrir regluleg mál): Lát L vera óendanlegt reglulegt mál. Þá er til tala m sem er þannig að sérhvern streng w í málinu með lengd ³ m má rita:

w = xyz

þar sem lengd xy er £ m, lengd y ³ 1 og wi = xyiz er líka í L fyrir i = 0, 2, 3, 4...

Stundum er notað orðalagið „að dæla sig út úr málinu“, því það sem gert er er að reyna að finna i þannig að wi Ï L í mótsögn við lokafullyrðingu setningarinnar. Ef það tekst hlýtur forsendan, að L sé reglulegt mál, að vera röng. Dælusetningin gefur sem sé aðferð til að sanna að tiltekið mál sé ekki reglulegt.

Sönnunin á dælusetningunni byggir á því að láta M vera dfa-stöðuvél fyrir L með stöðum q0, q1,...,qn og velja svo m = n + 1. Þegar vélin les streng w sem hefur lengd a.m.k. m byrjar hún í upphafsstöðu q0 og þræðir sig svo í gegn um a.m.k. m aðrar stöður. Skv. skúffureglunni hlýtur hún að lenda a.m.k. tvisvar í einhverri stöðu, og það gerist eftir mest n færslur. Þetta má rita q0 ® ... ® qr ® ... ® qr ® ... qf. Nú verður x það sem vélin les áður en hún lendir í qr í fyrra sinn, y verður það sem hún les til að komast aftur í qr og z það sem hún les frá seinna qr og að qf.

Page 10: Kafli 1.1 Kafli 1 · Ef MN er brigðgenga vél með stöðumengi Q býr reikniritið til löggenga vél MD með stöðum sem eru merktar með hlutmengjum í Q. Fyrst er búin til

6.5

6.6 Í tíma verður litið á ýmis dæmi um notkun þessarar setningar. Með henni má t.d. sanna að eftirfarandi mál séu ekki regluleg (öll þessi dæmi eru úr bókinni, nánar tiltekið eru þau „examples“ 4.7–4.13):

1. {anb

n | n ³ 0} = {l, ab, aabb, aaabbb, aaaabbbb,...}

2. {wwR | w Î S*}

3. {w | na(w) < nb(w)}

4. {(ab)na

k | n > k, k ³ 0}

5. {an! | n ³ 0}

6. {anb

kc

n

+

k | n ³ 0, k ³ 0}

7. {anb

l | n ¹ l}

Á næstu glæru er sýnilausn fyrir þriðja málið að ofan. Í sumum tilvikum er þægilegra að nota lokunarsetningarnar af skyggnum 6.1 og 6.2 heldur en dælusetningu. Sjöunda málið er t.d. fyllimál fyrsta málsins.

6.7 Sýnidæmi (dæmi 3 á skyggnu 6.4): Málið L = {w | na(w) < nb(w)} er ekki reglulegt.

Sönnun: Gerum ráð fyrir að málið sé reglulegt og látum m vera gefið með dælusetningu. Veljum svo w = am

bm

+

1. w er í L því það hefur færri a en b. Skv. setningunni má rita w = xyz þar sem | xy | £ m og y er ekki tómi strengurinn. Þar sem w byrjar á m a-táknum hlýtur y að innihalda eintóm a. Strengurinn xy

2z hefur því jafnmörg eða fleiri a en b. Hann er

þessvegna ekki í málinu þótt setningin segi að hann sé þar svo forsendan, að L sé reglulegt, getur ekki staðist.

Ath.: Eftirfarandi mynd, fyrir tilvikið | y | = 2, útskýrir þessa sönnun e.t.v. betur:

Það má segja að þegar við búum til xy2z þá höfum við fjölgað a-unum í strengnum og þar

með dælt okkur út úr málinu.

7.1 Tímadæmi 5. 3.2.4d

3.2.10ab

3.3.4 Búið til hægri- og vinstrilínulegar mállýsingar fyrir málið L = {a

nb

m | n ³ 2, m ³ 3} 4.1.10

4.3.10a