From eeba61229958594ab108292cd27be920992b23c8 Mon Sep 17 00:00:00 2001 From: Safak Date: Sun, 4 Jan 2026 15:14:47 +0100 Subject: [PATCH] =?UTF-8?q?L=C3=B6sungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Praktikum1.pl | Bin 0 -> 3848 bytes Praktikum2.pl | Bin 0 -> 2898 bytes Praktikum3.pl | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ Praktikum4.pl | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ Praktikum5.pl | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 151 insertions(+) create mode 100644 Praktikum1.pl create mode 100644 Praktikum2.pl create mode 100644 Praktikum3.pl create mode 100644 Praktikum4.pl create mode 100644 Praktikum5.pl diff --git a/Praktikum1.pl b/Praktikum1.pl new file mode 100644 index 0000000000000000000000000000000000000000..855beff02b68e9abbd902f01552171eee095f5e4 GIT binary patch literal 3848 zcmcIn%Wl&^6uoOC{vn&9BAI>w5{srFvWbXjg;I%)lUQj)Udp3}{w#k2oHG-9-eXjP zBFpyNGxyy0IKO{g$eYgJdnx50m8?6FM%PPuA-pbRh27k{l!Z*?L3&uZl<)Fd$@#p+ z>H=~iwphPvCB&DqgQSwZBdOaRCG^>Q^p2hUa8~Eguz@DtZS)eWN9c03lat&F4_(5K z8Dy2zj+P3mwX$^9u50gWU>7p6yss_q`CKX46LwGVd;n`>AEh(wCTr=ePVr7;1zQ%7 z8lSjlh4;CN+}hjKM011P%&5(@ht3@?m!CF~i#$_rM}^2So@>aAF75Xid1h1(xPO3$ zWZMDBJ9FKWM?`*&`#r8LtR72&XI&M1593k*8Lx;mK9;dGI+jPG-3ray5n@v|gvb=X zsRDAxYoB(yxUdt5aU+=57h+R7{d%O{SkGw-VrawVS7&-p*uBKM@yS^dBJ);+__zgj z2a-QFPiU!$W)5XKlc-cjQlE>A_a||7MRw`*v2m@s>&^U6J$*)Bvo4nC{S+o#r}l8J zd{L8$bH$z}#67kWGgo@@7L4w!Db!gsZs%agF~p41vod5^S+Xu3&gC4>EvDgvnulgC z(whBgJ+A*AGm~1o{kVf3*0!F*e!LEjw2Q0Dmp(Fb#4PeN!%7?BGI`_5P+ca<^m<}x zh+8viJ!d`hjb}%pPLiP`J$U zLmMugDOM({cj{=1+k5SFNWaYhxmZ8UXyJ7s_w-ed@e71{o3F?7F*Y8VUb~buZ`iAL zB+nVg{}aV#9_jx(b`<}GuPcTwYZ$|isH2Viw9ZgFlElvyVvqXEowL4-9iZoP)A8Ex Tv<3G0nzq44g>eg|F+2VMZ^$uC literal 0 HcmV?d00001 diff --git a/Praktikum2.pl b/Praktikum2.pl new file mode 100644 index 0000000000000000000000000000000000000000..b68062945bcfb126fb85094097d8a7d569124403 GIT binary patch literal 2898 zcmc&#U279T6ur-a|6zO(5{QNRD5TIrL9pbZ7D*$aY}(Yud=j&*hW_-To^!8vXLh== zJ_u!*-JO|p?>+Zx=GV{H66BRWL8da6i7fCA@<|F=V^+vWX1X%RY=fPFyp$I@D0?WS zT+0{5QEngO%`-kJw?f(#*O_{Dg7-IgF_sqmoWQfT>?!8)K39ls$%S;_RUfl9o*?hw zUw|xQm1;DE=_3!uXOwW@+8nm$(Aig=(T2@0)PiZ)g)}zj8JjxVb|aHQR(RZJdP9VN zJqC`-S(#ss<~K(SGB&P>lBt~GA}>bh?++3vL&wKbAXJme+9l#jX z{fj8d1jRLZYr6y0;+-{iFM$19q+YZ)lZyP ziPulA(d|Z^ktH*ipSo|c_ME3KZ8K-FwoA?ZW1jnp8R^+MLL5px4S6Q6&<#JTeB_9Q zEaghiZR@BLRKSsD@>KtLGTXVFOB&L;Gv9OBG`c-lDKXZF>CqpC>?+=iCC+pDcnLNO zc(?(o#EiGZDb|+w>)=i>Zl=8hq;rp$P@w`OiT|G-kjEYPE)cT`Zs#Cd@T5nFSmD|R zgFXa}DtGMe-{L#NI%R`=z?-^k#`v?NJt~}8r&4DN$k>tnDwBm;Yyrz#&+>4tNUm6? zTIL*SU1gYhhqCrlP6haFk)s=M4${N81&evYk&K+L-`P|3qJ-=fcG;yogEzW*hq$bD z{Qb-AabbD$`BaSo^#B wmO5Aoy{ZFf*YAxco!(#UAxcq06VCgO9p*T%F-lU7JN(*yYB@hE{_Pz34Q*15O#lD@ literal 0 HcmV?d00001 diff --git a/Praktikum3.pl b/Praktikum3.pl new file mode 100644 index 0000000..ea77ed8 --- /dev/null +++ b/Praktikum3.pl @@ -0,0 +1,51 @@ +% Präfix-Prädikat aus Übungsaufgabe 20 b) +prefix([], _). +prefix([H|T], [H|Ys]) :- prefix(T, Ys). + +% Reverse-Prädikat des Prolog-Systems +reverse([], []). +reverse([H|T], R) :- reverse(T, RT), append(RT, [H], R). + +% Postfix-Prädikat +postfix(Xs, Ys) :- + reverse(Xs, RXs), + reverse(Ys, RYs), + prefix(RXs, RYs). + +% Postfix mit append +postfix(Xs, Ys) :- + append(_, Xs, Ys). + +% ----------------------------------------------------% + +% Definition eines Binärbaums +% Ein leerer Baum ist ein leerer Baum +tree(empty). +tree(node(_, Left, Right)) :- tree(Left), tree(Right). + +% Überprüfung, ob ein Element im Baum enthalten ist +membertree(X, node(X, _, _)). +membertree(X, node(_, Left, _)) :- membertree(X, Left). +membertree(X, node(_, _, Right)) :- membertree(X, Right). + +% ----------------------------------------------------% + +% Preorder +preorder(empty, []). +preorder(node(X, Left, Right), Ys) :- + preorder(Left, Ls), + preorder(Right, Rs), + append([X|Ls], Rs, Ys). + +% Postorder +postorder(empty, []). +postorder(node(X, Left, Right), Ys) :- + postorder(Left, Ls), + postorder(Right, Rs), + append(Ls, Rs, Temp), + append(Temp, [X], Ys). + +% Roots +roots([], []). +roots([empty|Xbs], Ys) :- roots(Xbs, Ys). +roots([node(X, _, _)|Xbs], [X|Ys]) :- roots(Xbs, Ys). \ No newline at end of file diff --git a/Praktikum4.pl b/Praktikum4.pl new file mode 100644 index 0000000..8932cdc --- /dev/null +++ b/Praktikum4.pl @@ -0,0 +1,52 @@ +% Endliche Zustandsmenge + +zustand(z0). +zustand(z1). +zustand(z2). +zustand(z3). + +% Eingabealphabet +sigma(a). +sigma(b). + +% Zustandsübergangsrelationen +delta(z0, a, z0). +delta(z0, b, z1). + +delta(z1, a, z2). +delta(z1, b, z1). + +delta(z2, a, z2). +delta(z2, b, z2z3). + +delta(z2z3, a, z2z3). +delta(z2z3, b, z2z3). + + +% Startzustand + +start(z0). + + +% Endzustand + +end(z2). +end(z2z3). + +% Menge der Wörter über Sigma +sigma_stern([]). +sigma_stern([A|Ws]) :- + sigma_stern(Ws), + sigma(A). + +% Erweiterung der Transitionsrelation delta_stern +delta_stern(Zustand, [], Zustand). +delta_stern(AktZ, [A|Ws], NeuZ) :- + sigma(A), delta(AktZ, A, ZwischenZ), + sigma_stern(Ws), delta_stern(ZwischenZ, Ws, NeuZ). + +% Überprüfung, ob ein Wort von dem NEA akzeptiert wird +lvonN(W) :- + start(StartZustand), + delta_stern(StartZustand, W, EndZustand), + end(EndZustand). diff --git a/Praktikum5.pl b/Praktikum5.pl new file mode 100644 index 0000000..b0fd7ba --- /dev/null +++ b/Praktikum5.pl @@ -0,0 +1,48 @@ +% Startzustand des PDA +start(z). + +% Zustände +state(z). + +% Eingabealphabet +sigma(a). +sigma(b). + +% Kelleralphabet +gamma(a). +gamma(b). +gamma(#). + +% Übergangsfunktion: delta(FromState, ReadSymbol, PopSymbol, ToState, PushSymbols) +delta(z, a, a, z, []). +delta(z, b, b, z, []). +delta(z, nix, #, z, [a, #, b, #]). +delta(z, nix, #, z, [b, #, a, #]). +delta(z, nix, #, z, []). + +% sigma_stern: Akzeptiert leere Eingabe oder Eingabe, die aus Symbolen des Eingabealphabets besteht +sigma_stern([]). +sigma_stern([W|Ws]) :- sigma_stern(Ws), sigma(W). + +% Einzelschrittrelation es +es(S, [W|Ws], [Top|Stacks], NewS, Ws, NewStacks) :- + delta(S, W, Top, NewS, ToStacks), + append(ToStacks, Stacks, NewStacks). + +es(S, Ws, [Top|Stacks], NewS, Ws, NewStacks) :- + delta(S, nix, Top, NewS, ToStacks), + append(ToStacks, Stacks, NewStacks). + +% Transitiver Abschluss es_plus +es_plus(S, Ws, Stacks, NewS, NewWs, NewStacks) :- + es(S, Ws, Stacks, NewS, NewWs, NewStacks). + +es_plus(S, Ws, Stacks, NewS, NewWs, NewStacks) :- + es(S, Ws, Stacks, S1, W1, NewStack1), + es_plus(S1, W1, NewStack1, NewS, NewWs, NewStacks). + +% Akzeptanzbedingung +lvonM(Ws) :- + sigma_stern(Ws), + start(S), + es_plus(S, Ws, [#], _, [], []). \ No newline at end of file