Angenommen, wir haben 3 DFAs. Wir wissen, wie man sie ODER, UND oder NICHT. Aber wie macht man sie XOR? Es gibt keine einzige Erwähnung online.
. Dies ist viel zu kompliziert und zeitaufwändig zum Zeichnen. Gibt es nicht einen anderen Weg?
Danke dass du dir die Zeit nimmst!
Antworten:
Beachten Sie, dass die Konstruktion für den Schnittpunkt und die Vereinigung ("und" und "oder") zweier Automaten genau gleich ist, mit Ausnahme der Definition, welche Zustände akzeptieren. Das gleiche Prinzip gilt für jede boolesche Kombination einer endlichen Menge von Sprachen: Verwenden Sie die Produktkonstruktion und die entsprechende Definition, welche Zustände akzeptiert werden sollen.
quelle
Da die drei Maschinen alle deterministisch sind, ist die kombinierte Operation überhaupt nicht kompliziert. Führen Sie die Maschinen parallel aus, wobei Sie eine direkte Produktkonstruktion verwenden, wie sie auch für die Kreuzung verwendet wird, und bei jedem XOR mit drei Zuständen das Vorhandensein von Endzuständen, um zu überprüfen, ob der neue Zustand für das XOR-Produkt akzeptiert werden soll.
quelle
Da Sie nur mit DFAs arbeiten, können Sie zwei Automaten XOR-verknüpfen, indem Sie das Kreuzprodukt der beiden Automaten erstellen und dann die Zustandspaare als akzeptierende Zustände annehmen, von denen ein Zustand ein akzeptierender Zustand ist, jedoch nicht beide.
Beachten Sie, dass diese Konstruktion nur für DFAs funktioniert, bei denen jeder Status genau einen Nachfolgerstatus für jedes Alphabetsymbol hat. Dies stellt sicher, dass Sie bei der Simulation des Automaten immer einen Zustand erreichen und die Annahme eines Wortes nur davon abhängt, ob dieser Zustand ein Endzustand ist oder nicht. Manchmal werden DFAs so definiert, dass jeder Status höchstens einen Nachfolgerstatus für jedes Alphabetsymbol hat. In diesem Fall funktioniert die obige Konstruktion nicht mehr, da es jetzt einen zweiten Grund gibt, warum ein Wort nicht akzeptiert wird: Mit einigen Wörtern wird überhaupt kein Zustand erreicht.
quelle