What the way studying math to automata theory

1.3k Views Asked by At

Good day everyone.

I need to know automata theory. Can you advice me the best way to study math? What themes will I need to know to understand automata theory. What a sequence of study? What level will I need to study intermediate themes? Maybe can you say something yet, what can help me quickly learn automata theory?

2

There are 2 best solutions below

0
On BEST ANSWER

It really depends how far you want to go and for which purpose you wish to study automata theory. Let me explain this in more details.

If you are a programmer and you need finite automata to better understand regular expressions or lexical analysis, you can probably do it without any mathematical background since you will be mostly using basic algorithms. The difficulty will be elsewhere: for instance, coding regular expressions in Perl requires some practice...

If you want to understand the algorithms on finite automata, some mathematical background will be useful. Just to give a concrete example, try to look at the answers to these two questions: How to convert finite automata to regular expressions? and Converting from NFA to a regular expression. You will see that some form of linear algebra is helpful (I disagree on that with the remark of copper.hat).

If you want to study the mathematical theory of finite automata at the research level, then you will need non-commutative algebra (semigroups and formal power series in non-commutative variables), logic and even topology.

If you are interested not only in finite automata, but also in pushdown automata and up to Turing machines, then you definitely need a good background on algorithms and on recursion theory.

Conclusion. Apart from a "certain familiarity with mathematical reasoning and a certain capacity for abstract thought" (to quote Bourbaki), a reasonable background in algorithms would be useful. On the mathematical side, it would be best to master basic mathematical notions like sets, functions, relations, recurrence, a bit of combinatorics, calculus (notations $O(f(n)$ and $o(f(n))$, function $\ln(x)$, elementary series), linear algebra (linear equations, matrices).

0
On

One of the free online courses on the topic available at Coursera.org suggests as prerequisites "You should have had a second course in Computer Science — one that covers basic data structures (e.g., lists, trees, hashing), and basic algorithms (e.g., tree traversals, recursive programming, big-oh running time). In addition, a course in discrete mathematics covering propositional logic, graphs, and inductive proofs is valuable background."

It goes on to suggest a freely available book available here and suggests that you be familiar with the following chapters: 2 (Recursion and Induction), 3 (Running Time of Programs), 5 (Trees), 6 (Lists), 7 (Sets), 9 (Graphs), and 12 (Propositional Logic).