Registermaschine: LOAD/STORE Turingmaschine

Werbung
Registermaschine: LOAD/STORE
⊂
Turingmaschine: 𝑀 = (𝑄, Σ, Γ, 𝐡, π‘ž0 , 𝐹, 𝛿). Zustandsmenge, Eingabealphabet, Bandalphabet Σ Γ,
≠
B=Blank, Startzustand, akzeptierende Endzustände, Zustandsüberführungsfunktion (𝑄 × Γ → 𝑄 ×
Γ × {𝐿, 𝑅, 𝑁})
NTM: 𝑄 × Γ → 𝒫(𝑄 × Γ × {𝐿, 𝑅, 𝑁}) ( -> Menge). T(x) kürzeste akz.Rechnung wenn M x akz, sonst 1.
TM simuliert NTM: 2𝑂(𝑑(𝑛)) − 𝑧𝑒𝑖𝑑 𝑂(𝑠(𝑛) 𝑑(𝑛)) − π‘π‘™π‘Žπ‘‘π‘§
Konfiguration π‘˜ ∈ Γ ∗ × π‘„ × Γ ∗ Zustand, Bandinhalt und Kopfposition zu Zeitpunkt t
Kellerautomat: NPDA = (States Q, Eingabealphabet Σ, Kelleralphabet Γ, Überführungsfunktion δ,
Startzustand z0, Kellergrundsymbol Z0, akzeptierende Zustände F)
M akzeptiert L wenn M für jedes x auf L in endl. Schritten in Endzustand übergeht.
L ist rekursiv aufzählbar wenn es eine TM M gibt, die L akzeptiert.
M entscheidet L wenn M jedes x aus L akzeptiert und für alle y aus Kompl. L hält.
L ist entscheidbar wenn es eine TM M gibt, die L entscheidet.
Church-Turing-These: Die im intuitiven Sinn berechenbaren Funktionen sind genau die, die durch
Turingmaschinen berechenbar sind.
Halteproblem (allgemein): H = {<M>w | M ist eine det. 1-Band-TM, die gestartet mit w hält }
Nicht entscheidbar: Eingabe y, Falls y = <M>: MH ? <M> e H, ja: Endlosschleife, nein: halte
Rekursiv aufzählbar:
Halteproblem (initialies): Hε = {<M> | M ist det. 1-B-TM, die gestartet mit ε hält
Reduktion: Ist eine total berechenbare Fkt f: {0,1}*->{0,1}* für die gilt: x e L1 <=> f(x) e L 2... L1 <= L2
Sprachen:
Grammatik
Typ0: beliebig
Sprache
Rekursiv
aufzählbar
Automat
TM
Produktion
Abgeschlossen
Not
𝛼→𝛽
𝐿∗ , 𝐿 ⋅ 𝐿,∪,∩
𝐿̅
∗
∗
𝛼 ∈ 𝑉 𝑁𝑉
𝛽 ∈ 𝑉∗
Typ1:
Kontextsensitiv NTM lin s(n)
𝛼𝐴𝛽 → 𝛼𝛾𝛽
∪,∩, 𝐿 ⋅ 𝐿, 𝐿̅, 𝐿∗
∗
𝐴 ∈ 𝑁, 𝛼𝛽 ∈ 𝑉
kontextsensitiv
𝛾 ∈ 𝑉+
Typ2: kontextfrei Kontextfrei
N Stack PDA
𝐴→𝛾
∪, 𝐿𝑅 , 𝐿 ⋅ 𝐿, 𝐿∗ , 𝐿 ∩, 𝐿̅
∗
𝐴 ∈ 𝑁, 𝛾 ∈ 𝑉
∩ πΏπ‘Ÿπ‘’π‘”
Typ3: regulär
regulär
DFA / NFA
𝑆→πœ–
∪,∩, 𝐿̅, 𝐿 ⋅ 𝐿, 𝐿∗
𝐴 → π‘Žπ΅ ∨ 𝐴 → π΅π‘Ž
=(Q,Σ,δ,q0,F)
𝐴 → π‘Ž, 𝐴 → πœ€
𝐴, 𝐡 ∈ 𝑁, π‘Ž ∈ Σ
Grammatik: Tupel (V Varaiblen, Σ Alphabet Terminalen, S Startsymbol, P Menge von Produktionen)
Satz von Rice: Es ist nicht möglich irgendeinen nichttrivialen Aspekt des funktionalen Verhaltens einer
TM algorithmisch zu entscheiden. 𝑆 ⊆ (𝑅 = {𝑓|𝑓: {0,1}∗ → {0,1}∗ π‘π‘’π‘Ÿπ‘’π‘β„Žπ‘’π‘›π‘π‘Žπ‘Ÿ})π‘šπ‘–π‘‘ ∅ ≠ 𝑆 ≠
𝑅. π‘ƒπ‘Ÿπ‘œπ‘”(𝑆)𝑖𝑠𝑑 π‘›π‘–π‘β„Žπ‘‘ π‘’π‘›π‘‘π‘ π‘β„Žπ‘’π‘–π‘‘π‘π‘Žπ‘Ÿ.
DTIME(t(n)) = { L| es ex. Eine det . TM die L entscheidet }
NTIME(t(n)) = { L | es ex. NTM die L entscheidet }
CLIQUE = { <G,k> | G ist Graph der vollständigen Teilgraph der Größe k enthält } [NP-vollst]
Hammilton-Kreis: HC = { <G> | G enthält Hamilton-Kreis } (Graph, der jeden Knoten einmal enthält
Traveling-Salesperson: TSP = { <G,c,k> | Graph H mit Kantengewichtsfunktion c hat einen HamiltonKreis mit Gewicht <= k }
Vertex Cover: VC = {<G,k> | G hat Knotenüberdeckung der Größe k } [NP-vollst]
Polynomiell reduzierbar: L1<=L2, Laufzeit für Berechnung von f(x) ist O(|x|^k), k e N
NP-schwer: L ist np-schwer wenn ∀𝑙 ′ ∈ 𝑁𝑃: 𝐿′ ≤𝑝 𝐿
NP-vollständig: 𝐿 ∈ 𝑁𝑃, 𝐿 𝑖𝑠𝑑 𝑁𝑃 − π‘ π‘β„Žπ‘€π‘’π‘Ÿ
Satz von Cook:
Variable: x1..xn, Literal: x –x, Klausel der Länge n: n veroderte Literale, Ausdruck (KNF): Verundete
Klauseln. Size(Φ) = Unds + Oders.
Belegung: Abbildung c: V -> {true, false}, c(Φ) = Auswertung des Ausdrucks.
Eine KND heißt erfüllbar wenn es eine Belegung c gibt, so dass c(Φ)=true
Erfüllbarkeitsproblem (Statisfiability Prob) SAT = {<Φ> | Φ ist eine erfüllbare KNF } [NP-vollständig]
3SAT = {< Φ >| Φ ist KNF, jede Klausel hat 3 Literale aus 3 versch Variablen, Φ ist erfüllbar }
Binary Programming BP = {<A,b>|A e Mn,m(Z)*,b e Zn, Ex. y e {0,1}n : Ay <= b}
DFA – Äquivalenz von Zuständen: Zustände q, q‘ sind äquivalent wenn für alle Wörter w gilt:
d(q,w) e F <=> d(q‘, w) e F
NEQ
1. Paare mit einem akzeptierenden Zustand markieren
2. Solange noch ein Paar (pq) und ein Zeichen a sodass (d(p,a), d(q,a)) markiert ist, markiere
(pq).
NFA -> DFA
1. Potenzmenge der Zustände hinschreiben + Zustand für leere Menge
2. Kanten eintragen.
Rijk (DFA -> Regex)
π‘˜
𝑅𝑖𝑗
= {π‘₯ ∈ Σ ∗ |𝛿(π‘žπ‘– , π‘₯) = π‘žπ‘— 𝑒𝑛𝑑 π‘˜π‘’π‘–π‘› π‘’π‘β„Žπ‘‘π‘’π‘Ÿ π‘π‘€π‘–π‘ π‘β„Žπ‘’π‘›π‘§π‘’π‘ π‘‘π‘Žπ‘›π‘‘ β„Žπ‘Žπ‘‘ 𝐼𝑛𝑑𝑒π‘₯ > π‘˜}
∗
π‘˜+1
π‘˜
π‘˜
π‘˜
π‘˜
𝑅𝑖𝑗
= 𝑅𝑖𝑗
∪ 𝑅𝑖,π‘˜+1
(π‘…π‘˜+1,π‘˜+1
) π‘…π‘˜+1,𝑗
Reguläre Pump-Eigenschaft: L hat RPE falls gilt: ∃𝑝 ∈ 𝑁 ∀𝑧 ∈ 𝐿, |𝑧| ≥ 𝑝 ∃𝑒, 𝑣, 𝑀 ∈ Σ∗ , 𝑧 = 𝑒𝑣𝑀 mit
1. |𝑒𝑣| ≤ 𝑝 2. |𝑣| ≥ 1 3. ∀𝑖 ≥ 0: 𝑒𝑣 𝑖 𝑀 ∈ 𝐿
L ist reg. => L hat reg. PE. Nicht andersrum!
Kontextfreie Pump-Eigenschaft: L hat KFPE falls gilt: ∃𝑝 ∈ β„• ∀𝑧 ∈ 𝐿, |𝑧| ≥ 𝑛𝐿 ∃𝑒, 𝑣, 𝑀, π‘₯, 𝑦, 𝑧 =
𝑒𝑣𝑀π‘₯𝑦: 1. |𝑣π‘₯| ≥ 1 2. |𝑣𝑀π‘₯| ≤ 𝑝 3. ∀𝑖 ≥ 0: 𝑒𝑣 𝑖 𝑀π‘₯ 𝑖 𝑦 ∈ 𝐿
Grammatik beweisen:
⊇: „Jedes Wort in L kann durch meinen Grammatik erzeugt werden“: Regelfolgen anwenden
⊆: „Meine Grammatik kann nur Wörter in L erzeugen“: n’s zählen etc
Herunterladen