본문으로 건너뛰기

12. Modeling Computation

12.1. Languages and Grammars

Phrase-Structure Grammars

Vocabulary(Alphabet) VV는 Symbol의 Element의 Finite nomempty set이다.
VV 위 Word(Sentence)는 VV의 Element로 구성된 Finite length의 String이다.
λ\lambda의 경우 Empty string이나 Null string은 Symbol이 포함되지 않은 String을 의미한다.
모든 Word의 Set을 VV^\ast로 표시하며 VV 위 Language는 VV^\ast의 Subset이다.

대체 불가능한 Symbol을 Terminal, 그렇지 않은 Symbol을 Nonterminal이라고 하며 각각 T,NT,N으로 표현한다.
VV^\ast의 String에서 다른 String으로 교체할 수 있는 시점을 지정하는 규칙을 Grammar의 Production이라고 하며 Notation z0z1z_0 \to z_1으로 표시한다.
위 Notation은 z0z_0z1z_1으로 대체 가능하다는 것을 의미한다.
Start symbol은 SS로 표기한다.

Phrase-structure grammar G=(V,T,S,P)G=(V,T,S,P)는 Vocabulary VV, VV의 Subset TT(Terminal), VV의 Start symbol SS, Production의 Finite set PP로 구성되어 있다.
VT=NV-T=N(NN은 Nonterminal symbol)이며 PP의모든 Production은 Left side에 최소한 하나의 Nonterminal을 포함하여야 한다.

Example

G=(V,T,S,P)G=(V,T,S,P)라고 할 때 V={a,b,A,B,S},T={a,b}V=\{a,b,A,B,S\},T=\{a,b\}이고 SS는 Start symbol, P={SABa,ABB,Bab,ABb}P=\{S\to ABa,A\to BB, B\to ab, AB\to b\}일 때 GG는 Phrase-structure grammar의 예시이다.

G=(V,T,S,P)G=(V,T,S,P)가 Phrase-structure grammar라고 할 때 w0=lz0rw_0=lz_0r이고 w1=lz1rw_1=lz_1r이라고 할 때 z0z1z_0\to z_1GG의 Production일 경우 w1w_1w0w_0로부터 Directly derivable이라고 하며 w0w1w_0\Rightarrow w_1으로 표현한다.
만약 w0wnw_0\Rightarrow w_n이라면 wnw_nw0w_0으로 부터 Derivable라고 말한다(w0w1wnw_0\Rightarrow w_1\Rightarrow \cdots \Rightarrow w_n).
w0w_0로부터 wnw_n을 얻기 위해 사용된 Step을 Derivation이라고 한다.

Example

앞 예시에서 String AabaAaba는 Directly derivable from ABaABa이다.
왜냐하면 BabB\to ab이기 때문이다.
abababaabababaABaABa로 부터 Derivable인데 그 이유는 ABaAabaBBabaBababaabababaABa\Rightarrow Aaba\Rightarrow BBaba\Rightarrow Bababa\Rightarrow abababa이기 때문이다.

G=(V,T,S,P)G=(V,T,S,P)가 Phrase-structure grammar일 때 GG에 의해 생성된 Language는 L(G)L(G)로 표기하며 Starting state SS로 부터 Derivable인 Terminal string들의 Set이다.
L(G)={wTSw}L(G)=\{w\in T^\ast \mid S \overset{\ast}{\Rightarrow}w\}이다.

Example

GG를 Vocabulary V={S,A,a,b},T={a,b},P={SaA,Sb,Aaa},SV=\{S,A,a,b\}, T=\{a,b\},P=\{S\to aA, S\to b, A\to aa\},S의 Grammar라고 할 때 Grammar의 Language L(G)L(G)

  • Solution
    Start state SS로부터 Production SaA,SbS\to aA, S\to b를 사용하여 aA,baA, b를 Derive할 수 있고 AaaA\to aa를 이용하여 aAaAaaaaaa로 Derive 가능하다.
    L(G)={b,aaa}L(G)=\{b, aaa\}이다.

Example

Set {0n1nn=0,1,2,}\{0^n1^n \mid n=0,1,2,\dots\}을 생성하는 Phrase-structure grammar

  • Solution
    두 개의 Production을 사용하여 0의 String 뒤에 같은 수의 1이 오는 모든 String을 생성할 수 있으며 이 때 Empty string도 포함된다.
    String의 시작에 0, 끝에 1을 추가하여 점진적으로 길어지는 String을 만들고 두 번째 규칙은 SSλ\lambda임을 나타낸다.
    G=(V,T,S,P)G=(V,T,S,P)이며 V={0,1,S},T={0,1},SV=\{0,1,S\},T=\{0,1\}, S는 Starting symbol, Production PPS0S1,SλS\to 0S1, S\to \lambda가 된다.

Types of Phrase-Structure Grammars

Phrase-structure grammer는 허용되는 Production의 Type에 따라 분류할 수 있다.

  • Type 0 grammer
    Production 생성에 제한이 없다.
  • Type 1 grammer(Context-sensitive grammer)
    w1w2w_1\to w_2 Form의 w1=lArw2=lwrw_1=lAr \land w_2=lwr일 때 AA는 Nonterminal symbol, l,rl, r은 0개 이상의 Terminal 혹은 Nonterminal symbol이다.
    SAS\to A라는 Production을 가질 수 있는데 이 때 SS는 다른 Production의 오른쪽에 나타날 수 없다.
  • Type 2 grammer(Context-free grammer)
    w1w_1이 Nonterminal symbol일 때 w1w2w_1\to w_2 Form의 Production을 가질 수 있다.
  • Type 3 grammer(Regular grammer)
    w1=Aw_1=A이고 w2=aBw2=aw_2=aB \lor w_2=a인 경우 w1w2w_1\to w_2 From의 Production을 가질 수 있다.
    이 때 A,BA, B는 Nonterminal, aa는 Terminal symbol이거나 혹은 w1=Sw2=λw_1=S \land w_2=\lambda일 경우에도 가능하다.

Contect-sensitive grammer로 생성된 Language를 Context-sensitive language, Context-free language grammer로 생성된 Language를 Context-free language, Regular grammer로 생성된 Language를 Regular라고 부를 수 있다.

w1w2w_1\to w_2 From의 Production은 w1w_1의 길이가 w2w_2의 길이보다 작거나 같은 경우 Noncontracting(비축소적)이라고 한다.
모든 Type 1 grammer의 Production은 SλS\to \lambda를 제외한다면 Noncontracting이다.
이는 Context-free language의 Derivation 과정에서 String의 길이가 Nondecreasing이라는 뜻이다.(SλS\to \lambda를 제외하고)
즉, Context-sensitive grammer에 의해 생성된 Language에 Empty string이 포함되기 위해서 SλS\to \lambda Production이 Grammer의 일부여야 한다.
Context-sensitive grammer로 정의되는 다른 방법은 모든 Production이 Noncontracting이거나 Monotonic(단조적)일 때이다.
Noncontracting grammer의 Class는 Context-sensitive grammer의 Class와 동일하지 않으나 이 두 Class는 밀접히 Related이며 Noncontracting grammer는 Empty string λ\lambda를 포함하는 어떤 Language도 생성할 수 없다는 것을 제외하고 동일한 Language set을 정의한다는 것을 알 수 있다.

