Kapitoly z informatiky 2 - statpedu.sk · aj v aplikovanej informatike, a tieº preto, ºe...

41

Transcript of Kapitoly z informatiky 2 - statpedu.sk · aj v aplikovanej informatike, a tieº preto, ºe...

Kapitoly z informatiky 2Garant predmetu:

Doc. RNDr. GabrielaAndrejková, CSc.,ÚI PF UPJ�, Ko²[email protected]

Autori textu:

Doc. RNDr. GabrielaAndrejková, CSc.,UPJ� Ko²[email protected]

Doc. RNDr. Stanislav Kraj£i,PhD., UPJ� Ko²[email protected]

Identi�kácia modulu

Aktivita 1.2 Vzdelávanie nekvali�kovaných u£ite©ovprojektu: informatiky na 2. stupni Z� a na S�

Línia aktivity: Vlastný odborový kontext informatiky a informatickejvýchovy

Predmet: Kapitoly z informatiky

Zaradenie modulu

Modul Kapitoly z informatiky 2 je zo série troch modulov Kapitoly z informatiky, ktorémajú za úlohu prinies´ frekventantom základy informatiky ako vedy. Modul predpo-kladá absolvovanie v²etkých programátorských modulov Programovanie 1�9 a tieºmodulov Matematika pre u£ite©ov informatiky 1�3, Algoritmy a údajové ²truktúry1, 2 a Po£íta£ové systémy 1�5.

Abstrakt modulu

Predmet Kapitoly z informatiky má za úlohu frekventantom predstavi´ rôzne oblastiinformatiky ako vedy. Do tohto modulu sme zaradili témy o dvoch základných výpo£-tových modeloch � kone£ných automatoch a Turingových strojoch, a to preto, ºe súto jednak oblasti, ktoré pomáhajú pochopi´ ve©a rôznych problémov v teoretickej, aleaj v aplikovanej informatike, a tieº preto, ºe u£itelia potrebujú ma´ isté kompetenciev teoretických výpo£tových modeloch, aby mohli správne nasmerova´ talentovaných²tudentov a rozumie´, £omu sa ²tudenti v informatike venujú v rámci mimo²kolskéhovzdelávania.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 1

Cie© modulu

Cie©om modulu je uvies´ u£ite©ov do problematiky teoretických výpo£tových modelov� kone£ných automatov a Turingových strojov. Po absolvovaní modulu by mali by´schopní vytvori´ kone£ný automat a odhadnú´, £i pre poºadovaný formálny jazyk exis-tuje kone£ný automat, resp. vysvetli´, pre£o neexistuje. Tieº by mali by´ schopnískon²truova´ Turingove stroje na rie²enie niektorých typov problémov a pochopi´ pro-blém zastavenia Turingovho stroja.

Úvod

Výpo£tový model � kone£ný automat � je ve©mi jednoduché zariadenie, charakterizo-vané nasledujúcimi vlastnos´ami:

1. má kone£ný po£et stavov,

2. má kone£nú pásku, na ktorej je umiestnený vstup, a hlava £íta slovo z©ava do-prava (1-krát),

3. jeho in²trukcie pracujú na základe aktuálneho stavu a pre£ítaného symboluz pásky, a to bu¤ deterministicky � má jednozna£ne ur£ený jediný nasledu-júci stav automatu, alebo nedeterministicky � má ur£enú mnoºinu nasledujúcichstavov automatu (má viac moºností).

Pri prechode od deterministických k nedeterministickým automatom urobíme zmenuv in²trukciách, povolíme prechod z aktuálneho stavu pre£ítaním jedného symbolu doviacerých stavov. Tým sa zjednodu²í kon²trukcia kone£ných automatov. Oba typy au-tomatov akceptujú rovnakú triedu jazykov � triedu regulárnych jazykov.

Na základe uvedeného sa nám bude zda´ prirodzené uvaºova´ o iných modi�káciáchtýchto zariadení. Vedci pracujúci v tejto oblasti skúmajú rôzne modi�kácie kone£nýchautomatov [7]. Existuje mnoho vedeckých výsledkov charakterizujúcich výpo£tovéschopnosti modi�kovaných modelov. Tomu, kto by sa chcel viac zaobera´ touto pro-blematikou, odporú£ame za£a´ ²tudijnou literatúrou uvedenou v závere tohto modulu.

Jedna z modi�kácií je v²ak ve©mi dôleºitá, preto sa jej chceme venova´ aj v rámci toh-to modulu. Tento nový modi�kovaný model povo©uje viac moºností pri práci s páskou,a to hlavica sa môºe pohybova´ oboma smermi a nebude len £ítacou, ale aj zapiso-vacou. Okrem toho na páske bude vºdy to©ko miesta, ko©ko treba (teda páska nie jevopred ohrani£ená).

Ak povolíme zapisovanie na pásku, tak je moºné na páske zaznamena´ aj nejakévýsledky, Hlava sa vie k nim dosta´ a pouºi´ ich v ¤al²ích in²trukciách. Teda intuitívneby sme mohli uvaºova´ o tom, ºe nový výpo£tový model bude schopný rie²i´ ´aº²ieúlohy. Tento výpo£tový model � Turingov stroj � je predmetom ²túdia nasledujúcejkapitoly v tomto module. Je to silnej²í model, v ktorom je moºné naprogramova´kaºdý algoritmus, a navy²e je moºné presne vypo£íta´, ko©ko in²trukcií a miest napáske bolo spotrebovaných. Teda £asová a pamä´ová zloºitos´ je dobre merate©ná.Zárove¬ je moºné rôzne programy z týchto h©adísk porovnáva´.

Pre oba výpo£tové modely uvedieme ich základné vlastnosti a sústredíme sa na pro-blémy, ktorých rie²enie je významne spojené práve s týmito modelmi.

2 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Obsah

Identi�kácia modulu ............................................................... 1Zaradenie modulu .................................................................. 1Abstrakt modulu ................................................................... 1Cie© modulu ........................................................................ 2Úvod ............................................................................... 2Obsah .............................................................................. 3

1. Kone£né automaty (G. Andrejková) ............................................. 41.1. Reprezentácie kone£ných automatov .......................................... 51.1.1. In²trukcie automatu ................................................................... 51.1.2. Reprezentácia automatu pomocou grafov ............................................. 71.1.3. Reprezentácia automatu pomocou prechodovej tabu©ky ............................... 71.2. Formálny zápis automatu ...................................................... 91.3. Cvi£enie ...................................................................... 111.4. �o vedia automaty kontrolova´ ............................................... 111.5. Pre niektoré jazyky kone£né automaty neexistujú ............................ 131.6. Neformálny poh©ad na nedeterminizmus kone£ných automatov ............... 151.7. Praktické vyuºitie automatov ................................................. 181.8. Cvi£enia ...................................................................... 19

2. Turingove stroje (S. Kraj£i)..................................................... 222.1. Na£o Turingove stroje? ....................................................... 222.2. Výpo£ty na Turingových strojoch .............................................. 222.3. Turingovsky vypo£ítate©né funkcie ............................................ 252.4. Rekurzívne funkcie ........................................................... 312.5. Vz´ah rekurzívnych a turingovsky vypo£ítate©ných funkcií .................... 362.6. Problém zastavenia Turingovho stroja ........................................ 38

�o sme sa nau£ili v tomto module ................................................. 39Literatúra a pouºité zdroje ....................................................... 39

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 3

1. Kone£né automaty

Predmetom záujmu teóriekone£ných automatov [4] je kaºdýsystém, pre ktorý vieme ur£i´kone£ný po£et jeho stavov, doktorých sa môºe dosta´, a tieºkone£ný po£et vonkaj²ích podnetovspôsobujúcich zmeny stavov. Pritomje podstatné, aby stav systémua vonkaj²í podnet spolu ur£ovalinasledujúci stav.

V beºnom slova zmysle pod slovom automat rozumieme samo£inný stroj, ktorý po vho-dení mincí/vloºení pe¬azí/karty vydá tovar alebo vykoná jednoduché sluºby (napríkladpredajný automat, hrací automat, fotogra�cký automat, bankomat) [7].

Zaoberajme sa trochu mincovým automatom. Mohli by sme poveda´, ºe automatreaguje na vstup, ktorý je predstavovaný mincami. Ak dostane prijate©nú postupnos´mincí � prijate©ný vstup, tak vydá tovar � výsledok alebo oznámi, ºe skon£il. Akdostane nevhodnú postupnos´ mincí, tovar nevydá (túto situáciu je potrebné vhodnerie²i´). Pritom automat musí postupnos´ mincí analyzova´ pomocou svojich vnútornýchstavov. Zaujímajú nás predov²etkým automaty, ktoré majú kone£ný po£et týchto stavov.Vieme si predstavi´, ºe vstupom budú nejaké symbolické ºetóny. Kon²trukcia takéhoautomatu si vyºaduje prípravu presných £iasto£ných aktivít (krokov), ktoré pri správnejpostupnosti mincí povedú k výdaju tovaru � k výsledku.

Od takýchto modelov automatov je moºné prejs´ k abstraktnej²ím modelom automa-tov, ktoré budú opísané formálnej²ie tak, aby sa v nich dali presne sledova´ kroky,ktoré vykonajú.

Kone£né automaty sú ve©mivhodným modelom pre modelovaniedôleºitých typov softvérua hardvéru, medzi ktoré patrí [2]:

1. Softvér na návrh a riadeniefunkcií digitálnych obvodov.

2. �Lexikálny analyzátor�,ktorý je sú£as´oukompilátorov.

3. Softvér na vyh©adávanieslov, fráz a iných vzorovv rozsiahlych textovýchdokumentoch.

4. Softvér na veri�káciusystémov v²etkých typovs kone£ným po£tom stavov,napríklad komunika£néprotokoly.

Automat v na²om chápaní je teda ve©mi jednoduchý výpo£tový model, ktorý je v䣲i-nou spájaný so spracovaním postupností symbolov na vstupe, ktoré budeme nazýva´slovami, a teda môºe by´ pouºitý na rozpoznávanie slov, pri ktorých vydá výsledok(pripraví sa na jeho vydanie) a pri ktorých nie. Okrem toho automaty poskytujú ve©mijednoduchý spôsob na vysvetlenie toho, ako sa modelujú výpo£ty [3]. Z didaktickéhoh©adiska sú modelom, pre ktorý vieme jednoducho a presne de�nova´ základné pojmy,medzi ktoré patria kon�gurácia, krok výpo£tu, výpo£et, simulácia, determinizmusa nedeterminizmus, pomocou ktorých je moºné charakterizova´ niektoré podtriedy al-goritmov a dozvedie´ sa nie£o dôleºité o ich vlastnostiach. Dôleºité je tieº pochopi´,ºe existujú úlohy, ktoré nie je moºné pomocou automatov rie²i´.

Kone£ný automat je výpo£tový model, preto nás zaujíma, akým spôsobom realizujevýpo£et, aké in²trukcie vie spracova´, akú má pamä´, aký je prístup do pamäti,ako spracováva vstupy a ako vydá (vyjadrí) výstup.

Vstupom automatu bude postupnos´ prvkov nejakej abecedy, preto de�nujme for-

Problematika automatova formálnych jazykov, o ktorýchpojednáva kniha [4], patrí medzinajdlh²ie ²tudovanéa najpodrobnej²ie spracovanédisciplíny tvoriace odbormatematická informatika.

málne prvky, ktoré sa týkajú vstupu.

De�nícia 1.1 K základným pojmom patria:

� Abeceda je ©ubovo©ná neprázdna kone£ná mnoºina, ktorej prvky budeme nazý-va´ písmená.

� Kone£né postupnosti písmen budeme nazýva´ slová.

� Prázdnu postupnos´ písmen budeme nazýva´ prázdne slovo a ozna£ova´ ε.

� Ak a1,. . . , an sú písmená, potom d¨ºkou slova w = a1 . . . an rozumieme £íslo|w| = n. D¨ºka prázdneho slova je nula.

� Po£et písmen a v slove w budeme ozna£ova´ |w|a.

� Ak u = a1 . . . an a v = b1 . . . bm sú slová, potom zre´azením slov u, v rozumiemeslovo u · v = a1 . . . anb1 . . . bm. Oby£ajne budeme písa´ uv namiesto u · v.

� Jazykom v abecede Σ rozumieme ©ubovo©nú mnoºinu slov v abecede Σ (t. j.©ubovo©nú podmnoºinu mnoºiny Σ∗ s kone£ným alebo nekone£ným po£tom prvkov).

Ozna£enie. Mnoºinu v²etkých slov v abecede Σ ozna£ujeme Σ∗, mnoºinu v²etkýchneprázdnych slov v abecede Σ ozna£ujeme Σ+.

4 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Príklad 1.1Abecedy: Σ1 = {0, 1},Σ2 = {a, b, c, d},Σ3 = {0, 1, 2, 3, 4, 5, 6, 7,8, 9}.

Slová: 000111, 0101 v abcede Σ1, aaabbbcd, abcd v abecede Σ2, 926v abecede Σ3.

D¨ºka slova 000111 je 6, d¨ºka aaabbbcd je 8, at¤.

Po£et písmen b v slove aaabbbcd je 3, teda |aaabbbcd|b = 3.

Slovo aaabbbcdabcd je zre´azením slov aaabbbcd, abcd.

Nech Σ = {a, b, c}. Potom Σ∗ = {ε, a, b, c, aa, ab, ac, ba, bb, bc, ca,cb, cc, . . . }. Jazykmi sú napríklad nasledujúce mnoºiny∅, {ε}, {a}, {abaa, ab, bbab}, mnoºina v²etkých slov v Σ∗ s párnympo£tom výskytov písmena c, {wcw|w ∈ {a, b}∗}, at¤.

Jazykom v abecede Σ1 je napríklad mnoºina v²etkých slov s rov-nakým po£tom núl a jedni£iek.

Teória kone£ných automatov vzi²la[9] z práce W. S. McCullochaa V. Pittsa A logical calculus of theideas immanent in nervous activityz r. 1943 o vz´ahu algebrya neurónových sietí. Je zaujímavé,ºe von Neumann hodnotil ichvýsledky ako �probably the mostsigni�cant result obtained withaxiomatic method up to now�,ktorý ukazuje, ºe �any functioningwhich can be de�ned at alllogically, strictly and unambiguouslyin a �nite number of words can alsobe realised by such a formal neuralnetwork�. Týmito slovami dnesobvykle charakterizujeme Turingovvýsledok, ktorý von Neumannpoznal. Znamená to, ºe ani takémugéniovi, akým bol von Neumann,nebol vtedy dostato£ne jasnýrozdiel medzi tým, £o dnesnazývame kone£ným a nekone£nýmautomatom.

1.1. Reprezentácie kone£ných automatov

Kone£ný automat môºe prepína´ medzi svojimi stavmi (na základe vstupu), ktorýchmá kone£ný po£et (aktuálny stav je pamätaný). Kone£ný automat si teda môºemepredstavi´ ako zariadenie s kone£nostavovou riadiacou jednotkou a vstupnou páskou(je tu umiestnený vstup), ako je to znázornené na obrázku 1.

vstupná páska6

£ítacia hlava

program so stavmi

V programe sú uvedené in²trukcie prechodov

automatu zo stavov do iných stavov.

Obr. 1: �truktúra automatu.

Zariadenie má jednu £ítaciu hlavu, ktorá sa môºe posúva´ po vstupnej páske lenz©ava doprava. Toto zariadenie pracuje v taktoch, pri£om v kaºdom takte (kroku),na základe stavu riadiacej jednotky a £ítaného písmena zo vstupnej pásky, zmenístav riadiacej jednotky a pohne £ítacou hlavou doprava na ¤al²ie písmenko vstupnéhoslova.

1.1.1. In²trukcie automatu

Akým spôsobom by sme mohli vyjadri´ in²trukcie (príkazy) automatu? Sú to vlastne in-²trukcie výberu vykonané na základe pre£ítaného písmena zo vstupu a stavu, v ktoromsa automat práve nachádza, pri£om sa výber vykonáva v䣲inou z viacerých moºnos-tí. Pripomenieme si programovací jazyk Pascal, ktorý pre výber z viacerých moºnostíponúka príkaz case. Budeme tieº pouºíva´ príkaz skoku, ktorý v jazyku Pascal tieºexistuje, ale jeho pouºívanie vo v²eobecnosti sa neodporú£a, pretoºe znepreh©adníprogram.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 5

Príkaz skoku

goto návestie

vykoná v programe skok na riadok s ozna£ením návestie.

