Aufgabe 4 - Grammatiken, Kellerautomaten und Gren… · Abitur NRW Informatik GK · Haupttermin 2021

Thema: Grammatiken, Kellerautomaten und Grenzen endlicher Automaten · Aus der Prüfung GK · Haupttermin (2021)

Aufgabenstellung

Aufgabenstellung: Analyse von Schienenanlagen einer Modelleisenbahn

Leonard besucht einen Informatikkurs und plant, nach dem Abitur Informatik zu studieren. Beim Aufräumen des Dachbodens, worum ihn seine Eltern gebeten haben, entdeckt er seine alte Eisenbahn, mit der er in der Kindheit oft gespielt hat. Ihm fällt ein, dass er stets eine sinnvolle Schienenanlage bauen wollte, auf der die Eisenbahn entweder im Kreis fährt oder die an beiden Enden durch Prellböcke abgeschlossen ist. Mit seinem Wissen aus der theoretischen Informatik will Leonard untersuchen, ob eine Schienenanlage sinnvoll aufgebaut ist. Um die Analyse überschaubar zu halten, nutzt er zunächst nur die folgenden Bauteile.

Ein endlicher Automat soll überprüfen, ob eine Schienenanlage sinnvoll aufgebaut ist.

Hierfür fügt er die Bauteil-IDs zu Wörtern zusammen, die jeweils eine Schienenanlage repräsentieren. So wird beispielsweise eine Schienenanlage, die aus zwei Prellböcken und einer dazwischenliegenden Brücke besteht, durch das Wort p1b2p dargestellt.

Leonard entwickelt das in Abbildung 2 dargestellte Zustandsübergangsdiagramm eines deterministischen endlichen Automaten A zum Überprüfen von Schienenanlagen:

Im weiteren Verlauf kommen keine Brücken und damit auch keine Auf- und Abfahrten mehr vor, stattdessen werden zusätzlich 90°-Kurvenelemente verwendet:

Anhang: Die generische Klasse List

Objekte der generischen Klasse List verwalten beliebig viele, linear angeordnete Objekte vom Typ ContentType. Auf höchstens ein Listenobjekt, aktuelles Objekt genannt, kann jeweils zugegriffen werden. Wenn eine Liste leer ist, vollständig durchlaufen wurde oder das aktuelle Objekt am Ende der Liste gelöscht wurde, gibt es kein aktuelles Objekt. Das erste oder das letzte Objekt einer Liste kann durch einen Auftrag zum aktuellen Objekt gemacht werden. Außerdem kann das dem aktuellen Objekt folgende Listenobjekt zum neuen aktuellen Objekt werden.

Das aktuelle Objekt kann gelesen, verändert oder gelöscht werden. Außerdem kann vor dem aktuellen Objekt ein Listenobjekt eingefügt werden.

Dokumentation der Klasse List<ContentType>

List()

Eine leere Liste wird erzeugt.

boolean isEmpty()

Die Anfrage liefert den Wert true, wenn die Liste keine Objekte enthält, sonst liefert sie den Wert false.

boolean hasAccess()

Die Anfrage liefert den Wert true, wenn es ein aktuelles Objekt gibt, sonst liefert sie den Wert false.

void next()

Falls die Liste nicht leer ist, es ein aktuelles Objekt gibt und dieses nicht das letzte Objekt der Liste ist, wird das dem aktuellen Objekt in der Liste folgende Objekt zum aktuellen Objekt, andernfalls gibt es nach Ausführung des Auftrags kein aktuelles Objekt, d. h., hasAccess() liefert den Wert false.

void toFirst()

Falls die Liste nicht leer ist, wird das erste Objekt der Liste aktuelles Objekt. Ist die Liste leer, geschieht nichts.

void toLast()

Falls die Liste nicht leer ist, wird das letzte Objekt der Liste aktuelles Objekt. Ist die Liste leer, geschieht nichts.

ContentType getContent()

Falls es ein aktuelles Objekt gibt ( hasAccess() == true), wird das aktuelle Objekt zurückgegeben. Andernfalls ( hasAccess() == false) gibt die Anfrage den Wert null zurück.

void setContent(ContentType pContent)

Falls es ein aktuelles Objekt gibt ( hasAccess() == true) und pContent ungleich null ist, wird das aktuelle Objekt durch pContent ersetzt. Sonst bleibt die Liste unverändert.

void append(ContentType pContent)

Ein neues Objekt pContent wird am Ende der Liste eingefügt. Das aktuelle Objekt bleibt unverändert. Wenn die Liste leer ist, wird das Objekt pContent in die Liste eingefügt und es gibt weiterhin kein aktuelles Objekt ( hasAccess() == false). Falls pContent gleich null ist, bleibt die Liste unverändert.

void insert(ContentType pContent)

Falls es ein aktuelles Objekt gibt ( hasAccess() == true), wird ein neues Objekt pContent vor dem aktuellen Objekt in die Liste eingefügt. Das aktuelle Objekt bleibt unverändert. Falls die Liste leer ist und es somit kein aktuelles Objekt gibt ( hasAccess() == false), wird pContent in die Liste eingefügt und es gibt weiterhin kein aktuelles Objekt. Falls es kein aktuelles Objekt gibt ( hasAccess() == false) und die Liste nicht leer ist oder pContent == null ist, bleibt die Liste unverändert.

