• Keine Ergebnisse gefunden

Aufgabe 7.2 (Von PDA zu kontextfreier Grammatik) Gegeben sei der folgenden PDAM, der mit leerem Stack akzeptiert

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe 7.2 (Von PDA zu kontextfreier Grammatik) Gegeben sei der folgenden PDAM, der mit leerem Stack akzeptiert"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

WS 2017/2018 22.01.2018 Ubungen zur Vorlesung¨

Theoretische Informatik I Blatt 7

Prof. Dr. Roland Meyer,

M. Sc. Elisabeth Neumann Abgabe bis 29.01.2018 um 12 Uhr Aufgabe 7.1 (Alternative PDA-Konstruktion)

Ein TPDAP ist ein Pushdown-Automat mit initialem Stack-Symbol #, also ein Tupel P = (Q,Σ,Γ, q0,#, δ, QF), der mit Endzust¨anden akzeptiert und dessen Transitionen

• immer genau ein Symbol vom Stack nehmen und

• immer h¨ochstens zwei Elemente auf den Stack pushen.

Zeigen Sie, dass die Sprachen, die von TPDAs akzeptiert werden genau die Sprachen sind, die von PDAs akzeptiert werden.

Hinweis: Konstruieren Sie f¨ur jeden PDA (TPDA) einen TPDA (PDA), der die gleiche Sprache erzeugt.

Aufgabe 7.2 (Von PDA zu kontextfreier Grammatik)

Gegeben sei der folgenden PDAM, der mit leerem Stack akzeptiert.

q0 a q1 q2

#/#AA

ε A/A

a;A/AAA b;A/

ε; #/ε

Nutzen Sie das Verfahren aus der Vorlesung und konstruieren Sie eine kontextfreie Grammatik GmitL(G) =L(M). Welche Sprache wird von M erzeugt?

Hinweis: Ein Nicht-Terminal der Form(q, A, q0) erzeugt ein Terminalwortw genau dann, wenn M, gestartet auf q mit Input w und initialem StacksymbolA, nach q0 ¨ubergehen kann und dort leeren Stack hat.

(2)

Aufgabe 7.3 (Zwei-Stack-Pushdowns)

EinZwei-Stack-Pushdown-Automat (2PDA) ist ein Tupel (Q,Σ,Γ, q0, δ, QF), mit einer endlichen Menge von Zust¨anden Q, einem Eingabealphabet Σ, einem Stackalphabet Γ, einem Startzustand q0 ∈ Q, einer Menge von Endzust¨anden QF ⊆ Q und einer Transitionsrelation, die es erlaubt, zwei Stacks zu manipulieren:

δ ⊆Q×(Σ∪ {ε})×((Γ∪ {ε})×Γ)

| {z }

Stack 1

×((Γ∪ {ε})×Γ)

| {z }

Stack 2

×Q

Das Ziel dieser Aufgabe ist es, zu beweisen, dass 2PDAs eine ausdrucksst¨arkere Sprach- klasse bilden als PDAs.

a) Konstruieren Sie einen 2PDA f¨ur die Sprache L={an.bk.cn.dk|n, k∈N}.

b) Beweisen Sie, dass es keinen PDA geben kann, der die Sprache Lakzeptiert.

Aufgabe 7.4 (Modellierung rekursiver Programme)

Gegeben ist der folgende C-¨ahnliche Code mit der Funktionint r(), die zuf¨allig0oder 1zur¨uckgibt.

0: void t() {

1: if(r()==1) s() 2: if(r()==1) t() 3: print ’’t fertig’’

}

0: void s() {

1: if(r()==1) s() 2: if(r()==1) t() 3: print ’’s fertig’’

}

0: void main() {

1: t()

2: print ’’main fertig’’

}

Konstruieren Sie einen Pushdown-Automaten, der f¨ur einen gegebenen Abfolge von Befehlen pr¨uft ob es sich um eine korrekte Ausf¨uhrung der main-Methode handeln k¨onnte. Eine Abfolge von Befehlen ist ein beliebiges Wort aus Σ, mit