Example

{0m1nm,n=0,1,2,}\{0^m1^n \mid m,n=0,1,2,\dots\}의 Phrase-structure grammer를 찾고 어떤 Type의 Language인지 기입

  • Solution
    두 Grammer G1,G2G_1, G_2를 이 Set에 생성하여 두 Grammer가 동일한 Language를 생성할 수 있음을 보여 Phrase-structre grammer를 찾는다.
    Grammer G1G_1은 Alphabet V={S,0,1};V=\{S,0,1\}; Terminal T={0,1};T=\{0,1\}; Prouduction S0S,SS1,SλS\to 0S, S\to S1, S\to \lambda가 Set을 생성한다.
    첫 번째 Production을 mm번 사용할 경우 0이 mm개 String의 시작에 추가되고, 두 번째 Production을 nn번 사용할 경우 1이 nn개 String의 끝에 추가된다.
    Grammer G2G_2는 Alphabet V={S,A,0,1};V=\{S,A,0,1\}; Terminal T={0,1};T=\{0,1\}; Production S0S,S1A,S1A,A1,SλS\to 0S, S\to 1A, S\to 1A, A\to 1, S\to \lambda이다.
    A1A\to 1A1A,S1AA\to 1A, S\to 1AAA역시 위 G1G_1의 두 번째 Production과 동일하게 활용될 수 있다.
    마지막으로 이 Language의 경우 Type 3 language, 즉 Regular language이다.
    이유로 G2G_2가 Regular grammer이고 그 G2G_2로 생성되었기 때문이다.

요약하여 Table로 아래와 같이 나타낼 수 있다.

TypeRestrictions on Productions w1 →w2
0No restrictions
1(A\in N,l,r,w\in (N\cup T)^\ast \land w\not=\lambda) \to(w_1=lAr \land w_2=lwr); or w_1=S and w_2=\lambda as long as S is not on the right-hand side of another production
2w_1=A, where A is nonterminal symbol
3w_1=A \land (w_2=aB \lor w_2=a), where A\in N, B\in N, a\in T or w_1=S \land w_2=\lambda

Derivation Trees

Context-free grammer로 생성된 Language의 Derivation은 Ordered rooted tree를 사용하여 표현할 수 있으며 이를 Derivation(Parse) tree라고 한다.
Root는 Start symbol SS를, Tree의 Internal vertex들은 Derivation step에서 발생하는 Nonterminal symbol을 나타낸다.
Tree의 Leaf의 경우 Terminal symbol을 나타낸다.
만약 AwA\to w라는 Production이 Derivation step에서 발생할 경우 AA를 나타내는 Vertex들에는 ww라는 Symbol을 왼쪽에서 오른쪽 순서대로 나타내는 Children vertex들을 가진다.

Example

Hungry rabbit eats quickly에 대한 Derivation tree

  • Solution\

Example

Word cbabcbab가 Grammer G=(V,T,S,P),V={a,b,c,A,B,C,S},T={a,b,c},SG=(V,T,S,P), V=\{a,b,c,A,B,C,S\},T=\{a,b,c\}, S는 Starting symbol, Production PPSAB,A=Ca,BBa,BCb,Bb,Ccb,CbS\to AB, A=Ca,B\to Ba, B\to Cb, B\to b, C\to cb, C\to b일 때 Word가 맞는 지 확인

  • Solution
    쉽게 풀기 위해 하위에서 상위로 Parsing 할 수 있는데 이를 Bottom-up parsing이라고 한다.
    cbabCabAbABScbab\gets Cab\gets Ab \gets AB \gets S로 풀 수 있다.
    정석으로 상위에서 하위로 Parsing하는 것은 Top-down parsing이라고 한다.

Backus-Naur Form

Type 2 grammer를 지정하는 Notation 중 Backus-Naur form(BNF)가 존재한다.
모든 Production을 나열하는 대신 왼 쪽에는 단일 Nonterminal symbol을 놓고 같은 Nonterminal symbol이 있는 모든 것을 하나의 Statement로 결합한다.
Production에서 \to 대신에 ::=::=를 사용한다.
모든 Nonterminal symbol을 < ><\ >로 묶어 Production의 오른쪽 부분을 같은 Statement에서 나열하고 |를 사용하여 구분한다.

Example

Production AAa,Aa,AABA\to Aa, A\to a, A\to AB을 Backus-Naur form으로 표현

  • Solution
    <A>::=<A>aa<A><B><A>::=<A>a|a|<A><B>

ALGOL 60에서 Indentifier는 Alphanumeric character로 구성되며 반드시 Letter로 시작해야 한다.
이러한 Rule을 Backus-Naur form으로 아래와 같이 나타낼 수 있다.

<identifier>::=<letter><identifier><letter><identifier><digit><letter>::=abyzthe ellipsis indicates that all 26 letters are included<digit>::=0123456789<identifier>::=<letter>|<identifier><letter>|<identifier><digit> \\ <letter>::=a|b|\cdots|y|z \text{the ellipsis indicates that all 26 letters are included} \\ <digit> ::= 0|1|2|3|4|5|6|7|8|9

12.2 Finite-State Machines with Output

이미 Output이 있는 Finite-state machine의 Formal definiton은 아래와 같다.
M=(S,I,O,f,g,s0)M=(S,I,O,f,g,s_0)을 Finite-state machine이라고 할 때 Finite state set SS, finite input alphabet II, finite output alphabet OO,SS transition function ff(각 State와 Input pair에 대한 새로운 State를 할당하는 Function), Output function gg(각 State와 Input pair에 대한 Output을 출력하는 Function), Initial state s0s_0로 구성된다.

M=(S,I,O,f,g,s0)M=(S,I,O,f,g,s_0)이 Finite-state machine일 때 State table을 사용하여 Transitional function, Output function f,gf,g의 모든 State와 Input pair에 대해 나타낼 수 있다.

Example

아래는 S={s0,s1,s2,s3},I={0,1},O={0,1}S=\{s_0,s_1,s_2,s_3\}, I=\{0,1\}, O=\{0,1\}인 Finite-state machine에 대한 State table이다.

State table 대신 나타낼 수 있는 방법으로는 Finite-state machine의 State diagram이며 아래 그림과 같다.\

Input string은 Transition function에 의해 결정된 일련의 State를 통해 Starting state를 이동시킨다.
Input string을 왼쪽에서 오른쪽으로 Symbol 별로 읽을 때, 각 Input symbol은 Machine을 한 State에서 다른 State로 이동시킨다.
각 Transition이 Output을 생성하기에 Input string은 Output string도 생성한다.

