Processing math: 100%

기타/암호학

[암호학] 7. Deterministic Finite Automata (DFA)

riroan 2022. 12. 20. 00:00

DFA (Deterministic Finite Automata)

이제부터 전자계산기의 동작을 알아보도록 하자.

DFA는 이름에서 알 수 있듯 "결정적인 유한 오토마타"이다.

상태는 유한하고 어떤 상태에서 어떤 입력이 들어오면 이동하는 상태가 정해져있다는 뜻이다.

DFA 는 다음으로 이루어져있다.

M=(Q,Σ,q,F,s)

  • Q : DFA상태들의 집합
  • Σ : 입력받은 String
  • q : 초기상태 (qQ)
  • F : AC를 받는 상태들의 집합 (FQ, 여러개 가능)
  • s : Transition Function

표기법은 책, 자료마다 다르지만 의미는 같다.

지난시간에 본 Problem X1을 DFA로 나타내면 다음과 같다.

Problem X1, X2

여기에서 각 노드(원)가 Q들이다.

q는 start와 연결된 노드

F는 오른쪽에 있는 두개의 원이 겹쳐진 노드

s는 숫자가 적혀있는 화살표들이다.

여기에서 Σ로 011이 들어온다면 오른쪽 왼쪽  왼쪽 으로 끝나게 된다.

반면 10이 들어온다면 왼쪽   오른쪽 으로 끝나게 된다.

011은 F에서 끝나지 않아서 AC받지 못하고, 10은 F에서 끝나므로 AC를 받게 된다.

AC를 받으면 YES, 아니라면 NO이기 때문에 Decision Problem이 된다. 

 

또 다른 예시를 들어보자.

Problem X3 : 입력에 101이 있는가?

X3의 정답은 L3={101,0101,1010,01010,}가 될 것이다.

이를 DFA로 나타내면 다음과 같다.

Problem X3

 

하지만 다음과 같은 예시를 보자

Problem X5 : L5={x|x=0i1i,0i}, 여기서 a2=aa이다.

일단 문제를 간소화 해서 L50={x|x=0i1i,0=i}을 보자.

Problem X5_0

위와 같이 간단하게 나온다.

마찬가지로 L51,L52는 아래와 같다.

좌 : L5_1, 우 : L5_2

L5i일 때마다 상태의 수가 2(i+1)개가 된다.

L5는 임의의 i에 대해 AC를 해야 하므로 i가 무한히 커지면 상태의 수도 같이 무한히 커지게 된다.

이는 DFA에서 Finite에 위배되므로 Problem X5를 해결하는 DFA는 존재하지 않는다.

DFA가 Problem X5를 해결할 수 없다는 증명이 있는데 이는 다음시간에 알아보도록 한다.

 

연습문제

Problem X4 : L4={x|x=0i1j,0i,j}, 여기서 a2=aa이다.

Problem X4를 AC하는 DFA는 존재하는가?

존재한다면 그 DFA를 그려보자!