Σ ={t(),if (r() == 1)t(),if (r() == 1)s(),

print ”t fertig”,print ”s fertig”,print ”main fertig”}.

Die folgende Abfolge kann zum Beispiel einer korrekten Ausf¨uhrung entsprechen:

t()

if (r()==1) s() if (r()==1) s() if (r()==1) t() print ’’s fertig’’

if (r()==1) t() print’’ t fertig’’

print ’’main fertig’’

(3)

Die folgende Abfolge enstpricht keiner korrek- ten Ausf¨uhrung (R¨ucksprung an die falsche Stelle in Methode t):

t()

if (r()==1) s() if (r()==1) s() if (r()==1) t() print ’’s fertig’’

print’’ t fertig’’ //Fehler print ’’main fertig’’

Eine weitere inkorrekte Abfolge (R¨ucksprung in die falsche Funktion) ist:

t()

if (r()==1) s() if (r()==1) t() if (r()==1) s() if (r()==1) t() print ’’t fertig’’

print ’’main fertig’’ //Fehler

Geben Sie danach die Konfigurationsfolgen an die der PDA beim Abarbeiten der folgenden Abfolge durchl¨auft und zeigen Sie damit dass die Abfolge einer korrektem Ausf¨uhrung vonmain entsprechen kann.

t()

if (r()==1) s() if (r()==1) s() if (r()==1) s() if (r()==1) t() if (r()==1) s() if (r()==1) t() print ’’t fertig’’

print’’ s fertig’’

if (r()==1) t() print’’ s fertig’’

if (r()==1) t() if (r()==1) s() if (r()==1) t() print ’’t fertig’’

print’’ t fertig’’

print ’’main fertig’’

Hinweis: Der PDA sollte den aktuellen Programmz¨ahler speichern. Der Programmz¨ahler gibt an, in welcher Zeile des Codes (und in welcher Funktion) sich das Program gerade befindet. Funktionenaufrufe werden im Stack verwaltet. Dabei ist immer wichtig, welche Funktion den Aufruf get¨atigt hat. Ist dieser Aufruf abgearbeitet, sollte das entsprechende Element vom Stack entfernt werden.

Abgabe bis 29.01.2018 um 12 Uhr im Kasten neben Raum 343.

Referenzen

ÄHNLICHE DOKUMENTE

40 % war die direkte Konsequenz gestiegener Haltungskosten in Großbritannien. Ein im Folgenden jedoch deutlich stabileres Produktionsniveau und klare Absatzwege für die Produktion

Nach mehreren Auto- preiserhöhungen seit 1979 gibt es durchaus Fälle, in de- nen die Ämter bis zu 90 000 DM an Anschaffungskosten für ein Fahrzeug akzeptieren.. Was anerkannt

Dienstnehmer und Dienstgeber in der Arbeitsrechtli- chen Kommission des Deutschen Caritasverbandes ha- ben sich darauf verständigt, alle vergütungsrelevanten

Da Vorschläge, die den Versicher- ten direkt belasten, nicht zu erwarten sind, dürfte sich die Diskussion auf Themen konzentrieren, die ohne di- rekte Auswirkungen für

Mehr als 80 Prozent der Deutschen und der Franzosen und 72 Prozent der Italiener glauben, dass die Renten nicht langfristig gesichert sind.. Die Befragten würden aus

Wenn man die Form der Regeln einschr¨ ankt erh¨ alt man Teilmen- gen der Menge aller durch eine Grammatik erzeugten Sprachen.. Wiebke Petersen – Formale Komplexit¨ at nat¨

mer d'chind em Hans es huus lönd hälfe aastriiche wir die Kinder-AKK Hans-DAT das Haus-AKK ließen helfen anstreichen. NP 1 NP 2 NP 3 VP 1 VP 2 VP 3

Ohne das Risiko zu erhöhen, kann nach Ansicht von Überla die Grenze der Selbstmedikation dann verscho- ben werden, wenn die vorhande- nen Informationen „konsumen-