Input string이 x=x1x2xkx=x_1x_2\dots x_k라고 할 때 이 Input을 읽는 과정에서 Machine은 State s0s_0에서 s1s_1로 이동하며 s1=f(s0,x1),s2=f(s1,x2),,sk=f(sk1,xk)s_1=f(s_0,x_1), s_2=f(s_1,x_2),\cdots, s_k=f(s_{k-1},x_k)가 되게 된다.
이 Transition의 순서는 Output string y1y2yky_1y_2\dots y_k를 생성하며 y1=g(s0,x1),,yk=g(sk1,xk)y_1=g(s_0,x_1),\cdots, y_k=g(s_{k-1},x_k)가 되게 된다.
즉 Function gg의 정의를 Input string에 확장할 수 있으며 g(x)=yg(x)=y로 표현할 수 있다.

Example

Input string이 101011일 때 아래 그림에 의해 생성된 Finite-state machine의 Output string\

  • Solution\

M=(S,I,O,f,g,s0)M=(S,I,O,f,g,s_0)를 Finite-state machine이라고 하고 LIL\subseteq I^\ast일 때 MMLL을 Recognize(Accepts)한다고 말할 수 있는 것은 Input string xxLL에 속할 때, xx를 Input으로 주었을 때 MM이 생성하는 마지막 Output bit가 11이 되는 경우 뿐이다.

12.3. Finite-State Machines with No Output

Set of Strings

VV가 Vocabulary일 때 A,BA, BVV^\ast의 Subset이라고 가정할 때 ABAB(AABB의 Concatenation)은 AA의 String xxBB의 String yy로 이루어진 모든 String xyxy의 Set이다.

Example

A={0,11},B={1,10,110}A=\{0,11\}, B=\{1,10,110\}일 때 AB,BAAB, BA

  • Solution
    AB={01,010,0110,111,1110,11110},BA={10,111,100,1011,1100,11011}AB=\{01,010,0110,111,1110,11110\}, BA=\{10,111,100,1011,1100,11011\}

Example

A={1,00}A=\{1,00\}일 때 AnA^n(n=0,1,2,3n=0,1,2,3)

  • Solution
    A0={λ},A1=A0A={1,00}A^0=\{\lambda\}, A^1=A^0A=\{1,00\}이다.
    반복하여 A2={11,100,001,0000},A3={111,1100,1001,10000,0011,00100,00001,000000}A^2=\{11,100,001,0000\}, A^3=\{111,1100,1001,10000,0011,00100,00001,000000\}
    이 된다.

AAVV^\ast의 Subset일 때 AA의 Kleene closure는 AA^\ast로 표시하고 AA에서 임의의 개수의 String을 연결한 Set(A=k=0AkA^\ast=\bigcup^\infin _{k=0}A^k)이다.

Example

Set A={0},B={0,1},C={11}A=\{0\}, B=\{0,1\}, C=\{11\}일 때 각 Set의 Kleene closure

  • Solution
    AA의 Kleene closure는 String 0을 임의의 Finite 수 만큼 자신과 연결한 것이다.
    A={0nn=0,1,2,}A^\ast=\{0^n\mid n=0,1,2,\dots\}이다.
    V={0,1}V=\{0,1\}일 때의 V=BV^\ast = B^\ast가 된다.
    C={12nn=0,1,2,}C^\ast=\{1^{2n}|n=0,1,2,\dots\}이다.

Finite-state Automata

Output이 없는 Finite-state machine을 Finite-state automaton(복수: Automata)라고 하며 Output을 가지지 않으나 Final state set을 가진다.

Finite-state automaton M=(S,I,f,s0,F)M=(S,I,f,s_0,F)는 Finite state set SS, Finite input alphabet II, Transition function ff(f:S×ISf:S\times I\to S), Initial(Start) state s0s_0, SS의Final(Accepting) state의 Subset FF를 가진다.

Finite-state automaton은 State table이나 State diagram으로 나타낼 수 있다.
Final state는 State diagram에서 이중 원을 사용하여 표시한다.

Example

Finite-state automaton M=(S,I,f,s0,F)M=(S,I,f,s_0,F)S={s0,s1,s2,s3},I={0,1},F={s0,s3}S=\{s_0,s_1,s_2,s_3\},I=\{0,1\},F=\{s_0,s3\}이며 ff가 아래의 표와 같을 때 State diagram\

  • Solution\

Finite-state machine M=(S,I,f,s0,F)M=(S,I,f,s_0,F)의 Transition function ff는 모든 State pair와 String에 대해 정의되도록 확장 가능하다.
즉, fff:S×ISf:S\times I^\ast\to S로 확장 가능하다.
String x=x1x2xkx=x_1x_2\dots x_kII^\ast에 존재할 때 f(s1,x)f(s_1,x)는 State s1s_1에서 시작하여 xx의 각 Symbol을 왼쪽에서 오른쪽으로 Input으로 사용하여 얻은 State이다.
s2=f(s1,x1),s3=f(s2,x2)s_2=f(s_1,x_1), s_3=f(s_2,x_2)이고 최종적으로 f(s1,x)=f(sk,xk)f(s_1,x)=f(s_k,x_k)가 된다.
이 Extended transition function ff를 결정론적 Finite-state machine M=(S,I,f,s0,F)M=(S,I,f,s_0,F)에 대해 Recursive하게 정의할 수 있다.

  1. 모든 State sSs\in S에 대해 f(s,λ)=sf(s,\lambda)=s
  2. 모든 sS,xI,aIs\in S, x\in I^\ast, a\in I에 대해 f(s,xa)=f(f(s,x),a)f(s,xa)=f(f(s,x),a)

Structural induction과 이 Recursive Definition을 사용하여 Extended transition function의 Property를 증명할 수 있다.

Language Recognition by Finite-State Machines

String xx가 Machine M=(S,I,f,s0,F)M=(S,I,f,s_0,F)에 의해 Reconized(Accepted)일 때 Initial state s0s_0에서 Final state f(s0,x)f(s_0, x)FF에 존재하는 State이다.
Machine MM에 의해 Language recognized(Language accepted) 되는 것을 Notation L(M)L(M)으로 표현하며 MM에 의해 Recognized인 모든 String의 Set이다.
두 Finite-state automaton이 Equivalent라고 할 때는 동일한 Language가 Reconize일 때를 의미한다.

Example


위 그림의 Automaton M1,M2,M3M_1, M_2, M_3의 Language recognized

  • Solution
    M1M_1의 Final state는 s0s_0뿐이다.
    s0s_0에서 s0s_0로의 String은 0개 이상의연속된 1로 구성된 String이다.
    즉, L(M1)={1nn=0,1,2,}L(M_1)=\{1^n\mid n=0,1,2,\dots\}이다.
    M2M_2의 Final state는 s2s_2뿐이므로 s0s_0에서 s2s_2로의 String은 1, 01 뿐이다.
    즉, L(M2)={1,01}L(M_2)=\{1, 01\}이다.
    M3M_3의 Final state는 s0,s3s_0, s_3이다.
    s0s_0에서 s0s_0로의 String은 0개 이상의 연속된 0로 구성된 String, s0s_0에서 s3s_3로의 String은 0개 이상의 0으로 구성된 String 뒤 10 이후임의의 String이 오는 것이다.
    L(M3)={0n,0n10xn=0,1,2,,and x is any string}L(M_3)=\{0^n, 0^n10x\mid n=0,1,2,\dots , \text{and }x \text{ is any string}\}이다.

