1. Definition

The input of determinization must be a Boolean automaton A where labels are letters.

The function returns a deterministic automaton D equivalent to the input:


2. Implementation

The algorithm of determinization is the subset construction:

The result of determinization has the following properties:

Moreover, the history of the determinization can be recorded. In this case, for every state of D, the corresponding subset of states of A can be retrieved.

If the maximal index of states of A is smaller than twice sizeof(size_t), subsets are implemented in the algorithm by (static) bitsets; otherwise, they are implemented by std::set.