Automaten

Neue Frage »

Auf diesen Beitrag antworten »
Ratte Automaten

Stehe vor folgender aufgabe:

Erstellen Sie einen Automaten der....
 
Auf diesen Beitrag antworten »
Ratte

Gibt es denn niemand der ein Beispiel parat hätte?
Auf diesen Beitrag antworten »
eulerscheZahl

Der Automat kriegt irgendeine Eingabe der Form {0,1}*.
Also z.B. 01010101001001010.
Jetzt werden die 0en gezählt, es sind zehn. Da das eine gerade Anzahl ist, wird die Eingabe akzeptiert.
Auf diesen Beitrag antworten »
Ratte

Zitat:
Original von eulerscheZahl
Der Automat kriegt irgendeine Eingabe der Form {0,1}*.
Also z.B. 01010101001001010.
Jetzt werden die 0en gezählt, es sind zehn. Da das eine Gerade_und_ungerade_Zahlen]gerade Anzahl wird die Eingabe akzeptiert.




Danke für den tipp, eulersche Zahl smile .
Wie stelle ich allerdings nun bitte die Bedingung und die Zeichnung auf für aufgabe a)? verwirrt

Etwa wie auf dem anhang?
 
Auf diesen Beitrag antworten »
eulerscheZahl

.
Auf diesen Beitrag antworten »
Ratte

Zitat:
Original von eulerscheZahl
.


Danke dir!
Wink

Verstehe ich das denn richtig?

Die Zahlen stellen lediglich die Eingabe dar? Was ist aber mit der Ausgabe?

Wenn s0 eine gerade binär 0er Zahl erhält, dann bildet s0 mit den pfeil (Als Eingabe 1) auf sich selber ab. Wenn die Zahl jedoch zu ungerade war, wird sie zum Zustand s1 geführt, die darin so lange "bearbeitet" wird, bis eine gerade Zahl eingegeben wurde und der pfeil wieder auf s0 zeigt?

Nebenbei: kannst du mir bitte verraten mit welchen Programm du das gezeichnet hast?
Auf diesen Beitrag antworten »
eulerscheZahl

Ausgabe brauchst du keine. Es gibt eine akzeptierenden Endzustand, das reicht.

Wir starten in s0 (haben bisher keine 0er gelesen, also eine gerade Anzahl, deshalb akzeptierend).
Wird eine 0 gelesen, ist die Zahl dann ungerade, also geht es nach s1 (nicht akzeptierend).
Wird dort wieder eine 0 gelesen, ist die Gesamtzahl wieder gerade, also nach s0 zurück. Das ist letztendlich Summe der 0er modulo 2.
Eine gelesene 1 ändert daran nichts.

Die Zeichnung habe ich mit graphviz gemacht. Kannst du dir entweder installieren oder auch online generieren lassen. Hier der Code:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
digraph {
	rankdir = LR
	I0 [shape = none label=""]
	s0 [shape=doublecircle]
	s1 [shape=circle]
	I0 -> s0
	s0 -> s0 [label="1"]
	s1 -> s1 [label="1"]
	s0 -> s1 [label="0"]
	s1 -> s0 [label="0"]
}
Auf diesen Beitrag antworten »
Ratte

Wieso werden dann auf beiden zuständen jeweils eine 1 auf sich selber abgebildet?
Die 0er werden gelesen. Wenn jetzt jedoch beispielsweise beim start s0 eine 0 eingelesen wird, wird gleichzeitig auch eine 1 eingelesen? Also eins, null?
Auf diesen Beitrag antworten »
eulerscheZahl

Es wird immer ein Zeichen nach dem anderen gelesen. Wenn eine 0 gelesen wird, folgst du dem 0er Pfeil. Wenn eine 1 gelesen wird, dem 1er.
Wenn keine Zeichen mehr zu lesen sind, schaust du, in welchem Zustand du bist und ob der akzeptierend ist.
Auf diesen Beitrag antworten »
Ratte

Ich habe es denke ich verstanden! Dankeschön!

Also wäre das somit die lösung für teilaufgabe b? (Im anhang)
Auf diesen Beitrag antworten »
eulerscheZahl

Sieht gut aus Daumen hoch
Auf diesen Beitrag antworten »
Ratte

Zitat:
Original von eulerscheZahl
Sieht gut aus Daumen hoch


Danke eulersche zahl. Wink
Nun zur teilaufgabe c. Was genau ist denn bitte mit "nur einen akzeptor", gemeint?
Auf diesen Beitrag antworten »
eulerscheZahl

Es gibt ja akzeptierende und nicht-akzeptierende Endzustände (s0 ist akzeptierend, weil es eine gerade Anzahl an 0en und 1en gibt, solltest du in deinem Graphen noch kennzeichnen).
Das heißt einfach, dass nur einer der Zustände ein akzeptierender Endzustand ist.
Auf diesen Beitrag antworten »
Ratte

Danke wieder mal für deine hilfe eulerschezahl! Wink
Es gibt hier keinen hilfsbereiteren user als dich!
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »