FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Formale Informatik

F2 Rationalen Ausdruck bilden

F2 Rationalen Ausdruck bilden 2005-07-16 13:19
Anonymer User
Zu der folgenden Beschreibung soll man einen rationalen Ausdruck bilden:

Die Menge der Zeichenreihen über dem Alphabet {a,b,c}, die mindestens ein a und mindestens ein b enthalten.

Ich komm da zu nichts vernünftiges (alles viel, viel zu lang!).
Ich kann daraus nur einen endlichen Automaten formen, wie geht man da ran?

Re: F2 Rationalen Ausdruck bilden 2005-07-16 13:59
Inkarnat
ich glaub das wäre der korrekte rationale Ausdruck:

(c*b(a+b+c)*ac*)+(c*a(a+b+c)*bc*)

Ich bin aber auch nicht so gut beim bilden von rationalen Ausdrücken…
(Sieht auch lang aus)

Meine Methode: erst einen endlichen Automaten bilden und dann ablesen.

Kann jemand bestätigen ob der rat. Ausdruck korrekt ist?


Re: F2 Rationalen Ausdruck bilden 2005-07-16 14:08
Anonymer User
Wo ist denn das Problem?
Ein rationaler Ausdruck kann doch beliebig lang sein. Solange deine Lösung richtig ist, ist doch egal wie lang sie ist.

Mir ist auf Anhieb auch nur eine lange Lösung eingefallen.

Re: F2 Rationalen Ausdruck bilden 2005-07-16 14:15
Slater
(c*b(a+b+c)*ac*)+(c*a(a+b+c)*bc*)
sieht nicht so richtig aus, da 'aba' nicht drin ist

ganz einfach wäre ja für A=(a+b+c)*

-> AbAaA + AaAbA = A (bAa + aAb) A


obs noch kürzer geht, hmm ;)

z.B. c* (b(b+c)*a + a(a+c)*b) A

Re: F2 Rationalen Ausdruck bilden 2005-07-16 16:42
theorinix
Die Menge der Zeichenreihen über dem Alphabet {a,b,c}, die mindestens ein a und mindestens ein b enthalten.

Ich würde den gedanklich einfachsten Weg vorschlagen:

"irgendwas" a "irgendwas" b"irgendwas" oder
"irgendwas" b "irgendwas" a "irgendwas", denn beide Symbole müssen vorkommen.

Als rationaler Ausdruck wird das dann zu

[img]http://mokrates.de/cgi-bin/texstring?%24(a%2Bb%2Bc)%5E*a(a%2Bb%2Bc)%5E*b(a%2Bb%2Bc)%5E*%20%2B%20(a%2Bb%2Bc)%5E*b(a%2Bb%2Bc)%5E*a(a%2Bb%2Bc)%5E*%24[/img]

Was auch nicht kurz ist, aber man sieht sofort das das richtig ist!

(/edit: sah gerade erst Slaters Lösung, die mit der Abkürzung A=(a+b+c)^* schöner aussieht!)

Re: F2 Rationalen Ausdruck bilden 2005-07-16 19:59
Inkarnat
oha [img]http://www.fb18.de/gfx/8.gif[/img] ,
da hab ich mich ja blamiert - naja vor der F-Klausur - viel lernen, wenig Schlaf… [img]http://www.fb18.de/gfx/19.gif[/img]
Am besten nicht darauf hören, was ich da so von mir gebe [img]http://www.fb18.de/gfx/28.gif[/img]

Re: F2 Rationalen Ausdruck bilden 2005-07-18 22:31
georg
(c*b(a+b+c)*ac*)+(c*a(a+b+c)*bc*)
-> AbAaA + AaAbA = A (bAa + aAb) A


obs noch kürzer geht, hmm ;)

z.B. c* (b(b+c)*a + a(a+c)*b) A

A(ac*b+bc*a)A
spart noch 2 Zeichen [img]http://www.fb18.de/gfx/28.gif[/img]
Irgendwie erinnert mich das an die BucketSort-Implementierung…[img]http://www.fb18.de/gfx/22.gif[/img]