class Kleene::NFA

def initialize(start_state, alphabet = DEFAULT_ALPHABET, transitions = Hash.new, initial_states = nil)

def initialize(start_state, alphabet = DEFAULT_ALPHABET, transitions = Hash.new, initial_states = nil)
  @start_state = start_state
  @transitions = transitions
  @alphabet = alphabet + all_transitions.map(&:token)
  @states = initial_states || reachable_states(start_state)
  @current_states = Set.new
  @final_states = Set.new
  update_final_states
  reset_current_states
end