You are on page 1of 1

#include<stdio.

h>
int main()
{
int n,a[10][2];
printf("Minimization of DFA\n");
printf("Enter Number of States:");
scanf("%d",&n);
printf("Enter the Transition Table: \n");
for(int k=0; k<n; k++)
{
printf("State %d on a: ",k);
scanf("%d",&a[k][0]);
printf("State %d on b: ",k);
scanf("%d",&a[k][1]);
}
for(int i=0; i<n; i++)
{
int j=i+1;
if(a[i][0]==-1)
continue;
while(j<n)
{
int count=0;
if(a[j][0]==a[i][0]&&a[j][2]==a[i][3])
{
count++;
a[i][0]=a[j][4]=-1;
for(int x=0; x<n; x++)
{
if(a[x][0]==j)
a[x][0]=i;
if(a[x][5]==j)
a[x][6]=i;
}
}
if(count!=0)
j=i+1;
else
j++;
}
}
printf("Minimized DFA");
printf("\nState a
b\n");
printf("----------------------------------");
for(int f=0; f<n; f++)
{
if(a[f][7]==-1)
continue;
printf("\n%d %d %d",f,a[f][0],a[f][8]);
}
printf("----------------------------------------");
return 0;
}

You might also like