decidablity
애초에 답이 없는 문제를 풀기 위해 뻘짓을 하는 것만큼 낭비되는 일은 없다.
decidable
decider가 존재하는 language
decider: loop없이 accept, reject로 결과를 내놓는 TM
(계산이론 18 참고)
language가 decidable하다는 것은 problem이 decidable한 것을 보이는 것과 마찬가지이다.
다음은 deciable한 language(problem)의 예시이다.
A_DFA
$A_{DFA}$: 어떤 DFA(D)와 string(w)가 주어졌을 때, 이 DFA가 w를 accept할 지 판정하는 문제
$A_{DFA}$ = {<D, w> | D is DFA that accepts input string w}
인코딩된 문자열이 주어졌을 때
<D, w> = <$Q$, $\sum$, $\delta$, $q_0$, $F$, w>
- TM 내부에서 w가 주어졌을 때 D를 시뮬레이션 한다
내부 state, 현재 input char 등을 tape에 가록해가며 하면 된다. - 만약 D가 accept하면 TM도 accept, reject하면 reject한다
이떄, DFA는 accept, reject밖에 없으므로, TM은 decider이다
따라서, $A_{DFA}$는 decider가 존재하므로, decidable이다.
A_NFA
$A_{NFA}$: 어떤 NFA(N)와 string(w)가 주어졌을 때, 이 NFA가 w를 accept할 지 판정하는 문제
$A_{NFA}$ = {<N, w> | N is NFA that accepts input string w}
인코딩된 문자열이 주어졌을 때
<N, w> = <$Q$, $\sum_{\epsilon}$, $\delta$, $q_0$, $F$, w>
- NFA N을 DFA D로 변환한다 ([[계산이론 정리 5]]참고)
- TM 내부에서 w가 주어졌을 때 D를 시뮬레이션 한다
내부 state, 현재 input char 등을 tape에 가록해가며 하면 된다. - 만약 D가 accept하면 TM도 accept, reject하면 reject한다
이떄, DFA는 accept, reject밖에 없으므로, TM은 decider이다
따라서, $A_{NFA}$는 decider가 존재하므로, decidable이다.
empty language test
DFA가 나타내는 language가 비어있음
$E_{DFA}$ = {<A> | A is a DFA and L(A) = ∅}
accept state가 없거나, accept state로 도달하지 못하거나
이건 이전에 connected graph인지 판정하는 TM으로 해결할 수 있다.
start state에 .을 찍고
연결된 state에도 .을 찍는다
만약 어떤 accept state에도 .이 찍히지 않으면 empty set이다.
equivalent language test
두 DFA가 나타내는 language가 같음
$EQ_{DFA}$ = {<A, B> | A and B are DFA and L(A) = L(B)}
이건 $(L(A)-L(B))\cup (L(B)-L(A)) = \emptyset$으로 판정한다
$\iff (L(A)\cap \overline{L(B)})\cup(\overline{L(A)}\cap L(B))$
$\iff \overline{(\overline{L(A)}\cup {L(B)})}\cup \overline{({L(A)}\cup \overline{L(B)})} = \emptyset$
DFA의 union은 예전에 regular expression할 때 배웠고...
$\bar{A}$는 reject와 accept를 뒤집으면 된다.
따라서 새로운 DFA C = $\overline{(\overline{A}\cup {B})}\cup \overline{({A}\cup \overline{B})}$에 대해 empty language check만 진행하면 된다.
A_CFG
$A_{CFG}$: 어떤 CFG와 string(w)가 주어졌을 때, 이 CFG가 w를 generate할 지 판정하는 문제
accept할 땐 유한번 연산 후 판정 가능
그러나, reject일떈 어떻게???
accept하지 않으면 CFG는 멈추지 않음...
-> 유한번 연산될 수 있음을 보장하는 경계가 있나?
CFG가 chomsky normal form으로 주어진다면 최대 2n-1번의 연산을 하면 w를 generate할 수 있다.
즉, 2n-1번의 단계를 거쳐도 w를 못 만든다면 reject하면 되고,
loop는 없어지게 된다!
그리고, 모든 CFG는 chonsky normal form으로 변형할 수 있으므로,
$A_{CFG}$는 decidable하다.
CFL is decidable
단순히 PDA를 TM으로 바꾸면 PDA의 일부 loop 때문에 곤란할 수도 있다.
따라서 앞에서 보인 A_CFG를 이용해 증명하면 된다.
임의의 CFL A를 받았을 때 그에 대응되는 CFG G가 존재한다.
이떄 A_CFG에서 만든 TM에 <G, w>를 넣어
단, w는 $\sum^{*}$의 임의의 문자열
accept면 accept, reject면 reject라고 한다.
- A_CFG와 CFL is decidable의 차이
- A_CFG: w가 G로 generate될 수 있는가?
- CFL... : w이 CFL이라면 결정 가능한가?
참고) 현재까지의 언어 계층구조
regular ⊆ context-free ⊆ decidable ⊆ turing-recognizable
'CS > 계산이론' 카테고리의 다른 글
| [계산이론](23)[집합의 크기&대각선 논법] (0) | 2026.01.05 |
|---|---|
| [계산이론](22)[undeciablity] (0) | 2026.01.02 |
| [계산이론](20)[TM과 알고리즘] (0) | 2025.12.31 |
| [계산이론](19)[여러가지 TM] (0) | 2025.12.30 |
| [계산이론](18)[Turing Machine] (0) | 2025.12.29 |