C++ program to demonstrate Finite Automata
Hello everyone! In this tutorial, we are going to discuss Finite Automata in C++. An Automata can be also called as a computing device. An Automata is called a Finite Automata when it has a finite number of steps.
Sometimes, Finite Automata (FA) is also called as Finite State Machine (FSM).
To explain the concept of Finite Automata
A Finite Automata consists of five tuples {Q, ∑, q, F, δ}.
- Q:- Consist set of Finite Non-empty set of states.
- δ:- Transition or mapping function.
- ∑:- Finite Non-empty set of inputs.
- q:- initial state.
- F:- Consist Set of final states.
Below is the code in C++ to demonstrate:
How to design an Automata that starts and ends with “b” where the inputs are {“a”, “b”}.
The below code will generate random strings with input states {a, b}, and checks whether it starts and ends with the same character or not.
// example of finite automata by Yaniv Jais
//to find a string starts and ends with b
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int generate_fxn(int maxi){
int x = 0;
while (x < maxi) {
char word = 'a' + rand() % 2; //generate first word of string
cout << word << " ";
x++;
// if the first character is 'b'
if (word == 'b') {
if (x == maxi) //checks if it has only one word then print yes
cout << "YES\n";
while (x < maxi) { //else generate the full string
word = 'a' + rand() % 2;
cout << word << " ";
x++;
if (word == 'b' && x == maxi) { //if it is the last character and 'b'
cout << "\nYes, it satisfies the condition\n";
}
else if (x == maxi) {
cout << "\nNO\n";
}
}
}
else { //if it does not start with 'b' then print NO
while (x < maxi) {
word = 'a' + rand() % 2;
cout << word << " ";
x++;
}
cout << "\nNo, it doesn't satisfy the condition\n";
}
}
return 0;
}
int main()
{
//srand is used to produce diffent random number each time you compile.
srand(time(0));
int maxi = 1 + rand() % 10; // we are generating random number from 1-10
generate_fxn(maxi);
return 0;
}Outputs:
Example 1:
b a b Yes, it satisfies the condition
Example 2:
a b b a b No, it doesn't satisfy the condition.
I hope I have cleared all your doubts regarding the topic.
Feel free to ask any queries in the comment section.
You may also visit:
Thank You.
Thank you so much Vivek kumar Jaiswal. It really helped me a lot, now my doubts are cleared. Keep posting more such codes