MINT lernen

Abituraufgaben: DEA-Entwurf

Vom Variablennamen bis zum Nummernschild — zwei Regeln, die ein Automat aus eigenen Zuständen prüfen soll.

Dein Fortschritt:
0 / 0 Aufgaben
1

Bezeichner im Compiler

14 BEAFB I–II

Der Compiler einer Lernsprache prüft Bezeichner (Namen von Variablen und Methoden) mit einem DEA. Vorher ersetzt er jeden Buchstaben durch b, jede Ziffer durch z und den Unterstrich durch u; es gilt also \(\Sigma=\{b,\,z,\,u\}\). Ein Bezeichner ist gültig, wenn

  • er mit einem Buchstaben beginnt,
  • danach beliebig viele Buchstaben, Ziffern und Unterstriche folgen,
  • nirgends zwei Unterstriche direkt hintereinander stehen und
  • er nicht auf einen Unterstrich endet.
  1. Bestimmen Sie für die Bezeichner zaehler_2, _temp, max__wert, wert_ das Wort über \(\Sigma\) und entscheiden Sie mit Begründung, ob der Bezeichner gültig ist. (4 BE)
  2. Zeichnen Sie den Zustandsgraphen eines DEA, der genau die gültigen Bezeichner akzeptiert. Geben Sie die Bedeutung jedes Zustands an. (6 BE)
  3. Erläutern Sie, wie viele Übergänge Ihr vollständiger Automat hat, und stellen Sie eine möglichst kleine Liste von Testwörtern zusammen, mit der jeder Übergang, der nicht in zF beginnt, mindestens einmal benutzt wird. (4 BE)

Hinweise

Hinweis zu Aufgabe a)
Übersetzen Sie Zeichen für Zeichen. Prüfen Sie dann die vier Regeln nacheinander.
Hinweis zu Aufgabe b)
Was muss sich der Automat merken? „Noch nichts gelesen“, „gültig bis hierher“, „zuletzt ein Unterstrich“. Alles andere ist nicht mehr zu retten.
Hinweis zu Aufgabe c)
\(|Z|\cdot|\Sigma|\) mit zF. Ein Testwort kann mehrere Übergänge abdecken — zählen Sie mit einer Tabelle ab.

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)
BezeichnerWort über Σgültig?
zaehler_2bbbbbbbuzja
_tempubbbbnein
max__wertbbbuubbbbnein
wert_bbbbunein

_temp beginnt nicht mit einem Buchstaben, max__wert enthält zwei Unterstriche hintereinander, wert_ endet auf einen Unterstrich. Nur zaehler_2 erfüllt alle Regeln.

Erwartungshorizont zu Aufgabe b)
Lösung: DEA für Bezeichner
z0z1z2bb, zub, z
Nicht eingezeichnete Übergänge führen in den Fehlerzustand zF.
  • z0: noch nichts gelesen (Start)
  • z1: gültiger Bezeichner, letztes Zeichen Buchstabe oder Ziffer (Endzustand)
  • z2: zuletzt ein Unterstrich — es muss noch ein Buchstabe oder eine Ziffer folgen
  • zF: Regel verletzt (Ziffer oder Unterstrich am Anfang, zwei Unterstriche)
Erwartungshorizont zu Aufgabe c)

Vier Zustände (mit zF) und drei Zeichen: \(4\cdot3=12\) Übergänge, davon 9, die nicht in zF beginnen.

Mögliche Testliste: bbzubzuu (nutzt z0-b, z1-b, z1-z, z1-u, z2-b, z2-u), buz (z2-z), z (z0-z), u (z0-u).

Damit sind alle 9 Übergänge abgedeckt; zusätzlich prüft man die Grenzfälle \(\varepsilon\) (abgelehnt) und b (kürzester gültiger Bezeichner).

2

Das Kfz-Kennzeichen

17 BEAFB II–III

Eine Parkhauskamera liest Kfz-Kennzeichen und prüft ihr Format (vereinfacht, ohne Leerzeichen): zuerst 1 bis 3 Buchstaben (Unterscheidungszeichen, z. B. H für Hannover), dann ein Bindestrich, dann 1 oder 2 Buchstaben und zuletzt 1 bis 4 Ziffern, wobei die erste Ziffer keine 0 sein darf.

