A prefix normal word is a binary word with the property that no substring has more 1s than the prefix of the same length. By proving that the set of prefix normal words is a bubble language, we can exhaustively list all prefix normal words of length n as a combinatorial Gray code, where successive strings differ by at most two swaps or bit flips. This Gray code can be generated in O(log \Oh ^2 n) amortized time per word, while the best generation algorithm hitherto has O \Oh (n) running time per word. We also present a membership tester for prefix normal words, as well as a novel characterization of bubble languages.
A prefix normal word is a binary word with the property that no substring has more 1s than the prefix of the same length. By proving that the set of prefix normal words is a bubble language, we can exhaustively list all prefix normal words of length n as a combinatorial Gray code, where successive strings differ by at most two swaps or bit flips. This Gray code can be generated in \Oh(\log ^2 n) amortized time per word, while the best generation algorithm hitherto has \Oh (n) running time per word. We also present a membership tester for prefix normal words, as well as a novel characterization of bubble languages.
D
O(log
A
(\log
D
O