Theoretische und technische Informatik - ganz praktisch
Herzlich willkommen auf der Question/Answer-Plattform zu Grundlagen der Informatik II. Wir wünschen Ihnen viel Spaß beim Lernen und Diskutieren!
Loggen Sie sich mit Ihrem KIT-Account (u...) ein, um loszulegen!
Beachten Sie auch diese Informationen zum Schnelleinstieg.
(Nicht-KIT-Studierende beachten bitte diese Informationen.)

Schöne Ferien!
 

 

Frage zu Skript:

0 Punkte
42 Aufrufe
Wäre auch (1+00)x(00*+000*+01*)* ok gewesen?

@[regex:(00+1)(0(0+00+1))*
--declarations--
e=#n#;
animate=this;
showSomeWords=true
--declarations-end--]@
Gefragt 10, Jan 2018 in AU-2-2 von Anonym  
Bearbeitet 10, Jan 2018 von Lukas König

Eine Antwort

0 Punkte
Hallo,

deine Lösung ist leider nicht richtig. Wir betrachten w=00011. Dann sehen wir, dass wir dieses Wort aus deiner Sprache erzeugen können, indem wir aus der ersten Klammer 00 wählen und aus dem zweiten Block 01*. Die eins können wir aufgrund des Sternes verdoppeln. Somit erhalten wir w aus deiner Sprache. Allerdings liegt dieses Wort nicht in der XWizard- Sprache. Dort können wir immer nur eine eins einfügen und dann muss erst wieder eine Null kommen, bevor die nächste kommen kann. Deshalb können diese beiden Ausdrücke bereits nicht äquivalent sein.

Bei regulären Ausdrücken kann man leider nicht einfach den Stern "in die Klammer reinziehen". Was du allerdings machen kannst ist innerhalb der großen Klammer ausmultiplizieren, folgender Ausdruck wäre somit richtig:

(00+1)x(0(0+00+1))* = (00+1)x(00+000+01)*

Viele Grüße,

Julia (Tutorin)
Beantwortet 10, Jan 2018 von Julia Kopf Tutor(in) (100,580 Punkte)  
...