Príkaz výberu case má tvar

návestie: case vstup of

{a1 : príkaz skoku 1

. . .an : príkaz skoku n

}

Ke¤ºe program obsahuje len príkazy výberu a skoku, je nutné ozna£i´ návestím kaºdýriadok, na ktorý sa skok vykoná. Kvôli jednoduchosti pouºijeme postupne návestia q0,q1, . . . , qn. Návestím q0 ozna£íme prvý, t. j. ²tartovací príkaz. V zápise programu ²tar-tovací príkaz ozna£íme ²ípkou doprava. E²te potrebujeme vyjadri´, kedy sa programskon£í. Návestia príkazov ukon£enia ozna£íme ²ípkou do©ava. Ak po pre£ítaní vstupusa automat dostane na príkaz ukon£enia, znamená to, ºe daný vstup automat akcep-toval (rozpoznal), inak ho neakceptoval (dostal postupnos´, ktorá nevedie do príkazovukon£enia).

Príklad 1.2Automat pracuje v abecede {a, b}, má program uvedený v tabu©-ke 1. Za£ne prvým príkazom, a ak má na vstupe prvé písmeno a,prejde na ¤al²ie písmeno na vstupe a na príkaz s návestím q1. Akmá na vstupe prvé písmeno b, tak prejde na príkaz s návestím q4

at¤. Na návestí q5 je prázdny príkaz a program sa tu skon£í.

→ q0 : case vstup of { a : goto q1

b: goto q4 }q1 : case vstup of { a : goto q2

b: goto q4 }q2 : case vstup of { a : goto q3

b : goto q4 }q3 : case vstup of { a : goto q1

b : goto q4 }q4 : case vstup of { a : goto q5

b : goto q4 }← q5 :

Tab. 1: Program pre automat v príklade 1.2.

Sledujme postup programu cez návestia pre dva rôzne vstupy:

� Pre vstup abba dostávame postupnos´ prechodov cez návestia q0, q1, q4, q4, q5,program sa skon£il v koncovom stave q5; priebeh výpo£tu v prvých troch krokochje zaznamenaný na obrázku 2.

� Pre vstup aaaa dostávame postupnos´ prejdených návestí q0, q1, q2, q3, q1, vstupje pre£ítaný a program sa neskon£il v koncovom stave.

Pre niektoré slová na vstupe sa automat dostane do koncového stavu, pre niektorénie, tieº niektoré vstupné slová na páske nedo£íta do konca. Zaujímavé sú pre nás

6 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

tie slová, ktoré sú pre£ítané celé a pri ktorých automat skon£il v koncovom stave.Môºeme vtedy poveda´, ºe automat ur£uje mnoºinu akceptovaných (rozpoznaných)slov � jazyk. Jazyk, chápaný v beºnom zmysle slova má tri aspekty � syntaktický,sémantický a pragmatický. Predmetom ná²ho záujmu je syntaktický aspekt � slovánás zaujímajú ako postupnosti písmen.

a b b a6

program

q0

a b b a6

program

q1

a b b a6

program

Aktuálny stav: q4

Obr. 2: Sledovanie výpo£tu pre slovo abba v prvých troch krokoch.

1.1.2. Reprezentácia automatu pomocou grafov

Tvorba takýchto programov nie je ´aºká, av²ak my poznáme názornej²ie vyjadrenieautomatu, a to pomocou grafov. Graf nám umoº¬uje názorne sledova´ postup výpo£tupre dané vstupné slovo. Za£neme nasledujúcou úlohou:

Úloha 1.1

Vytvorte program, ktorý bude pouºíva´ príkazy case vo vy²²ie uve-denom tvare, a bude rozpoznáva´ jazyk L v abecede Σ = {a, b},ktorý obsahuje v²etky slová s nepárnym po£tom písmen b.

Rie²enie: Idea: Je nutné po£íta´ po£et pre£ítaných písmen b. V prípade ich nepárnehopo£tu slovo môºe by´ rozpoznané.

Program:

→ q0 : case vstup of { a : goto q1

b : goto q0 }← q1 : case vstup of { a : goto q0

b : goto q1 }

Tento program je moºné previes´ na graf uvedený na obrázku 3. Návestia (stavy au-tomatu) zakreslíme ako vrcholy grafu, ich názvy zapí²eme do vnútra. Prípady príkazucase zakreslíme pomocou ²ípok. Po£iato£né a koncové návestie ozna£íme ²ípkou, resp.dvojitým krúºkom. Výpo£et v automate je moºné sledova´ prechodom cez graf v smere²ípok. Ak by sme chceli sledova´, ako sa bude automat správa´ na slove bbaaab, takza£neme vo vrchole s po£iato£ným návestím cez písmeno b prejdeme do vrcholu sostavom q0 cez ¤al²ie b znovu do vrcholu so stavom q0, cez písmeno a do vrcholu sostavom q1 at¤.

Kvôli zjednodu²eniu vyjadrovaniavrchol so stavom qi budemenazýva´ stav qi.

1.1.3. Reprezentácia automatu pomocou prechodovej tabu©ky

Skrátene by sme mohli celý program z príkladu 1.2 zapísa´ aj pomocou nasledujúcejúspornej prechodovej tabu©ky 2, v ktorej je uvedený celý príkaz case v jednom riadku.Pod písmenom abecedy je uvedené návestie skoku.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 7

���� ����m-�

a

a

bb

q0 q1-

�� ��? ?

Obr. 3: Automat z úlohy 1.1 vyjadrený pomocou grafu.

Návestie a b→ q0 : q1 q4

q1 : q2 q4

q2 : q3 q4

q3 : q1 q4

q4 : q5 q4

← q5 :

Tab. 2: Prechodová tabu©ka.

Máme uº vyrie²enú otázku vstupu, pamäte, in²trukcií, zostáva nám dorie²i´ ukon-£enie programu. Ukon£enie programu je stanovené vykonaním skoku na vopred ur£enénávestie. V predchádzajúcom príklade to je q5. Ak automat skon£í v takto ozna£enomstave, je to v poriadku. Ak nie, je chyba bu¤ v programe alebo na vstupe.

Dôleºitým pozorovaním je tu to, ºe automat bude spracováva´ slová v nejakej abecedea vie da´ odpove¤ pomocou koncového návestia, £i slovo rozpoznal.

Úloha 1.2Vytvorte program, ktorý bude pouºíva´ príkazy case vo vy²²ie uve-denom tvare a bude rozpoznáva´ jazyk L = {01i0; i > 0}.

Rie²enie: Zrejme abeceda je Σ = {0, 1}. Slová patriace do jazyka majú taký tvar, ºesa za£ínajú a kon£ia jedným písmenom 0 a medzi nimi je ©ubovo©ný po£et písmen 1,ale aspo¬ jedno.

Idea rie²enia je nasledujúca: Ak je vo vstupnom slove na za£iatku písmeno 0, takje to dobre a program pokra£uje na návestí q1. Ak nasleduje 1, znovu je to dobrea program pokra£uje na návestí q2. Ak ¤alej nasleduje nieko©ko ¤al²ích 1, znovu jeto dobre a program pokra£uje na q2. Ak potom nasleduje 0, je to dobre a programprejde na návestie q3. Ostatné prípady sú zlé a program sa kon£í v stave q4, ktorý nieje koncový. Koncovým návestím je q3. Ak sa program dostane na príkaz s návestím q4

slovo nerozpozná.

Program:

→ q0 : case vstup of { 0 : goto q1

1 : goto q4 }q1 : case vstup of { 0 : goto q4

1 : goto q2 }q2 : case vstup of { 0 : goto q3

1 : goto q2 }← q3 :

q4 :

Rie²enie pomocou prechodovej tabu©ky:

8 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Návestie 0 1→ q0 : q1 q4

q1 : q4 q2

q2 : q3 q2

← q3 :q4 :

Po vytvorení tohoto rie²enia si kladieme otázku o jeho správnosti. Kedy by sme mohlipovaºova´ vytvorené rie²enie za správne? Odpove¤ znie:

Program je správny, ak rozpozná v²etky slová poºadovaného tvaru a ºiadne iné.

Ukáza´ tieto dve poºadované vlastnosti programu je niekedy celkom jednoduché,inokedy je potrebné pouºi´ princíp matematickej indukcie alebo iné matematicképrostriedky. My sa budeme snaºi´ uvies´ rozumné, pochopite©né zdôvodnenia a ne-budeme robi´ celkom formálne dôkazy.

Existuje viacero programov navizualizáciu automatov. Jedenz nich nájdete na stránke:http://www.cs.usfca.edu/�jbovet/vas.html.1.2. Formálny zápis automatu

Aby sme sa mohli zaobera´ presnými výpo£tami na automatoch detailnej²ie, zavediemeformálnu de�níciu kone£ného automatu.

De�nícia 1.2 Deterministický kone£ný automat (KA) nazývame päticu A = (K, Σ,δ, q0, F ), kde

� K je kone£ná mnoºina stavov (v programe sú to návestia príkazov),

� Σ je vstupná abeceda,

� q0 ∈ K je po£iato£ný stav,

� F ⊆ K je mnoºina koncových stavov,

� δ : K × Σ→ K je prechodová funkcia.

δ(q, a) = p ur£uje, ºe automat A prejde zo stavu q do stavu p, ak £ítacia hlava pre£í-tala písmeno a.

Kon�guráciou kone£ného automatu A nazývame dvojicu (q, w), kde q ∈ K a w ∈ Σ∗.

Vyjadrenie, ºe automat je v kon�gurácii (q, w), znamená, ºe automat je v stave qa nepre£ítaná £as´ vstupu je w, pri£om £ítacia hlava je na prvom symbole slova w.

Kon�gurácia (q0, w) sa nazýva po£iato£ná kon�gurácia automatu A na w.

Kon�gurácia (q, ε) sa nazýva koncová kon�gurácia, ak q ∈ F .

De�nícia 1.3 Krok kone£ného automatu A je ur£ený prechodovou funkciou δ a vy-jadruje prechod z nejakého stavu q do nejakého stavu p na základe vstupného znakua. Budeme to zapisova´

(q, aw) `A (p, w),

ak δ(q, a) = p, kde a ∈ Σ, w ∈ Σ∗.

Ak je zrejme o aký automat ide,budeme písa´ ` namiesto `A.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 9

Príklad 1.3

Automat na obrázku Obr. 3 má formálne vyjadrenie

A = ({q0, q1}, {a, b}, δ, q0, {q1}),

pri£om prechodová funkcia δ je ur£ená daným grafom.

Pre slovo bab je kon�gurácia (q0, bab) je po£iato£ná kon�gurácia.

Krok tohto automatu z po£iato£nej kon�gurácie (q0, bab) je(q0, bab) ` (q0, ab). �al²í krok je (q0, ab) ` (q1, b) a ¤al²í (q1, b) `(q1, ε).

Koncová kon�gurácia je (q1, ε).

De�nícia 1.4 Výpo£tom C automatu A nazývame postupnos´ C = C1C2 . . . Ck kon�-gurácií takú, ºe susedné £leny postupnosti sú kroky, t. j. Ci−1 `A Ci pre 0 < i ≤ k.

C nazývame výpo£et automatu A na slove w, ak platí C0 = (q0, w) a Ck ∈ Q× {ε}),teda celé vstupné slovo je pre£ítané.

C je akceptujúci výpo£et, ak to je výpo£et, a teda automat pre£ítal celé slovoa skon£il v koncovom stave, t. j. Ck ∈ F × {ε}.

C je odmietajúci výpo£et, ak to je výpo£et, a teda automat pre£ítal celé slovoa neskon£il v koncovom stave, t. j. Ck ∈ (Q− F )× {ε}.

Poznámka: Automat má pre kaºdé slovo len akceptujúci, alebo len odmietajúci výpo£et.

De�nícia 1.5 Jazyk akceptovaný kone£ným automatom A je mnoºina slov, ktoréautomat pre£íta celé a skon£í v koncovom stave.

Príklad 1.4

Slovo aababb patrí do L(A) de�novaného automatom v úlohe 2,lebo existuje akceptujúci výpo£et:(q0, aababb) `A (q1, ababb) `A (q0, babb) `A (q0, abb) `A (q1, bb) `A

(q1, b) `A (q1, ε).Slovo bbabb nepatrí do L(A) de�novaného automatom v úlohe 1.1,lebo neexistuje akceptujúci výpo£et. Uvedený výpo£et je odmieta-júci:(q0, bbabb) `A (q0, babb) `A (q0, abb) `A (q1, bb) `A (q0, b) `A (q0, ε).

De�nícia 1.6 Trieda regulárnych jazykov je trieda v²etkých jazykov, ktoré sú akcep-tované kone£nými automatmi. Formálne to vieme vyjadri´

LRE = {L(A);A je kone£ný automat}.

�ubovo©ný jazyk z LRE je regulárny.

�o sme sa nau£ili:

1. Vyjadri´ zariadenie - kone£ný automat, ktorý má kone£ný po£et stavova kone£ný vstup viacerými zápismi, zaviedli sme jeho formálnu de�níciu a po-jmy charakterizujúce výpo£et na ¬om.

2. Sledova´ výpo£et automatu a ur£i´, ktoré slová akceptuje a ktoré nie.

3. De�nova´ jazyk akceptovaný kone£ným automatom.

10 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

1.3. Cvi£enie

C. 1.1

Navrhnite kone£ný automat pre kaºdý z nasledujúcich regulárnychjazykov:

(a) {w ∈ {0, 1, 2}∗|w = 002122x, x ∈ {0, 1, 2}∗},

(b) {w ∈ {a, b, c}∗|w = xabcabc, x ∈ {a, b, c}∗},

(c) {w ∈ {a, b, c}∗|w = xaabby, x, y ∈ {a, b, c}∗},

(d) {abbxbbby|x, y ∈ {a, b}∗},

(e) {w ∈ {a, b}∗|w = abbz pre z ∈ {a, b}∗ ∧ w = ubbbv pre u, v ∈{a, b}∗},

(f) {w ∈ {a, b}∗| |w|a = 2 ∧ |w|b ≡ 1 (mod 3)}.

Posta£uje uvies´ grafovú reprezentáciu týchto automatov.

1.4. �o vedia automaty kontrolova´

Pretoºe výpo£ty automatu krok po kroku predstavujú dlhé a málo preh©adné postup-nosti, zavedieme ich zjednodu²ený zápis, ktorý vznikne zdruºením po sebe idúcichkrokov do jedného kroku. Budeme to zapisova´ `k

A, kde k vyjadruje po£et krokov,ktoré tu zdruºujeme. `∗A budeme pouºíva´ na vyjadrenie existujúceho výpo£tu, aknevieme po£et krokov. Analogicky, δ̂(q, w) = p bude vyjadrova´, ºe automat je v stavep po pre£ítaní jedného alebo viac symbolov. δ̂ sa nazýva roz²írená prechodová funkcia.

Toto nám umoº¬uje inak vyjadri´ jazyk akceptovaný kone£ným automatom, a to

