Prime normal form and equivalence of simple grammars
A prefix-free language is prime if it cannot be decomposed into a concatenation of two prefix-free languages. We show that we can check in polynomial time if a language generated by a simple context-free grammar is prime. Our algorithm computes a canonical representation of a simple language, converting its arbitrary simple grammar into prime normal form (PNF); a simple grammar is in PNF if all its nonterminals define primes. We also improve the complexity of testing the equivalence of simple grammars. The best previously known algorithm for this problem worked in O(n(13)) time. We improve it to O(n(7) log(2) n) and O(n(5) polylog v) time, where n is the total size of the grammars involved, and v is the length of a shortest string derivable from a nonterminal, maximized over all nonterminals. (C) 2006 Elsevier B.V. All rights reserved.
prime normal form simple grammar deterministic context-free language language equivalence