Open In App

Introduction of Finite Automata

Last Updated : 12 Sep, 2024
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

Finite automata are abstract machines used to recognize patterns in input sequences, forming the basis for understanding regular languages in computer science. They consist of states, transitions, and input symbols, processing each symbol step-by-step. If the machine ends in an accepting state after processing the input, it is accepted; otherwise, it is rejected. Finite automata come in deterministic (DFA) and non-deterministic (NFA), both of which can recognize the same set of regular languages. They are widely used in text processing, compilers, and network protocols.

Fintie Automata

Figure: Features of Finite Automata

Features of Finite Automata

  • Input: Set of symbols or characters provided to the machine.
  • Output: Accept or reject based on the input pattern.
  • States of Automata: The conditions or configurations of the machine.
  • State Relation: The transitions between states.
  • Output Relation: Based on the final state, the output decision is made.

Formal Definition of Finite Automata

A finite automaton can be defined as a tuple:

{ Q, Σ, q, F, δ }, where:

  • Q: Finite set of states
  • Σ: Set of input symbols
  • q: Initial state
  • F: Set of final states
  • δ: Transition function

Types of Finite Automata

There are two types of finite automata:

  • Deterministic Fintie Automata (DFA)
  • Non-Deterministic Finite Automata (NFA)

1. Deterministic Finite Automata (DFA)

A DFA is represented as {Q, Σ, q, F, δ}. In DFA, for each input symbol, the machine transitions to one and only one state. DFA does not allow any null transitions, meaning every state must have a transition defined for every input symbol.

DFA consists of 5 tuples {Q, Σ, q, F, δ}. 
Q : set of all states.
Σ : set of input symbols. ( Symbols which machine takes as input )
q : Initial state. ( Starting state of a machine )
F : set of final state.
δ : Transition Function, defined as δ : Q X Σ --> Q.

Example:

Construct a DFA that accepts all strings ending with ‘a’.

Given:

Σ = {a, b},

Q = {q0, q1},

F = {q1}

State Transition Diagram

Fig 1. State Transition Diagram for DFA with Σ = {a, b} 

State\Symbol a b
q0 q1 q0
q1 q1 q0

In this example, if the string ends in ‘a’, the machine reaches state q1, which is an accepting state.

2) Non-Deterministic Finite Automata (NFA)

NFA is similar to DFA but includes the following features:

  • It can transition to multiple states for the same input.
  • It allows null (ϵ) moves, where the machine can change states without consuming any input.

Example:

Construct an NFA that accepts strings ending in ‘a’.

Given:

Σ = {a, b},

Q = {q0, q1},

F = {q1}

Fig 2. State Transition Diagram for NFA with Σ = {a, b}

State Transition Table for above Automaton,

State\Symbol a b
q0 {q0,q1} q0
q1 φ φ

In an NFA, if any transition leads to an accepting state, the string is accepted.

Comparison of DFA and NFA

Although NFAs appear more flexible, they do not have more computational power than DFAs. Every NFA can be converted to an equivalent DFA, although the resulting DFA may have more states.

  • DFA: Single transition for each input symbol, no null moves.
  • NFA: Multiple transitions and null moves allowed.
  • Power: Both DFA and NFA recognize the same set of regular languages.

Conclusion

Finite automata, whether deterministic or non-deterministic, are powerful tools in pattern recognition and regular language processing. They form the backbone of many computational processes, especially in text analysis and compiler design. While DFAs are simpler and more commonly used, NFAs offer a more flexible yet equivalent way to define regular languages. Understanding the nuances of both helps in optimizing various algorithms in computer science.

Frequently Asked Questions on Finite Automata – FAQs

1. What is the main difference between DFA and NFA?

The main difference is that DFA allows only one transition for each input symbol, while NFA can have multiple transitions for the same input and even transition without consuming input (ϵ move).

2. Can every NFA be converted to a DFA?

Yes, every NFA can be converted to an equivalent DFA, although the resulting DFA may have exponentially more states.

3. Why is DFA used in lexical analysis?

DFA is used in lexical analysis because it provides a more structured and efficient way to process input symbols, making it ideal for scanning and recognizing patterns in source code.

4. What are the applications of finite automata?

Finite automata are widely used in text searching, regular expression matching, compiler design (lexical analysis), and network protocol design.


Next Article

Similar Reads

Article Tags :
three90RightbarBannerImg