다음과 같은 언어를 인식하는 DFA를 만드시오.




손으로 DFA를 그려봤다 -_-;;
정말 이대로 하면 되는지 의심이 들어
코드로 옮겨봤다.

[CODE type="java"] public class hw2_6a {
[tab]public static int state = -1;
[tab]public static void trans(char c){
[tab][tab]switch (state) {
[tab][tab]case -1:
[tab][tab][tab]state = (c=='0') ? 0:1;[tab][tab][tab]
[tab][tab][tab]break;
[tab][tab]case 0:
[tab][tab][tab]state = (c=='0') ? 0:1;[tab][tab][tab]
[tab][tab][tab]break;
[tab][tab]case 1:
[tab][tab][tab]state = (c=='0') ? 2:3;[tab][tab][tab]
[tab][tab][tab]break;
[tab][tab]case 2:
[tab][tab][tab]state = (c=='0') ? 0:1;[tab][tab][tab]
[tab][tab][tab]break;
[tab][tab]case 3:
[tab][tab][tab]state = (c=='0') ? 2:1;[tab][tab][tab]
[tab][tab][tab]break;[tab][tab][tab]
[tab][tab]}[tab][tab]
[tab]}
[tab]
[tab]public static boolean auto(String input){
[tab][tab][tab][tab]
[tab][tab]for(int i=0;i<input.length();i++)
[tab][tab][tab]trans(input.charAt(i));[tab]
[tab][tab]if(state==0)
[tab][tab][tab]return true;
[tab][tab]return false;
[tab]}

[tab]public static void main(String args[]){
[tab][tab]String is;
[tab][tab]for(int input=0;input<30;input++){
[tab][tab][tab]is = Integer.toBinaryString(input);
[tab][tab][tab]System.out.println( input + " " + is + " " + auto(is));
[tab][tab]}[tab]
[tab]}
}[/HTML][/CODE]

0 0 true
1 1 false
2 10 false
3 11 false
4 100 true
5 101 false
6 110 false
7 111 false
8 1000 true
9 1001 false
10 1010 false
11 1011 false
12 1100 true
13 1101 false
14 1110 false
15 1111 false
16 10000 true
17 10001 false
18 10010 false
19 10011 false
20 10100 true
21 10101 false
22 10110 false
23 10111 false
24 11000 true
25 11001 false
26 11010 false
27 11011 false
28 11100 true
29 11101 false
오! 되잖아!!
2006/10/14 02:20 2006/10/14 02:20

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다