Example

아래 특정 Finite-state automaton 구축
(a)(a). 두 개의 0으로 시작하는 Bit string set
(b)(b). 두 개의 연속된 0을 포함하는 Bit string set
(c)(c). 두 개의 연속된 0을 포함하지 않는 Bit string set
(d)(d). 두 개 이상의 연속된 0으로 끝나는 Bit string set
(e)(e). 최소 두 개의 0을 포함하는 Bit string set

  • Solution
    (a)(a)의 경우 아래 그림과 같다.

    두 개의 0으로 시작하지 않는 이상 Final state가 될 수 없게 Finite-state automaton을 구축한다.
    (b)(b)의 경우 아래의 그림과 같다.

    앞 전 두 개의 연속된 0이 나오지 않는 이상 Final state가 될 수 없게 Finite-state automaton을 구축한다.
    (c)(c)의 경우 아래의 그림과 같다.

    두 개의 연속된 0이 나오는 경우 Final state가 될 수 없게 Finite-state automaton을 구축한다.
    (d)(d)의 경우 아래의 그림과 같다.

    두 개 이상의 연속된 0이 나오지 않는 경우 Final state가 될 수 없게 Finite-state automaton을 구축한다.
    (e)(e)의 경우 아래의 그림과 같다.

    최소 두 개의 0을 포함하여야 Final state가 될 수 있게 Finite-state automaton을 구축한다.

Example

아래 두 Finite-state automaton이 Equivalent인 지 확인\

  • Solution
    String xxM0M_0에 의해 Recognized되기 위해 s0s_0에서 s1,s4s_1, s_4로의 String이 되어야 한다.
    s0s_0에서 s1s_1은 1만이 xx가 될 수 있다.
    s0s_0에서 s4s_4는 1개 이상의 0과 마지막이 단일 1로 이루어진 String이 되어야 한다.
    위 사항을 M1M_1에 의해 Recognized되는 지 확인해보아야 한다.
    String xxM1M_1에 의해 Recognized되기 위해 s0s_0에서 s1s_1으로의 String이 되어야하는데 0개 이상의 0과 단 하나의 1로 구성된 String이 xx가 될 수 있고, 위 조건과 동일하기에 두 Finite-state automaton은 Equivalent이다.

바로 위 예시처럼 Equivalent finite-state automaton들의(M1M_1M0M_0)에서 가능한 최소 State를 가진 Finite-state automaton으로 구성하는 Procedure를 Machine minimization이라고 한다.

Nondeterministic Finite-State Automata

앞전 다뤘던 Finite-state automaton들은 Deterministic이다.
각 State와 Input value pair에 대한 Transition function에 의해 결정되는 고유한 다음 State가 존재하였기 때문이다.

Nondeterministic finite-state automaton M=(S,I,f,s0,F)M=(S,I,f,s_0, F)는 State set SS, Input alphabet II, Transition function ff(f:S×IP(S)f:S\times I\to P(S)), Starting state s0s_0, SS의 Subset FF(Final state로 구성)으로 구성되어 있다.

Example

Nondeterministic finite-state automaton의 State table이 아래와 같을 때 State diagram(Final state: s2,s3s_2, s_3)\

  • Solution\

Example

Nondeterministic finite-state automaon의 State diagram이 아래와 같을 때 State table와 Language recognized\

  • Solution

    위 Table은 해당하는 State table이다.
    s0s_0에서 s0,s4s_0, s_4로의 String xxs0s_0에서 s0s_0으로, 즉 0개 이상의 0으로 이루어진 String이거나, s0s_0에서 s4s_4로 즉 11(s0s1s4s_0\to s_1\to s_4), 01(s0s2s4s_0\to s_2\to s_4)로 끝나는 String이다.
    정리하여 L(M)={0n,0n01,0n11n0}L(M)=\{0^n, 0^n01, 0^n11 \mid n\geq 0\}이다.
정보

Theorem

Language LL이 Nondeterministic finite-state automaton M0M_0에 의해 Recognized일 때 LL은 Deterministic finite-state automaton M1M_1에 의해서도 Recognized이다.

Example


위 Nondeterministic finite-state automaton과 똑같은 Language를 Recognize하는 Deterministic finite-state

  • Solution

    위 Nondeterministic automaton과 동일한 Deterministic finite-state automaton이다.
    이 Deterministic automaton의 State는 Nondeterministic automaton의 모든 State set의 Subset이다.
    Input symbol에 대한 Subset의 다음 State는 이 Subset의 모든 Element의 Nondeterministic automaton의 다음 State를 포함하는 Subset이다.
    {s0}\{s_0\}은 0의 Input으로 s0,s2s_0, s_2로 Transition되기에 {s0,s2}\{s_0,s_2\}로, 또 {s0}\{s_0\}가 1의 Input으로 {s1}\{s_1\}, {s2}\{s_2\}가 1의 Input으로 s4s_4로 가기에 {s0,s2}\{s_0,s_2\}{s1,s4}\{s_1, s_4\}로 이동하게 된다.
    동일한 방법으로 {s1,s4}\{s_1,s_4\}는 0의 Input으로 {s3}\{s_3\}으로 이동하고, 1의 Input으로 {s3,s4}\{s_3,s_4\}로 이동한다.
    {s3,s4}\{s_3, s_4\}에서 0이나 1의 Input으로 s3s_3으로 밖에 이동할 수 없기에 위와 같은 구조가 된다.
    위 Deterministic finite-state automaton의 Initial state는 {s0}\{s_0\}이며 Final state set은 s0,s4s_0, s_4를 포함한 모든 Set이 된다.

12.4. Language Recognition

Set II에 대한 Regular expression은 아래와 같이 Recursive하게 정의된다.
Symbol \empty는 Regular expression이다.(Empty set)
Symbol λ\lambda는 Regular expression이다.(Empty string)
Symbol xxxIx\in I일 때 Regular expression이다.
Symbol (AB),(AB),A(AB), (A\cup B), A^\astA,BA, B가 Regular expression일 때 Regular expression이다.((AB)(AB)= A,BA, B의 Concatenation, AA^\ast= AA의 Kleene closure)

Regular expression으로 표현하는 Set을 Regular set이라고 한다.

Example

Regular expression 10,(10),001,0(01),(01)10^\ast, (10)^\ast, 0\cup 01, 0(0\cup 1)^\ast, (0^\ast 1)^\ast의 Regular set의 String

  • Solution
    1010^\ast는 1 뒤에 0이 0개 이상 존재하는 String, (10)(10)^\ast는 10이 0개 이상 존재하는 String, 0010\cup 01은 0이나 01, 0(01)0(0\cup 1)^\ast는 0으로 시작하는 모든 String, (01)(0^\ast1)^\astsms 0으로 끝나지 않는 String이다.

