Kleene Operation on Functions

$f: \{0,1\}^* \to \{0,1\}$

$f^: \{0,1\}^ \to \{0,1\}$

One or more of the original function.

Claim: If $f$ is computable by a DFA, then $f^*$ is computable by a NFA.

Can we just use an epsilon transition from accepting states to the start state?

Doesn’t satisfy convention that empty string is accepting.

Solution: Add a 0’ node at the beginning that has an epsilon transition to the rest.

Summary: NFAs can simulate concatenation, reverse, and the Kleene operation.

Theorem: Every NFA has an equivalent DFA.

Corollary: $f_1,f_2$ are computable by DFAs. Then, their concat operation is also computable by a DFA.

Simplifying NFAs

If multiple of the same state at the same level, we can simply remove.

Suppose an NFA has no epsilon transitions.

We are given an NFA $(T_N, S_N) = N$

$T_N: [C] \times \{0,1\} \to \mathcal{P}([C])$

$S_N\subseteq [C] = \{0,1,2,...,C-1\}$

Let’s transform this into a DFA $(T_D,S_D)=D$ such that for all $x$, $N(x) = D(x)$