Automaten en Berekenbaarheid Bart Demoen KU Leuven 2016-2017 Les 1: 1-19 beslissingsproblemen, talen, reguliere expressies, reguliere talen, eindige toestandsautomaten AB’16 Caveat I I I I I 2/15 deze reeks slides/filmpjes is geen substituut voor de cursustekst niet alles wordt hier behandeld bijna niks wordt behandeld tot het niveau dat je moet kennen of kunnen het detail in de cursus (tekst en les) is de maatstaf op het einde staat telkens één slide met wat je zeker moet kennen/kunnen: niet exhaustief ! VOORBEREID naar LES en OEFENINGEN AB’16 Beslissingsproblemen I I I I I 3/15 elk programma heeft input en output om een output te berekenen moet je elke bit ervan berekenen één bit is als een accept/reject of ja/nee daarom: bestudeer beslissingsproblemen met een aftelbaar oneindig domein Dom een beslissingsprobleem ⇔ een deel L van Dom en generische vraag: voor gegeven s ∈ Dom, is s ∈ L ? AB’16 Nog eens over het beslissingsprobleem I I I I I input voor een programma bestaat uit een eindige opeenvolging van tekens die tekens komen uit een eindige verzameling Σ het domein is de verzameling van alle mogelijke eindige strings met tekens van Σ dat domein duiden we aan met Σ∗ als L ⊆ Σ∗ , dan noemen we L een taal (over Σ) AB’16 4/15 Hoe een taal beschrijven ? I I I I 5/15 wiskundig: L = {i|i ∈ N, i mod 2 = 1} in woorden: de oneven getallen de vorm: L = {a1 a2 ...an |ai ∈ {0, 1}, n ∈ N, an = 1} een programma: oneven(i): if (i mod 2 == 1) return(TRUE); return(FALSE); welke beschrijvingen zijn handig om I te testen of een gegeven getal oneven is ? I oneven getallen te genereren ? I om een tester te genereren ? I om een generator te genereren ? I te bepalen of twee beschrijvingen dezelfde taal bepalen ? AB’16 De verzameling van talen als een algebra de verzameling van alle talen is P(Σ∗ ) I I I I I I unie van twee talen is een taal: L1 ∪ L2 doorsnede van twee talen is een taal: L1 ∩ L2 concatenatie van twee talen is een taal: L1 L2 complement van een taal (t.o.v. Σ∗ ) is een taal: L de omgekeerde strings ... ... een speciale: de Kleene ster van een taal L∗ = ∪n≥0 Ln met Ln = LLn−1 , n > 1 en L0 = {} AB’16 6/15 Reguliere expressies en reguliere talen in één klap Σ ligt vast E reguliere expressie ∈ RegExp bepaalt taal LE {} ∅ φ a met a ∈ Σ {a} E1 E2 met E1 , E2 ∈ RegExp LE1 LE2 E ∗ met E ∈ RegExp L∗E E1 |E2 met E1 , E2 ∈ RegExp LE1 ∪ LE2 Definitie: L is een reguliere taal of L ∈ RegLan als ∃E ∈ RegExp en L = LE AB’16 7/15 Een definitie roept vragen op ... I I I I I I I I 8/15 is elke taal regulier ? hoeveel reguliere talen zijn er ? kan je m.b.v. een reguliere expressie E gemakkelijk nagaan of s ∈ LE ? kan je m.b.v. een reguliere expressie E gemakkelijk (alle) s ∈ LE genereren ? is RegLan een subalgebra van Σ∗ - voor welke algebraische bewerkingen ? kan je een E ∈ RegExp transformeren naar een algoritme dat TRUE geeft voor elke s ∈ LE en FALSE voor elke s∈ / LE ? programmeertalen die reguliere expressies ondersteunen ? ... AB’16 een lege slide ... 9/15 AB’16 Een eindige toestandsautomaat NFA 10/15 a a ε 2 b 4 b 1 a,b b I I I 3 een gerichte graaf; de knopen heten toestanden; de bogen dragen als label(s) elementen van Σ en/of sommige knopen zijn (accepterende) eindtoestanden (3) en (4) één knoop is de starttoestand (1) AB’16 Een eindige toestandsautomaat bepaalt een taal 11/15 a a ε 2 b 4 b 1 a,b b I I I 3 maak een pad van de begintoestand naar een eindtoestand bij elke overgang: schrijf een teken neer dat in het label voorkomt op het einde heb je een string uit de taal AB’16 Zit een gegeven string in de taal van de NFA ? 12/15 a a ε 2 b 4 b 1 a,b b I I I 3 schrijf je string s op neem nu enkel overgangen waarbij in het label een teken vooraan in je string staat, of : veeg het teken vooraan in je string uit indien je in een eindtoestand bent en je string is helemaal uitgeveegd, dan behoort s tot de taal van de automaat AB’16 De niet-deterministische eindige toestandsautomaat 13/15 I I I I I NFA: non-deterministic finite state automaton als je keuze hebt: alles proberen (breedte-eerst of door backtracking) exacte definities zijn zeer belangrijk ! als M een NFA is, dan is LM de taal door M bepaald of geaccepteerd de NFA’s vormen ook een algebra voor de operaties concatenatie, unie, de Kleene ∗ AB’16 Vragen i.v.m. de NFA I I I I I I I I 14/15 kan je nagaan of een gegeven taal een LM is voor een NFA M ? bestaan een deterministische versie van elke NFA ? kan je (algoritmisch) nagaan of twee gegeven NFA’s M1 en M2 equivalent zijn, t.t.z. LM1 = LM2 ? vind je bovenstaande vraag belangrijk ? bestaat een kleinste NFA voor een taal LM ? welke talen L hebben een NFA M zodat L = LM ? wat gebeurt met de taal als je in een NFA de eindtoestanden en de andere verwisselt ? ... AB’16 Belangrijk: kennen en kunnen. 15/15 I De argumentatie van het voorwoord kennen en kritisch kunnen bespreken, vooral nadat je het hoofdstuk over berekenbaarheid gezien hebt. I De definitie van string, taal kennen en geen fouten maken met uitspraken die die twee begrippen gebruiken. I Het verschil tussen (de moeilijkheid van) beschrijven, testen en genereren kunnen uitleggen - een rode draad doorheen de cursus. I Algebraische bewerkingen op de verzameling talen kennen, en hun eigenschappen. I Definitie 2.4.1 van RE kennen, kunnen reproduceren. Definitie 2.4.3 van taal bepaald door een RE kunnen reproduceren en uitleggen wat het verschil is tussen een RE en de taal erdoor bepaald. Definitie 2.4.4 kennen, in je slaap. I Van elk van de uitspraken op pagina 10 argumenteren waarom die (on)juist zijn. I RegLan als subalgebra voor een aantal bewerkingen: kennen, kunnen uitleggen, aantonen. I De werking van een NFA kunnen uitleggen, zowel de intuitie als de exacte definitie 6.4 van wanneer een string geaccepteerd wordt door een NFA. Daarvoor moet je natuurlijk de definitie van NFA kennen 6.3. I De definitie van Equivalentie van NFA (DFA, later PDA, TM) kennen en nooit verwarren met isomorfisme van zulke machientjes. I Het begrip transitietabel - we gebruiken het later in voorbeelden. I De algebra van NFA’s begrijpen en kunnen uitleggen (voor de operaties unie, concatenatie, Kleene ster) aan de hand van samenstelling van NFA’s. AB’16