Kleene's Theorem

정보

Theorem

Kleene's Theorem

모든 Regular set이 Finite-state automaton들에 의해 Recognized된다.

  • Proof
    Regular set은 Regular expression에 의해 정의되며, 이는 재귀적이다.
    모든 Regular set이 Finite-state automaton에 의해 Recognize됨을 증명하기 위해 아래와 같은 작업을 수행할 수 있다.
    1. \empty이 Finite-state automaton에 의해 Recognized
    2. {λ}\{\lambda\}가 Finite-state automaton에 의해 Recognized
    3. {a}\{a\}II의 Symbol일 때 Finite-state automaton에 의해 Recognized
    4. ABABA,BA,B 모두 Recognized일 때 Finite-state automaton에 의해 Recognized
    5. ABA\cup BA,BA,B 모두 Recognized일 때 Finite-state automaton에 의해 Recognized
    6. AA^\astAA가 Recognized일 때 Finite-state automaton에 의해 Recognized
    \empty는 Nondeterministic finite-state automaton에 의해 Recognized되므로 증명할 수 있다.

    {λ}\{\lambda\}의 경우 Initial state s0s_0을 생성한 이후 Transition 시키지 않으며 증명 할 수 있다.

    {a}\{a\}의 경우 Initial state s0s_0과 Final state s1s_1을 생성한 후 Input이 aa 일 때 Transition시켜 증명할 수 있다.

    AB,ABAB, A\cup B의 경우 MA=(SA,I,fA,sA,FA),MB=(SB,I,fB,sB,FB)M_{A}=(S_A,I,f_A,s_A,F_A), M_B=(S_B,I,f_B,s_B,F_B)가 Recognized된다고 가정할 때 MAB=(SAB,I,fAB,sAB,FAB)M_{AB}=(S_{AB},I,f_{AB},s_{AB},F_{AB})를 구성하여 AA의 String은 MAM_A의 Initial state sAs_A에서 BB의 String인 sBs_B로 Transition될 수 있어야하며 BB의 String은 Combined machine의 Final state로 Transition되어야 한다. 결과적으로 아래와 같이 생성하여 증명할 수 있다.

    같은방식으로 MAB=(SAB,I,fAB,sAB,FAB)M_{A\cup B}=(S_{A\cup B}, I,f_{A\cup B},s_{A\cup B}, F_{A\cup B})를 구성하여 MA,MBM_A,M_B를 병렬로 연결하여 아래와 같이 생성하여 증명할 수 있다.

    AA^\ast의 경우 MA=(SA,I,fA,sA,FA)M_{A^\ast}=(S_{A^\ast},I,f_{A^\ast}, s_{A^\ast},F_{A^\ast})를 구성하여 sAs_{A^\ast}는 모든 SAS_A를 포함하고, FAF_{A^\ast}는 모든 FAF_AsAs_{A^\ast}를 포함한다(λ\lambda가 Recognized이기에).
    정리하여 그림으로 아래와 같이 생성하여 증명할 수 있다.\

Example

Nondeterministic finite-state automaton을 구성하여 Regular set 1011^\ast \cup 01을 Recognize

  • Solution
    먼저 11^\ast를 Recognize하는 Machine을 구축한다.
    MAM_{A^\ast}로 나타낼 수 있다.
    01에 대한 Machine은 11^\astAA^\ast로 나타내었기에 MABM_{AB}로 나타낼 수 있다.\

Regular Sets and Regular Grammers

정보

Theorem

Regular set은 Regular grammer로 생성된 set만이 가능하다.

  • Proof
    G=(V,T,S,P)G=(V,T,S,P)가 Set L(G)L(G)를 생성하는 Regular grammer일 때 L(G)L(G)가 Regular임을 보이기 위해 L(G)L(G)를 Recognize하는 Nondeterministic finite-state machine M=(S,I,f,s0,F)M=(S,I,f,s_0,F)를 구성한다.
    State set SS에는 GG의 Nonterminal symbol AA마다 하나의 State sA,sFs_A, s_F가 포함된다.
    Start state s0s_0는 Start symbol SS로부터 형성된 State이다.
    MM의 Transition은 AaA\to a가 Production이라면 Input aa에 대해 sAs_A에서 sFs_F로의 Transition이 포함되며, AaBA\to aB가 Production이라면 Input aa에 대해 sAs_A에서 sBs_B로의 Transition이 포함된다.
    Final state set sFs_F가 포함되고 GG에서 SAS\to A가 Production인 경우 s0s_0도 포함된다.
    MM이 Recognize하는 Language가 Grammer GG에 의해 생성되는 Language와 같다(L(M)=L(G)L(M)=L(G))
    따라서 Regular grammer로 생성한 Set은 Regular set이다.
    Regular set을 생성한 Grammer는 Regular grammer임을 보이기 위해 MM이 이 Set을 Recognize하는 Finite-state machine이며 MM의 Inital state s0s_0이 Transition의 다음 State가 아닌 경우를 가정하여 Grammer G=(V,T,S,P)G=(V,T,S,P)GG의 Symbol set VV, Terminal symbol set TT, State set SS, GG의 Production set PP일 때 Start symbol SS는 Start state s0s_0에서 형성한 Symbol이다.
    GG의 Production set PPMM의 Transition으로부터 형성된다.
    State ss가 Input aa에 따라 State tt로 이동한다면 Production AsaAtA_s\to aA_tPP에 포함되며 AsA_s는 State ss로부터 형성된 Nonterminal symbol이다.
    Production SλS\to \lambda는 오직 λL(M)\lambda \in L(M)일 때만 PP에 포함된다.
    GG의 Production이 MM의 Transition에 해당하고 Terminal로 이어지는 Production이 Final state로의 Transition에 해당하기에 L(G)=L(M)L(G)=L(M)이다.

Example

아래 그림의 Finite-state automaton이 Recognize하는 Regular set 생성\

  • Solution
    Grammer G=(V,T,S,P)G=(V,T,S,P)는 이 Automaton이 Recognize하는 Set을 생성하며 V={S,A,B,0,1}V=\{S,A,B,0,1\}, S,A,BS,A,Bs0,s1,s2s_0,s_1,s_2, T={0,1}T=\{0,1\}, SS는 Start symbol, Production PPS0A,S1B,S1,Sλ,A0A,A1B,A1,B0A,B1B,B1S\to 0A, S\to 1B, S\to 1, S\to \lambda, A\to 0A, A\to 1B, A\to 1, B\to 0A, B\to 1B, B\to 1이다.

A Set Not Reognized by a Finite-State Automaton

특정 Set이 Regular가 아님을 보여줄 수 있다.

Example