Die Kamera übersetzt jedes Zeichen: Buchstabe → B, Bindestrich → -, Ziffer 0 → N, Ziffer 1 bis 9 → Z. Es gilt also \(\Sigma=\{B,\,-,\,N,\,Z\}\).

  1. Geben Sie für die Kennzeichen H-AB123, HAN-A0, B-XYZ1 das Wort über \(\Sigma\) an und entscheiden Sie, ob das Format stimmt. (3 BE)
  2. Entwerfen Sie einen DEA, der genau die Kennzeichen im beschriebenen Format akzeptiert. Stellen Sie ihn als vollständige Übergangstabelle dar und geben Sie die Bedeutung der Zustände an. (7 BE)
  3. Berechnen Sie, wie viele Übergänge der vollständige Automat hat und wie viele davon in den Fehlerzustand zF führen. Geben Sie an, ob man zF im Zustandsgraphen besser weglässt. (3 BE)
  4. Tatsächlich dürfen Kennzeichen höchstens 8 Zeichen haben (Bindestrich nicht mitgezählt). Beurteilen Sie, ob Ihr Automat diese Regel bereits einhält, und wie er gegebenenfalls angepasst werden müsste. (4 BE)

Hinweise

Hinweis zu Aufgabe a)
Zählen Sie die Buchstaben vor und nach dem Bindestrich und prüfen Sie die erste Ziffer.
Hinweis zu Aufgabe b)
Der Automat muss sich merken, in welchem Abschnitt er ist und wie viele Zeichen dieses Abschnitts er schon gelesen hat. Die Ziffern-Zustände sind alle Endzustände.
Hinweis zu Aufgabe c)
\(|Z|\cdot|\Sigma|\) — denken Sie an zF selbst. Zählen Sie dann in der Tabelle die Einträge, die nicht zF sind.
Hinweis zu Aufgabe d)
Wie lang ist das längste Kennzeichen, das Ihr Automat akzeptiert? Was müsste ein Zustand zusätzlich wissen?

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)
KennzeichenWort über ΣFormat korrekt?
H-AB123B-BBZZZja
HAN-A0BBB-BNnein
B-XYZ1B-BBBZnein

HAN-A0: Die erste Ziffer ist 0. B-XYZ1: Nach dem Bindestrich stehen drei Buchstaben.

Erwartungshorizont zu Aufgabe b)
ZustandB-NZBedeutung
z0z1zFzFzFnoch nichts
z1z2z4zFzF1 Buchstabe vor -
z2z3z4zFzF2 Buchstaben vor -
z3zFz4zFzF3 Buchstaben vor -
z4z5zFzFzFBindestrich gelesen
z5z6zFzFz71 Buchstabe nach -
z6zFzFzFz72 Buchstaben nach -
z7zFzFz8z81 Ziffer
z8zFzFz9z92 Ziffern
z9zFzFz10z103 Ziffern
z10zFzFzFzF4 Ziffern
zFzFzFzFzFungültig

(→ Startzustand, doppelt unterstrichen: Endzustände z7 bis z10.) Die Unterscheidung von N und Z ist nur in z5 und z6 wichtig: Die erste Ziffer darf keine 0 sein, danach sind beide erlaubt.

Erwartungshorizont zu Aufgabe c)

\(|Z|=12\) (z0 bis z10 und zF), \(|\Sigma|=4\): \(12\cdot4=48\) Übergänge.

Nicht nach zF führen \(1+2+2+1+1+2+1+2+2+2+0=16\); also führen \(48-16=32\) Übergänge nach zF (davon 4 Schleifen an zF).

Im Graphen wären zwei Drittel der Pfeile Fehlerpfeile. Es ist übersichtlicher, zF wegzulassen und dies ausdrücklich zu vermerken.

Erwartungshorizont zu Aufgabe d)

Der Automat hält die Regel nicht ein: Er akzeptiert z. B. BBB-BBZZZZ mit \(3+2+4=9\) Zeichen.

Betroffen ist nur der Fall mit 3 + 2 = 5 Buchstaben; dann sind höchstens 3 Ziffern erlaubt. Der Automat muss sich also ab dem Bindestrich zusätzlich merken, ob vorn 3 Buchstaben standen. Anpassung: z3 \(\xrightarrow{-}\) z4′ statt z4, dazu eine Kopie des weiteren Wegs: z4′ \(\xrightarrow{B}\) z5′, z5′ \(\xrightarrow{Z}\) z7 (4 Buchstaben, bis zu 4 Ziffern bleiben erlaubt), z5′ \(\xrightarrow{B}\) z6′ (5 Buchstaben), z6′ \(\xrightarrow{Z}\) z7′ \(\xrightarrow{N,Z}\) z8′ \(\xrightarrow{N,Z}\) z9′ mit z7′, z8′, z9′ als Endzuständen; aus z9′ führt jede Ziffer nach zF. Das sind 6 zusätzliche Zustände.

Beurteilung: Die Regel ist mit einem DEA umsetzbar, weil nur endlich viele Fälle zu unterscheiden sind; der Automat wächst aber schnell und wird unübersichtlich. Bei weiteren Längenregeln prüft man die Gesamtlänge in der Praxis besser zusätzlich im Programm.