What I would like to do is design a program (for academic purposes) which will take a representation of a DFA (as a directed graph) and display the regular language which it accepts, in a reasonable format.
For example:
For this graph:
as input, an algorithm will spit out: a*b*
The set of regular languages is computable and decidable. But what about the language which we use to represent regular languages? Is it decidable as well?
Edit: I thought about this some more, and I think this should be doable, because implementation examples of regular expression parsers are bountiful, and clearly they internally construct a graph (or an equivalent structure). What I am wondering is if the reverse is possible -- construct the correct expression from a DFA representation.
bawill not be accepted (because it ends up in state 3), although your regular expression accepts it.a*b*is the correct regular expression for this DFA. – Zach Langley Apr 1 '11 at 0:42a*a*b*b* = a*b*. Which one do you choose? – Raphael Apr 1 '11 at 20:28