From 84fa1cf9d7d61f7b64a145e10b8cc310e0e2f7e0 Mon Sep 17 00:00:00 2001 From: Walcher Date: Sun, 7 Jan 2024 17:50:17 +0100 Subject: [PATCH] progress of 7/1 --- src/main/java/ab1/impl/GRUPPE/NFAImpl.java | 55 ++++++++++--------- target/classes/ab1/impl/GRUPPE/NFAImpl.class | Bin 3632 -> 7654 bytes 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/main/java/ab1/impl/GRUPPE/NFAImpl.java b/src/main/java/ab1/impl/GRUPPE/NFAImpl.java index 4431d6e..37beec5 100644 --- a/src/main/java/ab1/impl/GRUPPE/NFAImpl.java +++ b/src/main/java/ab1/impl/GRUPPE/NFAImpl.java @@ -3,6 +3,7 @@ package ab1.impl.GRUPPE; import ab1.FinalizedStateException; import ab1.NFA; import ab1.Transition; +import lombok.Getter; import java.util.Collection; import java.util.HashSet; @@ -11,16 +12,24 @@ import java.util.Set; public class NFAImpl implements NFA { private Set states; private Set transitions; + private String initialState; private Set acceptingStates; + + @Getter + private Set alphabet; + private boolean isFinalized; public NFAImpl(String startState) { this.initialState = startState; this.states = new HashSet<>(); + this.states.add(startState); this.transitions = new HashSet<>(); this.acceptingStates = new HashSet<>(); + this.alphabet = new HashSet<>(); this.isFinalized = false; + } @Override @@ -34,7 +43,6 @@ public class NFAImpl implements NFA { @Override public Set getAcceptingStates() { - return this.acceptingStates; } @@ -48,6 +56,8 @@ public class NFAImpl implements NFA { if (this.isFinalized) { throw new FinalizedStateException(); } else if (!this.transitions.contains(transition)) { + // add symbol to alphabet. If it is already in the alphabet, nothing happens + this.alphabet.add(transition.readSymbol()); this.transitions.add(transition); } } @@ -57,29 +67,11 @@ public class NFAImpl implements NFA { if (this.isFinalized) { throw new FinalizedStateException(); } else if (!this.states.contains(state)) { + this.states.add(state); this.acceptingStates.add(state); } } - // warum gabs die methode nicht schon vorher? weil i a idiot bin und man die direct adden kann. - /* - public void addAllStates(Set states) throws FinalizedStateException { - if (this.isFinalized) { - throw new FinalizedStateException(); - } else { - this.states.addAll(states); - } - } - - public void addAllTransitions(Set transitions) throws FinalizedStateException { - if (this.isFinalized) { - throw new FinalizedStateException(); - } else { - this.transitions.addAll(transitions); - } - } - */ - // #TODO @Override public NFA union(NFA other) throws FinalizedStateException { @@ -155,14 +147,23 @@ public class NFAImpl implements NFA { // #TODO @Override public NFA complement() throws FinalizedStateException { + if(!this.isFinalized){ + throw new FinalizedStateException(); + } + + NFAImpl complementNFA = new NFAImpl(this.initialState); + complementNFA.states.addAll(this.states); + complementNFA.transitions.addAll(this.transitions); + + /* + for(String state : this.states){ + + } + */ + return null; } - public void turnNFAIntoDFA(NFAImpl nfa) { - // #TODO - } - - @Override public boolean isFinalized() { return isFinalized; @@ -176,7 +177,9 @@ public class NFAImpl implements NFA { // #TODO @Override public boolean isFinite() { - //check if finite + //transitions={fromState==toState} + //states={A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z} + //obergrenze = anzahl der states (26) return false; } diff --git a/target/classes/ab1/impl/GRUPPE/NFAImpl.class b/target/classes/ab1/impl/GRUPPE/NFAImpl.class index 20f4f53de8ed9055e66c2cafb7c7c71d62378f35..407ea7a8f92ece1feef3d084d77439c9c00181c8 100644 GIT binary patch literal 7654 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 U&7)z_Jf8^742%pfz}5Ck09JXUsQ>@~ literal 3632 zcmX^0Z`VEs1_oP(8ZHJV24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3W7#3V!g%-n(;efOZyfB;v0KQ~9u+=3iN1|E>6 z%*34FlEji!Mg}1tgu%fjMVWc&*6a*?j0}Qc;nI@K9DR?(;*8+b5-tW_24;{of;
faRol7-Se^85y`Ui`_Ew5_2-EQd1Zi7^B!3DgEhHUfQ`t{ z<6@9wVCH5}Vo+vhP~l-vWl&>e;6->KIJJb4fg?FTuOu-uub7cRR0HB*q|mh1i~{M` z;9<}NX=YALN#SDPV9*AIz7CoWXfSDpfpqBcFz7QFFfyWsOc)tBGD}j65=-)n7#YMgG$GCb>+pn%TXQp*F_^P6Snx1dGFUM( z2qC-!Q^Lr=o{?DWms(K*P6AON9X31+whVTR3@mwIVG)?w$X;b&EUhxAe5e3;)t3w7#Rd%-T(&?D2ag#^y6Xh2WjC< zPb~qbhhlbyKt=|3kRSZq92prngEQ0f5=%;pQW+VPA#Q~kU<2WToep)Soi!taB19OW z3S<@{Jgh-#Se)}yQbCD6GcVPzG&d==C?qi{2b`7ilM{2o5{oiHe5fExNk(QdBZH(5 z$RsQo(wdQhtGFbw2;u`q232&g;&3TndTI&6Va1FL5-1vx5*{Oi77i&Ju%i&BfW60` zo?7CWmsx@+B2W_%G_)8QcoS1n5PBIIgf-BO(+p!|;6mhoMg{?N6^snL!6k{w*}jPd z(D34dXX;``20>7!LP-pa46NW%hmnD`G%qthkC8zHVy&N>qqQd3co2(`fi=G*BejT; zffGrLCo``kwWt`9AsHEXlk@YE6H8L_5?L?1KBj8oc#O( zr^MuJWDoP97GaDG%z0^vj0`*lIi=q?V= zFG|5tz(g@Ju#|(Pxq|aci;`2_GC}E#2U?cvfrHD7#J7~ zw6-%aYH4p}VAtBsz#F-pfqyH50D>ukV2W!oZ)K3$2(}@Nfq_Aeft`VYL5P8cL70J) zL4-ksL6kwBL5x9*L7YLKL4qNifq_8`Vh2M6LnH$T7%)UJ@GvkkFoH5S0~6RK`d~f- z1FO~+27wK5abU!XUnr!H|)`S7#@KDI>#725p_44AzVc2N>-Ab~89e>M}x% zakgRs>6B!F#NYD&m$bJqh=b%H0@~Xc+_XWV4M}503_J`B44Dk<3|S2P47m)_36GT4Al$`47Cg`4E12&Yca4eBs1_Z6f&eRurP!$NHY{M z@GvklFfg=1V@sMLo1vH?5}GFY8JPM1G8nQmaIiC&{bDdciNX?iFtI~}sfo;Bg8EgQ z@<2lbksbp#0|P@V13N<-13yD2gET`AgC;{SgE>PVgDb;Ch9rhb4229+8EP4(F*GpD zfCo<@Jb03jf~N@{Jn0z0V~;&}N@2kRF6luAV1=bHlUjpT zHZMjp239sRf|`L)%_iWgi-Cbniv^|P0Cj#C7*;T_GOR>0feq?cMusxD^`OcM>;-0Y zyVoP>gn5CHp`4)tl7$%Hg$0JrZD5^{A`zw&RH0Ua3n6$g2sko$GsHrDf+*9sF?fO^ kn+aUzLaHckuz`@!ga(6vBZEIy&AvovW?*Ef0*7=p0P)YF=Kufz