Matroids Matheplanet Forum Index
Moderiert von Bilbo
Theoretische Informatik » Formale Sprachen & Automaten » DEA aus regulärem Ausdruck ableiten
Autor
Universität/Hochschule J DEA aus regulärem Ausdruck ableiten
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Themenstart: 2023-01-31

Mein Lösungsversuch orientiert sich in etwa am beschriebenen Verfahren auf der Webseite (https://www.javatpoint.com/automata-conversion-of-re-to-fa) : https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_20230131_214221.jpg In der Musterlösung wird die folgende Lösung ohne Begründung und ohne Konstruktionsmethode gegeben: https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_Screenshot_20230131_214207_Adobe_Acrobat.jpg Ich verstehe die Musterlösung nicht und sie ist mir auch egal. Ich würde bloß gerne wissen, ob das die einfachste Methode ist, die es gibt und ob mein Ergebnis in Ordnung ist? Danke für die Unterstützung im Voraus. EDIT: nachdem ich dieses Video https://youtu.be/62JAy4oH6lU und weitere Videos vom selben Kanal zu diesem Thema entdeckt habe, denke ich, dass (a*+b)ca* = {c,ac, aac, ca, caa, aca, aaaaaacaa, bc, bca, bcaaaaa, ...} durch den folgenden Automaten akzeptiert wird: https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_20230131_224809.jpg Korrekt? Eine Frage: wie ist das Pluszeichen (Vereinigung?!) in einem regulären Ausdruck genau zu verstehen? Ein "Entweder Oder", stimmts? Viele Grüße CE


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.1, vom Themenstarter, eingetragen 2023-01-31

Scheint zu passen, wenn die restlichen Übergänge eingezeichnet worden wären und in einen Fehlerzustand überführen würden, eine Bestätigung von einem erfahrenen Kollegen wäre trotzdem cool. Danke.


   Profil
tactac
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 15.10.2014
Mitteilungen: 2712
  Beitrag No.2, eingetragen 2023-02-01

\(\begingroup\)\(\newcommand{\sem}[1]{[\![#1]\!]} \newcommand{\name}[1]{\ulcorner#1\urcorner} \newcommand{\upamp}{\mathbin {⅋}} \newcommand{\monus}{\mathbin {∸}}\) Dein Automat akzeptiert auch $abc$. Das darf er nicht.\(\endgroup\)


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.3, eingetragen 2023-02-01

\(\begingroup\)\(\newcommand{\id}{\operatorname{id}}\) Im Themenstart hast du die ersten 5 Schritte der kanonischen Überführung von einem regulären Ausdruck zu einem DEA mustergültig ausgeführt. Von da aus kannst du doch einfach weitermachen? \quoteon(2023-01-31 21:48 - civilengineer im Themenstart) Eine Frage: wie ist das Pluszeichen (Vereinigung?!) in einem regulären Ausdruck genau zu verstehen? Ein "Entweder Oder", stimmts? \quoteoff Nein. Das Pluszeichen steht für ein einschließendes Oder. Beispielsweise gilt \[ L(a\,(b+b)) = L(a\,b) = \{a\,b\} \] mfg thureduehrsen\(\endgroup\)


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.4, vom Themenstarter, eingetragen 2023-02-01

\quoteon(2023-02-01 01:26 - thureduehrsen in Beitrag No. 3) Im Themenstart hast du die ersten 5 Schritte der kanonischen Überführung von einem regulären Ausdruck zu einem DEA mustergültig ausgeführt. Von da aus kannst du doch einfach weitermachen? \quoteoff Ich weiß nicht, wie es ab dem 5. Schritt weitergehen soll. \quoteon \quoteon(2023-01-31 21:48 - civilengineer im Themenstart) Eine Frage: wie ist das Pluszeichen (Vereinigung?!) in einem regulären Ausdruck genau zu verstehen? Ein "Entweder Oder", stimmts? \quoteoff Nein. Das Pluszeichen steht für ein einschließendes Oder. Beispielsweise gilt \[ L(a\,(b+b)) = L(a\,b) = \{a\,b\} \] \quoteoff Ja, ok, in der Sprache heißt es eine Vereinigung, aber im Automaten sind es zwei verschiedene "Wege"... 🤔 \quoteon mfg thureduehrsen \quoteoff


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.5, eingetragen 2023-02-01

\quoteon(2023-02-01 07:21 - civilengineer in Beitrag No. 4) Ich weiß nicht, wie es ab dem 5. Schritt weitergehen soll. \quoteoff Tue doch einmal so, als hätte ich keine Ahnung und erkläre mir, was du beim Übergang von 4 zu 5 getan hast. Vielleicht ungefähr so ausführlich wie hier. mfg thureduehrsen


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.6, vom Themenstarter, eingetragen 2023-02-01

Aus einem NEA einen DEA gemacht. Mit Fehlerzustand. Eigentlich müsste die Aufgabe an dieser Stelle enden. Ich bin mir aber nicht mehr so sicher, ob und warum das Ergebnis im Schritt 5 so (nicht) passt... hier ist es ausführlicher beschrieben. Ich muss mir mal diese Konstruktion nochmal in Ruhe ansehen. Nach dem Lesen (über die Potenzmengenkonstruktion) glaube ich, dass sowohl der obige DEA im Themenstart, der im 5. Schritt ermittelt wurde, als auch der folgende DEA korrekt sind, stimmts?... https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_20230201_174524.jpg


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.7, eingetragen 2023-02-01

\(\begingroup\)\(\newcommand{\id}{\operatorname{id}}\) \quoteon(2023-02-01 17:01 - civilengineer in Beitrag No. 6) glaube ich, dass sowohl der obige DEA im Themenstart, der im 5. Schritt ermittelt wurde, als auch der folgende DEA korrekt sind \quoteoff Der DEA, der hier im 5. Schritt steht, ist nicht korrekt, denn er erkennt auch das Wort \(b\,b\,c\), das nicht zur Sprache \(L((a^\ast+b)ca^\ast)\) gehört. Der DEA, der hier im 3. Schritt steht, ist korrekt, und seine Konstruktion ist auch klarer erkennbar. Er dürfte sogar minimal für diese Sprache sein. mfg thureduehrsen\(\endgroup\)


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.8, vom Themenstarter, eingetragen 2023-02-01

Danke für die Info. Aber dann frage ich mich, wie mit derselben Konstruktionsmethode einmal ein richtiger (im 3. Schritt) und ein zweites Mal ein falscher Automat (im 5. Schritt) resultieren konnten. Fällt dir vlt. etwas bei der Konstruktion im Themenstart auf, das bei der Ermittlung vom DEA nicht richtig ist?


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.9, eingetragen 2023-02-01

Es könnte sein, dass ich etwas voreilig war mit meiner Aussage, dass du die Schritte fehlerfrei abgearbeitet hast bei dieser Konstruktion. Erkläre mir mal den Übergang von Schritt 3 nach Schritt 4. Insbesondere: warum ist der Startzustand akzeptierend? mfg thureduehrsen


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.10, vom Themenstarter, eingetragen 2023-02-01

Der Übergang ist so gedacht, dass man gar kein a also das leere Wort oder mehrere as eingeben darf. Es kann sein, dass der Übergang vom Schritt 3 zum Schritt 4 falsch ist und dass man die kleensche Hülle von a anders modellieren sollte. Ich weiß es nicht. Der Startzustand ist verwerfend.


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.11, eingetragen 2023-02-01

\quoteon(2023-02-01 18:38 - civilengineer in Beitrag No. 10) Der Startzustand ist verwerfend. \quoteoff Warum hat er dann einen Doppelkreis? mfg thureduehrsen


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.12, eingetragen 2023-02-01

\(\begingroup\)\(\newcommand{\id}{\operatorname{id}}\) \quoteon(2023-02-01 18:38 - civilengineer in Beitrag No. 10) und dass man die kleensche Hülle von a anders modellieren sollte \quoteoff Versuche es mal so: $ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=21mm, thick, ] \node[initial,state] (q0) {}; \node[state] (q1) [right of=q0] {}; \node[state] (q2) [right of=q1] {}; \node[accepting,state] (q3) [right of=q2] {}; \path[every node/.style={font=\small},align=center] (q0) edge [above] node {$\varepsilon$} (q1) (q1) edge [above] node {a} (q2) (q2) edge [above] node {$\varepsilon$} (q3) (q0) edge [above,bend left] node {$\varepsilon$} (q3) (q2) edge [below,bend left] node {$\varepsilon$} (q1) ; \end{tikzpicture} $ mfg thureduehrsen\(\endgroup\)


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.13, vom Themenstarter, eingetragen 2023-02-01

\quoteon(2023-02-01 18:44 - thureduehrsen in Beitrag No. 11) \quoteon(2023-02-01 18:38 - civilengineer in Beitrag No. 10) Der Startzustand ist verwerfend. \quoteoff Warum hat er dann einen Doppelkreis? mfg thureduehrsen \quoteoff Der Zustand 0 im Schritt 4 ist der Startzustand und hat keinen Doppelkreis?


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.14, eingetragen 2023-02-01

\(\begingroup\)\(\newcommand{\id}{\operatorname{id}}\) Ach, das ist eine Null und kein Kreis? Sorry... Aber modelliere den Kleene-Stern trotzdem mal gemäß meinem Vorschlag. Denn dein Automat in Schritt 4 akzeptiert das Wort \(b\,a\,c\), das er nicht akzeptieren soll. mfg thureduehrsen\(\endgroup\)


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.15, vom Themenstarter, eingetragen 2023-02-01

Danke dir. Ich denke, der Fehler beim Übergang von Schritt 3 zum Schritt 4 wurde zweimal gemacht (zwischen Zustand 0 und 1 sowie zwischen Zustand 2 und 3 jeweils bei a*), die a Schleife hätte logischerweise ein Zustand früher verschoben werden sollen (ist vermutlich egal, oder?!). Ich weiß nicht, ob die folgende Korrektur passt, aber ich hoffe es. Was meinst du? https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_20230201_222146.jpg Das ist im Prinzip dasselbe Ergebnis wie mit den 5 Schritten...


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.16, vom Themenstarter, eingetragen 2023-02-01

\quoteon(2023-02-01 00:21 - tactac in Beitrag No. 2) Dein Automat akzeptiert auch $abc$. Das darf er nicht. \quoteoff Jeder Ergebnis-Automat bisher akzeptiert abc... Außer dem Automaten aus der Musterlösung, aber bei dem wird nicht erklärt, wie er abgeleitet wird...


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.17, eingetragen 2023-02-02

\(\begingroup\)\(\newcommand{\id}{\operatorname{id}}\) \quoteon(2023-02-01 22:25 - civilengineer in Beitrag No. 15) \quoteoff Hier akzeptiert der Automat 3 das Wort \(a\,b\,c\) nicht, aber der Automat 4 tut es. Also ist die Umformung falsch. mfg thureduehrsen\(\endgroup\)


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.18, eingetragen 2023-02-02

\(\begingroup\)\(\newcommand{\id}{\operatorname{id}}\) Ich spendiere noch mal ein paar Zwischenschritte.
$ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=40mm, thick, ] \node[state,initial] (q0) {\(q_0\)}; \node[state,accepting] (q1) [right of=q0] {\(q_1\)}; \path (q0) edge node {$(a^\ast+b)\,c\,a^\ast$} (q1) ; \end{tikzpicture} $   Anfangszustand: einzige Kante mit dem gesamten regulären Ausdruck beschriftet
 
$ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=25mm, thick, ] \node[state,initial] (q0) {\(q_0\)}; \node[state] (q1) [right of=q0] {\(q_1\)}; \node[state,accepting] (q2) [right of=q1] {\(q_2\)}; \path (q0) edge node {$(a^\ast+b)$} (q1) (q1) edge node {$c\,a^\ast$} (q2) ; \end{tikzpicture} $   erste Auftrennung bei der Konkatenation
 
$ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=25mm, thick, ] \node[state,initial] (q0) {\(q_0\)}; \node[state] (q1) [right of=q0] {\(q_1\)}; \node[state,accepting] (q2) [right of=q1] {\(q_2\)}; \path (q0) edge [bend left] node {$a^\ast$} (q1) (q0) edge [bend right] node {$b$} (q1) (q1) edge node {$c\,a^\ast$} (q2) ; \end{tikzpicture} $   Auftrennung bei der Alternative: zwei Pfade
 
$ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=20mm, thick, ] \node[state,initial] (q0) {\(q_0\)}; \node[state] (q1) [right of=q0] {\(q_1\)}; \node[state] (q2) [right of=q1] {\(q_2\)}; \node[state,accepting] (q3) [right of=q2] {\(q_3\)}; \path (q0) edge [bend left] node {$a^\ast$} (q1) (q0) edge [bend right] node {$b$} (q1) (q1) edge node {$c$} (q2) (q2) edge node {$a^\ast$} (q3) ; \end{tikzpicture} $   Zweite Auftrennung bei der Konkatenation
 
$ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=20mm, thick, ] \node[state,initial] (q0) {\(q_0\)}; \node[state] (q1) [right of=q0] {\(q_1\)}; \node[state] (q2) [right of=q1] {\(q_2\)}; \node[state,accepting] (q3) [right of=q2] {\(q_\)}; \path (q0) edge [bend left] node {$a^\ast$} (q1) (q0) edge [bend right] node {$b$} (q1) (q1) edge node {$c$} (q2) (q2) edge node {$a$} (q3) (q2) edge [bend left] node {$\varepsilon$} (q3) (q3) edge [bend left] node {$\varepsilon$} (q2) ; \end{tikzpicture} $   Das hintere Vorkommen von \(a^\ast\) kann einfach umgewandelt werden, da hier keine Alternative zu berücksichtigen ist
 
 
mfg thureduehrsen
\(\endgroup\)


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.19, eingetragen 2023-02-02

\(\begingroup\)\(\newcommand{\id}{\operatorname{id}}\) Ersetze doch mal (mutatis mutandis) das Vorkommen von \(a^\ast\) zwischen \(q_0\) und \(q_1\) in meinem letzten Automaten durch diese Konstruktion \quoteon(2023-02-01 19:01 - thureduehrsen in Beitrag No. 12) $ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=21mm, thick, ] \node[initial,state] (q0) {}; \node[state] (q1) [right of=q0] {}; \node[state] (q2) [right of=q1] {}; \node[accepting,state] (q3) [right of=q2] {}; \path[every node/.style={font=\small},align=center] (q0) edge [above] node {$\varepsilon$} (q1) (q1) edge [above] node {a} (q2) (q2) edge [above] node {$\varepsilon$} (q3) (q0) edge [above,bend left] node {$\varepsilon$} (q3) (q2) edge [below,bend left] node {$\varepsilon$} (q1) ; \end{tikzpicture} $ \quoteoff und gib den sich ergebenden Automaten an. mfg thureduehrsen \(\endgroup\)


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.20, vom Themenstarter, eingetragen 2023-02-02

