0 Daumen
58 Aufrufe

Ich habe folgenden Codeausschnitt gegeben:

Zustand s1 = new Zustand();
Zustand s2 = new Zustand();
Zustand s2 = new Zustand();
Zustand s4 = new Zustand();

EndlicherAutomat ea = new EndlicherAutomat(s1);

s3.accepting = true;
s1.aNext = s2;
s1.bNext = s3;
s3.bNext = s4;
s4.bNext = s3;

Meine Aufgabe ist es, eine Zeichnung vom Automaten mit entsprechenden Zuständen zu machen. Der Startzustand hat einen extra Pfeil, der auf ihn gerichtet ist, der Endzustand hat zwei Kreise, um diesen als solchen zu kennzeichnen.
Ich habe eine Zeichnung gemacht, die für mich irgendwie schlüssig war, allerdings habe ich andere Lösungen gesehen, die zb Pfeile auf den Zustand selbst hatten. 

Kann mir jemand sagen, wie ich diesen Code interpretieren soll, um dann auf meine Lösung zu kommen ? Anscheinend deute ich etwas mit den Zeigern falsch.

Gefragt von

1 Antwort

+1 Punkt
Kann mir jemand sagen, wie ich diesen Code interpretieren soll

Ich muss an dieser Stelle auch interpretieren, da die nötige Informationsmenge nicht vollständig ist. Wieso wird z. B. die Unterscheidung zwischen aNext und bNext getroffen? Ich vermute, dass damit die Zeichen gemeint sind, die auf den Pfeilen stehen sollen. Zudem nehme ich an, dass im Konstruktor eines EndlicherAutomat-Objekts der Startzustand übergeben wird. Folgende Interpretationen sind auf dieser Basis sinnvoll:

1.png

Oder

3.png

Man könnte es aber auch so sehen, dass jeder Zustand zwei Folgezustände haben kann/sollte.

Ich brauche hier mehr Input von Deiner Seite (z. B. den vollständigen Aufgabentext)!

Beantwortet von 8,3 k

"In der Vorlesung haben sie Turingmaschinen kennengelernt. Die wesentlichen Bestandteile einer Turingmaschine sind eine Menge von Zuständen, eine Übergangsfunktion und ein Band. In dieser Aufgabe wollen wir uns mit einem schwächeren Berechnungsmodel beschäftigen; dem endlichen Automaten. Wie Turingamschinen entscheidet ein endlicher Automat, ob ein Wort zu einer Sprache gehört oder nicht. Wir schränken uns auf Sprache über dem Alphabet âˆ‘={a,b} ein. Wie eine Turingmaschine besteht ein endlicher Automat aus eine Menge von Zuständen und einer Übergangsfunktion. Allerdings kann ein endlicher Automat ein Eingabwort nur einmal von links nach rechts lesen. Er verfügt also über kein Band, auf dem er sich beliebig bewegen kann. Ein endlicher Automat hat einen Startzustand. Eine Teilmenge der Zuständen sind akzeptierende Zustände. Befindet sich ein endlicher Automat nach dem Lesen eines Eingabewortes in einem akzeptierenden Zustand, wird das Wort akzeptiert.

[an dieser Stelle ist ein Beispiel mit Zeichnung und zwei Wörtern, mit denen man überprüft ob der Automat in den endlichen Zustand kommt]

In dieser Aufgabe soll ein endlicher Automat in Java implementiert werden. Dazu repräsentiert die Klasse Zustand einen Zustand eines endlichen Automaten zusammen mit der Übergangsfunktion. Um die Übergangsfunktion darzustellen, soll ein Zustand zwei Zeiger vom Typ Zustand enthalten: aNext und bNext. Der Zeiger aNext soll auf den Folgezustand zeigen, für den Fall, dass ein a gelesen wird, analog für den Zeiger bNext. [Infos für die andern Teilaufgaben bzgl weiterer Methoden und Klassen]

[Das ist der einleitende Text gewesen mit Erläuterungen für die anderen Teilaufgaben]

a) Der folgende Code-Ausschnitt soll den Gebrauch der Klassen verdeutliche. Zeichnen Sie den Automaten der im Code-Ausschnitt erzeugt wird. Benutzen Sie Notationen wie in Abbildung 1 [gemeint sind zb S1,etc] Zustände sind beschriftete Kreise. Die Übergangsfunktion stellen Sie als beschriftete Pfeile dar. Kennzeichnen Sie den Startzustand mit einem zusätzlichen Pfeil und einen akzeptieren Zustand durch einen Doppelkreis.

[hier kommt der oben beschriebene Code]"

Die Frage ist nun, ob nicht explizit festgelegte Werte für aNext und bNext einen Selfpointer als Default haben. Falls ja, dann sieht der Automat wie folgt aus:

1.png

Ach...mir ist gerade klar geworden, warum die Zeichnung so aussieht. Oh man!

Danke!

Ich weiß nicht ganz was du mit dem Default meinst, aber mehr Informationen zu den Zeigern gibt es in der Aufgabe leider nicht

Gerne :-)

Ich weiß nicht ganz was du mit dem Default meinst [...]

Mit "Default" meine ich/meint man: Wenn nicht anders angegeben, wird ein Standardwert verwendet (wie z. B. false bei boolean).

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community
...