Implementierung eines Codes zur Simulation eines endlichen nicht deterministischen Automaten in c ++

Ich mache eine Aufgabe für die Automatentheorie, bei der ich feststellen muss, ob ein Wort von einer Übergangsfunktion für einen deterministischen endlichen Automaten akzeptiert wird oder nicht

Ich habe diese Eingabedatei:

<code>6 8 0 2
2
5
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
3 4 d
4 4 d
4 5 d
3
aaabcccc
aabbbbcdc
acdddddd
</code>

Die Eingabe beginnt mit 4 ganzen Zahlen, die erste ist die Anzahl der Zustände für den Automaten, die nächste ist die Anzahl der Übergänge des Automaten, die dritte ist der Anfangszustand und dann die Anzahl der Endzustände. Dann kommen die Endzustände (im Beispiel sind die Endzustände 2 und 5).

Dann kommen N Zeilen (N ist die Anzahl der Übergänge) mit jeweils 2 ganzen Zahlen und einem Zeichen I, J und C, die die Zustände darstellen, in denen der Übergang, dh der Übergang von Zustand i zu Zustand J mit dem Zeichen C erfolgt. Nach dieser Zeile folgt eine einzelne Ganzzahl S, die die Anzahl der zu testenden Zeichenfolgen enthält, und dann S mit den entsprechenden Zeichenfolgen.

Die Ausgabe dieses Programms sollte sein:

<code>Case #2:
aaabcccc Rejected
aabbbbcdc Rejected
acdddddd Accepted
</code>

Es sollte angezeigt werden, ob der String akzeptiert oder abgelehnt wird. Bisher habe ich die Arbeit nur mit der Eingabe codiert.

Ich weiß nicht, wie es am bequemsten wäre, den Automaten darzustellen. Soll ich einfach Arrays verwenden? Welche Logik würde ich auf die Arrays anwenden? Gibt es eine Möglichkeit, dies zu tun, ohne das Automatenalphabet im Voraus zu kennen? Benötige ich eine Datenstruktur zur Darstellung von Automaten? Ich bin ein bisschen festgefahren bei dieser Aufgabe und möchte, dass einige Ideen, ein Pseudocode oder Ideen dazu kommen. Ist der Code in einer anderen Sprache? Ich möchte die Lösung nicht, weil ich meine Aufgabe erledigen möchte, aber wenn ich Hilfe gebrauchen könnte

Antworten auf die Frage(1)

Ihre Antwort auf die Frage