Formale Systeme, Automaten & Prozesse

Dies ist meine persönliche Zusammenfassung und Mitschrift der FoSAP Vorlesung des Sommersemesters 2019. Ich beziehe mich hierbei auf die Folien der Vorlesung und Übung und den Panikzettel zur Vorlesung.

DFA's

Ein deterministische endliche Automat A ist ein 5 Tupel mit A=(Q,Σ,δ,q0,F)A = (Q,\Sigma,\delta,q_0,F), dass sich wie folgt zusammensetzt:

  • QQ : Anzahl der Zustände des Automaten
  • Σ\Sigma : Eingabealphabet
  • δ\delta: Transitionsfunktion δ:Q×ΣQ\delta : Q \times \Sigma \rightarrow Q
  • q0Qq_0 \in Q: Startzustand
  • FQF \subseteq Q: Menge der Endzustände

Ein Lauf auf einem Automaten ist ein Tupel der Form (r0,a1,r1,a2,...,an,rn)(r_0,a_1,r_1,a_2,...,a_n,r_n) mit δ(ri1,ai)=ri\delta (r_{i-1},a_i) = r_i und r0=q0r_0 = q_0. Der Lauf ist genau dann akzeptierend, wenn rnFr_n \in F.

Ein Automat erkennt eine Sprache L(A):={wΣA akzeptiert w}L(A) := \{ w \in \Sigma^* | A \text{ akzeptiert } w \}. Allgemein ist eine Sprache L DFA-erkennbar, wenn es einen DFA gibt mit L=L(A)L=L(A).

Für alle Sprachen gilt:

  • Assoziativ: (KL)M=K(LM)(KL)M = K(LM)
  • L{ϵ}={ϵ}L=LL \{ \epsilon \} = \{ \epsilon \}L = L
  • L=L=L \emptyset = \emptyset L = \emptyset
  • Distributiv: K(LM)=KLKMK(L \cup M) = KL \cup KM und (KL)M=KMLM(K \cup L)M = KM \cup LM
  • L0={ϵ}L^0 = \{ \epsilon \}
  • Ln+1:=LnLL^{n+1} := L^n L für nNn \in N
  • Kleene-Stern: L:=nNLnL^* := \underset{n \in N}{\bigcup} L^n
  • LL=LL^* L^* = L^*
  • (L)=L(L^*)^* = L^*
  • ={ϵ}\emptyset^* = \{\epsilon\}

Produktautomaten

Seien 2 DFA's A1,A2A_1, A_2 mit dem selben Alphabet gegeben. Dann ist der Produktautomat: A=(Q1×Q2,Σ,δ,(q01,q02),F)A=(Q_1 \times Q_2, \Sigma, \delta, (q_{01},q_{02}),F).

Abschlusseigenschaften

  • L DFA-erkennbar, dann ist auch Lˉ\bar{L} DFA-erkennbar(Tausche End- und nicht Endzustände)
  • L1L2L_1 \cap L_2, L1L2L_1 \cup L_2
  • LKLK (Hintereinanderausführung)
  • L=nNLnL^* = \underset{n \in N}\cup L^n, L0={ϵ}L^0 = \{\epsilon \}, ={ϵ}\emptyset^* = \{ \epsilon \}

NFA's

Ein nicht-deterministischer endlicher Automat NFA A=(Q,Σ,Δ,q0,F)A =(Q,\Sigma, \Delta, q_0, F). Der Unterschied zum DFA liegt in der:

  • Transitionsrelation ΔQ×Σ×Q\Delta \subseteq Q \times \Sigma \times Q

Die Erreichbarkeitsmenge eines Wortes auf dem Automaten A: E(A,w)={qQq0wq}E(A,w) = \{q \in Q | q_0 \overset{w}{\to} q\}

epsilon-NFAs

Ein ϵ\epsilon-NFA A=(Q,Σ,Δ,q0,F)A=(Q,\Sigma,\Delta,q_0,F)

  • Transitionsrelation Δ:Q×(Σ{ϵ})×Q\Delta : Q \times (\Sigma \cup \{ \epsilon \}) \times Q

Ein Lauf auf einem ϵ\epsilon-NFA wird ohne ϵ\epsilon angegeben

Potenzmengenkonstruktion

Zu jedem NFA A=(Q,Σ,δ,q0,F)A=(Q,\Sigma,\delta,q_0,F) kann man einen äquivalenten DFA A=(Q,Σ,Δ,q0,F)A'=(Q',\Sigma',\Delta',q_0',F') konstruieren mit L(A)=L(A)L(A) = L(A'):

  • Q=Pot(Q)Q' = Pot(Q)
  • δ(q,a)={qQpq:(p,a,q)Δ}\delta'(q',a) = \{ q \in Q' | \exists p \in q': (p,a,q) \in \Delta \}
  • q0={q0}q'_0 = \{ q_0 \}
  • F={qQFq}F' = \{ q \in Q' | F \cap q \neq \emptyset \}

Da Q=Pot(Q)Q' = Pot(Q) ist ein Zustand eine Menge und wird auch mit Mengenklammern geschrieben.

epsilon-NFA zu NFA

L ist DFA-erkennbar \Leftrightarrow L ist ϵ\epsilon-NFA-erkennbar \Leftrightarrow L ist FA-erkennbar

epsilon-NFA Komplement

Sei A ein ϵ\epsilon-NFA. Finde L(Aˉ)L(\bar A):

  • Konstruiere zu äquivalenten NFA A'
  • Konstruiere zu A' äquivalenten DFA A'' (Potenzmengenkonstruktion)
  • Konstruiere DFA AA''' mit L(A)=L(Aˉ)=L(Aˉ)L(A''')= L(\bar A'' ) = L(\bar A)

Rekursion und Induktion

Rekursive Definition von Funktionen:
Rekursionsanfang: Definiere f(0)f(0)
Rekursionsschritt: Definiere f(n+1)f(n+1) aus f(n)f(n)

Rekursive Definition von Mengen:
Basisregel: xXx \in X
Rekursive Regel: Wenn x1,...,xkXx_1,...,x_k \in X, dann xXx' \in X (xx' in Abhängigkeit von x1,...,xkx_1,...,x_k)

Induktive Beweise

Vollständige Induktion über eine rekursiv Definition DD einer Menge XX analog zur vollständigen Induktion über die natürlichen Zahlen:
Induktionsanfang: Für alle Basisregeln xXx \in X die Aussage beweisen
Induktionsscritt: Für alle rekursiven Regeln die Aussage mithilfe der Induktionsannahme beweisen.

Reguläre Sprachen

RAΣRA_{\Sigma} ist die Menge der regulären Ausdrücke. Es gilt RAΣ\emptyset \in RA_{\Sigma} und ϵRAΣ\epsilon \in RA_{\Sigma}. L(r)ΣL(r) \subseteq \Sigma^* ist die Sprache zu dem regulären Ausdruck rRAΣr \in RA_{\Sigma}. Es gilt L()=L(\emptyset) = \emptyset, L(ϵ)={ϵ}L(\epsilon) = \{ \epsilon \} und L(a)={a}L(a) = \{ a \}.

Jede reguläre Sprache ist FA-erkennbar

Algorithmen für Reguläre Sprachen

Automaten mit Ausgabe

Kontextfreie Sprachen