\quoteon(2023-02-02 08:36 - thureduehrsen in Beitrag No. 17) \quoteon(2023-02-01 22:25 - civilengineer in Beitrag No. 15) \quoteoff Hier akzeptiert der Automat 3 das Wort \(a\,b\,c\) nicht, aber der Automat 4 tut es. Also ist die Umformung falsch. mfg thureduehrsen \quoteoff Ja, die Umformung vom Schritt 3 auf Schritt 4 war nicht ganz richtig, aber auch die richtige Umformung, die durch die Anwendung der Potenzmengenkonstruktion entstanden ist, liefert im 4. Schritt einen Automaten, der abc akzeptiert....🤯 https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_123.jpg


   Profil
civilengineer
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 25.05.2011
Mitteilungen: 1805
Wohnort: Bayern, München
  Beitrag No.21, vom Themenstarter, eingetragen 2023-02-02

\quoteon(2023-02-02 12:52 - thureduehrsen in Beitrag No. 19) Ersetze doch mal (mutatis mutandis) das Vorkommen von \(a^\ast\) zwischen \(q_0\) und \(q_1\) in meinem letzten Automaten durch diese Konstruktion \quoteon(2023-02-01 19:01 - thureduehrsen in Beitrag No. 12) $ \begin{tikzpicture} [ ->, >=stealth', shorten >=1pt, auto,node distance=21mm, thick, ] \node[initial,state] (q0) {}; \node[state] (q1) [right of=q0] {}; \node[state] (q2) [right of=q1] {}; \node[accepting,state] (q3) [right of=q2] {}; \path[every node/.style={font=\small},align=center] (q0) edge [above] node {$\varepsilon$} (q1) (q1) edge [above] node {a} (q2) (q2) edge [above] node {$\varepsilon$} (q3) (q0) edge [above,bend left] node {$\varepsilon$} (q3) (q2) edge [below,bend left] node {$\varepsilon$} (q1) ; \end{tikzpicture} $ \quoteoff und gib den sich ergebenden Automaten an. mfg thureduehrsen \quoteoff https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_1.jpg https://matheplanet.com/matheplanet/nuke/html/uploads/c/31462_2.jpg ?


   Profil
thureduehrsen
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.11.2007
Mitteilungen: 1417
Wohnort: Kiel, Deutschland
  Beitrag No.22, eingetragen 2023-02-04

\quoteon(2023-02-02 15:15 - civilengineer in Beitrag No. 21) \quoteoff Sieht gut aus. 👍 Der Automat, den du angegeben hast, dürfte sogar minimal sein. mfg thureduehrsen


   Profil
civilengineer hat die Antworten auf ihre/seine Frage gesehen.
civilengineer hat selbst das Ok-Häkchen gesetzt.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]