{0n1nn=0,1,2,}\{0^n1^n\mid n=0,1,2,\dots\}가 Regular가 아님을 증명

  • Solution
    위 Set을 Regular라고 가정하고 이를 Recognize하는 Nondeterministic finite-state automaton M=(S,I,f,s0,F)M=(S,I,f,s_0,F)가 존재하여야 한다.
    이 Machine의 State 수를 NN이라고 하면(N=SN=|S|) MM은 0의 개수와 1의 개수가 같은 모든 String을 Recognized해야 하므로 MM0n1n0^n1^n을 Recognized한다.
    State sequnce s0,s1,,s2Ns_0,s_1,\dots,s_{2N}s0s_0에서 시작하여 0n1n0^n1^n을 Input으로 사용하여 얻어진다.
    s1=f(s0,0),s2=f(s1,0),,sN=f(sN1,0),sN+1=f(sN,1),,s2N=f(s2N1,1)s_1=f(s_0,0),s_2=f(s_1,0),\dots, s_N=f(s_{N-1},0),s_{N+1}=f(s_N, 1),\dots, s_{2N}=f(s_{2N-1},1)가 된다(s2Ns_{2N}이 Final state).
    State가 NN개 뿐이므로 Pigeonhole principle에 따라 처음 N+1N+1개의 State 중 적어도 두 개는 동일해야 한다.
    즉, 0ijN0\leq i\leq j\leq N을 만족하는 si,sjs_i,s_jt=jit=j-i일 때 f(si,0t)=sjf(s_i,0^t)=s_j가 만족한다는 의미이다.
    Input 0을 tt번 사용하여 sjs_j에서 sjs_j로 돌아오는 Loop가 존재한다는 뜻이 된다.
    Input string 0N0t1N=0N+t1N0^N0^t1^N=0^{N+t}1^N은 성립할 수 없으므로 MM에 의해 Recognize될 수 없다.
    위 Contradiction으로 {0n1nn=0,1,2,}\{0^n1^n\mid n=0,1,2,\dots\}는 Regular가 아님을 알 수 있다.\

More Powerful Types of Machines

Finite-state automaton은 Memory 제한으로 인해 많은 Computation을 수행할 수 없다.
Finite-state automaton의 한계때문에 더 편리한 Computation model을 사용하는데 그 중 하나는 Pushdown automaton이다.

Pushdown automaton은 모든 Finite-state automaton의 기능을 포함하고 무제한 Memory를 제공하는 Stack을 포함한다.
Stack의 Top에 Symbol을 놓거나 Symbol을 제거할 수 있다.
Pushdown automaton은 Input으로 사용될 때 Empty stack을 생성하는 모든 String으로 구성된 경우 Set을 Recognize하거나 Set이 Input으로 사용될 때 Final state로 이어지는 모든 String으로 구성된 경우 Set을 Recognized한다.
Pushdown automaton은 Context-free grammer에 의해 생성된 Language인 경우에만 Set을 Recognize한다는 것을 보여줄 수 있다.

Context-free grammer에 의해 생성된 Language로 표현할 수 없는 Set도 존재하는데 그 중 하나가 {0n1n2nn=0,1,2}\{0^n1^n2^n\mid n=0,1,2\}이다.
앞 Set은 Pushdown automaton에 의해 Recognized될 수 없는 이유로는 0의 수 만큼 1의 수를 일치하는 지 살릴 때 Stack이 비워지게 되어 2에 해당하는 개수를 살릴 수 없다.

Pushdown automaton보다 더 강력한 Linear bounded automaton이라는 Machine이 존재하는데 이는 앞 Set을 인식할 수 있다.
Linear bounded automaton은 Context-sensitive language를 Recognized할 수 있다.
하지만 Linear bounded automaton의 경우 Phrase-structure grammer에 의해 생성된 모든 Language를 Recognized할 수 없다.

특수 Type machine의 한계를 피하기 위해 Turing machine이라는 것이 존재한다.
Turing machine은 Finite-state machine의 모든 기능과 양쪽 방향으로 무한한 Tape를 포함하고 그 Tape를 읽고 쓸 수 있으며 Tape의 앞, 뒤로 이동 가능하다.

12.5. Turing Machines

Definition of Turing Machines

Turing machine T=(S,I,f,s0)T=(S,I,f,s_0)는 Finite-state set SS, Blank symbole BB를 포함하는 Alphabet II, S×IS\times I에서 S×I×{R,L}S\times I\times \{R,L\}의 Partial function ff, Starting state s0s_0로 구성된다.
Partial function은 Domain에 있는 Element에 대해서만 정의한다(일부 (state, symbol) pair에 대한 Partial function ff가 정의되지 않을 수 있지만 정의된 Pari에 대해서는 고유한 (state, symbol, derection) 존재).
Turing machine 정의의 Partial function에 해당하는 five-tuples coressponding을 Transition rule이라고 한다.

위 그림은 Turing machine에 대해서 나타내고 있다.
Turing machine의 Tap는 주어진 순간에 Finite인 Nonblank symbol을 가지고 있다.
Turing machine의 각 Step에서의 동작은 현재 State와 Tape symbol에 대한 Partial function ff의 Value에 따라 달라진다.
각 Step에서 현재 Tape symbol xx를 읽고 만약 Control unit이 State ss이고 Partial function ff(s,x)(s,x) Pair에서 정의되어 있으며 f(s,x)=(s,x,d)f(s, x)=(s',x',d)인 경우 Control unit은 아래의 작업을 수행한다.

  1. State ss'로 들어간다.
  2. 현재 Cell에 Sumbol xx'를 쓰고 xx를 지운다.
  3. Direction d=Rd=R일 경우 오른쪽, d=Ld=L일 경우 왼쪽 Cell로 이동한다.

위 Step을 (s,x,s,x,d)(s,x,s',x',d) Form의 Five-tuple로 표기한다.
만약 Pari (s,x)(s,x)에 대해 Partial function ff가 정의되어 있지 않다면 Turing machine TT는 중지한다.

Turing machine 작동 시작 시 Inital state s0s_0에 존재하며 Tape의 가장 왼쪽 비어있지 않은 Symbol 위에 위치한다.
만약 Tape가 모두 비어 있다면, Control head는 임의의 Cell에 위치할 수 있다.
Control head를 가장 왼쪽에 비어있지 않은 Tape symbol 위에 배치하는 것을 Machine의 Inital position이라고 한다.

Example

Turing machine TT가 일곱 개의 Five-tuple로 정의될 때 이 Machine이 아래 그림에 나타난 Tape에서 실행될 때의 Final tape

