{"id":1759,"date":"2013-06-01T17:58:37","date_gmt":"2013-06-01T15:58:37","guid":{"rendered":"http:\/\/fernuni.digreb.net\/?p=1759"},"modified":"2025-11-25T23:15:03","modified_gmt":"2025-11-25T22:15:03","slug":"tib-endliche-automaten-und-kontextfreie-grammatiken-lernziele-ke6-23","status":"publish","type":"post","link":"https:\/\/fernuni.digreb.net\/?p=1759","title":{"rendered":"TIB: Endliche Automaten und kontextfreie Grammatiken (Lernziele KE6 2\/3), Update 3"},"content":{"rendered":"<p><strong>Update 3<\/strong>: Korrektur der Beweisidee f\u00fcr Durchschnitt, nicht Vereinigung. Danke Phil.<\/p>\n<p><strong>Update 2<\/strong>: Korrektur Aufgabe aus Lernziel 3. Danke Mike.<\/p>\n<p><strong>Update<\/strong>: Aufgabe mit L\u00f6sung hinzugef\u00fcgt um aus einem Automaten eine Regelmenge abzuleiten.<\/p>\n<p>Ohne viele Worte: weiter in KE6.<\/p>\n<h2>Lernziel 3<\/h2>\n<p style=\"padding-left: 30px;\"><em>Wie konstruiert man zu einem endlichen Automaten \\(A\\) einen regul\u00e4ren Ausdruck \\(\\alpha\\) mit \\(L(A)=L(\\alpha)\\)?<\/em><\/p>\n<p>Hier kommt einiges an Schreibarbeit auf uns zu. Wie wir aus dem Beitrag zu KE5 wissen, k\u00f6nnen wir regul\u00e4re Sprachen mit einem regul\u00e4ren Ausdruck beschreiben. Um zu beweisen, dass eine Sprache regul\u00e4r ist,\u00a0muss man sie auf eine regul\u00e4re Grammatik, einen endlichen Automaten, einen regul\u00e4ren Ausdruck oder auf bereits bekannte regul\u00e4re Sprachen zur\u00fcckf\u00fchren.<\/p>\n<p>Hier haben wir einen Automaten \\(A\\) zu einer Sprache \\(L\\) bereits gegeben (die Sprache ist also als regul\u00e4r bewiesen) und suchen nun auch noch einen regul\u00e4ren Ausdruck, der uns dieselbe Sprache beschreibt. Wir verwenden als beispiel wieder den Automaten \\(A\\) aus dem vorherigen Beitrag:<\/p>\n<p><strong>Beispiel<\/strong>:\u00a0\\(A=(\\{a,b\\},\\{0,1,2\\},0,2,\\delta)\\) mit<\/p>\n<p style=\"padding-left: 30px;\">\\(\\delta=\\{(1,a,1),(1,b,1),(1,a,2),(2,b,3),(3,a,3),(3,b,3)\\}\\)<\/p>\n<p>Hier nochmal der Graph damit Ihr nicht zwischen den Beitr\u00e4gen wechseln m\u00fcsst:<\/p>\n<p><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/automat.png\"><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: 50px; margin-right: 50px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/automat.png\" alt=\"automat\" width=\"404\" height=\"116\" \/><\/a><\/p>\n<p>Der Ansatz im Beweis ist ein geringf\u00fcgig anderer, ich will sagen etwas formaler aus die Vorgehensweise, die ich gleich vorstelle. Das Ergebnis ist aber dasselbe. Wenn jemand eine sch\u00f6ne Erkl\u00e4rung f\u00fcr den formalen Beweis im Skript hat, der die folgenden zwei Formeln verwendet, immer her damit.<\/p>\n<blockquote>\\({L_{ij}}^{0}=\\{a\\in\\Sigma\\mid (i,a,j)\\in\\delta\\}\\)\n\\({L_{ij}}^{k}={L_{ij}}^{k-1}\\cup{L_{ik}}^{k-1}\\cdot({L_{kk}}^{k-1})^*\\cdot{L_{kj}}^{k-1}\\)<\/blockquote>\n<p>Wir machen das etwas weniger formal. Die Schritte sind wie folgt:<\/p>\n<p>Wir f\u00fchren einen neuen Startzustand \\(S\\) ein, der mit einem leeren Wort\u00a0\\(\\epsilon\\)\u00a0bereits in unseren ehemaligen Startzustand \u00fcbergeht. Ebenfalls wird ein neuer Endzustand \\(E\\) eingesetzt, zu dem ein Pfeil von jedem ehemaligen Endzustand gezogen wird. Auch hier wird das leere Wort als \u00dcbergang verwendet. Unser neuer Graph sieht wie folgt aus:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/s11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-1781\" style=\"margin-left: 0px; margin-right: 50px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/s11.png\" alt=\"s1\" width=\"445\" height=\"78\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/s11.png 908w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/s11-300x52.png 300w\" sizes=\"auto, (max-width: 445px) 100vw, 445px\" \/><\/a><\/p>\n<p>Wenn wir uns den \u00dcbergang von Zustand \\(0\\) zu Zustand \\(1\\) anschauen, f\u00e4llt auf, dass wir in jedem Fall ein \\(a\\) als Abschluss der Zeichenkette brauchen um zu Zustand \\(1\\) zu kommen. Beliebig lange Worte, die aus \\(a\\) oder \\(b\\) zusammengesetzt sind, spielen f\u00fcr den \u00dcbergang aufgrund der Schleife im Zustand \\(0\\) keine Rolle solange das \\(a\\) als Suffix im Wort vorhanden ist. Das f\u00fchrt uns auch zu den beiden \u00dcberf\u00fchrungsregeln, die wir brauchen. Ein Bild sagt mehr als tausend Worte:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/r1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-1785\" style=\"margin-left: 100px; margin-right: 100px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/r1.png\" alt=\"r1\" width=\"299\" height=\"175\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Klammern wir die Ausdr\u00fccke bei Regel 1, wird es evtl. deutlicher: \\(\\{x\\}\\cdot\\{y\\}^*\\cdot\\{z\\}\\) ist dann der gesuchte, regul\u00e4re Ausdruck um von Zustand \\(A\\) zu Zustand \\(C\\) zu kommen nachdem man Zustand \\(B\\) entfernt hat. Ein Wort, dass den regul\u00e4ren Ausdruck erf\u00fcllen w\u00fcrde, w\u00e4re z.B. \\(xyyyyyyyz\\) oder \\(xz\\). Eines, dass ihn nicht erf\u00fcllt ist \\(xy\\).<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/r2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-1786\" style=\"margin-left: 100px; margin-right: 100px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/r2.png\" alt=\"r2\" width=\"297\" height=\"165\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/r2.png 495w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/r2-300x166.png 300w\" sizes=\"auto, (max-width: 297px) 100vw, 297px\" \/><\/a><\/p>\n<p>Regel 2 ist noch einfacher: Von Zustand \\(A\\) zu Zustand \\(C\\) kommt man durch die Konkatenation von \\(x\\) und \\(z\\). That&#8217;s it.<\/p>\n<p>Das alles angewendet auf unseren Graphen f\u00fchrt uns zu folgendem:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/regexp.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-1790\" style=\"margin-left: 50px; margin-right: 50px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/regexp.png\" alt=\"regexp\" width=\"404\" height=\"304\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/regexp.png 674w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/regexp-300x225.png 300w\" sizes=\"auto, (max-width: 404px) 100vw, 404px\" \/><\/a><\/p>\n<p>Die leeren Worte \\(\\epsilon\\) brauchen wir nun nicht mehr und k\u00f6nnen sie streichen. Korrekt geklammert haben wir den gesuchten, regul\u00e4ren Ausdruck \\(\\alpha=\\{a,b\\}^{*}\\cdot\\{ab\\}\\cdot\\{a,b\\}^{*}\\) und damit gilt: \\(L(A) = L(\\alpha)\\). Wir k\u00f6nnen auch problemlos eine regul\u00e4re Grammatik \\(G\\) zum Automaten \\(A\\) angeben um \\(L(A) = L(\\alpha) = L(G)\\) zu bekommen. K\u00f6nnt Ihr mal selbst probieren.<\/p>\n<p><strong>Aufgabe<\/strong>: findet zum Automaten \\(A\\) die Regelmenge der passenden Grammatik<\/p>\n<p><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/automat.png\"><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: 20px; margin-right: 200px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/automat.png\" alt=\"automat\" width=\"404\" height=\"116\" \/><\/a><\/p>\n<p><strong><a class=\"spoiler_link_show\" href=\"javascript:void(0)\" onclick=\"wpSpoilerToggle(document.getElementById('id1264914805'), this, 'L\u00f6sung zeigen', 'L\u00f6sung verstecken')\">L\u00f6sung zeigen<\/a>\n<div class=\"spoiler_div\" id=\"id1264914805\" style=\"display:none\"><\/strong>Das Vorgehen ist hier ziemlich simpel. Wir k\u00f6nnen die Regeln praktisch direkt ableiten.<\/p>\n<p style=\"padding-left: 30px;\">Von Zustand \\(0\\) kommen wir bei der Eingabe von \\(a\\) oder \\(b\\) wieder zu Zustand \\(0\\) und bei der Eingabe von \\(a\\) zu Zustand \\(1\\). Daraus entsteht die folgende Regelmenge:<\/p>\n<p style=\"padding-left: 60px;\">\\(0\\rightarrow a0\\mid b0\\mid a1\\)<\/p>\n<p style=\"padding-left: 30px;\">Von Zustand \\(1\\) kommen wir durch Eingabe von \\(b\\) zu Zustand \\(2\\):<\/p>\n<p style=\"padding-left: 60px;\">\\(1\\rightarrow b2\\)<\/p>\n<p style=\"padding-left: 30px;\">Im Zustand \\(2\\) verharren wir dann bei Eingabe von \\(a\\) oder \\(b\\), was uns zur letzten Regel bringt. Hier m\u00fcssen wir aber auch noch aufpassen: da es unser finaler Zustand ist, geh\u00f6rt hier unsere \\(\\epsilon\\)-Regel rein.<\/p>\n<p style=\"padding-left: 60px;\">\\(2\\rightarrow a2\\mid b2\\mid\\epsilon\\)<\/p>\n<p style=\"padding-left: 30px;\">Jetzt nur noch passend umbennen (Startzustand mit \\(S\\) ausweisen, der Rest bekommt Gro\u00dfbuchstaben):<\/p>\n<p style=\"padding-left: 60px;\">\\(S\\rightarrow aS\\mid bS\\mid bA\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A\\rightarrow bB\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B\\rightarrow aB\\mid bB\\mid\\epsilon\\)<\/p>\n<p style=\"padding-left: 30px;\">Und fertig ist die Laube.<\/p>\n<p><\/div>\n<\/p>\n<h2>Lernziel 4<\/h2>\n<p style=\"padding-left: 30px;\"><em>Wie zeigt man, dass die regul\u00e4ren Sprache unter den in Satz 8.4.1 genannten Operationen abgeschlossen sind (Beweisidee)?<\/em><\/p>\n<p>Was waren nochmal die Operationen in Satz 8.4.1? Ach ja:<\/p>\n<ul style=\"list-style-type: square; padding-left: 30px;\">\n<li>Vereinigung, Komplexprodukt, Stern<\/li>\n<li>Durchschnitt, Mengendifferenz, Komplement<\/li>\n<li>Spiegelung<\/li>\n<\/ul>\n<p>Und was Abgeschlossenheit ist, wisst Ihr doch noch, oder? Die Anwendung der Operationen auf zwei Mengen der selben Klasse f\u00fchrt nicht aus dieser Klasse heraus. Ein einleuchtendes Beispiel sind die ganzen Zahlen \\(\\mathbb{Z}\\), die bzgl. Subtraktion, Addition und Multiplikation abgeschlossen sind. Aber nicht bzgl. der Division: \\(1:3=\\frac{1}{3}\\) und es gilt \\(\\frac{1}{3}\\in\\mathbb{Q}\\) und\u00a0\\(\\frac{1}{3}\\notin\\mathbb{Z}\\).<\/p>\n<p>Wie beweisen wir denn nun, dass die regul\u00e4ren Sprachen bzgl. der Operationen abgeschlossen sind? Fangen wir mit dem Komplement an:<\/p>\n<h3><strong>Beweisidee<\/strong> zur Abgeschlossenheit bzgl. des <strong><a href=\"http:\/\/de.wikipedia.org\/wiki\/Komplement_(Mengenlehre)\">Komplements<\/a><\/strong><\/h3>\n<p style=\"padding-left: 30px;\">\\(B\\setminus A=\\{x\\in B\\mid x\\notin A\\}\\), wobei \\(B\\subseteq A\\)<\/p>\n<p style=\"padding-left: 30px;\">Was m\u00fcssen wir zeigen?\u00a0Es muss gelten \\(L(A)=L\\) und \\(L(\\overline{A})=\\Sigma^{*}\\setminus L=\\overline{L}\\). D.h. in \\(\\overline{L}\\) liegen alle Worte aus \\(\\Sigma^{*}\\), die nicht in \\(L\\) liegen. Das w\u00e4re dann unser Komplement.<\/p>\n<p style=\"padding-left: 30px;\">Es werden zwei vollst\u00e4ndige und determinierte Automaten \\(A\\) und \\(\\overline{A}\\) konstruiert, die sich nur in ihren Endzust\u00e4nden unterscheiden. Wir erinnern uns, dass ein Wort \\(x\\in\\Sigma^{*}\\) nur dann zu einer Sprache \\(L(A)\\) geh\u00f6rt, wenn es ausgehend vom Startzustand den Automaten \\(A\\) in einen Endzustand \u00fcberf\u00fchrt.<\/p>\n<p style=\"padding-left: 30px;\">Der Unterschied zwischen den Automaten sind nur ihre Endzust\u00e4nde: f\u00fcr Automat \\(A\\) sind die Endzust\u00e4nde in \\(F\\) und f\u00fcr Automat \\(\\overline{A}\\) sind die Endzust\u00e4nde in \\(Q\\setminus F\\), d.h. alle Zust\u00e4nde au\u00dfer den Endzust\u00e4nden \\(F\\) des Automaten \\(A\\). Die \u00dcberf\u00fchrungsfunktionen aus \\(\\delta\\) bleiben erhalten. Ein kleines Beispiel um es greifbarer zu machen:<\/p>\n<p style=\"padding-left: 30px;\"><strong>Beispiel<\/strong>: Sei \\(A\\) der Automat von oben mit\u00a0\\(A=(\\{a,b\\},\\{0,1,2\\},0,2,\\delta)\\), so w\u00e4re \\(\\overline{A}\\) der andere Automat mit\u00a0\\(\\overline{A}=(\\{a,b\\},\\{0,1,2\\},0,\\{0,1\\},\\delta)\\). Beachtet die Endzust\u00e4nde des Automaten \\(\\overline{A}\\).<\/p>\n<p style=\"padding-left: 30px;\">Ist also ein Wort \\(x\\in\\Sigma^{*}\\) in der Sprache \\(L\\), so f\u00fchrt es die Maschine \\(A\\) in den Endzustand \\(2\\). Ist es nicht in \\(L\\), so sind wir notgedrungen immer noch in Zustand \\(0\\) oder \\(1\\) unterwegs. Und das sind ja genau die Endzust\u00e4nde unserer Maschine \\(\\overline{A}\\), was bedeutet, dass wenn ein Wort nicht in Sprache \\(L\\) ist, so ist es gezwungenerma\u00dfen in Sprache\u00a0\\(\\overline{L}\\). Die umgekehrte Richtung gilt ebenfalls, wie man sich leicht vorstellen kann.<\/p>\n<p style=\"padding-left: 30px;\"><strong>\u00a0Achtung<\/strong>: kontextfreie Grammatiken (Typ-2) sind nicht abgeschlossen bzgl. des Komplement!<\/p>\n<h3><strong>Beweisidee<\/strong>\u00a0zur Abgeschlossenheit bzgl. <strong>Vereinigung, Produkt<\/strong> und <strong>Stern<\/strong>:<\/h3>\n<p style=\"padding-left: 30px;\">Diese sind bereits nach der <a href=\"https:\/\/fernuni.digreb.net\/?p=1667\">Definition<\/a> der regul\u00e4ren Mengen ebenfalls regul\u00e4r. Hier m\u00fcssen wir also nichts mehr tun. Im Skript ist noch eine Beweisidee f\u00fcr die Vereinigung drin, aber vielleicht macht es Sinn diese hier anhand von Beispielen (aus dem Buch von Dirk W. Hoffmann) zu illustrieren.<\/p>\n<p style=\"padding-left: 30px;\"><strong>Beispiel<\/strong>: Nehmen wir zun\u00e4chst zwei Grammatiken (wir sind wieder bei Grammatiken, nicht mehr bei Automaten) \u00fcber einem Alphabet \\(\\Sigma\\).<\/p>\n<p style=\"padding-left: 30px;\">\\(G_1=\\{\\Pi_1,\\Sigma,R_1,S_1\\}\\) (zur Erinnerung: Nonterminale, \u00a0Alphabet, Regeln, Start) mit den Regeln<\/p>\n<p style=\"padding-left: 60px;\">\\(S_1\\rightarrow A_1 B_1\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A_1\\rightarrow ab\\mid aA_{1}b\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B_1\\rightarrow c\\mid cB_1\\)<\/p>\n<p style=\"padding-left: 30px;\">\\(G_2=\\{\\Pi_2,\\Sigma,R_2,S_2\\}\\) mit den Regeln<\/p>\n<p style=\"padding-left: 60px;\">\\(S_2\\rightarrow A_2 B_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A_1\\rightarrow a\\mid aA_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B_1\\rightarrow bc\\mid bB_{2}c\\)<\/p>\n<p style=\"padding-left: 30px;\"><strong>Wichtig<\/strong>: Wie Ihr unschwer erkennen k\u00f6nnt, sind die Grammatiken nur kontextfrei (Typ-2) und nicht regul\u00e4r. Das ist jedoch f\u00fcr die Beispiele zur Vereinigung, Produkt und Stern nicht schlimm, daf\u00fcr sind sie <a href=\"http:\/\/de.wikipedia.org\/wiki\/Kontextfreie_Sprache\">abgeschlossen<\/a>. Sie sind jedoch nicht abgeschlossen f\u00fcr Durchschnitt und Komplement.<\/p>\n<p style=\"padding-left: 30px;\">Wir gehen davon aus, dass die Nonterminalmengen \\(\\Pi_1\\) und \\(\\Pi_2\\) keine gemeinsamen Mengen haben.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"text-decoration: underline;\"><strong>Vereinigung<\/strong><\/span><\/p>\n<p style=\"padding-left: 60px;\">Wir m\u00fcssen also eine Grammatik erzeugen, die uns \\(L(G_1)\\cup L(G_2)\\) erzeugt. Dazu werden die Mengen \\(\\Pi_1\\) und\u00a0\\(\\Pi_2\\) (Nonterminale), sowie\u00a0\\(R_1\\) und \\(R_2\\) (Regeln) zu neuen Mengen zusammengefasst. Auch k\u00fcmmern wir uns um das Startsymbol, welches beide Startsymbole\u00a0\\(S_1\\) und\u00a0\\(S_2\\) zusammenfasst. Auch m\u00fcssen wir eine neue Produktion einf\u00fchren und wir erhalten:<\/p>\n<p style=\"padding-left: 60px;\">\\(G_{1\\cup 2}=\\{\\Pi_1\\cup\\Pi_2,\\Sigma,R_1\\cup R_2\\cup\\{S\\rightarrow S_1\\mid S_2\\},S\\}\\)<\/p>\n<p style=\"padding-left: 60px;\">Die Regelmenge sieht im Ergebnis wie folgt aus:<\/p>\n<p style=\"padding-left: 60px;\">\\(S\\rightarrow S_1\\mid S_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(S_1\\rightarrow A_1\\mid B_1\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A_1\\rightarrow ab\\mid aA_{1}b\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B_1\\rightarrow c\\mid cB_1\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(S_2\\rightarrow A_{2}B_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A_2\\rightarrow a\\mid aA_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B_2\\rightarrow bc\\mid bB_{2}c\\)<\/p>\n<p style=\"padding-left: 30px;\">Und diese Grammatik erzeugt uns \\(L(G_1)\\cup L(G_2)\\). Sie ist zwar nicht regul\u00e4r, aber wir k\u00f6nnen sie durch Einf\u00fchrung von neuen Regeln und Zust\u00e4nden zu einer regul\u00e4ren Grammatik <a href=\"https:\/\/fernuni.digreb.net\/?p=1667\">transformieren<\/a>.<\/p>\n<p style=\"padding-left: 30px;\">Die <strong>Beweisidee f\u00fcr den\u00a0Durchschnitt\u00a0<\/strong>sollten wir aber auch nicht unerw\u00e4hnt lassen: Ausgehend von zwei Automaten, die unsere Mengen \\(L\\) und \\(M\\) berechnen, werden weitere Automaten f\u00fcr \\(\\overline{L}\\) und \\(\\overline{M}\\) erzeugt. Zu diesen Mengen werden zwei regul\u00e4re Ausdr\u00fccke \\(\\alpha\\) und \\(\\beta\\) konstruiert und diese mittels \\(\\cup\\) zu \\((\\alpha\\cup\\beta)\\) verbunden, was nichts anderes als\u00a0\\({L}\\cap{M}\\) ist.<\/p>\n<p style=\"padding-left: 30px;\">Zu diesem Ausdruck wird eine Grammatik \\(G\\) konstruiert, zur Grammatik ein vollst\u00e4ndiger Automat \\(C\\), welcher anschlie\u00dfend zu\u00a0\\(\\overline{C}\\) umgeformt wird. Alles zusammengenommen ist dann\u00a0\\(L(\\overline{C})=\\overline{L(C)}=\\overline{\\overline{L}\\cup\\overline{M}}=L\\cap M\\). Ich fand die Darstellung aus dem Buch von Dirk. W. Hoffmann mit dem Beispiel einfacher nachzuvollziehen.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"text-decoration: underline;\"><strong>Komplexprodukt<\/strong><\/span><\/p>\n<p style=\"padding-left: 60px;\">Hier brauchen wir eine Grammatik f\u00fcr \\(L(G_1)L(G_2)\\). Dazu werden wieder die Nonterminale und Regeln zusammengef\u00fchrt und die Startsymbole durch ein neues ersetzt.<\/p>\n<p style=\"padding-left: 60px;\">\\(G_{1\\cdot 2}=\\{\\Pi_1\\cup\\Pi_2,\\Sigma,R_1\\cup R_2\\cup\\{S\\rightarrow S_{1}S_2\\},S\\}\\)<\/p>\n<p style=\"padding-left: 60px;\">Und das ist unsere neue Regelmenge:<\/p>\n<p style=\"padding-left: 60px;\">\\(S\\rightarrow S_{1}S_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(S_1\\rightarrow A_1B_1\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A_1\\rightarrow ab\\mid aA_{1}b\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B_1\\rightarrow c\\mid cB_1\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(S_2\\rightarrow A_{2}B_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A_2\\rightarrow a\\mid aA_2\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B_2\\rightarrow bc\\mid bB_{2}c\\)<\/p>\n<p style=\"padding-left: 30px;\">Auch das sieht gut aus. Nun zum Stern.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"text-decoration: underline;\"><strong>Sternoperator: Kleene&#8217;sche H\u00fclle<\/strong><\/span><\/p>\n<p style=\"padding-left: 60px;\">Was brauchen wir? \\(L(G_1)^{*}\\)! Wir brauchen hierzu einfach nur neue Ableitungsregeln, die es uns erm\u00f6glichen aus dem neuen Startsymbol eine beliebige Anzahl des urspr\u00fcnglichen Startsymbols zu erzeugen. Die neue Grammatik sieht wie folgt aus:<\/p>\n<p style=\"padding-left: 60px;\">\\(G_{1^{*}}=\\{\\Pi_1,\\Sigma,R_1\\cup\\{S\\rightarrow\\epsilon\\mid SS_1\\},S\\}\\)<\/p>\n<p style=\"padding-left: 60px;\">Und das ist unsere neue Regelmenge:<\/p>\n<p style=\"padding-left: 60px;\">\\(S\\rightarrow \\epsilon\\mid SS_{1}\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(S_1\\rightarrow A_1B_1\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(A_1\\rightarrow ab\\mid aA_{1}b\\)<\/p>\n<p style=\"padding-left: 60px;\">\\(B_1\\rightarrow c\\mid cB_1\\)<\/p>\n<p style=\"padding-left: 30px;\">Und fertig!<\/p>\n<p style=\"padding-left: 30px;\">Weiter geht es mit dem Durchschnitt f\u00fcr regul\u00e4re Sprachen.<\/p>\n<p>\u00a0<strong>Beweisidee<\/strong>\u00a0zur Abgeschlossenheit\u00a0bzgl. des\u00a0<strong><a href=\"http:\/\/de.wikipedia.org\/wiki\/Durchschnittsmenge#Durchschnitt_.28Schnittmenge.2C_Schnitt.29\">Durchschnitts<\/a>:<\/strong><\/p>\n<p style=\"padding-left: 30px;\">\\(B\\cap A=\\{x\\in B\\mid x\\in A\\}\\)<\/p>\n<p style=\"padding-left: 30px;\">Mittels der de Morgan&#8217;schen Regel gilt: \\(L\\cap M = \\overline{\\overline{L}\\cup\\overline{M}}\\). Und die Vereinigung haben wir ja bereits in der Definition als regul\u00e4r drin.<\/p>\n<p style=\"padding-left: 30px;\"><strong>\u00a0Achtung<\/strong>: kontextfreie Grammatiken (Typ-2) sind nicht abgeschlossen bzgl. des Durchschnitts!<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Beweisidee<\/strong>\u00a0zur Abgeschlossenheit\u00a0bzgl. der\u00a0<a href=\"http:\/\/de.wikipedia.org\/wiki\/Differenzmenge#Differenz_und_Komplement\"><strong>Differenz<\/strong><\/a><\/p>\n<p style=\"padding-left: 30px;\">\\(B\\setminus A=\\{x\\in B\\mid x\\notin A\\}\\), wobei hier \\(B\\) nicht unbedingt eine Teilmenge von \\(A\\) sein muss.<\/p>\n<p style=\"padding-left: 30px;\">Es gilt: \\(L\\setminus M=L\\cap\\overline{M}\\)<\/p>\n<p style=\"padding-left: 30px;\"><strong>Achtung<\/strong>: kontextfreie Grammatiken (Typ-2) sind nicht abgeschlossen bzgl. des Durchschnitts und somit auch nicht bzgl. der Differenz!<\/p>\n<p><strong>Beweisidee<\/strong>\u00a0zur Abgeschlossenheit\u00a0bzgl. der <strong>Spiegelung<\/strong><\/p>\n<p style=\"padding-left: 30px;\">Es muss also gelten \\(L\\) ist regul\u00e4r \\(\\Rightarrow L^R = \\{a_n,&#8230;,a_1\\mid a_1,&#8230;,a_n\\}\\) ist regul\u00e4r.<\/p>\n<p style=\"padding-left: 30px;\">Ich finde hier den Beweis mittels Automat einfacher. Dazu wird einfach ein neuer Automat, der <strong>Umkehrautomat<\/strong> wie folgt\u00a0gebildet:<\/p>\n<ul style=\"list-style-type: disc;\">\n<ul style=\"list-style-type: disc;\">\n<ul style=\"list-style-type: disc;\">\n<li><span style=\"line-height: 13px;\">\\((b,x,a)\\) gdw.\u00a0\\((a,x,b)\\) (Umkehrung der Zustands\u00fcberg\u00e4nge)<\/span><\/li>\n<li>Startzustand \\(q_0\\) wird zum neuen Endzustand<\/li>\n<li>Neuer Startzustand mit \\(\\epsilon\\)-\u00dcberg\u00e4ngen zu allen alten Endzust\u00e4nden<\/li>\n<\/ul>\n<\/ul>\n<\/ul>\n<p style=\"padding-left: 30px;\">Damit haben wir unser gespiegeltes Wort. Und da sich ansonsten nichts am Automaten ge\u00e4ndert hat, ist die Ergebnismenge weiterhin regul\u00e4r.<\/p>\n<p><strong>Antwort zum Lernziel<\/strong>: man zeigt die Abgeschlossenheit der regul\u00e4ren Sprachen bzgl. der Operationen, indem man Automaten erstellt, die die Operationen auf den beiden Mengen durchf\u00fchren. Nach Definition aus dem <a title=\"TIB: Grammatiken und regul\u00e4re Sprachen (Lernziele KE5)\" href=\"https:\/\/fernuni.digreb.net\/?p=1667\">Beitrag zu KE5<\/a> sind die regul\u00e4ren Sprachen, auf denen die Operationen \\(\\cup\\), \\(\\cdot\\) und \\(*\\) ausgef\u00fchrt werden ebenfalls regul\u00e4r. K\u00f6nnen wir also die oben genannten Operationen damit &#8222;nachbilden&#8220;, ist uns der Nachweis gelungen (siehe Beweis zum Durchschnitt).<\/p>\n<h2>Lernziel 5<\/h2>\n<p style=\"padding-left: 30px;\"><em>Welche &#8222;Probleme&#8220; sind f\u00fcr regul\u00e4re Sprachen entscheidbar?<\/em><\/p>\n<p>Der Abschnitt ist kurz, aber wichtig! Es gibt bestimmte Probleme auf den regul\u00e4ren Mengen, die entscheidbar sind. Dazu geh\u00f6ren:<\/p>\n<blockquote><p>\\(x\\in L_1\\)? (Sprachproblem, geh\u00f6rt das Wort \\(x\\) zur Sprache \\(L_1\\)?)<\/p>\n<p>\\(L_1\\subseteq L_2\\)? (Inkklusionsproblem, ist \\(L_1\\) eine Teilmenge der Sprache \\(L_2\\)?)<\/p>\n<p>\\(L_1=L_2\\)? (\u00c4quivalenzproblem, ist die Sprache \\(L_1\\) \u00e4quivalent zur Sprache \\(L_2\\)?)<\/p>\n<p>\\(L_1=\\emptyset\\)? (Leerheitsproblem, ist die Sprache \\(L_1\\) leer?)<\/p>\n<p>\\(L_1\\) endlich? (Endlichkeitsproblem, ist die Sprache \\(L_1\\) endlich? D.h. \\(\\#L_1\\leq\\infty\\))<\/p><\/blockquote>\n<p>F\u00fcr Typ-2-Sprachen k\u00f6nnen wir z.B. das \u00c4quivalenzproblem nicht entscheiden.<\/p>\n<p><strong>Antwort zum Lernziel<\/strong>: Das Sprachproblem, das Inklusionsproblem, das \u00c4quivalenzproblem, das Leerheitsproblem und das Endlichkeitsproblem sind f\u00fcr regul\u00e4re Sprachen entscheidbar.<\/p>\n<h2>Lernziel 6<\/h2>\n<p style=\"padding-left: 30px;\"><em>Wie lautet das Pumping-Lemma f\u00fcr regul\u00e4re Sprachen? Wie kann man es verwenden um nachzuweisen, dass eine Sprache nicht regul\u00e4r ist?<\/em><\/p>\n<p>Die Definition im Skript lasse ich mal f\u00fcr zuletzt. Erst einmal: mit dem <strong>Pumping Lemma<\/strong> f\u00fcr regul\u00e4re Sprachen (f\u00fcr Typ-2-Sprachen gibt es auch eins) haben wir ein Werkzeug an der Hand, mit dem wir nachweisen k\u00f6nnen, dass eine Sprache nicht regul\u00e4r ist. Das liegt an der festgelegten Struktur der Produktionen (Regeln) unserer Sprachtypen.<\/p>\n<p>Sieht man sich z.B. die festgelegten Regeln f\u00fcr unsere regul\u00e4ren Sprachen an, so sieht man, dass wir in jedem Schritt ein Terminal und ein Nonterminal erzeugen, wobei das Nonterminal immer an letzter Stelle steht. Abgesehen von der Abschlussregel mit dem leeren Wort \\(\\epsilon\\) haben wir hier ein festgelegtes Erzeugungsmuster. Das Nonterminal an letzter Stelle begrenzt die Anzahl der Regeln, die im n\u00e4chsten Schritt anzuwenden sind und erlaubt uns R\u00fcckschl\u00fcsse auf die bisher erzeugten Zeichen.<\/p>\n<p>Haben wir bei der Erzeugung eines Wortes mehr Schritte getan, als Nonterminale zur Verf\u00fcgung stehen, so muss min. ein Nonterminal irgendwo mehrfach aufgetaucht sein. Bildlich gesprochen sind wir also \u00fcber einen Zyklus im Automaten gestolpert. Denn jeder Automat zu einer regul\u00e4ren Sprache hat auch eine endliche Anzahl an Zust\u00e4nden.<\/p>\n<p><strong>Beispiel<\/strong>: nehmen wir einfach \\(G_1\\) aus dem vorherigen Beitrag:\u00a0\\(G_1=(\\Pi,\\Sigma,R,S)\\) mit \\(\\Pi=\\{S,B,C\\}\\), \\(\\Sigma=\\{a,b\\}\\), Startsymbol \\(S\\) und den Regeln \\(R\\):<\/p>\n<p style=\"padding-left: 30px;\">\\(S\\rightarrow aB\\)<\/p>\n<p style=\"padding-left: 30px;\">\\(B\\rightarrow bC\\)<\/p>\n<p style=\"padding-left: 30px;\">\\(C\\rightarrow\\epsilon\\mid aB\\)<\/p>\n<p><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/g1automat.png\"><img loading=\"lazy\" decoding=\"async\" style=\"margin-left: 50px; margin-right: 100px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/g1automat.png\" alt=\"g1automat\" width=\"431\" height=\"143\" \/><\/a><\/p>\n<p>Damit ist \\(L(G_1)=\\{ab\\}*\\), also alle Worte \u00fcber \\(ab\\), d.h. z.B. \\(ab\\), \\(ababab\\) oder \\(ababababa\\). Hier habt Ihr auch euren Zyklus. Wir haben z.B. das Wort \\(abab\\): die Anzahl der Terminale ist gr\u00f6\u00dfer als die Anzahl der Zust\u00e4nde im Automaten. Damit m\u00fcssen wir min. einen Zyklus durchlaufen haben.<\/p>\n<p>Jetzt ist der richtige Zeitpunkt f\u00fcr die Definition des Pumping Lemma:<\/p>\n<blockquote><p>F\u00fcr jede regul\u00e4re Sprache \\(L\\) existiert ein \\(j\\in\\mathbb{N}\\), so dass sich alle W\u00f6rter \\(\\omega\\in L\\) mit \\(\\mid\\omega\\mid\\geq j\\) in der folgenden Form darstellen lassen:<\/p>\n<p>\\(\\omega=uvw\\) mit \\(\\mid v\\mid\\geq 1\\) und \\(\\mid uv\\mid\\leq j\\)<\/p>\n<p>Dann ist mit \\(\\omega\\) auch das Wort \\(uv^{i}w\\) f\u00fcr alle \\(i\\in\\mathbb{N}_0\\)\u00a0enthalten.<\/p><\/blockquote>\n<p>\\(j\\) wird <em>Pumping-Zahl<\/em> genannt.\u00a0Wenden wir die Definition von oben also auf unser Beispiel an, so hat das kleinste Wort mit einem Zyklus die L\u00e4nge \\(j=4\\) (\\(abab\\)). Dann muss das Anfangsst\u00fcck \\(u\\) mindestens die L\u00e4nge \\(1\\) aufweisen und in Kombination mit dem Mittelteil maximal \\(4\\) Zeichen lang sein. Wichtig ist, dass \\(j\\) nicht die kleinste L\u00e4nge haben muss, auf die die Kriterien zutreffen. Es gen\u00fcgt irgendein \\(j\\), das passt und man eine Zerlegung \\(uvw\\) f\u00fcr das Wort zeigen kann.<\/p>\n<p>In unserem Beispiel mit dem Wort \\($a ba b\\) und \\(j=4\\) haben wir eine:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/uvw.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1837\" style=\"margin-left: 200px; margin-right: 200px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/uvw.png\" alt=\"uvw\" width=\"110\" height=\"84\" \/><\/a><\/p>\n<p>Es l\u00e4sst sich der Mittelteil \\(v\\) also beliebig oft wiederholen und das daraus entstandene Wort ist immer noch noch in \\(L\\). Ist das nicht der Fall, so ist die Sprache nicht regul\u00e4r. Wie man oben am Automaten sehen kann, ist die Kombination \\(ba\\) auch genau unser Zyklus! Wir haben in unserem Wort immer ein \\(a\\) am Anfang und ein \\(b\\) am Ende (unsere \\(u\\) und \\(w\\)), w\u00e4hrend wir den Mittelteil \\(v\\) beliebig oft (oder auch gar nicht) wiederholen k\u00f6nnen.<\/p>\n<p>Kommen wir nun zu einer kleinen Abweichung von der obigen Grammatik.<\/p>\n<p><strong>Beispiel<\/strong>:\u00a0\\(G_2=(\\Pi,\\Sigma,R,S)\\) mit \\(\\Pi=\\{S,B,C\\}\\), \\(\\Sigma=\\{a,b\\}\\), Startsymbol \\(S\\) und den Regeln \\(R\\):<\/p>\n<p style=\"padding-left: 30px;\">\\(S\\rightarrow aB\\)<\/p>\n<p style=\"padding-left: 30px;\">\\(B\\rightarrow bC\\)<\/p>\n<p style=\"padding-left: 30px;\">\\(C\\rightarrow\\epsilon\\)<\/p>\n<p>Der einzige Unterschied von \\(G_1\\) zu \\(G_2\\) ist, dass der Zustands\u00fcbergang von \\(C\\) keinen Zyklus mehr hat. Der Automat sieht nun wie folgt aus:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/endlichregular.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1838\" style=\"margin-left: 20px; margin-right: 100px;\" src=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/endlichregular.png\" alt=\"endlichregular\" width=\"471\" height=\"91\" srcset=\"https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/endlichregular.png 471w, https:\/\/fernuni.digreb.net\/wp-content\/uploads\/2013\/05\/endlichregular-300x57.png 300w\" sizes=\"auto, (max-width: 471px) 100vw, 471px\" \/><\/a><\/p>\n<p>Die Sprache \\(L(G_2)\\) besteht also nur aus dem Wort \\(ab\\).\u00a0F\u00e4llt euch was auf? Wir haben keinen Zyklus. Die Sprache ist trotzdem regul\u00e4r. Was machen wir hier mit unserem Pumping-Lemma? Nichts! Das Pumping-Lemma ist sinnvoll f\u00fcr unendliche Sprachen, endliche Sprachen sind der Definition nach bereits regul\u00e4r. Das hei\u00dft aber nicht, dass das Pumping-Lemma hier nicht auch funktioniert.<\/p>\n<p>Nicht vergessen: wir k\u00f6nnen mit dem Pumping-Lemma nicht zeigen, dass eine Sprache regul\u00e4r ist (die Erf\u00fcllung des Pumping Lemma ist nicht hinreichend), wir k\u00f6nnen aber zeigen, dass sie das nicht ist, indem wir uns eine Pumping Lemma Zahl \\(j\\) suchen, f\u00fcr W\u00f6rter, die gr\u00f6\u00dfer sind als \\(j\\) die Zerlegungen durchgehen und sie pr\u00fcfen. Hat keine unserer unserer Zerlegungen die gew\u00fcnschte Form, so ist die Sprache nicht regul\u00e4r (kontextfrei). Warum gr\u00f6\u00dfer als \\(j\\)?<\/p>\n<p>Ganz einfach: f\u00fcr eine regul\u00e4re Sprache brauchen wir nur einen endlichen Automaten anzugeben, der f\u00fcr jedes Wort aus der Sprache einen akzeptierenden Zustand hat.<\/p>\n<p>Setzen wir \\(j\\) in unserem Beispiel z.B. auf \\(\\geq 3\\), bedeutet es, dass wir f\u00fcr alle anderen Worte \\(\\leq 2\\) bereits einen Automaten im Kopf haben, der f\u00fcr alle W\u00f6rter keiner als \\(3\\) akzeptierende Zust\u00e4nde hat. Damit ist sind bzgl. der Worte die Sprache bereits als regul\u00e4r entlarvt. Fehlt uns nur noch der Beweis der Regularit\u00e4t aller anderen Worte der Sprache.<\/p>\n<p>Tja, wie viele Worte haben wir nun mit der L\u00e4nge \\(\\geq 3\\)? Keine! Wir haben also nichts mehr zu pr\u00fcfen, da eine leere Menge ist der Definition nach regul\u00e4r ist. Also ist die Sprache \\(L(G_2)\\) nicht nur nicht nicht regul\u00e4r (sorry f\u00fcr das komische Wortkonstrukt), sondern sogar durch die Angabe eines endlichen Automaten regul\u00e4r. Das ist der Grund f\u00fcr die Regularit\u00e4t von endlichen Sprachen.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Merksatz<\/strong>:\u00a0Endliche Sprachen sind immer regul\u00e4r. Wir basteln uns hierzu einfach einen Automaten, der f\u00fcr jedes Wort, dass wir haben (denn die Menge unserer Worte ist endlich) einen akzeptierenden Zustand hat. Auch wenn die L\u00e4nge der Worte \\(2^100\\) ist, und der Automat Milliarden an akzeptierenden Zust\u00e4nden hat. Hauptsache sie sind endlich. That&#8217;s it.<\/p>\n<p>In der Regel kennen wir das \\(j\\) jedoch nicht, so dass wir nur eine Sprachdefinition, wie z.B. \\(L=\\{(ab)^*\\}\\) haben und pr\u00fcfen m\u00fcssen ob die Sprache regul\u00e4r ist. Bei Gelegenheit bringe ich hier ein paar explizite Beispiele. Bis dahin begn\u00fcge ich mich mit der Antwort zum Lernziel.<\/p>\n<p><strong>Antwort zum Lernziel<\/strong>: Mit dem Pumping Lemma l\u00e4sst sich nachweisen, dass eine Sprache nicht regul\u00e4r ist. Der Umkehrschluss gilt nicht, es gibt Sprachen, die nicht regul\u00e4r sind aber das Pumping Lemma erf\u00fcllen. Dazu wird eine Pumping Lemma Zahl \\(j\\) gesucht und f\u00fcr alle Worte, die l\u00e4nger sind als \\(j\\) eine Zerlegung \\(uvw\\) angegeben, so dass man das Midfix \\(v\\) beliebig oft wiederholen kann und sich das Wort immer noch in der Sprache befindet. Tut es das nicht, so ist die Sprache nicht regul\u00e4r. Wir weisen mit der Angabe von \\(v\\) also quasi einen Zyklus im Automaten nach, mit dem man unendliche Worte durch Wiederholung von \\(v\\) erstellen kann ohne die Sprache zu verlassen. F\u00fcr endliche Sprachen gilt er Merksatz von oben.<\/p>\n<p>Weiter geht es dann mit den letzten beiden Lernzielen im n\u00e4chsten Beitrag. Fehler, Erg\u00e4nzungen, Bermerkungen wie immer bitte ASAP in die Kommentare.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Update 3: Korrektur der Beweisidee f\u00fcr Durchschnitt, nicht Vereinigung. Danke Phil. Update 2: Korrektur Aufgabe aus Lernziel 3. Danke Mike. Update: Aufgabe mit L\u00f6sung hinzugef\u00fcgt um aus einem Automaten eine Regelmenge abzuleiten. Ohne viele Worte: weiter in KE6. Lernziel 3 Wie konstruiert man zu einem endlichen Automaten einen regul\u00e4ren Ausdruck mit ? Hier kommt einiges &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/fernuni.digreb.net\/?p=1759\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eTIB: Endliche Automaten und kontextfreie Grammatiken (Lernziele KE6 2\/3), Update 3\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1759","post","type-post","status-publish","format-standard","hentry","category-theoretische-informatik"],"_links":{"self":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/1759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1759"}],"version-history":[{"count":83,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/1759\/revisions"}],"predecessor-version":[{"id":3544,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=\/wp\/v2\/posts\/1759\/revisions\/3544"}],"wp:attachment":[{"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fernuni.digreb.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}