Hallo,
Streng genommen muss der Keller bei uns nicht leer sein, damit das Wort erkannt wird. Laut Definition ist es ausreichend, wenn das Wort abgearbeitet ist und wir in einem Endzustand sind.
Es macht jedoch oft Sinn mit einem leeren Keller zu enden, da wir hier Informationen „speichern“. Um z.B. zu garantieren, dass genau zwei a’s eingelesen wurden, schreiben wir diese wenn sie vor kommen in den Keller und bauen unsere Übergänge so auf, dass wir diese nur genau zweimal rauslöschen können (Nicht mehr und nicht weniger).
In deinem Beispiel fehlt dieser Mechanismus und der Kellerautomat würde z.B. auch das Wort aaaab akzeptieren (das nicht Teil der Sprache ist).
(so,aaaab,ko) -> (s1,aaab,ak0) -> (s1,aab,aak0) -> (s1,ab,aaak0) -> (s1,b,aaaak0) -> (se,lambda,aaaak0)
Im Folgenden findest du ein Beispiel, das den Keller verwenden würde und funktioniert:
Endzustand F = {se}
(s0, b, k0) -> (s0, bk0)
(s0, b, b) -> (s0, Lambda)
(s0, a, k0) -> (s0, ak0)
(s0, a, a ) -> (s2, Lambda)
(s2, b, k0) -> (se, k0)
Die ersten beiden Übergänge stellen sicher, dass nur eine gerade Anzahl an b’s eingelesen werden kann und durch den Wechsel in s2 (im 4.Übergang), nachdem das zweite a eingelesen wird ist sichergestellt, dass im Anschluss nur noch genau ein b kommen kann. Dies ist die einzige Möglichkeit ausgehend von s2 in den Endzustand zu kommen.
Viele Grüße,
Sören (Tutor)