(s0,0,s0,0,R),(s0,1,s1,1,R),(s0,B,s3,B,R),(s1,0,s0,0,R),(s1,1,s2,0,L),(s1,B,s3,B,R),(s2,1,s3,0,R)(s_0,0,s_0,0,R),(s_0,1,s_1,1,R),(s_0,B,s_3,B,R),(s_1,0,s_0,0,R),(s_1,1,s_2,0,L),(s_1,B,s_3,B,R),\\(s_2,1,s_3,0,R)

  • Solution
    TT는 State s0s_0에서 시작하며 Tape의 가장 왼쪽 비어있지 않은 Symbol 위에 위치한다.
    첫 Step에서 (s0,0,s0,0,R)(s_0,0,s_0,0,R)을 사용하여 가장 왼쪽 비어있지 않은 Cell에서 0을 읽고, State s0s_0를 유지하며 이 Cell에 0을 쓰고 Cell 오른쪽으로 이동한다.
    위 행동을 반복하여 동작시킨 그림은 아래와 같다.

    마지막 Step에서 State (s3,0)(s_3, 0)으로 시작하는 Five tuple이 없기에 중지한다.

Using Turing Machines to Recognize Sets

Set VV를 Alphabet II의 Subset이라고 할 때 Turing machine T=(S,I,f,s0)T=(S,I,f,s_0)는 String xxVV^\ast에 속할 때 TTxx가 Tape에 쓰여진 Initial position에서 시작하여 Final state에서 멈출 때만 xx를 Recognize한다고 한다.
TTVV^\ast의 Subset AA를 Recognize한다고 할 때 xxTT에 의해 Recognized되기에 xxAA에 속해야 한다.

Example

두 번째 Bit로 1을 가지는 Bit string set을 인식하는 Turing machine

  • Solution
    Regular set은 (01)1(01)(0\cup 1)1(0\cup 1)^\ast이다.
    Turing machine이 왼쪽에서 가장 왼쪽의 비어 있지 않은 Tape cell에서 시작하여 오른쪽으로 이동하며 두 번째 Symbol이 1인 지 확인하는 것이기에 두 번째 Symbol이 1이면 Machine은 Final state로 이동해야 하며 그렇지 않다면 Machine은 중지하지 않거나 Nonfinal state에서 중지해야 한다.
    Machine을 구성하기 위해 (s0,0,s1,0,R),(s0,1,s1,1,R)(s_0,0,s_1,0,R), (s_0,1,s_1,1,R)을 포함하여 첫 번째 Symbol을 읽고 Turing machine을 State s1s_1으로 이동하고 0이면 State s2s_2, 1이면 State s3s_3로 이동하도록 (s1,0,s2,0,R),(s1,1,s3,1,R)(s_1,0,s_2,0,R), (s_1,1,s_3,1,R)을 포함한다.
    두 번째 Bit가 0인 String은 Recognize하지 않기에 s2s_2는 Nonfinal state, s3s_3는 Final state여야 한다.
    (s2,0,s2,0,R)(s_2,0,s_2,0,R)을 포함하여야 한다.
    Blank나 1 bit string을 Recognize 않기 위해 (s0,B,s2,0,R),(s1,B,s2,0,R)(s_0,B,s_2,0,R), (s_1, B, s_2, 0, R)을 포함한다.
    나열 된 일곱 개의 5-tuple로 구성된 Turing machine TT는 Bit string이 두 개 이상의 Bit를 가지고 있고 Input string의 두 번째 Bit가 1일 때만 Final state s3s_3로 종료된다.
    Bit string이 두 개 미만이거나 두 번째 Bit가 1이 아니면 Machine은 Non final state s2s_2에서 종료된다.

Example

{0n1nn1}\{0^n1^n\mid n\geq 1\} Set을 Recognize하는 Turing machine

  • Solution
    Machine을 구축하기 위해 Marker로 사용할 Sub tape symbol MM을 사용하여 V={0,1},I={0,1,M}V=\{0,1\}, I=\{0,1,M\}로 두고 VV^\ast의 String의 Subset을 Recognize 할 것이다.
    Turing machine은 가장 왼쪽에 있는 0을 MM으로 바꾸고 String의 가장 오른쪽에 있는 1을 MM으로 바꾸며 앞뒤로 이동하며, String이 0의 Block 뒤에 동일한 수의 1의 Block으로 구성되어 있을 때만 Final state s6s_6를 가지고 종료한다.
    Marker MM을 사용하여 이미 검사한 가장 왼쪽과 오른쪽 Symbol을 추적한다.
    (s0,0,s1,M,R),(s0,0,s1,0,R),(s1,1,s1,1,R),(s1,M,s2,M,L),(s1,B,s2,B,L),(s2,1,s3,M,L),(s3,1,s3,1,L),(s3,0,s4,0,L),(s3,M,s5,M,R),(s4,0,s4,0,L),(s4,M,s0,M,R),(s5,M,s6,M,R)(s_0,0,s_1,M,R),(s_0,0,s_1,0,R),(s_1,1,s_1,1,R),(s_1,M,s_2,M,L),(s_1,B,s_2,B,L),\\(s_2,1,s_3,M,L),(s_3,1,s_3,1,L),(s_3,0,s_4,0,L),(s_3,M,s_5,M,R),(s_4,0,s_4,0,L),\\(s_4,M,s_0,M,R),(s_5,M,s_6,M,R)이다.
    예시로 String 000111000111은 Machine이 작동하는 동안 M00111,M0011M,MM011M,MM01MM,MMM1MM,MMMMMMM00111, M0011M, MM011M, MM01MM, MMM1MM, MMMMMM 순서로 변경된다.

Computing Functions with Turing Machines

Turing machine은 간단히 요약하여 Partial function의 값을 찾는 것이다.
Turing machine TT가 Input으로 String xx를 받았을 때 Tape에 String yy를 남기고 정지한다고 할 때 T(x)=yT(x)=y로도 표현 가능하다.
TT의 Domain은 TT가 정지하는 String set이며 TTxx를 Input으로 받았을 때 정지하지 않을 경우 T(x)T(x)는 정의되지 않는다.

Non-negative integer의 kk-tuple에서 Non-negative integer set으로의 Function으로서 Turing machine을 고려하기 위해 Tape에 Integer의 kk-tuple을 표현할 방법으로 Unary representation을 사용한다.
Non-negative integer nnn+1n+1개의 1로 이루어진 String으로 표현한다(0, 5 = 1, 111111).
kk-tuple(n1,n2,,nkn_1,n_2,\dots,n_k)를 표현하기 위해 각 수+1에 해당하는 1과 구분자 \ast로 나타낸다.
(4-tuple (2, 0, 1, 3) = 1111111111111\ast 1\ast 11\ast 1111)

Example

Non-negative integer를 더하는 Turing machine 구성

  • Solution
    Function f(n1,n2)=n1+n2f(n_1,n_2)=n_1+n_2를 계산하는 Turing machine TT를 만들기 위해 Pair (n1,n2)(n_1,n_2)n1+1n_1+1개의 1과 \ast, n2+1n_2+1개의 1로 이루어진 String으로 표현된다.
    Machine TT는 Input으로 앞 String을 받아 n1+n2+1n_1+n_2+1개의 1로 이루어진 Tape를 출력한다.
    Machine TT는 Input string의 가장 왼쪽 1에서 시작하여 1을 지우는 Step을 수행하며 n1n_1이 0일 경우 \ast 앞에 더 이상 1이 없으므로 정지하고, \ast를 가장 왼쪽에 남아있는 1로 교체한 후 정지한다.
    (s0,1,s1,B,R),(s1,,s3,B,R),(s1,1,s2,B,R),(s2,1,s2,1,R),(s2,,s+3,1,R)(s_0,1,s_1,B,R),(s_1,\ast,s_3,B,R),(s_1,1,s_2,B,R),(s_2,1,s_2,1,R),\\(s_2,\ast,s+3,1,R)
    의 5-tuple 을 사용할 수 있다.

