Implement a deterministic finite automata. Your implementation should work for any type of finite automata deterministic, i.e., must accept any set of states, alphabet, transition function, initial state and set of final states. It also implements the definition of non-deterministic finite automata.
(a) After the non-deterministic finite automata be defined, it must be possible to verify whether it accepts or rejected strings provided. This should be done by converting into a deterministic finite automaton. That is, their implementation must be able to verify if a deterministic finite automaton accepts or rejects a string provided.
(b) Implement a string search using non-deterministic finite automata. Given a text and a string to be sought in the text, your implementation should build a deterministic finite automaton from the string and then convert it into a deterministic finite automaton. Then you should check if the string occurs in the text by the deterministic finite automata.