Grammatik für Nummernschilder

SharkFoce

Mitglied
Guten Tag,

wir haben in der Schule mit dem Thema der formalen Sprache angefangen und auf dem ersten Blick überfordert mich dieses Thema sehr und youtube tutorials bringen mich leider auch nicht weiter. Aufgegeben wurde uns eine reguläre Grammatik zur Erstellung von "deutschen" Nummernschildern (XXX - XX - 1234). Könnte mir jemand eine kleine Einleitung zum Thema geben und eventuell ein Ansatz?


Gruß
 
N

neoexpert

Gast
Ich versuch's:
Kleinbuchstaben sind im folgenden Variablen, s ist startsymbol, "|" steht für entweder oder:
a->A|B|C|...|Z
b->0|1|2|3|...|9
s->ac
c->ad
d->ae
e->-f
f->ag
g->ah
h->-j
j->bk
k->bl
l->bm
m->b
 

SharkFoce

Mitglied
Also könnt ich wenn a -> A-Z ist und b -> 0-9 ist, eigentlich die Aufgabe lösen oder?
S-> a -> a -> a -> a -> a -> b -> b -> b -> b / XXX-XX-0123 ?
 
N

neoexpert

Gast
Jo, aber manchmal gibt es Nummerschilder mit nur 2 oder einem Buchstaben für die Region. Für Historische Autos kann man hinter der Zahl ein "H" anhängen. Und die Zahl-Länge kann sich variieren.
 

SharkFoce

Mitglied
Ok und wie würde man jetzt formal die Grammatik aufschreiben (irgendwas mit 4 Tupeln?) Und wie könnt ich Kennzeichen X-XX-01 im oben erwähnten zeigen?
 
N

neoexpert

Gast
Sagen wir mal entweder ein oder Zwei Buchstaben würde man so machen:
a->A|B|C|...|Z
s->a
s->ab
b->a
man kann also die gewünschte Regel für s auswählen.
 

Meniskusschaden

Top Contributor
Ich versuch's:
Kleinbuchstaben sind im folgenden Variablen, s ist startsymbol, "|" steht für entweder oder:
a->A|B|C|...|Z
b->0|1|2|3|...|9
s->ac
c->ad
d->ae
e->-f
f->ag
g->ah
h->-j
j->bk
k->bl
l->bm
m->b
Kann man das wirklich so machen? Kenne mich da nicht wirklich aus, aber es kommt mir etwas seltsam vor. Beispiel:
Code:
s     Startsymbol
ac    Startsymbol ersetzt
Ac    a durch Terminal A ersetzt
Aad   c durch ad ersetzt
ABd   a durch Terminal B ersetzt
ABae  d durch ae ersetzt
ABCe  a durch Terminal C ersetzt
ABC-f e durch -f ersetzt
usw.

Wie bildet man dann beispielsweise einen einzelnen Buchstaben für den Ort ab?
 
N

neoexpert

Gast
Achso:
G=(N,T,P,S)
N= Nichtterminale (Variablen)
T= Terminale (Konstanten)
P = Menge aller Regeln (die oben)
S= startsymbol
 

SharkFoce

Mitglied
Also wär es formal damit eine Maschine die Sprache versteht, es doch so oder? - die Grammatik also
G = (N,T,S,P)
N = (S,A,B)
T = (a,b) a = A|B|C|...|Z b = 0-9
Startsymbol S:
P = was wären die Produktionsvorschriften?
 
N

neoexpert

Gast
Maschine nicht. Mit Grammatiken kann man Sprachen erzeugen. Automaten akzeptieren Sprachen.
In P schreibst du Mengenmässig alle deine Regeln auf. Z.B:
P={S->aB,B->a}
 
N

neoexpert

Gast
Kann man das wirklich so machen? Kenne mich da nicht wirklich aus, aber es kommt mir etwas seltsam vor. Beispiel:
Code:
s     Startsymbol
ac    Startsymbol ersetzt
Ac    a durch Terminal A ersetzt
Aad   c durch ad ersetzt
ABd   a durch Terminal B ersetzt
ABae  d durch ae ersetzt
ABCe  a durch Terminal C ersetzt
ABC-f e durch -f ersetzt
usw.

Wie bildet man dann beispielsweise einen einzelnen Buchstaben für den Ort ab?
Ja das muss man auch beachten, hab oben schon geschrieben. Ich wollte nur seinen Beispiel umsetzen. (XXX-XX-1234)
 
N

neoexpert

Gast
Das sind die Variablen (aber Vorsicht ich habe oben das so festgelegt, weil wir Großbuchstaben brauchen. Normalerweise verwendet man Großbuchstaben für Variablen und Kleinbuchstaben für Konstanten)
Variablen kommen alle in N={a,b,c,...}
 

SharkFoce

Mitglied
Also könnt ich jetzt meine Aufgabe "Entwickeln Sie eine reguläre Grammatik zur Erstellung von Nummernschildern" mit dieser folgenden Grammatik beantworten;
G = (N,T,S,P)
N =(S,A,B)
T = (1,2,3,...,9,a,b,c,...,z)
Startsymbol S:
P = S->ac
c->ad
d->ae
e->-f
f->ag
g->ah
h->-j
j->bk
k->bl
l->bm
m->b

Danke schon mal im voraus
 
N

neoexpert

Gast
Eig nicht. Versuch damit mal
M-CM-9000 zu erzeugen.
Wir wollen ja nicht einfach nur Lösungen liefern, viel mehr Denkanstöße.
EDIT:
Und ausserdem ist P bei dir keine Menge.
 

Oben