void concat(List<ContentType> pList)

Die Liste pList wird an die Liste angehängt. Anschließend wird pList eine leere Liste. Das aktuelle Objekt bleibt unverändert. Falls es sich bei der Liste und pList um dasselbe Objekt handelt, pList == null oder eine leere Liste ist, bleibt die Liste unverändert.

void remove()

Falls es ein aktuelles Objekt gibt ( hasAccess() == true), wird das aktuelle Objekt gelöscht und das Objekt hinter dem gelöschten Objekt wird zum aktuellen Objekt. Wird das Objekt, das am Ende der Liste steht, gelöscht, gibt es kein aktuelles Objekt mehr ( hasAccess() == false). Wenn die Liste leer ist oder es kein aktuelles Objekt gibt ( hasAccess() == false), bleibt die Liste unverändert.

Ab jetzt kommen keine Brücken und damit auch keine Auf- und Abfahrten mehr zum Einsatz; stattdessen werden zusätzlich 90°-Kurvenelemente verwendet:

c)

Die Sprache LGL_G wird von der nachstehenden Grammatik GG erzeugt:

Startsymbol:

SS

Terminalsymbole:

{g, r, l, p}\{\text{g},\ \text{r},\ \text{l},\ \text{p}\}

Nichtterminalsymbole:

{S, G, K}\{S,\ G,\ K\}

Produktionen:

{ S→pKp∣pGp,\{\ S \to \text{p}K\text{p} \mid \text{p}G\text{p},

{ K→rGl∣lGr,\phantom{\{}\ K \to \text{r}G\text{l} \mid \text{l}G\text{r},

{ G→gG∣ε }\phantom{\{}\ G \to \text{g}G \mid \varepsilon\ \}

Wort 1:

Wort 2:

Wort 3:

d)

Manche der kreisförmigen Schienenanlagen erinnern Leonard an „Ovale“. Ein „Oval“ entsteht folgendermaßen: Zuerst werden zwei Rechtskurven gebaut, danach eine bestimmte Anzahl nn gerader Gleisstücke, anschließend erneut zwei Rechtskurven und am Ende wiederum nn gerade Gleisstücke.

Leonard möchte einen deterministischen endlichen Automaten erstellen, der erkennt, ob eine geplante Schienenanlage ein „Oval“ darstellt. Leonard hat beliebig viele Bauteile zur Verfügung.

Aufgabenstellung: Aufgabe 4 - Grammatiken, Kellerautomaten und Gren… · Abitur NRW Informatik GK · Haupttermin 2021

Lösung

Nach den offiziellen Korrekturhinweisen

Ermitteln Sie das 1. Wort (Wörter verschiedener Länge)

Lösung: pp

Ermitteln Sie das 2. Wort (Wörter verschiedener Länge)

Lösung: pgp

Ermitteln Sie das 3. Wort (Wörter verschiedener Länge)

Lösung: prlp / plrp / pggp / prglp

Erläutern Sie im Sachzusammenhang, welche Schienenanlagen die Sprache LGL_G repräsentiert.

Lösung: Die Schienenanlagen beginnen und enden mit je einem Prellbock. Dazwischen kann ein Streckenabschnitt aus geraden Gleisstücken liegen oder ein Kurvenpaar (rechts-links bzw. links-rechts), das ebenfalls gerade Gleisstücke einrahmen kann.

Begründen Sie, weshalb es sich bei der Grammatik GG nicht um eine reguläre Grammatik handelt.

Lösung: Die Grammatik ist nicht regulär, weil z. B. in der Produktion S→pKpS \to \text{p}K\text{p} auf der rechten Seite links und rechts vom Nichtterminal jeweils ein Terminal steht.

Entwickeln Sie für die Sprache LGL_G eine reguläre Grammatik G′G'.

Lösung: Startsymbol: S; Terminalsymbole: {g, r, l, p}; Nichtterminalsymbole: {S, A, G, L, P, R}; Produktionen: S -> pA | pP; A -> rR | lL | gG | gP; R -> gR | lP; L -> gL | rP; G -> gG | gP; P -> p

Entscheiden Sie, ob das nachstehende Wort eine Schienenanlage beschreibt, die ein „Oval“ ist: rrggrrgg

Lösung: Ja, das Wort gehört zu einer Schienenanlage, die ein „Oval“ darstellt.

Beurteilen Sie, ob es möglich ist, einen deterministischen endlichen Automaten zu erstellen, der für jedes Wort entscheiden kann, ob ein Wort zu einer Schienenanlage gehört, die ein „Oval“ darstellt.

Lösung: Nein, es ist nicht möglich.

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe 4 - Grammatiken und Kellerautomaten · LK · Nachtermin 2022 · Aufgabe 4 - Grammatiken und Grenzen endlicher Aut… · GK · Haupttermin · Weiterbildungskolleg 2021 ›

Mehr Aufgaben zu Grammatiken, Kellerautomaten und Grenzen endlicher Automaten