알고리즘
여태까지 TM을 배웠는데 이제 실생활과 관련지어 생각해보겠다.
(TM) -> (high-level TM) -> (algorithm) -> (program) = (computer)
힐베르트의 10번째 문제
임의의 다항식에 대해 정수근을 가지는지 판정하는 알고리즘은 무엇인가?
(단, 유한번의 연산으로 판정할 수 있어야 됨)
즉, 이 문제는 다항식 정수근 판별 문제가 decidable한지 묻고 있다...
- recognizer
일단 decider보다 더 간단한 recognizer를 만들어보자...- 임의의 input에 대해 다항식의 문법을 지키는지 검수
- 만약 문법이 옳다면 0, 1, -1, 2, -2, ... 를 순서대로 넣어보며 정수근 찾기
-> 만약 정수근이 없다면? 안 멈추고 계속 loop - decider
아까 recognizer를 만들었을 때,
만약 어디까지 넣으면 된다는 범위가 있다면
정수근이 없을 떄 범위까지 넣고 reject할 것이다
변수가 1개인 다항식은 $\pm k \frac{c_{max}}{c1}$로 경계가 있다!
k = 항의 개수, cmax = 절댓값이 가장 큰 계수, c1 = 최고차항의 계수
그러나, Matijasevic’s theorem는 다변수 다항식에선 그런 범위가 없다는 걸 보여준다
-> 따라서 다변수 다항식에선 decider를 만들 수 없음
--> 힐베르트의 문제를 풀 수 없다... (알고리즘이 존재하지 않기 때문)
알고리즘
어떤 작업을 수행하기 위한 간단한 명령어의 모음
알고리즘 -> TM의 단계
- high-level discription: 글로 알고리즘 묘사
- implementation description: 다 완전히 나타내진 않고, head, tape 움직임 등 TM의 중요사항만 묘사
- formal description: TM의 모든 세부사항 기술
이떄, 알고리즘은 string 말고도 다양한 것을 input으로 받을 수 있다 (object)
따라서 TM으로 나타내기 위해선 적절한 encoding이 필요하다
이때 인코딩된 object를 <A> 이렇게 표시하겠다.
- 예) A가 connected & undirected graph로 이루어진 language라 하자.
A를 recognize하는 TM을 만들 수 있는가?? (자료구조 25 참고)- 알고리즘 수준
- 임의의 노드를 선택해 .을 찍는다
- 이미 mark(.)된 노드와 붙어있는 노드도 .을 찍는다
- 새로운 노드가 mark(.)되지 않을 때까지 2를 반복한다
- 모든 노드를 스캔해 .이 찍히지 않은 노드가 1개라도 있다면 reject, 모두 .이라면 accept

- 응용 수준
- 그래프G를 TM이 계산할 수 있게 string으로 인코딩<G>이 적절히 되었나 체크
<G> = (1,2,3,4)((1,2),(2,3),(3,1),(1,4))
(1,2,3,4)는 전부 다른 10진수인가? (이걸 노드 집합 V로 둔다)
(1,2)는 V^2에 있는 원소인가? - stage 1: TM은 1번째 노드에 .을 찍는다
- stage 2: 노드 목록 V에서 점이 찍히지 않은 노드를 찾아 _를 긋고, 점이 찍힌 노드에도 _을 긋는다.
- stage 3: (1,2),(2,3),(3,1),(1,4)에서 _이 그어진 노드 사이에 간선이 있는지 찾고
만약 있다면, _에 모두 .을 찍고 해당 간선은 X표하고 _을 모두 제거 후 stage 2로 돌아감
만약 없다면 다음 노드에 _이동 - 만약 더 이상 간선이 없는데 모든 V의 원소에 .이 찍히지 않았다면,
unconnected graph이다.
- 그래프G를 TM이 계산할 수 있게 string으로 인코딩<G>이 적절히 되었나 체크
- TM 수준
개복잡해서 생략함...
- 알고리즘 수준
반응형
'CS > 계산이론' 카테고리의 다른 글
| [계산이론](22)[undeciablity] (0) | 2026.01.02 |
|---|---|
| [계산이론](21)[decidablity] (0) | 2026.01.01 |
| [계산이론](19)[여러가지 TM] (0) | 2025.12.30 |
| [계산이론](18)[Turing Machine] (0) | 2025.12.29 |
| [계산이론](17)[pumping lemma of CFL을 이용한 non-CFL 증명] (0) | 2025.10.21 |