Fall 2000, CSE 468: Solution of Assignment 2
Exercise 1
One possible solution is: (a+b)*bba*.
Exercise 2
Exercise 3
We construct the NFA directly (not from the previous NFA-lambda)
Exercise 4
Exercise 5
We give the solution in C.
#include <stdio.h>
#include <string.h>
int main() {
char crt_symb; /* The current input symbol */
int crt_state; /* The current state. The states will be represented by 0,1,2,3 */
int delta[4][2] = {{0,1},
{0,2},
{3,2},
{3,1}}; /* The transition relation. The rows represent the
states, the colums represent the input symbols
a and b respectively */
int col; /* Integer which will represent the column associated to a (0) and b (1) */
crt_state = 0; /* The initial state is 0 */
printf("Enter the input string on the alphabet {a,b} \n(type c to mark the end of the input): ");
scanf("%c", &crt_symb);
while (crt_symb != 'c') {
if (crt_symb == 'a')
col = 0;
else
col = 1;
crt_state = delta[crt_state][col];
scanf("%c", &crt_symb);
}
if (crt_state == 2 || crt_state == 3)
printf("Input string accepted \n");
else
printf("Input string rejected \n");
}