Alexander Schmidt
2004-01-06 20:02:47 UTC
Hi,
sorry, mein Verständnis zu regulären Sprachen hat sich noch immer nicht
gebessert.
Sind folgende meiner Gedankengänge Eures erachtens korrekt:
a) Jede endliche Sprache ist regulär.
Würde sagen dass diese Aussage wahr ist.
Begründung: Wir können für jede endliche Sprache einen DFA konstruieren
(auch wenn dieser groß / komplex werden kann) der alle Wörter der Sprache,
also die Sprache, akzeptiert. Dies kann man sich auch so vorstellen, dass
wir für alle endlichen Sprachen einen endlich langen regulären Ausdruck (w1
+ w2 + w3 + ... + wn) konstruieren können der diese Sprache beschreibt (auch
dieser kann u.U. lang werden, aber nur endlich lang).
b) Jede Teilmenge einer regulären Sprache ist regulär.
Würde sagen dass diese Aussage wahr ist.
Begründung: Auch diese Teilsprache muß einen DFA haben der sie erkennt,
ansonsten könnte auch die Originalsprache nicht erkannt werden. Die
Teilsprache wird also im DFA der die Originalsprache an einer bestimmten
Stelle "integriert" sein, d.h. eine Untermenge der Zustände des DFA der die
Originalsprache erkennt kann die Teilsprache erkennen. Wie oben kann man
sich auch vorstellen, dass es einen regulären Ausdruck geben muß der die
Teilsprache erkennt und der Teil des ursprünglichen regulären Ausdrucks war.
c) Sei L eine reguläre Sprache. Dann ist { uv aus E* | u aus L und v nicht
aus L} regulär.
Würde sagen dass diese Aussage falsch ist.
Begründung: u mag Element einer Sprache L sein, die regulär ist. v kann aber
z.B. Element einer Sprache L2 sein die nicht regulär ist. Die Konkatenation
zweier solcher Wörter könnte normalerweise durch einen NFA wie folgt erkannt
werden: Gegeben seien zwei disjunkte Kopien eines NFA (genannt A1 und A2)
die L erkennen. Der Anfangszustand von A1 wird Anfangzustand des neuen
Automaten. Von jedem Zustand in A1 gibt es eine epsilon-Bewegung zum
Anfangszustand von A2. Immer wenn der Wortanfang zu L gehört kann
nichtdeterministiusch entschieden werden, ob in A1 weitergeprüft oder ob
geprüft werden soll ib das Restwort (also v) zu L2 gehört. Leider können wir
zwar eine "Stelle" raten aber wegen der möglichen Irregularität von L2 u.U.
nicht verifizieren ob v aus L2 ist und somit keinen NFA bauen der uns das
Problem löst. Somit muß dies nicht regulär sein.
d) Die Sprache {w aus B* | |w|0 = |w|1 } ist regulär.
Mit |w|x, w aus E*, x aus E* sei die Antahl des Vorkommens des Zeichens
a im Wort w gemeint.
Würde sagen dass diese Aussage wahr ist.
Begründung: DFAs sind in der Lage zu zählen (über Ihre Zustände). So könnte
man einen DFA bauen der bei Vorkommen des Zeichens 0 seinen Zustand wechselt
und beim Vorkommen des Zeichens 1 seinen Zustnd (in die entgegengesetzte
"Richtung") wechselt und bei allen anderen Zeichen im Zustand verbleibt.
Sind wir am Ende wieder im Ausgangszustand können wir akzeptieren da wir in
beide "Richtungen" gleich weit gewandert sind, also geliche oft 0 wie 1
gelesen haben. Folglich ist die Sprache regulär.
Vielen Dank für Eure Meinungen.
MfG
sorry, mein Verständnis zu regulären Sprachen hat sich noch immer nicht
gebessert.
Sind folgende meiner Gedankengänge Eures erachtens korrekt:
a) Jede endliche Sprache ist regulär.
Würde sagen dass diese Aussage wahr ist.
Begründung: Wir können für jede endliche Sprache einen DFA konstruieren
(auch wenn dieser groß / komplex werden kann) der alle Wörter der Sprache,
also die Sprache, akzeptiert. Dies kann man sich auch so vorstellen, dass
wir für alle endlichen Sprachen einen endlich langen regulären Ausdruck (w1
+ w2 + w3 + ... + wn) konstruieren können der diese Sprache beschreibt (auch
dieser kann u.U. lang werden, aber nur endlich lang).
b) Jede Teilmenge einer regulären Sprache ist regulär.
Würde sagen dass diese Aussage wahr ist.
Begründung: Auch diese Teilsprache muß einen DFA haben der sie erkennt,
ansonsten könnte auch die Originalsprache nicht erkannt werden. Die
Teilsprache wird also im DFA der die Originalsprache an einer bestimmten
Stelle "integriert" sein, d.h. eine Untermenge der Zustände des DFA der die
Originalsprache erkennt kann die Teilsprache erkennen. Wie oben kann man
sich auch vorstellen, dass es einen regulären Ausdruck geben muß der die
Teilsprache erkennt und der Teil des ursprünglichen regulären Ausdrucks war.
c) Sei L eine reguläre Sprache. Dann ist { uv aus E* | u aus L und v nicht
aus L} regulär.
Würde sagen dass diese Aussage falsch ist.
Begründung: u mag Element einer Sprache L sein, die regulär ist. v kann aber
z.B. Element einer Sprache L2 sein die nicht regulär ist. Die Konkatenation
zweier solcher Wörter könnte normalerweise durch einen NFA wie folgt erkannt
werden: Gegeben seien zwei disjunkte Kopien eines NFA (genannt A1 und A2)
die L erkennen. Der Anfangszustand von A1 wird Anfangzustand des neuen
Automaten. Von jedem Zustand in A1 gibt es eine epsilon-Bewegung zum
Anfangszustand von A2. Immer wenn der Wortanfang zu L gehört kann
nichtdeterministiusch entschieden werden, ob in A1 weitergeprüft oder ob
geprüft werden soll ib das Restwort (also v) zu L2 gehört. Leider können wir
zwar eine "Stelle" raten aber wegen der möglichen Irregularität von L2 u.U.
nicht verifizieren ob v aus L2 ist und somit keinen NFA bauen der uns das
Problem löst. Somit muß dies nicht regulär sein.
d) Die Sprache {w aus B* | |w|0 = |w|1 } ist regulär.
Mit |w|x, w aus E*, x aus E* sei die Antahl des Vorkommens des Zeichens
a im Wort w gemeint.
Würde sagen dass diese Aussage wahr ist.
Begründung: DFAs sind in der Lage zu zählen (über Ihre Zustände). So könnte
man einen DFA bauen der bei Vorkommen des Zeichens 0 seinen Zustand wechselt
und beim Vorkommen des Zeichens 1 seinen Zustnd (in die entgegengesetzte
"Richtung") wechselt und bei allen anderen Zeichen im Zustand verbleibt.
Sind wir am Ende wieder im Ausgangszustand können wir akzeptieren da wir in
beide "Richtungen" gleich weit gewandert sind, also geliche oft 0 wie 1
gelesen haben. Folglich ist die Sprache regulär.
Vielen Dank für Eure Meinungen.
MfG