Automaten en Berekenbaarheid Bart Demoen KU Leuven 2016-2017 Les 6: 91-109 encodering, universele TM, niet-beslisbaarheid de enumerator, voorbeelden AB’16 Terminologie I I I I I 2/16 taal L ⊆ Σ∗ of eigenschap (van natuurlijke getallen) N ∼ {0, 1}∗ eigenschap priem → taal van priemgetallen beslisbare taal of eigenschap (decidable, enumerable) herkenbaar (recognisable, semi-decidable, recursive enumerable) AB’16 Encodering I I uitspraak de priemgetallen zijn beslisbaar is juist maar vaag beslisbaar gaat over talen, dus ... I I I 3/16 Σ vastleggen en hoe N met overeenkomt met strings uit Σ∗ dat is de encodering van het probleem NIET ELKE ENCODERING IS OK ! I I I de grootte van Σ heeft geen belang (zelf uitwerken): heeft enkel belang voor de complexiteit extra info toevoegen is slecht (zie cursustekst) N voorstellen als bitstrings zonder leidende nul (behalve voor zero) is ok: je kan beslissen of iets een getal voorstelt AB’16 Universele Turingmachines I I I 4/16 bv. de universele TM-simulator in Prolog, maar dan m.b.v. een TM veronderstelt een encodering van een TM (want input voor UTM) nodig te verstaan: samenstelling van 2 (of meer) TMs waarbij I I I de ene de andere oproept de ene de andere simuleert (en nog andere dingen doet) (vroeger al) parallelle uitvoering en combineren resultaat goeie raad: raak gewoon aan een TM die als input dient voor een andere TM ... of zichzelf (?) pas op: er bestaan hele kleine UTMs ! AB’16 Onze eerste niet-beslisbare talen I 5/16 Het Halting-probleem is niet beslisbaar: I HTM = {< M, s > |s ∈ / ∞M } of M stopt op s I deze Haskell functie stopt bij deze gegeven invoer I HTM is herkenbaar: informele beschrijving van een herkenner H voor HTM I I I I H(< M, s >) simuleert M op s als M in zijn qa komt, dan stopt H in zijn eigen accepttoestand als M in zijn qr komt, dan stopt H in zijn eigen accepttoestand als M oneindig doorloopt, dan doet H dat ook bewijs steunt op het acceptatieprobleem voor TMs het Halting-probleem is niet co-herkenbaar AB’16 Onze eerste niet-beslisbare talen II Het Acceptance-probleem is niet beslisbaar: I I ATM = {< M, s > |s ∈ LM } of M accepteert s bewijs gebruikt diagonalisatie - een geflipte machine gebruikt zichzelf als input - en contradictie Stel nu dat HTM beslisbaar is, dan kan je een beslisser voor ATM bouwen, en dat kan niet ... dus HTM is niet beslisbaar. AB’16 6/16 De enumeratormachine ... 7/16 ... x q δ(q,x) ga naar q’ schrijf y op band schrijf z op output beweeg leeskop naar Links Rechts blijf Staan outputband I I I I TM met extra toestand qe : schrijf $ en ga naar qs signatuur δ is Q × Γ → Q × Γ × Γ × {L, R, S} beetje zoals een transducer L wordt door E geënumeerd indien elke string van L op de output verschijnt (tussen twee markers) en geen andere ON COMPUTABLE NUMBERS, WITH AN APPLICATION TO THE ENTSCHEIDUNGSPROBLEM Alan Turing, nov 1936 AB’16 De link tussen herkennen en enumereren I een herkenbare taal is enumereerbaar en omgekeerd I I gegeven een TM (= herkenner !) voor L, maak een enumerator voor L gegeven een enumerator L, maak een herkenner voor L beetje tricky omdat het Halting probleem niet beslisbaar is klassieke tuyau :-) sommige reële getallen zijn berekenbaar, de meeste niet AB’16 8/16 Ivm RegLan is zowat alles beslisbaar ... I I I 9/16 ADFA = {hD, si|D is een DFA, en D accepteert s} ANFA = {hN, si|N is een NFA, en N accepteert s} ARegExp = {hRE , si|RE is een reguliere expressie, en RE genereert s} Een DFA-simulator is handig ! en de stellingen/algoritmen om van RE → NFA → DFA → DFAmin te gaan AB’16 3 populaire vragen over talen ... I I I is de taal leeg ? bevat de taal de lege string ? (of een andere willekeurige string) zijn twee talen gelijk ? (hoe zijn ze gegeven ?) Voor reguliere talen ... I I I 10/16 EDFA = {hDFAi|LDFA = φ} ESDFA = {hDFAi| ∈ LDFA } EQDFA = {hDFA1 , DFA2 i|LDFA1 = LDFA2 } zijn alle beslisbaar ... subtiel maar verschillend: elke RegLan is beslisbaar AB’16 Context-vrije talen ... I I I 11/16 ACFG = {hG , si|G is een CFG , en s ∈ LG } is beslisbaar ECFG = {hG i|G is een CFG , en LG = φ} is beslisbaar ESCFG = {hG i|G is een CFG , en ∈ LG } is beslisbaar EQCFG is niet beslisbaar - wel co-herkenbaar: dat laatste moet je zelf kunnen bewijzen AB’16 Ivm type 0 ... 12/16 I ETM = {hMi|M is een TM, en LM = φ} is niet beslisbaar I REGULARTM = {hMi|M is een TM, en LM ∈ RegLan} is niet beslisbaar I EQTM is niet beslisbaar zet deze uitspraken over naar de context van je favoriete (Turing-complete) programmeertaal AB’16 De lineaire begrensde automaat I I I I I I I een TM die niet meer plaats mag gebruiken dan de inputstring beslist context-sensitieve talen verrassing: het Halting-probleen voor LBAs is beslisbaar inzicht: slechts een eindig aantal configuraties mogelijk een simulator-TM telt hoeveel stappen al gedaan zijn indien meer dan # configuraties, dan lus dus: ook ALBA is beslisbaar1 1 versta je dit echt ? AB’16 13/16 De lineaire begrensde automaat II 14/16 en toch is ELBA = {M|M is een LBA die de lege taal bepaalt} niet beslisbaar: I I I we kunnen een LBA maken die een computation history van een TM op een gegeven string nakijkt en accepteert als die eindigt in de qa als die LBA iets accepteert, dan is de taal van die TM niet leeg dus: ELBA beslissen geeft een beslisser voor ETM en dat kan niet AB’16 interludium ... 15/16 Details in de cursustekst (p107-108) ... I I I wat beslist/herkend kan worden hangt af van de plaats in de Chomsky hiërarchie maar niet altijd hetzelfde (AX , HX , ESX , EX , AllX ...) ook welke algebraische operaties inwendig zijn hangt af van die plaats lees zeker de tekst over aftelbaar versus effectief aftelbaar/opsombaar - voor ons, informaticawetenschappers, is de laatste notie de belangrijkste de stelling over herkenbaar ↔ enumereerbaar toont o.a. dat veel (de meeste ?) verzamelingen niet opsombaar zijn AB’16 Belangrijk: kennen en kunnen. 16/16 I terminologie correct kunnen gebruiken I het begrip (redelijke) encodering kunnen uitleggen en van een encodering kunnen argumenteren waarom die redelijk is of niet I begrijpen en kunnen uitleggen wat een UTM is en hoe die werkt, in het bijzonder wat de invoer en uitvoer is I alle stellingen en gevolgen 8.* kunnen formuleren in woorden en formeel bewijzen, in het bijzonder de constructie van diverse hulpmachines kunnen uitleggen, en wanneer die gebeurt I de definitie en werking van een enumeratormachine kunnen geven/uitleggen; stelling 9.1: de bewering ervan (in het grijze vak) kunnen uitleggen, en het bewijs reproduceren I de algemene problematiek van beslisbaarheid van talen gelinkt aan de groepen uit de Chomsky hiërarchie kunnen uitleggen I alle stellingen 10.*: in woorden kunnen formuleren en bewijzen I alle stellingen 11.* (behalve 11.7): in woorden kunnen formuleren en bewijzen; voor 11.6 is de vage constructie in de cursustekst voldoende I de definitie van IsInTM,S als taal kunnen uitleggen en er gebruik van kunnen maken in voorbeelden I de definitie van LBA kunnen geven en uitleggen I het onderscheid tussen aftelbaar en opsombaar kunnen uitleggen/bewijzen, voorbeelden ervan geven AB’16