L(A) = {w ∈ Σ∗|(q0, w) `∗A (p, ε), p ∈ F}.

Príklad 1.5

Uvaºujme kone£nostavový automat vyjadrený v grafovom tvare naobrázku 4. Automat pracuje s abecedou Σ = {0, 1}. �tartovacímaj koncovým stavom je stav q0. Aké slová bude tento automatakceptova´? Budeme sa snaºi´ ur£i´ jazyk akceptovaný týmto au-tomatom.

� ��

� ��� �� � �������* HHH

HHHj��

����

����HHH

HHY

HHHHHj

����

���q0

q1

q2

q3

6

HHHHHY

�����*

1

1 0

0

1

1

0

0

Obr. 4: Kone£nostavový automat pracujúci v abecede {0, 1}.

Kaºdá cesta zo ²tartovacieho stavu do ²tartovacieho stavu má párny po£et hrán.

Sledujme výpo£et na slove 010111

(q0, 010111) `A (q3, 10111) `A (q2, 0111) `A (q1, 111) `A (q0, 11) `A (q1, 1)

`A (q0, ε)

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 11

alebo(q0, 010111) `∗A (q0, ε)

Teda skúmané slovo patrí do jazyka rozpoznávaného týmto automatom. V²imnime si,ºe pri výpo£te sme prechádzali stavom q0, a teda aj slovo 0101 by bolo akceptované.�al²ím pozorovaním by sme pri²li na to, ºe akceptovaným jazykom je jazyk tvorenýv²etkými slovami, ktoré obsahujú párny po£et 0 a párny po£et 1. Ozna£me tento jazykL, teda

L = {w ∈ {0, 1}∗| |w|0 ≡ 0 (mod 2) ∧ |w|1 ≡ 0 (mod 2)} (1)

Ozna£meT [q0] = {w ∈ {0, 1}∗|δ̂(q0, w) = (q0, ε)}

jazyk akceptovaný týmto automatom ([q0] vyjadruje koncový stav automatu)

Chceli by sme dokáza´, ºe platíL = T [q0], (2)

t. j. L je jazyk akceptovaný automatom na obrázku 4. Toto je v²ak potrebné doloºi´formálnej²ím dôkazom.

Najprv urobíme nasledujúce úvahy:

�o sa stane, ak zmeníme výstupný stav? Ak by výstupným stavom bol stav q1, dostaliby sme iný jazyk. Ozna£me

T [q1] = {w ∈ {0, 1}∗|δ̂(q0, w) = (q1, ε)} (3)

Úplne analogicky by sme mohli de�nova´ T [q2] a T [q3]:

T [q2] = {w ∈ {0, 1}∗|δ̂(q0, w) = (q2, ε)} (4)

T [q3] = {w ∈ {0, 1}∗|δ̂(q0, w) = (q3, ε)} (5)

Dostali sme po dvojiciach navzájom disjunktné mnoºiny jazykov, ktorých zjednotenímje mnoºina Σ∗ = {0, 1}∗. Mnoºiny T [q0], T [q1], T [q2], T [q3] tvoria rozklad mnoºiny{0, 1}∗ na |Q| (v na²om prípade na 4 mnoºiny (triedy).

V závislosti od koncového stavu dostávame rôzne triedy slov. Mohlo by sa sta´, ºeautomat má viac koncových stavov, a teda akceptovaný jazyk bude zjednotením ak-ceptovaných mnoºín, £o je moºné napísa´

L(A) =⋃p∈F

T [p]. (6)

Teraz ukáºeme, ºe platí (2), a teda platí (7):

T [q0] = {w ∈ {0, 1}∗| |w|0 ≡ 0 (mod 2) ∧ |w|1 ≡ 0 (mod 2)} (7)

Indukciou. Najprv ukáºeme, ºe (7) platí pre v²etky slová d¨ºky najviac 2. Potom z pred-pokladu, ºe (7) platí pre slová d¨ºky n− 1 ukáºeme jeho platnos´ pre slová d¨ºky n.

1. Analyzujme v²etky slová d¨ºky najviac 2.

� δ̂(q0, ε) = q0, a teda ε ∈ T [q0]

� δ̂(q0, 0) = q0, a teda 0 ∈ T [q0], δ̂(q0, 1) = q0, a teda 1 ∈ T [q0]

� δ̂(q0, 00) = q0, a teda 00 ∈ T [q0], δ̂(q0, 01) = q0, a teda 01 ∈ T [q2]

� δ̂(q0, 10) = q0, a teda 10 ∈ T [q2], δ̂(q0, 11) = q0, a teda 11 ∈ T [q0]

V²etky slová d¨ºky 2 patriace do T [q0] spl¬ajú |w|0 ≡ 0 (mod 2)∧ |w|1 ≡ 0 (mod 2).

2. Predpokladajme, ºe (7) platí pre slová d¨ºky n − 1. Nech |w| = n − 1, w ∈ T [q0]a |w|0 ≡ 0 (mod 2) ∧ |w|1 ≡ 0 (mod 2).

12 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

� Ak vytvoríme slová w0 a w1, tak podmienka |w|0 ≡ 0 (mod 2) ∧ |w|1 ≡0 (mod 2) uº nebude splnená ani pre jedno z nich, teda ani jedno z týchtoslov nepatrí do T [q0] a zárove¬ w0 ∈ T [q3] a w1 ∈ T [q1].

� Nech |w| = n − 1, w ∈ T [q2] a |w|0 ≡ 1 (mod 2) ∧ |w|1 ≡ 1 (mod 2). Akvytvoríme slová w0 a w1, tak podmienka |w|0 ≡ 0 (mod 2)∧ |w|1 ≡ 0 (mod 2)nebude splnená ani pre jedno z nich, teda ani jedno z týchto slov nepatrído T [q0] a zárove¬ w0 ∈ T [q1] a w1 ∈ T [q3].

� Nech |w| = n − 1, w ∈ T [q1] a |w|0 ≡ 0 (mod 2) ∧ |w|1 ≡ 1 (mod 2). Akvytvoríme slová w0 a w1, tak podmienka |w|0 ≡ 0 (mod 2)∧ |w|1 ≡ 0 (mod 2)bude splnená len pre w1, teda toto slovo patrí do T [q0] a zárove¬ w0 ∈ T [q2].

� Nech |w| = n − 1, w ∈ T [q3] a |w|0 ≡ 1 (mod 2) ∧ |w|1 ≡ 0 (mod 2). Akvytvoríme slová w0 a w1, tak podmienka |w|0 ≡ 0 (mod 2)∧ |w|1 ≡ 0 (mod 2)bude splnená len pre w0, teda toto slovo patrí do T [q0] a zárove¬ w1 ∈ T [q2].

Sledujme výpo£et na slove 01011 v prípade koncového stavu q1:

(q0, 01011) `A (q3, 1011) `A (q2, 011) `A (q1, 11) `A (q0, 1) `A (q1, ε)

Automat dané slovo akceptuje. �al²ími pozorovaniami by sme zistili, ºe akceptovanýmjazykom je jazyk tvorený v²etkými slovami, ktoré obsahujú párny po£et 0 a nepárnypo£et 1. V tomto prípade to môºeme vyjadri´ nasledovne:

L1 = {w ∈ {0, 1}∗| |w|0 ≡ 0 (mod 2) ∧ |w|1 ≡ 1 (mod 2)} (8)

Úplne analogickými pozorovaniami by sme dostali pre koncové stavy q2 a q3

L2] = {w ∈ {0, 1}∗| |w|0 ≡ 1 (mod 2) ∧ |w|1 ≡ 1 (mod 2)} (9)

L3 = {w ∈ {0, 1}∗| |w|0 ≡ 1 (mod 2) ∧ |w|1 ≡ 0 (mod 2)} (10)

Analogicky by sme vedeli dokáza´, ºe platí

L1 = T [q1], L2 = T [q2], L3 = T [q3].

�o sme sa nau£ili:

� Kone£ný automat rozkladá rozkladá jazyk Σ∗ na kone£ný po£et tried, Σ jeabeceda, v ktorej automat pracuje.

� Automatom akceptovaný jazyk je zjednotením niektorých týchto tried, £o jeur£ené koncovými stavmi automatu.

1.5. Pre niektoré jazyky kone£né automaty neexistujú

Aby sme ukázali, ºe nejaký konkrétny jazyk nie je regulárny, posta£í dokáza´, ºe ne- Dirichletov princíp, slabá forma:Ak máme n + 1 objektovrozdelených do n skupín, takv aspo¬ jednej skupine sú aspo¬ dvaobjekty.

existuje automat, ktorý rozpoznáva tento jazyk. Obvykle dokáza´ neexistenciu rie²e-nia daného problému v ²peci�ckej triede algoritmov je ve©mi ´aºké (sú to naj´aº²ieúlohy v teoretickej informatike). Pretoºe trieda kone£ných automatov je trieda ve©misilne ohrani£ených programov, dôkazy neexistencie typu �neexistuje ºiadny kone£nýautomat, ktorý akceptuje daný jazyk� sú relatívne ©ahké [3]. Tento fakt nám poslúºina prezentáciu metodológie dôkazov tohto typu. Najprv uvedieme jednoduchý príklada potom sa budeme snaºi´ o zov²eobecnenie.

Príklad 1.6Jazyk L = {0n1n|n ≥ 1} nie je akceptovate©ný kone£ným au-tomatom.

Prv neº prejdeme k formálnej²iemu dôkazu, je dôleºité si uvedomi´, ºe automat sipri prejdení do nejakého stavu (aktuálny stav) vôbec nepamätá, ako sa do tohto stavu

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 13

dostal. Podstatné je to, ºe je v danom stave a aký symbol hlava práve £íta. Teda dodaného aktuálneho stavu sa mohol dosta´ viacerými cestami v grafe a pritom hlavamohla pre£íta´ slová rôznej d¨ºky.

Dôkaz: Sporom. Predpokladajme, ºe jazyk L je rozpoznate©ný kone£ným automatomA, ktorý má k > 0 stavov.

Uvaºujme slovo w = 0n1n, kde n > k. Aj toto slovo je akceptované automatom A,a teda existuje akceptujúci výpo£et C = C0C1 . . . C2n−1, kaºdé Ci, 0 ≤ i ≤ 2n − 1 jekon�gurácia.

Ke¤ºe automat má len k stavov, v prvej polovici tejto postupnosti musia existova´ dvekon�gurácie, ktoré majú rovnaké stavy. Nech sú to kon�gurácie Ci a Cj, 0 < i < j,j ≤ n − 1. Ke¤ºe slovo má tvar 0n1n, poznáme tvar kon�gurácií. Kon�gurácia Ci =(q, 0n−i1n) a kon�gurácia Cj = (q, 0n−j1n).

Uvaºujme, £o sa stane, ke¤ v akceptujúcom výpo£te C vynecháme £as´ Ci . . . Cj−1:

Zrejme nová postupnos´ C ′ bude akceptujúcim výpo£tom pre slovo w′, z ktoréhoAk δ(q0, u) = p = δ(q0, v), takpre v²etky x platíδ(q0, ux) = p = δ(q0, vx). vynecháme podslovo 0j−i. Teda automat A bude akceptova´ aj slovo 0n−(j−i)1n. Pod©a

de�nície tohto jazyka ale 0n−(j−i)1n 6∈ L. Dospeli sme teda k sporu s predpokladom,ºe L je rozpoznate©ný kone£ným automatom.

Príklad 1.7Jazyk tvorený slovami v abecede Σ = {), (}, pri£om kaºdé slovo jesprávne uzatvorkované. Napríklad, slová (())(), (()()), ((()()())())patria do daného jazyka.Tento jazyk nie je akceptovate©ný kone£ným automatom. Keby bol,tak akceptuje aj podmnoºinu slov {(n)n : n > 0}. Pod©a pred-chádzajúceho príkladu vieme, ºe taký automat neexistuje.

Príklad 1.8 Jazyk L = {an2 |n ≥ 0} nie je akceptovate©ný kone£ným au-tomatom.

Dôkaz: Sporom. Ak by bol tento jazyk bol akceptovate´ný kone£ným automatom, takby taký automat existoval a mal by kone£ný po£et stavov, povedzme k > 0.

Uvaºujme akceptujúce výpo£ty pre slová ak2, ak2+1, . . . , ak2+k, ktorých je k + 1.

C0 = C0C1 . . . Ck2

C1 = C0C1 . . . Ck2Ck2+1

C2 = C0C1 . . . Ck2Ck2+1Ck2+2

C3 = C0C1 . . . Ck2Ck2+1Ck2+2Ck2+3

. . .

Ck = C0C1 . . . Ck2Ck2+1 . . . Ck2+k

Ke¤ºe slov je k + 1 a stavov je k, existujú dve slová i-te ak2+i, j-te ak2+j také, ºe0 ≤ i < j ≤ k, ktoré sú akceptované v rovnakom stave, t. j. platí

δ̂(q0, ak2+i) = δ̂(q0, a

k2+j).

Tieº teda platí, ºe rozpoznanie slova ak2+ia2k−j+1 a slova ak2+ja2k−j+1 skon£í v tomistom stave, pretoºe za obe slová sme pripojili rovnaké slovo.

Pritom ale slovo ak2+ja2k−j+1 = ak2+2k+1 = a(k+1)2 ∈ L, zatia© £o k2 < k2 + i +2k − j + 1 < (k + 1)2, a preto ak2+i+2k−j+1 6∈ L. Teda znovu sme dospeli k sporus predpokladom, ºe akceptujúci kone£ný automat existuje.

�truktúra dôkazov v príkladoch 1.6 a 1.8 je rovnaká. Lí²i sa len vo©bou re´azcov, ktoréslúºia ako východisko na odvodenie sporu. Nájdenie takéhoto re´azca sa spravidla

14 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

opiera o intuitívny poh©ad, ºe skúmaný jazyk má vlastnos´, k dosiahnutiu ktorej jekone£ná pamä´ automatu nedostato£ná.

Ak sa nám podarí dokáza´, ºe prenejaký jazyk neexistujedeterministický kone£ný automat,ktorý ho akceptuje, tak tento jazykur£ite nie je regulárny.

C. 1.2Nech L = {w ∈ {a, b}∗ | |w|a = |w|b}. Je moºné skon²truova´kone£ný automat, ktorý bude akceptova´ tento jazyk?

�o sme sa nau£ili:

� Metódu na dokazovanie, ºe pre niektoré jazyky kone£ný automat neexistuje.

1.6. Neformálny poh©ad na nedeterminizmus kone£ných automatov

Významnou vlastnos´ou kone£ného automatu, tak ako sme ho de�novali, bolo, ºe kukaºdému slovu w sme vedeli nájs´ práve jeden výpo£et na slove w. Podstata deter-minizmu je v tom, ºe v kaºdom stave automatu je jednozna£ne ur£ený ¤al²í stavpo pre£ítaní písmena pod hlavou. Ak povolíme prechod do viacerých stavov, uº ¤al²ípostup nie je jednozna£ne ur£ený, a automat sa stáva nedeterministickým. Nedeter-ministické automaty budú pracova´ zloºitej²ie, ale pomocou nich je moºné opísa´akceptovaný jazyk �jednoduch²ím� spôsobom.

Podobne ako deterministický kone£ný automat aj nedeterministický kone£ný automatmá kone£ný po£et stavov, kone£nú abecedu, jeden ²tartovací stav a mnoºinu akcep-tujúcich stavov. Tieº má prechodovú funkciu, ktorú budeme ozna£ova´ δ. Rozdielmedzi deterministickým a nedeterministickým automatom je práve v prechodovejfunkcii. Prechodová funkcia nedeterministického automatu dáva výsledok mnoºinustavov (môºe by´ prázdna, môºe obsahova´ jeden alebo viac stavov). Automat privýpo£te prechádza do jedného z týchto stavov. Vieme, ºe pri deterministickom auto-mate to bol práve jeden stav.

Príklad 1.9Na obrázku 5 je uvedený nedeterministický automat. Stav q0 je²tartovací stav a v ¬om môºeme predpoklada´, ºe sa vºdy za£ínakoniec skúmaného slova, t. j. 01. Okrem toho stav q0 je aj pre-chodový. Zo stavu q0 je prechod do q0 pri spracovaní aj 0 aj 1.Vidíme, ºe zo stavu q0 pri spracovaní 0 automat môºe prejs´ dostavu q0 alebo do stavu q1.Uvidíme, ºe tento automat akceptuje v²etky slová ukon£ené 01.

���� ���� ����m- - -10

0, 1

q0 q1 q2

��?

Obr. 5: Nederministický automat akceptujúci v²etky slová v abecede {0, 1} ukon£ené 01.

Sledujme strom výpo£tov automatu na slove 00101. Výpo£ty sa za£ínajú v ²tartovacomstave q0.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 15

� Na vstupe je 0, takºe automat má dve moºnosti prechodu, a to do stavu q0 a dostavu q1, sledujeme oba prechody. Strom výpo£tov je znázornený na obrázku 6.

� Nasledujúcim vstupným symbolom je 0, postup zo stavu q1 ¤alej nie je moºný.Zo stavu q0 automat má znovu dve moºnosti prechodu, a síce do stavu q0 a dostavu q1, sledujeme oba prechody.

� �al²ím vstupným symbolom je 1. Zo stavu q1 je moºný prechod do stavu q2, ktorýje koncovým stavom, ale slovo nebolo celé pre£ítané a ¤al²í postup odtia© nieje moºný, takºe automat zatia© neakceptuje. Zo stavu q0 automat má len jednumoºnos´ prechodu, a to do stavu q0.

� �al²ím vstupným symbolom je 0. Zo stavu q0 automat má znovu dve moºnostiprechodu, a to do stavu q0 a do stavu q1, sleduje oba prechody.

� Posledným vstupným symbolom je 1. Zo stavu q1 je moºný prechod do stavuq2, ktorý je koncovým stavom, slovo bolo pre£ítané celé, teda teraz automatslovo akceptuje. �al²ia analýza nie je potrebná, pretoºe sme na²li akceptujúcivýpo£et.

q0 q0 q0 q0 q0 q0- - - - -

q1

nepokra£uje

q1 q1

HHHHHHj

HHHHHHj

HHHHHHj

q2 nepokra£uje q2

HHHHHHj

HHHHHHj

0 0 1 0 1

Obr. 6: Sledovanie stavov automatu z obrázku 5 po£as spracovania slova 00101.

Podobne ako pri deterministických kone£ných automatoch aj pre nedeterministické jemoºné na ich zápis pouºi´ prechodové tabu©ky.

0 1→ q0 : {q0, q1} {q0}

q1 : ∅ {q2}← q2 : ∅ ∅

Tab. 3: Prechodová tabu©ka k automatu, ktorý akceptuje v²etky slová kon£iace sa na 01.

De�nícia 1.7 Nedeterministickým kone£ným automatom nazývame päticu A = (K,Σ, δ, q0, F ), kde K, Σ, q0, F sú ako v de�nícii KA a δ : K×(Σ∪{ε})→ 2K je prechodováfunkcia.

Pojem kon�gurácie zostáva pre nedeterministický kone£ný automat rovnaký ako predeterministický, ale lí²i´ sa bude v de�nícii kroku, pretoºe pod©a de�nície je moºnýprechod do mnoºiny stavov.

De�nícia 1.8 Krok nedetermistického kone£ného automatu A budeme ozna£ova´ `A

a je de�novaný na mnoºine Q × Σ∗ tak, ºe (q, aw) `A (p, w), ak existuje p ∈ δ(q, a),kde a ∈ Σ ∪ {ε}, w ∈ Σ∗.

�al²ím rozdielom je, ºe prechodová funkcia u nedeterministického automatu je de�-novaná aj pre argument ε, a teda automat môºe meni´ stav bez toho, aby hýbal£ítacou hlavou na vstupnom slove. Navy²e, vzh©adom na to, ºe prázdna mnoºina ∅

16 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

môºe by´ tieº hodnotou prechodovej funkcie, automat sa môºe dosta´ do situácie,v ktorej nemôºe vykonáva´ ºiadnu £innos´.

Príklad 1.10Na obrázku obrázku 7. je uvedený jednoduchý nedeterministickýkone£ný automat, v ktorom sa stretávame s prechodom na ε, t. j.automat prejde na iný stav bez toho, aby posunul £ítaciu hlavu.Tento automat má grafové vyjadrenie rovnaké ako deterministický.Tento automat akceptuje jazyk, ktorý za£ína a kon£í symbolomb a medzi nimi sa opakuje len dvojica ba, pri£om je tam aspo¬jedna. Napríklad slová babababb, aabb patria do jazyka akcepto-vaného týmto automatom.

���� ���� �������� ����m- - -��

���* HHHHjab

ε bb

q0 q1

q2

q3 q4

Obr. 7: Nedeterministický automat s ε prechodom.

De�nícia 1.9 Jazyk rozpoznávaný nedeterministickým kone£ným automatom A jemnoºina L(A) = {w|(q0, w) `∗A (q, ε), q ∈ F}.

V prípade deterministickéhokone£ného automatu A, k tomu, abyslovo w nepatrilo do L(A) sta£ilo,aby stav, v ktorom kon£il výpo£et(jediný!) na w nebol koncový.V prípade nedeterministickéhoautomatu a bu¤ nesmie existova´ºiadny výpo£et na w, alebo v²etkyvýpo£ty na w musia kon£i´v stavoch rôznych od koncových.

Napriek tomu, ºe de�nícia 1.2 sa formálne zhoduje s de�níciou 1.7, treba si uvedomi´podstatný rozdiel, spôsobovaný odli²nou de�níciou kroku `. Kým v de�nícii 1.2 smemohli poveda´, ºe w ∈ L(A), ak sa výpo£et automatu A na slove w kon£í v koncovomstave, v de�nícii 1.7 musíme hovori´, ºe w ∈ L(A), ak existuje výpo£et automatu A naw kon£iaci sa v koncovom stave. Pri nedeterministickom automate sa totiº môºe sta´,ºe výpo£et na w vôbec neexistuje, alebo naopak, ºe na w existuje nieko©ko výpo£tov,ale nie v²etky musia kon£i´ v koncovom stave.

Z de�nícií oboch automatov, determinisického a nedeterministického, vyplýva, ºekaºdý deterministický automat je zárove¬ nedeterministický. Opa£ne to neplatí, aleplatí nasledujúce tvrdenie:

Tvrdenie: Nech L je jazyk rozpoznávaný nejakým nederministickýmkone£ným automatom. Potom existuje deterministický kone£ný au-tomat, ktorý rozpoznáva jazyk L.

Objasníme situáciu na intuitívnej úrovni. Ukáºeme na príklade, ako je moºné k nede-terministickému automatu skon²truova´ deterministický.

Ak sa chceme presved£i´, £i ur£itý nedeterministický kone£ný automat akceptuje danéslovo, nemusí náhodné h©adanie v tabu©ke £i v stavovom diagrame vies´ k cie©u a trebapostupova´ nejakým systematickým spôsobom. Napríklad je moºné urobi´ analýzu tak,ako sme ju urobili v predchádzajúcom príklade na základe doposia© pre£ítaného úsekuvstupného slova. K mnoºinám stavov budeme vytvára´ stavy, ktoré ich budú reprezen-tova´. Ku kaºdému nedeterministickému kone£nému automatu A teda takto môºmevytvori´ systém, ktorý je realizáciou istého kone£ného automatu rozpoznávajúcehoL(A).

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 17

Uvaºujme nedeterministický kone£ný automat uvedený na obrázku 5, ktorý akceptujeslová v abecede {0, 1} ukon£ené 01. Chceme k tomuto automatu skon²truova´ deter-ministický kone£ný automat.

Ke¤ºe prechodová funkcia dáva výsledky, ktoré sú mnoºinami, budeme analyzova´v²etky moºné podmnoºiny mnoºiny stavov.

Ak uvaºujeme nejakú podmnoºinu stavov a prechod z nich na nejaké písmeno, výsled-kom bude tieº mnoºina, ktorá je zjednotením mnoºín daných prechodovou funkcioupre tieto stavy. Napríklad, ak uvaºujeme mnoºinu stavov {q0, q1} automatu na obrázku5, pre stav q0 prechodová funkcia pri vstupe 0 dáva {q0, q1} a pre stav q1 je tomnoºina {q0}, takºe zjednotením je {q0, q1}. �tartovacím stavom bude mnoºina ob-sahujúca pôvodný ²tartovací stav a koncové stavy budú mnoºiny obsahujúce koncovýstav. Vytvorená prechodová tabu©ka je tabu©ka 4.

0 1∅ ∅ ∅

→ {q0} {q0, q1} {q0}{q1} ∅ {q2}

← {q2} ∅ ∅{q0, q1} {q0, q1} {q0, q2}

← {q0, q2} {q0, q1} {q0}← {q1, q2} ∅ {q2}← {q0, q1, q2} {q0, q1} {q0, q2}

Tab. 4: Prechodová tabu©ka k deterministickému automatu, ktorý bol vytvorený k automatu na Obr. 5.

Nový automat by teda mal ma´ 8 stavov (£o je po£et v²etkých podmnoºín danejmnoºiny stavov), av²ak ©ahko zistíme, ºe do stavov ∅, {q1}, {q0, q1, q2}, {q2}, {q1, q2}sa nemoºno dosta´ zo ²tartovacieho stavu, takºe dostávame automat na obrázku 8.

���� � �� � �� � � - - �-10

1 0

0

1

{q0} {q0, q1} {q0, q2}

��?

��?

� �6

Obr. 8: Derministický automat akceptujúci v²etky slová ukon£ené 01.

�o sme sa nau£ili:

Nedeterminizmus umoºní ©ah²ie kon²truova´ kone£né automaty, ale trieda akcepto-vaných jazykov je rovnaká pre oba typy automatov.

1.7. Praktické vyuºitie automatov

V tejto podkapitolke ukáºeme, ºe tento teoretický výpo£tový model je vynikajúcimmodelom pre rie²enie niektorých reálnych problémov, napríklad pri vyh©adávaní naWebe alebo pri získavaní informácií z textov. Budeme sa viac venova´ druhému problé-mu.

Formuláciaproblému

Je daná mnoºina slov. Nájdite v²etky dokumenty, ktoré obsahujújedno (alebo v²etky) z týchto slov.

18 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Existuje viacero ve©mi zaujímavých a prefíkaných algoritmov pre rie²enie tohoto pro-blému, ktoré zoh©ad¬ujú napríklad, £i databáza dokumetov je usporiadaná, £i sa £astomení, a iné. Na²e rie²enie nebude zoh©ad¬ova´ takmer ni£ a bude sformulované takto:

Budeme predpoklada´, ºe máme danú mnoºinu slov, ktoré budeme nazýva´ k©ú£ovéslová, a chceme nájs´ výskyt niektorého z týchto slov v danom ve©mi dlhom tex-tovom dokumente.

Samozrejme, ºe vieme vytvori´ jednoduchý intuitívny algoritmus taký, ºe pre kaºdék©ú£ové slovo prejdeme celý text a budeme postupne porovnáva´ symboly. Lenºe tentoalgorimus si vyºaduje pre£ítanie dlhého textu to©kokrát, ko©ko je k©ú£ových slov.

Automaty nám pomôºu vytvori´ algoritmus, ktorý spracováva v²etky slová naraz a dlhýdokument pre£íta len jedenkrát. Z k©ú£ových slov vytvoríme nederministický kone£nýautomat, prevedieme ho na deterministický a pre tento automat bude vstupom dlhýtext, ktorý bude spracovaný len raz. Ak sa automat dostane do koncového stavu,znamená to, ºe niektoré k©ú£ové slovo na²iel. Ukáºeme to na malom príklade.

Príklad 1.11 Predpokladajme, ºe v dlhom textovom dokumente chceme nájs´ slovázem a emir. Vidíme, ºe slová sa prekrývajú, a toto je potrebné pri rie²ení zoh©adni´.

Vytvoríme nedeterministický automat uvedený na obrázku 9

���� ���� ���� ����m-

���� ���� ������������1- -

PPPPPPPPq - -

6

ez

e

m i

rq0

q1 q2 q3

q4 q5 q6

��?

Obr. 9: Nederministický automat akceptujúci slová ukon£ené k©ú£ovými slovami zem a emir.

Prechodová funkcia pre tento automat z obrázku 9 je uvedená v tabu©ke 5.

e m i r z Σ− {e, z}→ {q0} {q0, q4} {q0} {q0} {q0} {q0, q1} {q0}

{q1} {q2} ∅ ∅ ∅ ∅ ∅{q2} ∅ {q3} ∅ ∅ ∅ ∅

← {q3} ∅ ∅ ∅ ∅ ∅ ∅{q4} ∅ {q5} ∅ ∅ ∅ ∅{q5} ∅ ∅ {q6} ∅ ∅ ∅{q6} ∅ ∅ ∅ {q3} ∅ ∅

Tab. 5: Prechodová tabu©ka k nedeterministickému automatu na obrázku 9.

K tomto automatu vieme vytvori´ deterministický automat, ktorého prechodová tabu©kaje tabu©ka 6

Prechodom cez st¨pce tabu©kyzistíme, ºe ¤al²ie mnoºiny stavov,do ktorých by automat pre²iel, uºnevzniknú.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 19

e m i r z Σ− {e, z}∅ ∅ ∅ ∅ ∅ ∅ ∅

→ {q0} = A {q0, q4} {q0} {q0} {q0} {q0, q1} {q0}{q1} {q2} ∅ ∅ ∅ ∅ ∅{q2} ∅ {q3} ∅ ∅ ∅ ∅

← {q3} ∅ ∅ ∅ ∅ ∅ ∅{q4} ∅ {q5} ∅ ∅ ∅ ∅{q5} ∅ ∅ {q6} ∅ ∅ ∅{q6} ∅ ∅ ∅ {q3} ∅ ∅{q0, q1} = B {q0, q4, q2} {q0} {q0} {q0} {q0, q1} {q0}{q0, q2} {q0, q4} {q0, q3} {q0} {q0} {q0, q1} {q0}

← {q0, q3} = C {q0, q4} {q0} {q0} {q0} {q0, q1} {q0}{q0, q4} = D {q0, q4} {q0, q5} {q0} {q0} {q0, q1} {q0}{q0, q5} = E {q0, q4} {q0} {q0, q6} {q0} {q0, q1} {q0}{q0, q6} = F {q0, q4} {q0} {q0} {q0, q3} {q0, q1} {q0}{q1, q2} {q2} {q3} ∅ ∅ ∅ ∅

← {q1, q3} {q2} ∅ ∅ ∅ ∅ ∅{q1, q4} {q2} {q5} ∅ ∅ ∅ ∅{q1, q5} {q2} ∅ {q6} ∅ ∅ ∅{q1, q6} {q2} ∅ ∅ {q3} ∅ ∅

← {q2, q3} ∅ {q3} ∅ ∅ ∅ ∅{q2, q4} ∅ {q3, q5} ∅ ∅ ∅ ∅{q2, q5} ∅ {q3} {q6} ∅ ∅ ∅{q2, q6} ∅ {q3} ∅ {q3} ∅ ∅{q3, q4} ∅ {q5} ∅ ∅ ∅ ∅{q3, q5} ∅ ∅ {q6} ∅ ∅ ∅{q3, q6} ∅ ∅ ∅ {q3} ∅ ∅{q4, q5} ∅ {q5} {q6} ∅ ∅ ∅{q4, q6} ∅ {q5} ∅ {q3} ∅ ∅{q5, q6} ∅ ∅ {q6} {q3} ∅ ∅{q0, q2, q4} = G {q0, q4} {q0, q3, q5} {q0} {q0} {q0, q1} {q0}

← {q0, q3, q5} = H {q0, q4} {q0} {q0, q6} {q0} {q0, q1} {q0}. . . . . . . . .

Tab. 6: Prechodová tabu©ka (neúplná) deterministického automatu vytvoreného k nedeterministickému automatu na Obr.9. �ervenou farbou sú ozna£ené stavy, ktoré budú vo výslednom deterministickom automate.

1.8. Cvi£enia

C. 1.3 L = {w ∈ {a, b}∗ | ∃u, v ∈ {a, b}∗ w = uav ∧ |u| ≡ 1 (mod 2)}Inými slovami povedané, ºe v kaºdom slove existuje symbol a napárnej pozícii od za£iatku.Zostrojte kone£ný automat, ktorý rozpoznáva jazyk L.

C. 1.4 L = {w ∈ {a, b}∗ | ∃u, v, y ∈ {a, b}∗ w = uavay ∧ |u| ≡ 1 (mod 2) ∧|v| ≡ 1 (mod 2)}Inými slovami povedané, ºe v kaºdom slove existujú aspo¬ dvasymboly a na párnej pozícii od za£iatku.Zostrojte kone£ný automat, ktorý rozpoznáva jazyk L.

C. 1.5 Zostrojte nedeterministický kone£ný automat pre jazyk: L ={w ∈ {a, b}∗ | ∃v ∈ {a, b}∗ w = vabba}. Vzniknutý akceptor pre-ve¤te na deterministický kone£ný automat.

Program, ktorý by sme pre vytvorený deterministický automat skon²truovali má tvar:

20 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

→ A : case vstup of { e : goto Dm : goto Ai : goto Ar : goto Az : goto B

Σ− {e, z}: goto A }B : case vstup of { e : goto G

m : goto Ai : goto Ar : goto Az : goto B

Σ− {e, z}: goto A }← C : case vstup of { e : goto D

m : goto Ai : goto Ar : goto Az : goto B

Σ− {e, z}: goto A }D : case vstup of { e : goto D

m : goto Ei : goto Ar : goto Az : goto B

Σ− {e, z}: goto A }E : case vstup of { e : goto D

m : goto Ai : goto Fr : goto Az : goto B

Σ− {e, z}: goto A }F : case vstup of { e : goto D

m : goto Ai : goto Ar : goto Cz : goto B

Σ− {e, z}: goto A }G : case vstup of { e : goto D

m : goto Hi : goto Ar : goto Az : goto B

Σ− {e, z}: goto A }← H : case vstup of { e : goto D

m : goto Ai : goto Fr : goto Az : goto B

Σ− {e, z}: goto A }

�o sme sa nau£ili:

� Kon²truova´ nedeterministické kone£né automaty ku k©ú£ovým slovám.

� K nedeterministickému kone£nému automatu skon²truova´ deterministickýa pouºi´ ho v efektívnom algoritme na h©adanie k©ú£ových slov.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 21

2. Turingove stroje

2.1. Na£o Turingove stroje?

Je paradoxné, ºe k©ú£ k pochopeniu obmedzenosti informa£ných technológií posky-tuje samotná veda o po£íta£och (computer science), ba � netají sa tým. Dôleºitousú£as´ou teoretickej informatiky je totiº kapitola o Turingových strojoch. Tento výpo£-tový model má dve základné vlastnosti:

1. Tak ako kaºdý iný po£íta£ový program, i softvér Turingovho stroja je zloºenýz in²trukcií, v jeho prípade sú v²ak v²etky jediného typu.

2. Kaºdý iný (doteraz známy) po£íta£ový program moºno bez straty informácietransformova´ na program nejakého Turingovho stroja.

Kým druhá £rta redukuje otázku, £o nedokáºe po£íta£, na otázku, £o nedokáºe Turin-gov stroj, prvá umoº¬uje omnoho jednoduch²í výskum takejto otázky. Pomocou tohtovýpo£tového modelu tak môºeme nájs´ konkrétne problémy, s ktorými si ºiaden au-tomat nikdy neporadí (azda najznámej²í je problém zastavenia Turingovho stroja (tzv.halting problem)). Ich existencia dokazuje principiálnu obmedzenos´ (nielen ideál-nych) výpo£tových prostriedkov, a tak slúºi ako chrobák v u£ite©ovej hlave a povzbu-dzuje kritickos´ jeho myslenia.

Preto povaºujeme za dôleºité, aby sa kaºdý u£ite© informatiky o Turingových stro-joch dozvedel aspo¬ základné informácie, sú totiº nezastupite©ným £lánkom infor-matického vzdelania. Moºná utilitaristická výhrada, ºe svojim ºiakom nikdy o tejtoproblematike rozpráva´ nebude, neobstojí (mimochodom, moºno ju vznies´ na ve©kúv䣲inu poznatkov získaných vysoko²kolským ²túdiom). Ve¤ ak chce u£ite© (nielen in-formatiky) ²tudentom poskytnú´ sladké ovocie ozajstného poznania, musí ma´ sámhlboké korene.

2.2. Výpo£ty na Turingových strojoch

Hardvér Turingovho stroja má iba dve sú£asti: �ko©ajnice� � pevný, na jednu stranuAlan Turing (1912�1954), britskýmatematik a logik(http://en.wikipedia.org/wiki/Alan_Turing)

nekone£ný, rad (nerozoznate©ných) ²tvor£ekov, po ktorých sa (vºdy po jednom ²tvor£e-ku) pohybuje jeden �vozík�, ktorý má ²írku práve jedného ²tvor£eka. Kaºdý ²tvor£ekpritom obsahuje vºdy jeden z dvoch typov predmetov. Vo vozíku je (nevy£erpate©ná)zásoba predmetov oboch typov, a tak (v prípade, ºe sa vozík nachádza v ur£itom stave)môºeme v tom ²tvor£eku, kde sa práve vozík nachádza, vymeni´ predmet za iný.

Na konkrétnej podobe predmetov, pravdaºe, nezáleºí, budeme ich preto ozna£ova´iba symbolicky � informatikmi ob©úbenými znakmi 0 a 1. Stavy vozíka tieº nebudemepopisova´ slovami, ale £íslami, presnej²ie indexmi pevného symbolu s. Celú situáciusi teda môºeme znázorni´ napríklad takýmto obrázkom (symbol s7 v©avo je stav vozíkaa ten je práve na sivom polí£ku):

0 1 1 1 0 1 0 1 1 1 1 0 0 0 . . .s7

Aby sme sa vyjadrovali odbornej²ie, takúto situáciu budeme nazýva´ kon�gurácia,ko©ajnice budeme nazýva´ páska a vozík hlava, pomenovanie stav si ponecháme.

Dodajme, ºe nás budú zaujíma´ iba tie kon�gurácie, v ktorých je po£et jednotiekkone£ný, inými slovami, od istého miesta sú uº vo v²etkých ¤al²ích ²tvor£ekoch ibanuly.

Na²ou snahou bude, pravdaºe, pohyb vozíka kontrolova´, a hlavne automatizova´. Najeho ovládanie tak budeme pouºíva´ isté in²trukcie. Je zaujímavé a dôleºité, ºe v²etkyin²trukcie budú vyzera´ v podstate rovnako, typickou ukáºkou je napríklad s701Rs8.Kaºdá z nich teda bude zloºená z piatich písmen:

22 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

• Prvé dve budú potvrdzova´ jej vhodnos´:

• Prvý znak (v na²om prípade s7) sa musí zhodova´ s aktuálnym stavom hlavy.

• Druhý znak (u nás 0) musí by´ rovnaký ako písmeno na ²tvor£eku s hlavou.

V prípade splnenia oboch podmienok budeme hovori´, ºe in²trukcia s aktuál-nou kon�guráciou kore²ponduje. (Napríklad na²a in²trukcia s701Rs8 kore²pon-duje s kon�guráciou na obrázku.)

• Zvy²né tri písmená budú hovori´, ako sa má kon�gurácia postupne zmeni´:

• V ²tvor£eku, na ktorom sa nachádza hlava, sa doteraj²í znak nahradí tretímznakom in²trukcie (v na²om prípade 1). (O nahradzovaní môºeme hovori´ ajvtedy, ke¤ sa druhý a tretí znak navzájom zhodujú, hoci sa v podstate ni£nezmení.)

• �tvrtý znak (ktorý môºe by´ len jedno z písmen L, N, alebo R) hovorí, akosa má zmeni´ poloha hlavy:

L: Hlava sa posunie o jedno polí£ko do©ava.

N: Hlava ostáva na svojom pôvodnom mieste.

R: Hlava sa posunie o jedno polí£ko doprava (to je prípad na²ej in²trukcie).

• Posledné písmeno in²trukcie (u nás s8) hovorí, v akom stave bude hlava povykonaní tejto in²trukcie.

Po aplikovaní na²ej in²trukcie s701Rs8 na vy²²ie uvedenú kon�guráciu

0 1 1 1 0 1 0 1 1 1 1 0 0 0 . . .s7

tak dostávame novú kon�guráciu:

0 1 1 1 1 1 0 1 1 1 1 0 0 0 . . .s8

�ahko vidie´, ºe pri kaºdej kon�gurácii vieme pripravi´ in²trukciu, ktorú na ¬u môºe-me aplikova´ � sta£í z nej vy£íta´ stav a znak v sivom ²tvor£eku a doplni´ ich jednýmznakom 0 alebo 1, jedným posunom a jedným stavom. Po aplikácii takto vznikutejin²trukcie vznikne nová kon�gurácia, tú v²ak môºeme opä´ zmeni´ nejakou ¤al²ouin²trukciou, a takto celý proces pod©a potreby opakujeme, aº kým nevznikne kon�-gurácia, ktorú sme si predsavzali dosiahnu´ na za£iatku.

Naozaj v²ak in²trukcie musíme pripravova´ aº �na poslednú chví©u�, teda aº vtedy,ke¤ ich chceme aplikova´? �o keby sme ich vytvorili e²te predtým? Z interaktívnehomódu by sme tak pre²li do programovacieho. Úlohou tu uº nebude pripravi´ jednuin²trukciu, ale rovno program, ktorý z nich bude zloºený. Takýto program budemenazýva´ Turingov stroj. Pre danú kon�guráciu sa potom z tohto systému vyberie táin²trukcia, ktorá s danou kon�guráciou kore²ponduje.

Uvedomme si, ºe pri takomto prístupe musíme vyhnú´ situácii, ke¤ s kon�gurácioukore²ponduje viac neº jedna in²trukcia, v takom prípade by sme sa totiº nevedelirozhodnú´, ktorú z nich pouºi´, a proces by sa tak stal nedeterministickým. Túto pod-mienku deterministickosti splníme ©ahko � jednoducho budeme od Turingovho strojapoºadova´, aby ºiadne jeho dve in²trukcie nemali prvé dva znaky rovnaké.

Vezmime si napríklad Turingov stroj � systém in²trukcií {s000Ls3, s010Rs1, s100Ns2,s111Rs0} (v²imnime si, ºe sp¨¬a podmienku deterministickosti) a úvodná kon�gurácianech je

0 1 1 1 0 0 0 . . .s0

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 23

Sme v stave s0 a aktuálny znak je 1. Kore²pondujúca in²trukcia teda musí za£ína´ dvo-jicou znakov s01. Jediná taká (v na²om stroji) je s010Rs1. Tá nám prikazuje prepísa´znak v hlavou obsadenom polí£ku na 0, posunú´ sa o jedno polí£ko doprava a zmeni´stav na s1. Dostávame tak kon�guráciu

0 0 1 1 0 0 0 . . .s1

Pre túto kon�guráciu zasa h©adáme v na²om Turingovom stroji in²trukciu, ktorá saza£ína na s11. Je to in²trukcia s111Rs0, po jej aplikovaní dostávame kon�guráciu

0 0 1 1 0 0 0 . . .s0

Opä´ sme sa dostali do stavu s0, pri£om aktuálny znak na páske je 1, Jediná in²trukcias010Rs1, ktorá s touto kon�guráciou kore²ponduje, uº v²ak bola pouºitá! Znamená toazda, ºe je uº znova nepouºite©ná? Nie, pokojne ju môºeme, ba musíme aplikova´.Takºe máme

0 0 1 0 0 0 0 . . .s1

Teraz sme sa dostali do stavu s1, av²ak hlavou £ítané písmeno je 0. Pouºijeme tedain²trukciu s100Ns2 a dostávame

0 0 1 0 0 0 0 . . .s2

Dostali sme sa v²ak zvlá²tnej situácie: Sme totiº v stave s2, takºe na túto kon�gurá-ciu uº nemôºeme aplikova´ ºiadnu in²trukciu z ná²ho zoznamu. A to znamená, ºená² výpo£et (teda postupnos´ kon�gurácií sledujúcich in²trukcie) sa kon£í. Výsledkomtakéhoto výpo£tu je potom po£et jednotiek na páske, v na²om prípade je to teda 1.

Skúsme spusti´ ten istý Turingov stroj na inú po£iato£nú kon�guráciu, a to

0 1 1 1 1 0 0 0 0 . . .s0

Po skúsenostiach z predchádzajúcej úlohy ©ahko vidie´, ºe výpo£et prebieha takto:

0 1 1 1 1 0 0 0 0 . . .s0

0 0 1 1 1 0 0 0 0 . . .s1

0 0 1 1 1 0 0 0 0 . . .s0

0 0 1 0 1 0 0 0 0 . . .s1

0 0 1 0 1 0 0 0 0 . . .s0

0 0 1 0 1 0 0 0 0 . . .s3

Tu sa výpo£et kon£í, lebo (vzh©adom na stav s3) uº nemoºno aplikova´ ºiadnu in-²trukciu. Tentoraz je výsledok (£iºe po£et jednotiek na páske poslednej kon�gurácievýpo£tu) 2. Navy²e si môºeme v²imnú´, ºe stroj tu sko£il svoj výpo£et v stave s3.

Úloha 2.1 Odkrokujte výpo£et toho istého stroja na kon�guráciu

0 1 1 1 1 1 1 0 0 0 0 . . .s0

a na kon�guráciu

0 1 1 1 1 1 1 1 0 0 0 0 . . .s0

Ako závisia výsledok výpo£tu a výsledný stav od vstupnej kon�gurá-cie tohto typu?

24 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Aby sme mali obraz o práci Turingovho stroja úplný, uve¤me e²te jeden príklad: Apliku-jme Turingov stroj {s000Ls3, s010Rs1, s100Ns2, s111Rs0, s200Ns2} (t. j. k predchádza-júcemu stroju sme doplnili jednu novú in²trukciu) na kon�guráciu

0 1 1 1 0 0 0 . . .s0

Prvých pár krokov výpo£tu je takýchto:

0 1 1 1 0 0 0 . . .s0

0 0 1 1 0 0 0 . . .s1

0 0 1 1 0 0 0 . . .s0

0 0 1 0 0 0 0 . . .s1

0 0 1 0 0 0 0 . . .s2

0 0 1 0 0 0 0 . . .s2

0 0 1 0 0 0 0 . . .s2

...

Vidíme, ºe posledné tri znázornené kon�gurácie sú úplne rovnaké, a tak to zrejmebude pokra£ova´ aj ¤alej. To v²ak znamená, ºe výpo£et na tomto stroji z tejto kon�-gurácie sa nikdy neskon£í.

Úloha 2.2 Nájdite úvodnú kon�guráciu, pre ktorú sa výpo£et na predchádza-júcom Turingovom stroji skon£í.

Úloha 2.3 Ako budú vyzera´ predchádzajúce výpo£ty, ak v tomto Turingovomstroji namiesto in²trukcie s200Ns2 vezmeme in²trukciu s200Rs2?

2.3. Turingovsky vypo£ítate©né funkcie

Uº sme si povedali, aký má Turingov stroj výstup (bu¤ po£et jednotiek, alebo ºiadny,ak sa nezastaví), treba e²te spomenú´, ako je to s jeho vstupom:

Turingov stroj vie, samozrejme, reagova´ na kaºdú vstupnú kon�guráciu. Aby v²akbol jeho výpo£et rozumne interpretovate©ný, na²a vstupná kon�gurácia mala páskuzloºenú z tzv. blokov. Pod blokom kódujúcim £íslo x budeme rozumie´ súvislú kone£núpostupnos´ x+1 jednotiek, pred ktorými bude práve jedna nula, takºe napríklad blokkódujúci £íslo 3 bude vyzera´ takto:

0 1 1 1 1

kým blok kódujúci £íslo 0 bude

0 1

Páska kódujúca usporiadanú n-ticu 〈x1, x2, . . . , xn〉 (budeme ju nazýva´ bloková páska)potom bude zdruºením blokov kódujúcich postupne £ísla x1, x2, . . . , xn, pri£omzvy²ok pásky je vyplnený nulami. Pod ²tandardnou blokovou kon�guráciou potom bude-me rozumie´ kon�guráciu, ktorej páska je bloková, hlava je nastavená na prvej jed-notke prvého bloku a stav je s0. Takºe ²tandardná bloková kon�gurácia kódujúca²tvoricu £ísel 〈2, 3, 0, 1〉 bude vyzera´ takto:

0 1 1 1 0 1 1 1 1 0 1 0 1 1 0 0 0 . . .s0

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 25

Ke¤ºe uº takto vieme £íselne interpretova´ aj vstupy, aj výstup Turingovho stroja,môºeme tento stroj chápa´ ako prostriedok na po£ítanie funkcie, ktorej de�ni£nýmoborom sú (moºno nie niektoré) usporiadané n-tice prirodzených £ísel (pri danom,pevnom po£te n) a obor hodnôt je podmnoºinou mnoºiny prirodzených £ísel:

Budeme hovori´, ºe Turingov stroj T po£íta funkciu f s pevným kladným po£tom vstu-pov n, ak pre kaºdú usporiadanú n-ticu 〈x1, x2, . . . , xn〉 prirodzených £ísel platí:

• Ak na stroji T existuje (zrejme jediný) kone£ný výpo£et, ktorého úvodná kon-�gurácia je ²tandardná bloková a kóduje n-ticu 〈x1, x2, . . . , xn〉, tak hodnotaf(x1, . . . , xn) je rovná po£tu jednotiek na páske poslednej kon�gurácie tohtovýpo£tu.

• Ak taký kone£ný výpo£et neexistuje, tak hodnota f(x1, . . . , xn) nie je de�novaná.

Pod turingovsky vypo£ítate©nou funkciou budeme rozumie´ takú funkciu, pre ktorúexistuje Turingov stroj, ktorý ju po£íta.

Po príklad sa vrá´me k Turingovmu stroju {s000Ls3, s010Rs1, s100Ns2, s111Rs0}, ktorýsme ukáºkovo spú²´ali na ²tandardných blokových kon�guráciách

0 1 1 1 0 0 0 . . .s0

a

0 1 1 1 1 0 0 0 0 . . .s0

V prvom prípade bol teda vstup 〈2〉 a výstup 1, v druhom bol vstup 〈3〉 a výstup 2.Rie²ením úlohy 2.1 sme sa dozvedeli, ºe pre vstup 〈2m〉 (teda v prípade, ºe máme napáske 2m + 1 jednotiek), je výstupom £íslo m, kým pre vstup 2m + 1 (teda v prípade,ºe máme na páske 2m + 2 jednotiek), je výstupom £íslo m + 1. Znamená to teda, ºetento Turingov stroj po£íta funkciu f s jedným argumentom, pre ktorú platí:

f(x1) =

{k, ak x1 = 2k,k + 1, ak x1 = 2k + 1.

(Inými slovami, platí f(x) = dx2 e.)

Jemne upravený Turingov stroj {s000Ls3, s010Rs1, s100Ns2, s111Rs0, s200Ns2}, ktorýbol spustený na kon�guráciu

0 1 1 1 0 0 0 . . .s0

zasa po£ítal funkciu g s jedným argumentom, pre ktorú platí:

g(x1)

{= k, ak x1 = 2k,

nie je de�nované, ak x1 = 2k + 1.

V²imnime si, ºe ¤al²ia malá úprava tohto stroja {s000Ls3, s010Rs1, s100Ns2, s111Rs0,s200Ns2}, ktorá bola pouºitá v úlohe 2.3, po£íta tú istú funkciu g. Vidíme teda, ºejednu funkciu môºe po£íta´ i viacero rôznych Turingových strojov. Av²ak naopak toneplatí � kaºdý Turingov stroj po£íta práve jednu funkciu s daným po£tom argumentov.

Úloha 2.4 Akú funkciu s 2 argumentmi po£íta Turingov stroj {s000Ls3,s010Rs1, s100Ns2, s110Rs0}?

Úloha 2.5 Akú funkciu s 2 argumentmi po£íta Turingov stroj ∅?

Doteraz sme h©adali funkcie, ktoré h©adajú dané Turingove stroje. Úloha je v²ak ve©mi£asto úplne opa£ná � k danej funkcii treba nájs´ Turingov stroj, ktorý ju po£íta.

26 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Skúsme teda nájs´ (£iºe naprogramova´) Turingov stroj, ktorý po£íta obvyklú funkciuSúčet. Tá má dva argumenty, ako vstup výsledného Turingovho stroja teda bude slúºi´©ubovo©ná dvojica prirodzených £ísel. Zárove¬ je táto funkcia totálna (teda jej de�ni£-ný obor je celé N×N), Turingov stroj teda musíme naprogramova´ tak, aby zastal prekaºdý vstup. Vieme, ºe pri vstupe 〈x1, x2〉 je na za£iatku na páske (x1 + 1) + (x2 + 1)jednotiek, £o je o dve viac, neº naozaj treba. Úlohou teda bude dve z týchto jed-notiek zmeni´ na nuly. Ktoré to budú? Máme, pravdaºe, viacero moºností. Zdanlivonajjednoduch²ia je vymaza´ prvé dve jednotky, vec v²ak má há£ik � £o ak bude prvývstup 0? Druhá vymazaná jednotka bude musie´ by´ v takom prípade z druhého bloku,a navy²e budeme musie´ testova´, £i tento prípad nastáva, alebo nie. Tomuto testova-niu sa vyhneme, ak budeme (spolu s prvou jednotkou prvého bloku, na ktorej je hlavana za£iatku priamo nastavená) maza´ prvú jednotku druhého bloku (£iºe nahradzova´ju nulou) pre kaºdý vstup. Vezmime si teda nejaký netriviálny vstup, napríklad 〈3, 2〉(na konci má teda na páske zosta´ Súčet(3, 2) = 3 + 2 = 5 jednotiek):

0 1 1 1 1 0 1 1 1 0 0 0 . . .s0

Najprv, samozrejme, vymaºeme jednotku, na ktorej je nastavená hlava. Pritom saposunieme na ¤al²iu jednotku. Pokia© ide o stav, bolo by fatálnou chybou nezmeni´ ho,príslu²ná in²trukcia s010Rs0 by sa totiº nevykonala iba raz, ale nenávratne by vymazalacelý prvý blok jednotiek. Ten v²ak v celkovom výsledku potrebujeme, a nemôºemeho teda v ºiadnom prípade strati´. Preto zmeníme stav na iný, povedzme na s1. Povykonaní príslu²nej in²trukcie s010Rs1 sa tak dostávame do kon�gurácie

0 0 1 1 1 0 1 1 1 0 0 0 . . .s1

Teraz je na²ím cie©om prejs´ celým zvy²ným blokom jednotiek. V na²om prípade sú tri,na prechod by preto sta£ilo pouºi´ tri ¤al²ie in²trukcie. Uvedomme si, ºe ná² programtúto hodnotu x1 vo v²eobecnosti nepozná (vstupná kon�gurácia je predsa zadávaná aºneskôr), musí si preto poradi´ s ©ubovo©nou jej hodnotou. Na²´astie existuje elegantnérie²enie � sta£í pouºi´ in²trukciu s111Rs1. Ako ©ahko vidie´, po jej prvom vykonanísme opä´ v rovnakom stave s1 a hlava je opä´ na znaku 1, preto sa táto in²trukciapouºije vzápätí znova. �ahko vidie´, ºe takto sa to bude opakova´ v na²om prípadetrikrát (vo v²eobecnosti x1-krát):

0 0 1 1 1 0 1 1 1 0 0 0 . . .s1

0 0 1 1 1 0 1 1 1 0 0 0 . . .s1

0 0 1 1 1 0 1 1 1 0 0 0 . . .s1

Teraz sa uº jednoducho posunieme z deliacej nuly na prvú jednotku druhého bloku,pri£om musíme zmeni´ stav, aby sme nechtiac nepre²li cez celý druhý blok aº na jehokoniec. Vykonáme teda in²trukciu s100Rs2 a dostávame:

0 0 1 1 1 0 1 1 1 0 0 0 . . .s2

Napokon sta£í vymaza´ jednotku, na ktorej je hlava nastavená, a ke¤ºe sa tým pádomzíska správny po£et jednotiek, zmeníme stav na doposia© nepouºitý, a to in²trukcious210Ns3:

0 0 1 1 1 0 0 1 1 0 0 0 . . .s3

Na páske je poºadovaný po£et 5 (vo v²eobecnosti x1+x2) jednotiek, na túto kon�gurá-ciu uº teda nechceme aplikova´ ºiadnu in²trukciu. Vyhovujúci Turingov stroj je preto{s010Rs0, s111Rs1, s100Rs2, s210Ns3}.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 27

Úloha 2.6 Odkrokujte tento Turingov stroj pre dvojice 〈2, 3〉, 〈1, 3〉, 〈0, 3〉a 〈0, 0〉.

Zostrojme e²te Turingov stroj, ktorý po£íta funkciu Rozdiel. Tá má tieº dva argu-menty, ako vstup výsledného Turingovho stroja teda bude slúºi´ ©ubovo©ná dvojicaprirodzených £ísel. Na rozdiel od predchádzajúcej v²ak táto funkcia totálna nie je� ve¤ napr. hodnota Rozdiel(1, 2) nie je (na prirodzených £íslach) de�novaná. Zna-mená to, ºe pre niektoré vstupy (presnej²ie práve tie 〈x1, x2〉, pre ktoré platí x1 < x2)sa výpo£et na Turingovom stroji nesmie zastavi´. My²lienka Turingovho stroja, ktorýbudeme kon²truova´, je zaloºená na rovnosti (pre kladné x1 a x2)

Rozdiel(x1, x2) = Rozdiel(x1 − 1, x2 − 1)

(v prípade, ºe nie je jedna z nich de�novaná, ani druhá nie je de�novaná). Budemestriedavo maza´ jednotky (teda prepisova´ ich nulami) z oboch blokov (pri£om za-£neme druhým), a to aº dovtedy, kým jeden z blokov nezanikne.

• V prípade, ºe skôr zanikne druhý blok, platí x1 ≤ x2, a teda výsledkom po£etjednotiek v (uº redukovanom) prvom bloku, av²ak zmen²ený o 1 (ke¤ºe smeza£ali maza´ z druhého bloku, z prvého sme zatia© vymazali o jednu jednotkumenej).

• V prípade, ºe skôr zanikne prvý blok, platí x1 < x2, a teda výpo£et na stroji sanemá zastavi´.

E²te sa musíme rozhodnú´, ktoré jednotky z oboch blokov budeme maza´. V²etkymoºnosti tu síce vedú k cie©u, ak v²ak budeme maza´ prvú jednotku z prvého blokua poslednú z druhého, zachováme si výhodu existencie jedinej deliacej nuly.

Majme teda kon�guráciu

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s0

Najprv sa musíme presunú´ na poslednú jednotku druhého bloku. Na prechod jed-notkami prvého bloku sta£í nieko©kokrát pouºitá in²trukcia s011Rs0,

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s0

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s0

...0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s0

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s0

Cez deliacu nulu prejdeme pomocou in²trukcie s000Rs1:

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s1

Druhý blok prejdeme pomocou in²trukcie s111Rs1.

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s1

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s1

...0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s1

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s1

28 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Jedným krokom spä´ (pomocou in²trukcie s100Ls2) sa dostaneme na poºadovanú po-slednú jednotku druhého bloku:

0 1 1 . . . 1 1 0 1 1 . . . 1 1 0 0 0 . . .s2

Vymaºeme jednotku pod hlavou a posunieme sa do©ava (pomocou in²trukcie s210Ls3):

0 1 1 . . . 1 1 0 1 1 . . . 1 0 0 0 0 . . .s3

Teraz musíme skontrolova´, £i sme týmto vymazaním nespôsobili úplný zánik druhéhobloku. Toto testovanie urobíme pomocou dvojice in²trukcií s300Ls8 a s311Ls4:

• Ak je znak hlavy 0, znamená to, ºe druhý blok sa minul a sme na deliacej nule:

0 1 1 . . . 1 1 0 0 0 0 . . .s3

Ako sme uº povedali, v takom prípade e²te treba vymaza´ jednu jednotku z prvé-ho bloku. Vykonáme teda najprv in²trukciu s300Ls8 (stavy s5, s6 a s7 e²tebudeme potrebova´):

0 1 1 . . . 1 1 0 0 0 0 . . .s8

a potom in²trukciu s810Ns9.

0 1 1 . . . 1 0 0 0 0 0 . . .s9

Na páske tak ostalo práve x1 − x2 jednotiek, £o sme potrebovali.

• Ak je znak hlavy 1, znamená to, ºe druhý blok sa e²te neminul a treba sa tedapresunú´ na prvú jednotku prvého bloku. Po vykonaní in²trukcie s311Ls4 takdostávame:

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s4

Cez druhý blok prejdeme nieko©konásobne opakovaným vykonaním in²trukcies411Ls4:

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s4

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s4

...0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s4

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s4

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s4

Cez deliacu nulu jednorazovo in²trukciou s400Ls5:

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s5

A cez prvý blok nieko©konásobným pouºitím in²trukcie s511Ls5:

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 29

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s5

...0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s5

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s5

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s5

In²trukciou s500Rs6 sa vrátime sa na prvú jednotku prvého bloku:

0 1 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s6

A vymaºeme ju in²trukciou s610Rs7 (pozor, nie s610Rs6, to by sme stratili celýprvý blok!):

0 0 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s7

Teraz v²ak musíme otestova´, £i sme týmto vymazaním nespôsobili zánik (ten-toraz prvého) bloku:

• Ak je na mieste hlavy nula, prvý blok jednotiek sa práve minul:

0 0 0 1 1 . . . 1 1 1 0 0 0 0 . . .s7

a vtedy, ako vieme, sa výpo£et nemá skon£i´. Tu nám pomôºeme in²trukcias700Ns7, ktorej opakované vykonávanie sa uº nikdy neskon£í:

0 0 0 1 1 . . . 1 1 1 0 0 0 0 . . .s7

0 0 0 1 1 . . . 1 1 1 0 0 0 0 . . .s7

0 0 0 1 1 . . . 1 1 1 0 0 0 0 . . .s7

...

• Ak je na mieste hlavy jednotka, prvý blok jednotiek sa e²te neskon£il:

0 0 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s7

V takom prípade sa v²ak sta£í prepnú´ do stavu s0 in²trukciou s711Ns0:

0 0 1 . . . 1 1 0 1 1 . . . 1 1 1 0 0 0 0 . . .s0

Takto sme sa totiº dostali do situácie, v ktorej sme uº raz boli, jedinýmrozdielom je, ºe v oboch blokoch ubudlo po jednej jednotke. A celý cirkussa môºe za£a´ nanovo.

Výsledný Turingov stroj je teda {s011Rs0, s000Rs1, s111Rs1, s100Ls2, s210Ls3, s300Ls8,s810Ns9, s311Ls4, s400Ls5, s511Ls5, s500Rs6, s610Rs7, s700Ns7, s711Ns0}.

Odkrokujme ho pre vstup 〈2, 1〉:

0 1 1 1 0 1 1 0 0 0 . . .s0

0 1 1 1 0 1 1 0 0 0 . . .s0

0 1 1 1 0 1 1 0 0 0 . . .s0

0 1 1 1 0 1 1 0 0 0 . . .s0

0 1 1 1 0 1 1 0 0 0 . . .s1

0 1 1 1 0 1 1 0 0 0 . . .s1

0 1 1 1 0 1 1 0 0 0 . . .s1

30 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

0 1 1 1 0 1 1 0 0 0 . . .s2

0 1 1 1 0 1 0 0 0 0 . . .s3

0 1 1 1 0 1 0 0 0 0 . . .s4

0 1 1 1 0 1 0 0 0 0 . . .s5

0 1 1 1 0 1 0 0 0 0 . . .s5

0 1 1 1 0 1 0 0 0 0 . . .s5

0 1 1 1 0 1 0 0 0 0 . . .s5

0 1 1 1 0 1 0 0 0 0 . . .s6

0 0 1 1 0 1 0 0 0 0 . . .s7

0 0 1 1 0 1 0 0 0 0 . . .s0

0 0 1 1 0 1 0 0 0 0 . . .s0

0 0 1 1 0 1 0 0 0 0 . . .s0

0 0 1 1 0 1 0 0 0 0 . . .s1

0 0 1 1 0 1 0 0 0 0 . . .s1

0 0 1 1 0 1 0 0 0 0 . . .s1

0 0 1 1 0 1 0 0 0 0 . . .s2

0 0 1 1 0 0 0 0 0 0 . . .s3

0 0 1 1 0 0 0 0 0 0 . . .s8

0 0 1 0 0 0 0 0 0 0 . . .s9

Aj na tomto odkrokovaní sme si mohli v²imnú´, ºe napriek svojej extrémnej jednodu-chosti sú Turingove stroje schopné simulova´ jednak vetvenie (v prípade predchádza-júceho stroja sa tak dialo v stavoch s3 a s7), jednak cyklus (ke¤ sme sa zo stavu s7

opä´ dostali do stavu s0), ktorý sa kon£il testom (²lo teda o cyklus neprávom zazná-vaného typu �repeat-until�).

Úloha 2.7 Odkrokujte tento Turingov stroj pre vstupy 〈2, 0〉, 〈1, 1〉, 〈0, 0〉a 〈1, 2〉.

Úloha 2.8 Vytvorte Turingove stroje po£ítajúce funkcie:

• Minimum (vracia najmen²ie z 2 £ísel),

• Maximum (vracia najv䣲ie z 2 £ísel),

• Vzdialenosť (vracia absolútnu hodnotu rozdielu 2 £ísel).

2.4. Rekurzívne funkcie

Ukázali sme zopár príkladov turingovsky vypo£ítate©ných funkcií. Vzniká v²ak prirodze-ná otázka, £i existuje aj opa£ný príklad � funkcia (samozrejme, de�novaná len nanejakej podmnoºine tíc prirodzených £ísel s hodnotami tieº z N), ktorá by turingovskyvypo£ítate©ná nebola. Odpove¤ poskytuje � pre niekoho azda prekvapivo � mate-matika, presnej²ie teória vypo£ítate©nosti. Jedným z jej cie©ov je de�novanie mnoºinytzv. rekurzívnych funkcií, o ktorej sa neskôr ukáºe, ºe je identická s mnoºinou (v pred-chádzajúcej stati spomínaných) turingovsky vypo£ítate©ných funkcií. Táto mnoºina jede�novaná induktívne, £iºe v týchto dvoch etapách:

1. explicitne vyberieme nieko©ko základných prvkov,

2. popí²eme nieko©ko postupov, pomocou ktorých budeme môc´ z jednoduch²íchprvkov vytvori´ zloºitej²ie.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 31

V na²om prípade mnoºiny rekurzívnych funkcií budú hra´ úlohu základných prvkovfunkcie nasledujúcich troch typov:

• Funkcia Z (z anglického �zero� � nula) bude ma´ de�ni£ný obor N a bude de�-novaná vz´ahom

Z(x) = 0.

Ide teda o nulovú funkciu, £iºe napríklad Z(4) = 0 alebo Z(123) = 0.

• Funkcia S (z anglického �successor� � nasledovník) bude ma´ tieº de�ni£ný oborN a bude pre ¬u plati´

S(x) = x + 1.

Takºe napríklad S(4) = 5 alebo S(123) = 124.

• Kým prvé dva typy majú po jedinej funkcii, posledný ich bude obsahova´ neko-ne£ne ve©a. Pre kaºdé kladné prirodzené £íslo n a kaºdé i z mnoºiny {1, 2, . . . , n}de�nujme funkciu Pn

i (z anglického �projection� � projekcia) s de�ni£ným obo-rom Nn takto:

Pni (x1, x2, . . . , xn) = xi.

Konkrétne napríklad pre n = 3 a i = 2 teda máme projekciu P32, pre ktorú

platí P32(x1, x2, x3) = x2 (alebo rovnako dobre P3

2(a, b, c) = b), £iºe napríkladP32(34, 56, 78) = 56 alebo P3

2(4, 0, 3) = 0. Analogicky trebárs P44(4, 0, 3, 5) = 5 alebo

P21(9, 4) = 9. Za osobitnú zmienku stojí ²peciálny prípad P1

1, lebo P11(x) = x,

a teda ide vlastne o identitu.

V²imnime si, ºe v²etky tieto funkcie sú totálne, t. j. sú de�nované pre v²etky prípustnévstupy � Z a S pre kaºdé prirodzené £íslo a Pn

i pre kaºdú n-ticu prirodzených £ísel.

Prvú etapu de�nície rekurzívnych funkcií sme tým uzavreli, po¤me na druhú:

Najprv nieko©ko príkladov:

• V²imnime si, £o sa stane, ak do funkcie S �dosadíme� (t. j. �substituujeme�)funkciu Z (presnej²ie � jej funk£nú hodnotu). Pre ©ubovo©né prirodzené £íslox potom dostávame S(Z(x)) = S(0) = 1. Vytvorili sme tak vlastne kon²tantnúfunkciu C1 vracajúcu pre kaºdý vstup hodnotu 1.

• Do funkcie S v²ak môºeme substituova´ aj samu seba. Dostávame tak S(S(x)) =S(x + 1) = x + 2, vytvorili sme teda funkciu, ktorá pre daný vstup vráti hodnotuo 2 v䣲iu.

• Ak do S substituujeme trebárs P32, dostávame S(P3

2(x1, x2, x3)) = S(x2) = x2 + 1.Uvedomme si v²ak, ºe výsledná funkcia má za vstup nie jediné prirodzené £íslo,ale usporiadanú trojicu. Jej výstupom je potom hodnota druhej zloºky tohtovstupu zv䣲ená o 1.

• Substituova´ môºeme napríklad aj do P32. Tá v²ak má tri argumenty, substituova´

teda musíme hodnoty troch funkcií (av²ak v tom istom bode!). Ak to budú trebársZ(x), S(x) a opä´ S(x), dostávame P3

2(Z(x), S(x), S(x)) = P32(0, x+1, x+1) = x+1.

Výsledná funkcia (v²imnime si, ºe to nie je ni£ iné ako S) má teda tieº jedenvstup.

Vo v²eobecnosti budeme pod substitúciou rozumie´ proces, do ktorého vstupuje jednafunkcia h, ktorej vstupy sú z mnoºiny Nk, a k ¤al²ích funkcií g1, g2, . . . , gk, ktorýchvstupy sú z mnoºiny Nn. Výsledkom tohto procesu bude funkcia f, ktorej vstupy súz mnoºiny Nn (t. j. rovnako ako pri funkciách gi) a pre ktorú platí vz´ah

f(x1, x2, . . . , xn) = h(g1(x1, x2, . . . , xn), g2(x1, x2, . . . , xn), . . . , gk(x1, x2, . . . , xn))

(pri£om ©avá strana je de�novaná práve vtedy, ke¤ je de�novaná pravá strana). V ta-kom prípade budeme hovori´, ºe funkcia f vznikla substitúciou z funkcií h a g1, g2,. . . , gk.

32 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Napríklad v prvom vy²²ie uvedenom príklade hrá úlohu funkcie h (do ktorej substituu-jeme) funkcia S, takºe po£et jej argumentov k je 1. Úlohu funkcie g1 (ktorej hodnotudo h substituujeme) hrá funkcia Z, takºe po£et jej argumentov n je 1. Úlohu výsled-nej funkcie f potom hrá spomínaná kon²tantná funkcia C1 (ktorá má tieº jeden argu-ment), lebo naozaj platí C1(x1) = S(Z(x1)) (obe strany sa totiº rovnajú 1). Môºemeteda poveda´, ºe funkcia C1 vznikla substitúciou z funkcií Z a S.

Úloha 2.9 Rozoberte podobne zvy²né tri príklady.

Pre kaºdé prirodzené £íslo m teraz de�nujme kon²tantnú funkciu Cm s jedným argu-mentom vz´ahom

Cm(x) = m

(takºe C0 je vlastne Z, C1 sme uº mali de�nované a napríklad C7(x) = 7). Potom platí

C2(x1) = 2 = S(1) = S(C1(x1)),

takºe funkcie C2, S a C1 sp¨¬ajú vzorec z de�nície substitúcie. To teda znamená, ºefunkcia C2 vznikla substitúciou z funkcií S a C1. Analogicky

C3(x1) = 3 = S(2) = S(C2(x1)),

takºe funkcia C3 vznikla substitúciou z funkcií S a C2. Môºeme to zrejme úplne zov²e-obecni´: Pre ©ubovo©né prirodzené £íslo m platí

Cm+1(x1) = m + 1 = S(m) = S(Cm(x1)),

funkcia Cm+1 teda vznikla substitúciou z funkcií S a Cm.

Pokra£ujme ¤alej: Pre kaºdé kladné prirodzené £íslo n a kaºdé prirodzené £íslo mde�nujme kon²tantnú funkciu Cn

m s n argumentmi vz´ahom

Cnm(x1, x2, . . . , xn) = m

(napríklad C39(a, b, c) = 9). �peciálne funkcia C1

m je teda práve funkcia Cm. �ahko vi-die´, ºe platí

Cnm(x1, x2, . . . , xn) = m = Cm(x1) = Cm(Pn

1 (x1, x2, . . . , xn)),

takºe funkcia Cnm vznikla substitúciou z funkcií Cm a Pn

1 .

Uvedomme si, ºe kým na za£iatku sme mali len nieko©ko základných funkcií, pomocousubstitúcie vytvorili sadu nových (Cm, resp. Cn

m). Podobne by sme mohli pokra£ova´i ¤alej, a dostali tak nieko©ko ¤al²ích typov funkcií, z ktorých si v²ak drvivá v䣲inavzh©adom na svoju nezaujímavos´ nezaslúºi ani len meno. Samotná substitúcia nám uºtotiº principiálne ni£ nové neprinesie, budeme musie´ pouºi´ zbra¬ v䣲ieho kalibru� postup, ktorý dal funkciám, s ktorými pracujeme, i meno.

Ide o proces zvaný rekurzia. Pre dané kladné prirodzené £íslo n sú jeho vstupom dvefunkcie: h, ktorej potenciálnymi vstupmi sú n-tice prirodzených £ísel, a g, ktorejvstupmi sú (n + 2)-tice prirodzených £ísel. Výstupom rekuzie je funkcia, ktorej vstupysú (n + 1)-tice prirodzených £ísel a pre ktorú platia (tentoraz dva) vz´ahy:

1◦ f(x1, . . . , xn, 0) = h(x1, . . . , xn).

2◦ f(x1, . . . , xn, y + 1) = g(x1, . . . , xn, y, f(x1, . . . , xn, y)).

(Opä´ pritom platí, ºe ©avé strany sú de�nované práve vtedy, ke¤ sú de�novanépravé.) V takom prípade budeme hovori´, ºe funkcia f vznikla rekurziou z funkciíh a g.

V²imnime si oprávnenos´ názvu rekurzia � na výpo£et hodnoty funkcie f v bode(s poslednou zloºkou) y +1 pouºívame hodnotu tej istej funkcie f v bode (s poslednouzloºkou) y (nemenné hodnoty x1, . . . , xn môºeme právom chápa´ ako parametre).

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 33

Rekuziu môºeme (ba musíme) pouºi´ na vytvorenie funkcie Súčet (de�novanej, samo-zrejme, vz´ahom Súčet(a, b) = a + b). Ak teda má Súčet hra´ úlohu f z de�nícierekurzie, ktoré funkcie budú hra´ úlohy g a h? Uvedomme si, ºe v takom prípade prepo£et argumentov funkcie f, t. j. Súčet, platí n+1 = 2, a teda n = 1. Na²e dva vzorcemajú potom tvar:

1◦ Súčet(x1, 0) = h(x1).

2◦ Súčet(x1, y + 1) = g(x1, y, Súčet(x1, y)).

Prvý vz´ah teda hovorí, ºe

h(x1) = Súčet(x1, 0) = x1 + 0 = x1,

£iºe funkcia h nie je ni£ iné ako identita P11. Pod©a druhého vz´ahu má plati´

g(x1, y, Súčet(x1, y)) = Súčet(x1, y+1) = x1 +(y+1) = (x1 +y)+1 = Súčet(x1, y)+1.

Sta£í teda vzia´ funkciu g de�novanú vz´ahom g(a, b, c) = c + 1, potom skuto£neplatí poºadovaný vz´ah g(x1, y, Súčet(x1, y)) = Súčet(x1, y) + 1, a tak funkcia Súčetvznikne rekurziou z funkcií P1

1 a g. Máme tu v²ak e²te jeden dlh � funkciu g sme zatia©nevyrobili. Hne¤ ho v²ak splatíme:

g(a, b, c) = c + 1 = S(c) = S(P33(a, b, c)).

Funkcia g teda vznikla substitúciou zo (základných) funkcií S a P33. Takto sme (hoci

na viac krokov) vytvorili funkciu Súčet zo základných funkcií pomocou substitúciea rekurzie.V²imnime si e²te do£asný charakter

ozna£enia funkcie g, ktorý je (narozdiel od trvalého ozna£eniafunkcií Z, S, Pn

i , £i Súčet)vyjadrený kurzívou. Znamená to, ºepo ukon£ení príkladu sa takétodo£asné kurzívové ozna£enieuvo©¬uje a môºe by´ ¤alej pouºitév inom zmysle.

Preto napríklad na ozna£eniemnoºiny prirodzených £ísel zásadnepouºívame ozna£enie N, a niekurzívové N.

�al²ím príkladom funkcie, na kon²trukciu ktorej je nevyhnutná rekurzia, je Súčin(pri£om Súčin(a, b) = ab). V jeho prípade majú de�ni£né vzorce rekurzie tvar:

1◦ Súčin(x1, 0) = h(x1).

2◦ Súčin(x1, y + 1) = g(x1, y, Súčin(x1, y)).

Prvý vz´ah hovorí, ºe h(x1) = Súčin(x1, 0) = x1 · 0 = 0, t. j. h = Z. Pod©a druhéhog(x1, y, Súčin(x1, y)) = Súčin(x1, y + 1) = x1(y + 1) = x1y + x1 = Súčin(x1, y) + x1,takºe sta£í vzia´ g také, ºe g(a, b, c) = c + a. Pre takéto g platí

g(a, b, c) = c + a = Súčet(c, a) = Súčet(P33(a, b, c), P3

1(a, b, c)),

takºe funkcia g vznikla substitúciou z (uº skon²truovaných, resp. základných) funkciíSúčet a P3

3, P31. Funkcia Súčin potom vznikla rekurziou z funkcií Z a tejto g.

Úloha 2.10 Skon²truujte z uº vytvorených funkcií pomocou substitúciea rekurzie funkciu Mocnina, pre ktorú platí Mocnina(a, b) = ab

(²peciálne Mocnina(0, 0) = 00 = 1).

Aby sme sa mohli vyjadrova´ jednoduch²ie, budeme funkcie, ktoré vzniknú zo zá-kladných pouºitím kone£ného po£tu substitúcií a/alebo rekurzií, nazýva´ primitívnerekurzívne. Vieme uº teda, ºe medzi ne patria základné funkcie Z, S, Pn

i , ale i Cnm,

Súčet, Súčin, £i Mocnina. V²imnime si, ºe kaºdá primitívne rekurzívna funkcia jetotálna. Nie je v²ak ni£ prekvapujúce, lebo, ako sme uº raz zdôraznili, v²etky zá-kladné funkcie sú totálne, a, ako ©ahko nahliadneme, ako substitúcia, tak rekurziatotalitu zachovávajú.

Vrá´me sa e²te k rekurzii: Zatia© sme pri nej poºadovali, aby bol po£et n parametrovx1, . . . , xn kladný. Dá sa v²ak ukáza´, ºe na to, aby bola výsledná funkcia primitívnerekurzívna, táto podmienka nie je nutná. V prípade neprítomnosti týchto parametrovpodmienka 1◦ úplne vypadne a druhá má tvar

f(y + 1) = g(y, f(y)).

34 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

Takºe ak je g primitívne rekurzívna, taká bude aj f.

Pomocou tejto vlastnosti ©ahko nahliadneme primitívnu rekurzivitu niektorých dôleºi-tých, hoci nenápadných, funkcií. Jednou z nich je funkcia KváziPredchodca, ktorávznikne dode�novaním netotálnej funkcie inverznej k funkcii S v bode 0 takto:

KváziPredchodca(a) =

{0, ak a = 0,a− 1, ak a > 0.

Ke¤ºe pre kaºdé prirodzené £íslo y platí y + 1 > 0, dostávame

KváziPredchodca(y + 1) = y = P21(y, KváziPredchodca(y)),

a pretoºe funkcia P21 je primitívne rekurzívna, taká je aj funkcia KváziPredchodca.

Úloha 2.11 Ukáºte podobne, ºe aj funkcie Signum a AntiSignum de�novanévz´ahmi

Signum(a) =

{0, ak a = 0,1, ak a > 0,

AntiSignum(a) =

{1, ak a = 0,0, ak a > 0,

sú primitívne rekurzívne.

Úloha 2.12 Ukáºte, ºe funkcia KváziRozdiel, ktorá vznikne roz²írením ne-totálnej funkcie Rozdiel takto:

KváziRozdiel(a, b) =

{a− b, ak a > b,

0, ak a ≤ b,

je primitívne rekurzívna.Návod V druhom kroku rekurzie vyuºite vz´ah KváziRozdiel(x1, y + 1) =

KváziPredchodca(KváziRozdiel(x1, y)).Úloha 2.13 Ukáºte, ºe logická (t. j. majúca hodnoty len 0 a 1) funkcia

JeVäčšieAko de�novaná vz´ahom

JeVäčšieAko(a, b) =

{1, ak a > b,

0, ak a ≤ b,

je primitívne rekurzívna.Návod Vyuºite vz´ah JeVäčšieAko(a, b) = Signum(KváziRozdiel(a, b)).Úloha 2.14 De�nujte analogicky logické funkcie

• JeMenšieAko,

• JeMenšieAleboRovnakéAko,

• JeVäčšieAleboRovnakéAko,

• JeRovnakéAko,

• JeRôzneOd

a ukáºte, ºe sú primitívne rekurzívne.

Povedali sme uº, ºe kaºdá primitívne rekurzívna funkcia je totálna, ale i to, ºe naprí-klad funkcia Rozdiel totálna nie je (lebo trebárs hodnota Rozdiel(1, 2) nie je de�no-vaná). To teda znamená, ºe táto funkcia nemôºe by´ primitívne rekurzívna. Na²´astiev²ak máme poslednú, tretiu metódu, ktorá nám kon²trukciu funkcie Rozdiel umoºní.Tento postup sa nazýva minimalizácia. Pri danom kladnom prirodzenom £ísle n je jehovstupom tentoraz jediná funkcia g, ktorá má n + 1 argumentov, a výstupom je funkciaf s n argumentmi, pre ktorú platí

f(x1, . . . , xn) = min{y : g(x1, . . . , xn, y) = 0 ∧ (∀i < y)g(x1, . . . , xn, i) > 0}

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 35

(ak je minimovaná mnoºina prázdna, f nie je v tomto bode de�novaná). Potom povie-me, ºe funkcia f vznikla minimalizáciou z funkcie g.

V²imnime si, ºe ak je funkcia g totálna (a kaºdá logická funkcia taká je), sa tentovz´ah dokonca zrejme redukuje na jednoduch²í tvar

f(x1, . . . , xn) = min{y : g(x1, . . . , xn, y) = 0}.

Ak má hra´ úlohu f funkcia Rozdiel, platí n = 2, h©adáme teda (najlep²ie) logickúfunkciu g, pre ktorú platí

Rozdiel(x1, x2) = min{y : g(x1, x2, y) = 0}.

Vieme, ºe Rozdiel(a, b) = c platí práve vtedy, ke¤ a = Súčet(b, c), t. j. ke¤ platíJeRôzneOd(a, Súčet(b, c)) = 0. Sta£í teda vzia´ pomocnú funkciu h takú, ºe

h(a, b, c) = Súčet(b, c) = Súčet(P32(a, b, c), P3

2(a, b, c)),

a funkciu g tak, ºe bude plati´

g(a, b, c) = JeRôzneOd(a, Súčet(b, c)) = JeRôzneOd(P31(a, b, c), h(a, b, c)).

Z týchto vyjadrení vyplýva, ºe ako h, tak (následne) g sú primitívne rekurzívne,a navy²e funkcia Rozdiel vznikla z funkcie g minimalizáciou.

Na tomto príklade si môºeme v²imnú´, ºe minimalizácia nemusí zachováva´ totalitu� vstupná funkcia g je totálna, av²ak výsledná funkcia Rozdiel nie.

Teraz uº môºeme de�nova´ rekurzívne funkcie. Budú to práve tie, ktoré vzniknú zozákladných pomocou kone£ného po£tu substitúcií, rekurzií a minimalizácií.

2.5. Vz´ah rekurzívnych a turingovsky vypo£ítate©ných funkcií

Sústre¤me sa teraz na niektoré pojmy z teórie (prirodzených) £ísel. Za£nime dôleºitý-mi pojmami delite©nosti a prvo£íselnosti, ktoré môºeme de�nova´ pomocou výroko-vých funkcií:

• Delite©nos´ moºno vyjadri´ logickou funkciou Delí s dvoma argumentmi, z kto-rých prvý bude delite©om druhého:

Delí(a, b) = 1 práve vtedy, ke¤ (∃c)b = ac.

Takºe napríklad Delí(3, 6) = 1 (príslu²né c je zrejme 2), kým Delí(3, 5) = 0 (leboneexistuje (prirodzené £íslo) c, pre ktoré by platilo 3c = 5).

• Prvo£íselnos´ bude vyjadrená logickou funkciou JePrvočíslo s jedným argumen-tom a pouºijeme v nej pred chví©ou de�novanú funkciu Delí:

JePrvočíslo(b) = 1 práve vtedy, ke¤

b > 1 ∧ (∀a)((a > 1 ∧ a < b)→ Delí(a, b) = 0).

Takºe napríklad JePrvočíslo(3) = 1, kým JePrvočíslo(4) = 0.

Ako je to s rekurzivitou týchto dvoch funkcií? Prvá výroková funkcia obsahuje ná-sobenie, ktoré sme vyjadrili primitívne rekurzívnou funkciou Súčin, a rovnos´ vyjad-renú tieº primitívne rekurzívnou logickou funkciou JeRovnakéAko. Podobne v druhej(po príslu²nom prepise) pouºívame primitívne rekurzívne logické funkcie JeVäčšieAkoa JeMenšieAko a kon²tanty 1 a 0. Zatia© teda ni£ (primitívnu) rekurzivitu nekazí. Dá saukáza´, ºe ju nepokazí ani pouºitie logických spojok (v na²om prípade sú to ∧ a →).Problémom sú v²ak kvanti�kátory (∃c), resp. (∀a), ktoré rekurzivitu pokazi´ môºu. Aksa v²ak podarí takúto kvanti�káciu rozumne zhora ohrani£i´, (primitívna) rekurzivita

36 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

sa zachová. A to sa v oboch na²ich prípadoch podarí � ©ahko vidie´, ºe prvú kvanti�ká-ciu sta£í zmeni´ na (∃c ≤ b) a druhú na (∀a ≤ b). Takto sa nám podarilo ukáza´, ºe akoDelí, tak (následne) JePrvočíslo sú primitívne rekurzívne funkcie.

Teórii £ísel sa nevenujeme náhodou, umoº¬uje nám totiº efektívne kódovanie. To jezaloºené na tzv. základnej vete aritmetiky, ktorá hovorí, ºe kaºdé prirodzené £íslov䣲ie neº 1 moºno jednozna£ným spôsobom rozloºi´ na sú£in prvo£ísel. Takºe naprí-klad

12936 = 2 ·2 ·2 ·3 ·7 ·7 ·11 = 23 ·31 ·50 ·72 ·111 = 23 ·31 ·50 ·72 ·111 ·130 ·170 ·190 ·230 · · ·

Kaºdému £íslu tak môºeme priradi´ postupnos´ exponentov jeho prvo£íselného roz-kladu. Uvedomme si, ºe od istého miesta musí obsahova´ samé nuly, takºe ju vlastnemôºeme povaºova´ aj za kone£nú.

Tento prístup v²ak môºeme aj oto£i´: Kaºdú kone£nú postupnos´ prirodzených £íselmôºeme zakódova´ do jediného prirodzeného £ísla tak, ºe jej £leny budeme povaºo-va´ za exponenty jeho prvo£íselného rozkladu (pravdaºe, prvo£ísla v ¬om sú usporia-dané pod©a ve©kosti). Napríklad postupnosti 〈3, 1, 0, 2, 1〉 priradíme takýmto spôsobomkód 23 ·31 ·50 ·72 ·111 = 12936. Samozrejme, z výsledného kódu vieme pomocou (e²te razzdôraznime, ºe jednozna£ného) prvo£íselného rozkladu pôvodnú postupnos´ spätnezrekon²truova´. Dôleºité pritom je, ºe oba procesy � zakódovanie i rozkódovanie �sú primitívne rekurzívne.

Túto my²lienku môºeme s úspechom vyuºi´ za efektívne kódovanie jednotlivých po-jmov z teórie Turingových strojov. Vezmime si napríklad in²trukciu. Pri prvej a piatejzloºke sú podstatné vlastne iba indexy, £o sú prirodzené £ísla, druhá a tretia sú priamoprirodzené £ísla (hoci iba 0 alebo 1), ²tvrtú môºeme pri troche fantázie tieº chápa´ akoinak zapísané prirodzené £íslo (napríklad L bude 0, N bude 1 a Rmôºe by´ 2). In²trukciuteda môºeme chápa´ ako usporiadanú päticu prirodzených £ísel (napríklad s210Ns3 jevlastne 〈2, 1, 0, 1, 3〉), ktorú tak môºeme zakódova´ vy²²ie uvedeným spôsobom (takºev na²om prípade na £íslo 22 · 31 · 50 · 71 · 113). Takéto nahradenie nejakého pojmusa nazýva gödelovské o£íslovanie. V²imnime si, ºe nie kaºdé £íslo je kódom nejakej

Kurt Gödel (1906�1978), rakúskymatematik a logik(zdroj: http://en.wikipedia.org/wiki/

Kurt_G%C3%B6del)

in²trukcie, musí zrejme sp¨¬a´ tieto podmienky:

• Musí by´ kladné.

• V jeho prvo£íselnom rozklade sa môºe vyskytova´ len prvých pä´ prvo£ísel.

• Exponenty pri prvo£íslach 3 a 5 môºu by´ len 0 alebo 1.

• Exponent pri prvo£ísle 7 môºe by´ len 0, 1, alebo 2.

Tieto (nutné, ale i posta£ujúce) podmienky moºno zapísa´ do jedinej výrokovej funk-cie, ktorá obsahuje len primitívne rekurzívne funkcie, logické spojky a ohrani£enékvanti�kátory, £o znamená, ºe by´ kódom nejakej in²trukcie je tieº primitívne rekur-zívna vlastnos´.

Úloha 2.15 Navrhnite gödelovské o£íslovanie ¤al²ích pojmov z teórieTuringových strojov:

• Turingov stroj (nie ako mnoºina, ale ako postupnos´ in²truk-cií),

• páska,

• kon�gurácia,

• kone£ný výpo£et.

Pomocou týchto primitívne rekurzívnych funkcií (a navy²e jedinej minimalizácie) vie-me rekurzívne vyjadri´ aj po£et jednotiek na páske poslednej kon�gurácie výpo£tu na

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 37

danom Turingovom stroji za£ínajúceho sa danou ²tandardnou blokovou kon�guráciou.To v²ak znamená, ºe kaºdá turingovsky vypo£ítate©ná funkcia je rekurzívna.

Platí aj opa£né tvrdenie � ºe kaºdá rekurzívna funkcia je turingovsky vypo£ítate©ná� ºia©, nedostatok priestoru nám znemoº¬uje predvies´ £o i len základné £rty tohtodôkazu. Musíme sa preto uspokoji´ len s poznámkou, ºe jeho najrozsiahlej²ia £as´ jezaloºená na matematickej indukcii kopírujúcej de�níciu mnoºiny rekurzívnych funkcií.

Dospeli sme tak k dôleºitému dôsledku zhr¬ujúcemu obe tvrdenia � mnoºina turingov-sky vypo£ítate©ných funkcií a mnoºina rekurzívnych funkcií sú totoºné, a to i napriekrôznosti prostredí, v ktorých boli de�nované.

Ke¤ºe Turingov stroj môºeme chápa´ ako de�níciu algoritmu, by´ rekurzívny znamenápráve by´ algoritmický rozhodnute©ný.

2.6. Problém zastavenia Turingovho stroja

Majme dve funkcie, ZastavíSa a Výsledok, s dvoma parametrami, pri£om platí:

• ZastavíSa(x, t) = 1, ak sa výpo£et za£ínajúci sa ²tandardnou blokovou kon�-guráciou s jedným blokom kódujúcim vstup x na Turingovom stroji s gödelovským£íslom t zastaví. V takom prípade hodnota Výsledok(x, t) vyjadruje po£et jed-notiek poslednej kon�gurácie tohto výpo£tu.

• V opa£nom prípade ZastavíSa(x, t) = 0 a hodnota Výsledok(x, t) nie je de�no-vaná.

Z predchádzajúcej state vieme, ºe takto de�novaná funkcia Výsledok je rekurzívna.Ukáºeme sporom, ºe funkcia ZastavíSa rekurzívna nie je:

Predpokladajme teda, ºe ZastavíSa je rekurzívna. De�nujme funkciu f vz´ahom:

f(x) =

{Výsledok(x, x) + 1, ak ZastavíSa(x, x) = 1,0, ak ZastavíSa(x, x) = 0.

Funkcia f je zrejme totálna a tieº rekurzívna (ke¤ºe ZastavíSa je pod©a predpokladurekurzívna). To v²ak znamená, ºe je aj turingovsky vypo£ítate©ná (ke¤ºe tieto pojmysú, ako uº vieme, totoºné). Existuje teda Turingov stroj, ktorý funkciu f po£íta. Akjeho kód ozna£íme t0, pod©a state o Turingových strojoch a pod©a de�nícií funkciíVýsledok a ZastavíSa platí

f(x)

{= Výsledok(x, t0), ak ZastavíSa(x, t0) = 1,nie je de�novaná, ak ZastavíSa(x, t0) = 0.

My v²ak vieme, ºe funkcia f je totálna, pre kaºdé x teda nastáva prvá moºnos´,£iºe f(x) = Výsledok(x, t0) a ZastavíSa(x, t0) = 1. To teda znamená, ºe výpo£et nana²om stroji s £íslom t0 sa pre kaºdý vstup x zastaví (a na páske ostane správny po£etjednotiek).

V²imnime si teraz hodnotu f(t0) (ná²mu stroju teda ako vstup podhodíme práve jeho£íslo). Vieme, ºe platí ZastavíSa(t0, t0) = 1, a teda aj v prvom vz´ahu nastáva prvámoºnos´: f(t0) = Výsledok(t0, t0)+1. Z predchádzajúceho odseku v²ak vieme, ºe platíf(t0) = Výsledok(t0, t0), £o je spor.

To teda znamená, ºe funkcia ZastavíSa nie je rekurzívna; inými slovami � problém, £isa výpo£et na danom Turingovom stroji pri danom vstupe zastaví, nie je algoritmickýrozhodnute©ný.

Aktivita Uvaºujte nad dôsledkami tohto tvrdenia v súvislosti s moºnos´amivýpo£tovej techniky.

38 �al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika

�o sme sa nau£ili v tomto module

V kapitole o kone£ných automatoch sme sa nau£ili:

1. kon²truova´ a formalizova´ kone£né automaty deterministické (aj nedeter-ministické) viacerými spôsobmi, vyjadri´ jazyk akceptovaný kone£ným au-tomatom,

2. ukáza´, ºe pre niektoré jazyky neexistuje kone£ný automat (teda nie sú regu-lárne),

3. skon²truova´ deterministický kone£ný automat k nedeterministickému.

V kapitole Turingove stroje sme:

1. sa nau£ili programova´ neklasickým spôsobom,

2. porozumeli hlb²ím vz´ahom medzi matematikou a informatikou,

3. pochopili, ºe nie v²etky problémy sa dajú rie²i´ mechanicky.

Literatúra a pouºité zdroje

[1] J. E. Hopcroft, J. D. Ullman: Formal Languages and Their Relation to Automata.Reading (Mass.), Addison-Wesley, Publ. Comp. Inc., 1969. (Slovenský preklad: For-málne jazyky a automaty. Bratislava, Alfa, 1978.)

[2] J. E. Hopcroft, R. Motwani, J. D. Ullman: Introduction to Automata Theory, Lan-guages, and Computation. Addison-Wesley, 2001.

[3] J. Hromkovi£: Theoretical Computer Science. Introduction to Automata, Com-putability, Complexity, Algorithmics, Randomization, Springer, 2010.

[4] M. Chytil: Automaty a gramatiky. Matematický seminár SNTL, Praha, 1984.

[5] B. Rovan a kol.: Matematická informatika II. Skriptum MFF UK, Bratislava, 1982.

[6] V. Geffert, P. Mlynar£ík: Zbierka príkladov k predná²ke Automaty a formálnejazyky. PF UPJ�, 2010.

[7] Wikipedia � http://sk.wikipedia.org/wiki/Automat, http://en.wikipedia.org/wiki/Automata_theory

[8] L. Bukovský: Teória algoritmov. Skriptum PF UPJ�, Ko²ice, 2004

[9] J. Gruska, I. M. Havel, J. Wiedermann, J. Zelený: Po£íta£ová revolúcia. Zborníkpredná²ok SOFSEM '83, Výskumné výpo£tové stredisko, Bratislava, 1983.

�al²ie vzdelávanie u£ite©ov základných a stredných ²kôl v predmete informatika 39

40| Ďalšie vzdelávanie učiteľov základných škôl a stredných škôl v predmete informatika

Tento študijný materiál vznikol ako súčasť národného projektu Ďalšie vzdelávanie učiteľov základných škôl a stredných škôl v predmete informatika v rámci Aktivity „Vzdelávanie nekvalifikovaných učiteľov informatiky na 2. stupni ZŠ a na SŠ“.

Autori © doc. RNDr. Gabriela Andrejková, CSc. doc. RNDr. Stanislav Krajči, PhD.

Názov Ďalšie vzdelávanie učiteľov základných škôl a stredných škôl v predmete informatika

Podnázov Didaktika programovania pre stredné školy 1

Študijný materiál prešiel recenzným pokračovaním.

Recenzenti doc. RNDr. Dana Pardubská, CSc. Mgr. Alexander Szabari, PhD.

Počet strán 40

Náklad 300 ks

Prvé vydanie, Bratislava 2011

Všetky práva vyhradené.

Toto dielo ani žiadnu jeho časť nemožno reprodukovať bez súhlasu majiteľa práv.

Vydal Štátny pedagogický ústav, Pluhová 8, 830 00 Bratislava, v súčinnosti s Univerzitou Pavla Jozefa Šafárika v Košiciach, Univerzitou Komenského v Bratislave, Univerzitou Konštantína Filozofa v Nitre, Univerzitou Mateja Bela v Banskej Bystrici a Žilinskou univerzitou v Žiline

Vytlačil BRATIA SABOVCI, s r.o., Zvolen

ISBN 978–80–8118–081-1