Different Types of Turing Machines

Turing machine의 Capability를 확장할 수 있다.
예시로 각 Step에서 Turing machine이 오른쪽이나 왼쪽으로 이동하거나 이동하지 않을 수 있도록 허용하거나 여러 Tape에서 작동하도록 허용하거나, nn개의 Tape를 사용할 때 (2+3n)(2+3n)-tuple로 Turing machine을 설명할 수 있다.
Turing machine의 Tape를 2차원으로 허용할 수 있으며 이 경우 좌우뿐만 아니라 상하로도 이동할 수 있다.
여러 개의 Tape head가 서로 다른 Cell을 동시에 읽도록 허용할 수 있다.
Turing machine이 Nondeterministic을 허용하여 (State, Tape symbol) Pair가 Turing machine의 5-tuple 중 두개 이상의 첫 번째 Element로 나타날 수 있다.

Turing machine의 Capability를 제한할 수도 있다.
Tape가 한 차원에서만 무한하도록 제한하거나 Tape alphabet을 두 개의 Symbol로만 제한할 수도 있다.

Turing machine은 특정 Turing machine과 그 Input의 Incoding을 제공받았을 때 모든 Turing machine의 계산을 시뮬레이션할 수 있는 단일 Turing machine을 구성하는 것이 가능하며 이를 Universal turing machine이라고 한다.

The Church-Turing Thesis

어떤 문제에 대해 Turing machine이 해결할 수 있다는 것을 명시하는 것을 Church-turing thesis 라고 한다.
Theorem이 아닌 Thesis로 불리는 이유로는 유효한 Algorithm에 의한 해결 가능성 개념이 비공식적이고, 부정확한 반면, Turing machine에 의한 해결 가능성 개념은 공식적이고 정확하기 때문이다.

Computational Complexity, Computability, and Decidability

Turing machine을 사용하여 가장 쉽게 연구할 수 있는 문제는 "yes"나 "no"로 답할 수 있는 Decision problem이다.

Decision problem는 특정 Class의 Proposition이 True인 지 여부를 묻는 Problem이다.

앞에서 다뤘던 Halting problem은 주어진 Input string xx에 대해 Turing machine TT가 정지하는 지 묻는 Decision problem이다.

정보

Theorem

Helting problem은 Unsolvable decision problem이다.
즉, Turing machine TT와 Input string xx의 Incoding이 주어졌을 때 TTxx가 Tape에 쓰여졌을 때 정지하는 지 판단할 수 있는 Turing machine은 존재하지 않는다.

Example of Unsolvable decision problems

  • 두 개의 Context-free grammer가 동일한 String set을 생성하는 지 결정
  • 주어진 Tile set이 겹치지 않게 반복 허용하여 전체 평면을 덮을 수 있는지 결정
  • Hilbert's Tenth Problem
    Integer coefficient를 가진 Polynomial equation에 대한 Integer solution이 존재하는 지 결정

Turing machine으로 계산할 수 있는 Function을 Computable function, 불가능한 Function을 Uncomputable function이라고 한다.

앞에서 다뤘던 P, NP라고 불리는 Problem class에 대해서도 Turing machine의 개념을 사용하여 정확히 정의할 수 있다.
Deterministic turing machine T=(S,I,f,s0)T=(S,I,f,s_0)에서 Transition rule은 S×IS\times I에서 S×I×{R,L}S\times I\times \{R,L\}로의 Partial function ff에 의해 정의된다.
Machine의 Transition rule은 5-tuple (s,x,s,x,d)(s,x,s',x',d) 형태로 표현되며(s, s': State, x, x': Tape symbol, d: Direction), 같은 Pair (s,x)로 시작하는 두 개의 Transition rule은 존재하지 않는다.

Nondeterministic turing machine은 Partial function이 아닌 5-tuple로 구성된 Relation을 사용하여 정의된다.
같은 Pair (s,x)로 시작하는 두 개의 Transition rule이 존재할 수 없는 제한이 사라진다.
즉, 각 (State, Tape symbol) Pair로 시작하는 Transition rule이 여러 개 존재할 수 있다.
따라서 Nondeterministic turing machine은 현재 State와 읽고 있는 Tape symbol의 일부 Pair에 대해 Transition choice가 존재한다.
Nondeterministic turing machine의 작동 각 Step에서 Machine은 현재 State와 Tape symbol Pair로 시작하는 Transition rule 중 하나를 선택한다.
선택할 때 마다 Step을 "Guess"하는 것으로 간주할 수 있다.
Deterministic turing machine과 마찬가지로, Nondeterministic turing machine은 현재 State와 Tape symbol로 시작하는 Transition rule이 정의되지 않았을 때 중지된다.
Nondeterministic turing machine TT가 주어졌을 때, String xxTT에 의해 인식된다고 말하는 것은 TT의 Transition sequence가 Final state로 끝나는 경우 Machine이 xx가 Tape에 적혀 있는 Inital position에서 시작할 때만 가능하다.
Nondeterministic turing machine TT가 주어질 때 String xxTT에 의해 Recognized된다고 말하는 것은 TT의 Transition sequence가 Final state로 끝나는 경우 Machine이 xx가 Tape에 적혀 있는 Initial position에서 시작할 때만 가능하다.
Nondeterministic turing machine TTxxTT로 Recognized set AAxAx\in A이다.

Decision problem은 Input의 크기에 따라 Polynomial time 안에 Deterministic turing machine에 의해 Solvable이라면 Class P이다.
즉, Decision problem은 특정한 Decision problem을 해결하는 Deterministic turing machine TT와 모든 Integer nn에 대해 TTnn 길이의 String이 입력되었을 때 p(n)p(n)인 Polynomial이 존재한다면 P에 속한다.

Decision problem이 Class NP에 속하는 것은 Nondeterministic turing machine에 의해 Input 크기에 따라 Polynomial time 안에 해결할 수 있을 때이다.
즉, Decision problem은 문제를 해결하는 Nondeterministic problem TT와 모든 Integer nn에 대해 TTnn 길이의 String이 입력되었을 때 Polynomial p(n)p(n)가 존재한다면 NP에 속한다.

모든 Deterministic turing machine은 각 (State, Tape symbol) Pair가 Machine을 정의하는 단 하나의 Transition rule 내에서 발생하는 Nondeterministic turing machine으로 간주될 수 있으므로 PNPP\subseteq NP이다.