Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

posted 2014-11-15 13:19:05 +0100

Ano, jeden možný postup je převést automat nejprve na gramatiku, což bych řek, že je poměrně jednoduché, stačí v podstatě přepsat tabulku do tvaru gramatiky:

S -> 0S|1C|2E
A -> 0A|2A
B -> 0B|1D|2A|ε
C -> 0C|1E|2B
D -> 0D|1A
E -> 0E|1B|2D

Aby to byla regulární gramatika, bylo by potřeba zbavit se ε-pravidel, ale to v tomhle případě není potřeba, protože ji rovnou převedeme na regulární rovnice, kde to nevadí:

S = 0S+1C+2E
A = 0A+2A
B = 0B+1D+2A+ε
C = 0C+1E+2B
D = 0D+1A
E = 0E+1B+2D

Ono už na začátku lze zjistit, že stavy A a D jsou takzvaně zbytečné, ale ukáže se to i tím, že v rovnicích vyjde A = Ø, D = Ø. Celé mi to vyšlo takto:

S = 0*(10*(10*10*+20*)+20*10*)

Ale neručím, že je to správně, protože jsem to dělal dost narychlo.

Ano, jeden možný postup je převést automat nejprve na gramatiku, což bych řek, že je poměrně jednoduché, stačí v podstatě přepsat tabulku do tvaru gramatiky:

S -> 0S|1C|2E
A -> 0A|2A
B -> 0B|1D|2A|ε
C -> 0C|1E|2B
D -> 0D|1A
E -> 0E|1B|2D

Jediné, na co se nesmí zapomenout je, že do koncových stavů (B) se přidá ε pravidlo.

Aby to byla regulární gramatika, bylo by potřeba zbavit se ε-pravidel, ale to v tomhle případě není potřeba, protože ji rovnou převedeme na regulární rovnice, kde to nevadí:

S = 0S+1C+2E
A = 0A+2A
B = 0B+1D+2A+ε
C = 0C+1E+2B
D = 0D+1A
E = 0E+1B+2D

Ono už na začátku lze zjistit, že stavy A a D jsou takzvaně zbytečné, ale ukáže se to i tím, že v rovnicích vyjde A = Ø, D = Ø. Celé mi to vyšlo takto:

S = 0*(10*(10*10*+20*)+20*10*)

Ale neručím, že je to správně, protože jsem to dělal dost narychlo.