복잡도 종류
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
복잡도 종류는 계산 문제의 난이도를 시간, 메모리 등의 계산 자원 사용량에 따라 분류하는 개념이다. 계산 문제 유형, 계산 모델, 자원 제약에 따라 정의되며, 튜링 머신을 사용하여 시간 및 공간 복잡도를 측정한다. 주요 복잡도 종류로는 P, NP, PSPACE 등이 있으며, 이들 간의 관계는 포함 관계와 계층 정리를 통해 설명된다. 시간 계층 정리와 공간 계층 정리는 더 많은 자원을 사용하면 더 많은 문제를 해결할 수 있음을 보여주며, 사비치의 정리는 결정적 및 비결정적 공간 복잡도 간의 관계를 밝힌다.
더 읽어볼만한 페이지
| 복잡도 종류 | |
|---|---|
| 복잡도 종류 | |
![]() | |
| 일반 정보 | |
| 분야 | 계산 복잡도 이론 |
| 설명 | 계산 문제의 분류 |
| 기준 | 알고리즘이 문제를 해결하는 데 필요한 자원의 양 |
| 자원 예시 | 시간 (알고리즘 단계 수) 공간 (메모리 사용량) |
| 주요 복잡도 종류 | |
| P (피) | 결정론적 튜링 기계에서 다항 시간 안에 풀 수 있는 문제 |
| NP (엔피) | 비결정론적 튜링 기계에서 다항 시간 안에 풀 수 있는 문제 |
| NP-완전 (엔피-완전) | NP에 속하며, NP의 모든 문제가 다항 시간 안에 이 문제로 환원될 수 있는 문제 |
| NP-난해 (엔피-난해) | NP에 속할 필요는 없지만, NP의 모든 문제가 다항 시간 안에 이 문제로 환원될 수 있는 문제 |
| EXPTIME (익스프타임) | 결정론적 튜링 기계에서 지수 시간 안에 풀 수 있는 문제 |
| undecidable (결정 불가능) | 어떠한 튜링 기계로도 풀 수 없는 문제 |
| 관련 개념 | |
| 환원 | 한 문제를 다른 문제로 변환하는 과정 |
| 완전성 | 특정 복잡도 종류에 속하는 가장 어려운 문제 |
| 계층 | 복잡도 종류들을 포함 관계에 따라 배열한 구조 |
| 참고 문헌 | |
| 참고 문헌 | Computers and Intractability: A Guide to the Theory of NP-Completeness |
2. 배경
계산 복잡도 이론은 튜링 기계와 같은 추상적인 계산 모델을 사용하여 알고리즘의 효율성을 분석한다. 복잡도 종류는 관련된 계산 문제의 집합이며, 시간이나 메모리와 같은 특정 계산 자원에 대해 문제를 해결하는 계산 난이도에 따라 정의된다. 대부분의 복잡도 종류는 제한된 시간 또는 공간 자원을 가진 튜링 기계로 해결할 수 있는 결정 문제로 구성된다. 예를 들어, 복잡도 종류 '''P'''는 결정적 튜링 기계로 다항 시간 내에 해결할 수 있는 결정 문제의 집합이다.
다음 표는 계산 복잡도 이론에서 다루는 여러 문제(또는 문법, 언어) 클래스들을 시각적으로 나타낸 것이다. 여기서 '''X'''가 '''Y'''의 부분 집합이면 '''X'''를 '''Y''' 아래에 실선으로 연결하고, '''X'''가 부분 집합이지만 상위 집합과 같을 가능성도 있으면 점선으로 연결한다. 계산 가능성 이론은 결정 가능 여부를 다루지만, 여기서는 복잡도 클래스 간의 관계를 보여주기 위해 포함되었다.
| colspan=2 | | 결정 문제 | ||||||
|---|---|---|---|---|---|---|---|
| colspan=2 | | ![]() | colspan=2 | | |||||
| 0형 (귀납적 가산) | 결정 불가능 | ||||||
| 결정 가능 | |||||||
| EXPSPACE | |||||||
![]() | |||||||
| EXPTIME | |||||||
| PSPACE | |||||||
| 1형 (문맥 의존) | PSPACE-완전 | ||||||
| Co-NP | NP | ||||||
| BPP | width=10 | | BQP | width=10 | | NP-완전 | |||
| P | |||||||
| colspan=4 | | |||||||
| NC | colspan=4 | | P-완전 | |||||
| 2형 (문맥 자유) | |||||||
| 3형 (정규) | |||||||
2. 1. 계산 문제
계산 문제는 입력에 대한 출력을 계산하는 문제로, 결정 문제, 함수 문제, 계수 문제 등으로 분류된다. 결정 문제는 "예" 또는 "아니오"로 답할 수 있는 문제이며, 계산 복잡도 이론에서 가장 일반적으로 분석되는 유형이다.이론 전산학에서 가장 일반적으로 분석되는 문제는 결정 문제이다. 예를 들어, "자연수 이 소수인가?"는 예-아니오 질문으로 나타낼 수 있으므로 결정 문제의 한 예시이다. 계산 이론 측면에서, 결정 문제는 올바른 알고리즘을 실행하는 컴퓨터가 "예"로 대답할 입력 문자열의 집합으로 나타낸다.
일부 문제는 결정 문제로 쉽게 표현될 수 없지만, 그럼에도 불구하고 광범위한 계산 문제를 포함한다. 특정 복잡도 클래스가 정의되는 문제의 다른 유형은 다음과 같다.
컴퓨터 과학자들이 연구하는 대부분의 복잡도 종류는 결정 문제의 집합이지만, 다른 유형의 문제와 관련하여 정의된 여러 복잡도 종류도 존재한다. 특히, 계수 문제, 함수 문제, 약속 문제로 구성된 복잡도 종류가 있다.
'''계수 문제'''는 결정 문제와 같이 해가 ''존재하는지 여부''뿐만 아니라 해가 ''얼마나 많이'' 존재하는지 묻는 문제이다. 예를 들어, 결정 문제 은 특정 그래프 에 단순 사이클이 ''있는지'' 묻는다(답은 단순한 예/아니오). 이에 해당하는 계수 문제 ("sharp cycle"로 발음)는 에 단순 사이클이 ''얼마나 많이'' 있는지 묻는다. 따라서 계수 문제의 출력은 숫자이다.
계수 문제는 통계적 추정, 통계 물리학, 네트워크 설계, 경제학을 포함한 여러 분야에서 발생한다.
계산 문제는 더 광범위한 문제 부류인 '''함수 문제'''의 하위 집합이다. 함수 문제는 함수 의 값을 계산하는 문제 유형이다. 공식적으로, 함수 문제 는 임의의 알파벳 의 문자열에 대한 관계 로 정의된다.
:
알고리즘은 을 만족하는 가 존재하는 모든 입력 에 대해, 알고리즘이 그러한 중 하나를 생성하면 를 해결한다.
중요한 함수 복잡도 종류 중 하나는 효율적으로 풀 수 있는 함수들의 집합인 '''FP'''이다. 더 구체적으로, '''FP'''는 결정적 튜링 기계로 다항 시간 안에 풀 수 있는 함수 문제들의 집합이다. '''FP'''는 '''P'''의 함수 문제와 동일한 것으로 생각할 수 있다. 중요하게도, '''FP'''는 계산 문제와 '''P''' 대 '''NP''' 모두에 대한 통찰력을 제공한다. 만약 '''#P'''='''FP'''라면, '''NP'''에 속하는 문제에 대한 증명서의 개수를 결정하는 함수는 효율적으로 풀 수 있다. 그리고 증명서의 개수를 계산하는 것은 증명서가 존재하는지 여부를 결정하는 것만큼 어렵기 때문에, 만약 '''#P'''='''FP'''라면 '''P'''='''NP'''가 따라야 한다 (이것이 반대로 성립하는지, 즉 '''P'''='''NP'''가 '''#P'''='''FP'''를 함축하는지는 알려져 있지 않다).
'''FP'''가 '''P'''의 함수 문제와 동일한 것처럼, '''FNP'''는 '''NP'''의 함수 문제와 동일하다. 중요하게도, '''FP'''='''FNP'''는 '''P'''='''NP'''일 때만 성립한다.
'''약속 문제'''는 문제에 대한 입력이 모든 가능한 입력의 특정 하위 집합에서 보장("약속")되는 결정 문제의 일반화이다. 결정 문제 를 기억하면, 에 대한 알고리즘 은 ''모든'' 에 대해 (정확하게) 작동해야 한다. 약속 문제는 입력을 의 일부 하위 집합으로 제한하여 에 대한 입력 요구 사항을 완화한다.
구체적으로, 약속 문제는 다음과 같은 두 개의 교차하지 않는 집합 으로 정의된다.
- 는 허용되는 모든 입력의 집합이다.
- 는 거부되는 모든 입력의 집합이다.
약속 문제 에 대한 알고리즘 의 입력은 이며, 이를 '''약속'''이라고 한다.
약속 문제는 많은 계산 문제에 대해 보다 자연스러운 공식을 만든다. 예를 들어, 계산 문제는 "평면 그래프가 주어지면, 다음과 같은 여부를 결정하십시오..." 와 같을 수 있다. 이것은 종종 모든 문자열 을 평면 그래프로 변환하는 변환 스키마가 있다고 가정하는 결정 문제로 표현된다. 그러나 입력이 평면 그래프가 되도록 약속하는 약속 문제로 정의하는 것이 더 간단하다.
2. 2. 계산 모델
계산 복잡도 이론에서 계산 모델은 "시간"과 "메모리"와 같은 계산 자원의 개념을 명확하게 정의한다. 이를 통해 문제 해결에 필요한 자원을, 실제 컴퓨터의 구성 방식이 아닌 문제 자체의 본질적인 측면에서 다룰 수 있다. 가장 일반적으로 사용되는 계산 모델은 튜링 기계이다.튜링 기계는 일반적인 컴퓨팅 기계의 수학적 모델이다. 무한한 길이의 테이프에 기호(일반적으로 0과 1)를 쓰고 읽는 방식으로 작동하며, 테이프 헤드를 사용하여 한 번에 하나의 기호를 읽고 쓸 수 있다. 작동 방식은 유한한 개수의 기본적인 명령으로 결정된다. 예를 들어, "42번 상태에서 기호가 0이면 1을 쓰고, 기호가 1이면 상태 17로 변경한다. 17번 상태에서 기호가 0이면 1을 쓰고 상태 6으로 변경한다."와 같은 식이다. 처치-튜링 명제에 따르면, 특정 문제를 해결하는 알고리즘이 존재한다면, 그와 동일한 문제를 해결하는 튜링 기계도 존재한다.
튜링 기계는 시간 복잡도와 공간 복잡도의 개념을 정의하는 데 사용된다. 특정 입력에 대한 튜링 기계의 시간 복잡도는 수락 또는 거부 상태에 도달하는 데 걸리는 기본적인 단계의 수이다. 공간 복잡도는 수락 또는 거부 상태에 도달하는 데 사용하는 테이프의 셀 수이다.
튜링 기계에는 결정적 튜링 기계(DTM)와 비결정적 튜링 기계(NTM) 두 가지 종류가 있다. 결정적 튜링 기계(DTM)는 고정된 규칙 집합에 따라 작동하는 반면, 비결정적 튜링 기계(NTM)는 각 단계에서 여러 가능한 행동을 탐색할 수 있다. NTM은 계산 트리로 생각할 수 있는데, 각 단계에서 여러 가능한 계산 경로로 분기된다. 트리의 적어도 하나의 분기가 "수락" 조건으로 정지하면 NTM은 입력을 수락한다. NTM의 시간 복잡도는 NTM이 계산의 어떤 분기에서 사용하는 최대 단계 수이며, 공간 복잡도는 NTM이 계산의 어떤 분기에서 사용하는 최대 셀 수이다.
2. 3. 자원 제약
복잡도 종류는 관련된 계산 문제를 특정 계산 자원에 대한 계산 난이도에 따라 분류한다. 특히 대부분의 복잡도 종류는 제한된 시간 또는 공간 자원을 가진 튜링 기계로 해결할 수 있는 결정 문제로 구성된다. 예를 들어, 복잡도 종류 '''P'''는 결정적 튜링 기계로 다항 시간 내에 해결할 수 있는 결정 문제의 집합이다.계산 문제는 특정 튜링 기계가 수락하는 입력 문자열 집합으로 정의될 수 있다. 튜링 기계는 언어에 있는 모든 입력을 수락하면 해당 언어를 '''인식'''한다고 하며, 해당 언어에 없는 모든 입력을 거부하는 경우 언어를 '''결정'''한다고 한다. 문제를 "해결"하는 튜링 기계는 일반적으로 언어를 결정하는 튜링 기계를 의미한다.
튜링 기계는 "시간"과 "공간"의 개념을 직관적으로 나타낸다. 특정 입력에 대한 TM의 시간 복잡도는 튜링 기계가 수락 또는 거부 상태에 도달하는 데 걸리는 기본적인 단계의 수이다. 공간 복잡도는 수락 또는 거부 상태에 도달하는 데 사용하는 테이프의 셀 수이다.
복잡도 종류는 계산 문제를 자원 요구 사항별로 그룹화한다. 계산 문제는 가장 효율적인 알고리즘이 문제를 해결하는 데 걸리는 최대 자원량에 대한 상한에 따라 구분된다. 복잡도 종류는 입력 크기가 증가함에 따라 특정 계산 문제를 해결하는 데 필요한 자원의 ''증가율''과 관련이 있다. 예를 들어, '''P''' 복잡도 종류의 문제를 해결하는 데 걸리는 시간은 입력 크기가 증가함에 따라 다항식 비율로 증가하는데, 이는 지수 복잡도 종류 '''EXPTIME'''의 문제에 비해 비교적 느리다.
복잡도 이론가들은 일반적으로 문제가 속하는 가장 작은 복잡도 종류를 찾는 데 관심이 있으며, 따라서 ''가장 효율적인'' 알고리즘을 사용하여 계산 문제가 어떤 종류에 속하는지 식별하는 데 관심이 있다.
튜링 기계 모델과 관련한 알고리즘의 시간 복잡도는 튜링 기계가 주어진 입력 크기에 대해 알고리즘을 실행하는 데 걸리는 단계의 수이다. 공식적으로, 튜링 기계 으로 구현된 알고리즘의 시간 복잡도는 함수 으로 정의되며, 여기서 은 이 길이 인 모든 입력에 대해 취하는 최대 단계 수이다.
계산 복잡도 이론에서 이론 컴퓨터 과학자들은 특정 런타임 값보다는 시간 복잡도 함수가 속하는 일반적인 함수 클래스에 더 관심이 있다. 예를 들어, 시간 복잡도 함수가 다항식인가? 로그 함수인가? 지수 함수인가? 아니면 다른 종류의 함수인가?
튜링 기계 모델과 관련하여 알고리즘의 공간 복잡도는 주어진 입력 크기에 대해 알고리즘을 실행하는 데 필요한 튜링 기계의 테이프에 있는 셀의 수이다. 공식적으로 튜링 기계 으로 구현된 알고리즘의 공간 복잡도는 함수 로 정의되며, 여기서 는 길이 인 모든 입력에 대해 이 사용하는 최대 셀 수이다.
3. 복잡도 종류
복잡도 종류는 관련된 계산 문제들의 집합이다. 계산 복잡도 이론에서 다루는 문제(혹은 언어나 문법)의 종류는 아래 표와 같이 정리할 수 있다.
결정적 튜링 기계(DTM)는 비결정적 튜링 기계(NTM)의 변형이다. NTM은 주어진 상태에서 여러 가능한 미래 행동을 탐색하고, 수락하는 분기(수락하는 분기가 있는 경우)를 "선택"할 수 있는 기능을 추가한 일반적인 튜링 기계이다. DTM은 단 하나의 계산 분기만을 따라야 하는 반면, NTM은 각 단계에서 여러 가능한 계산 경로로 분기되는 계산 트리로 생각할 수 있다. 트리의 적어도 하나의 분기가 "수락" 조건으로 정지하면 NTM은 입력을 수락한다.
NTM의 시간 복잡도는 NTM이 계산의 ''어떤'' 분기에서 사용하는 최대 단계 수이며, 공간 복잡도는 NTM이 계산의 어떤 분기에서 사용하는 최대 셀 수이다. DTM은 비결정성의 힘을 사용하지 않는 NTM의 특별한 경우이므로, DTM에 의해 수행될 수 있는 모든 계산은 동등한 NTM에 의해서도 수행될 수 있다. 또한 DTM을 사용하여 모든 NTM을 시뮬레이션하는 것이 가능하다.
다음 표는 계산 복잡도 이론 내에서 다루는 몇 가지 문제(또는 문법, 언어)의 클래스를 시각적으로 표현한 것이다.
| 복잡도 종류 | 설명 |
|---|---|
| #P | NP 문제의 해를 세는 문제[1] |
| #P-완전 | #P 중에서 가장 어려운 문제군[1] |
| AH | 산술적 계층[1] |
| AP | 교대 튜링 머신으로 다항 시간 안에 풀 수 있는 문제의 클래스[1] |
| BPP | 난수 알고리즘으로 다항 시간 안에 풀 수 있는 문제의 클래스 (해는 아마도 옳다)[1] |
| BQP | 양자 컴퓨터로 다항 시간 안에 풀 수 있는 문제의 클래스 (해는 아마도 옳다)[1] |
| Co-NP | 비결정적 기계로 "NO"임을 다항 시간 안에 결정할 수 있는 문제의 클래스[1] |
| Co-NP-완전 | Co-NP 중에서 가장 어려운 문제군[1] |
| DSPACE(f(n)) | 결정적 기계로 공간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| DTIME(f(n)) | 결정적 기계로 시간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| E | 선형 지수의 지수 함수 시간으로 풀 수 있는 문제의 클래스 (밑을 2로 하는 DTIME(2O(n))와 등가)[1] |
| ESPACE | 선형 지수의 지수 함수 영역으로 풀 수 있는 문제의 클래스[1] |
| EXPSPACE | 지수 함수 영역으로 풀 수 있는 문제의 클래스[1] |
| EXPTIME | 지수 함수 시간으로 풀 수 있는 문제의 클래스[1] |
| ELEMENTARY | 지수 계층에 속하는 문제의 클래스 (루프 깊이가 2 이하인 루프 프로그램으로 풀 수 있는 문제의 클래스)[1] |
| IP | 대화형 증명 시스템으로 다항 시간 안에 풀 수 있는 문제의 클래스[1] |
| L | 로그 영역으로 풀 수 있는 문제의 클래스[1] |
| LOGCFL | 문맥 자유 언어로 환원 가능한 로그 영역으로 풀 수 있는 문제의 클래스[1] |
| NC | 병렬 컴퓨터에서 효율적으로 풀 수 있는 문제의 클래스 (O((log n)c))[1] |
| NEXPTIME | 비결정적 기계로 지수 함수 시간으로 풀 수 있는 문제의 클래스[1] |
| NL | 비결정적 튜링 머신으로 로그 영역으로 풀 수 있는 문제의 클래스[1] |
| NP | 비결정적 튜링 머신으로 다항 시간 안에 풀 수 있는 문제의 클래스 (P≠NP 추측도 참조). 해에 대해 다항 길이의 증거(witness)가 존재하고, 해의 후보와 증거가 주어졌을 때 검증이 결정적 튜링 머신으로 다항 시간 안에 풀 수 있는 문제의 클래스와 일치한다.[1] |
| NP-완전 | NP 중에서 가장 어려운 문제의 클래스[1] |
| NP-hard | NP-완전보다 더 어려운 문제의 클래스[1] |
| NSPACE(f(n)) | 비결정적 기계로 공간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| NTIME(f(n)) | 비결정적 기계로 시간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| P | 다항 시간 안에 풀 수 있는 문제의 클래스[1] |
| P-완전 | P 중에서 가장 어려운 문제의 클래스이며, 병렬 컴퓨터로 풀 수 있다.[1] |
| PH | 다항식 계층에 있는 클래스 군의 합집합[1] |
| PP | 확률적으로 다항 시간 안에 풀 수 있는 문제의 클래스 (해가 옳을 가능성이 2분의 1보다 약간 큼)[1] |
| PR | 원시 재귀 함수로 풀 수 있는 문제의 클래스[1] |
| PSPACE | 다항식 영역으로 풀 수 있는 문제의 클래스[1] |
| PSPACE-완전 | PSPACE 중에서 가장 어려운 문제군[1] |
| R | 유한 시간 안에 풀 수 있는 문제의 클래스. 튜링 머신으로 풀 수 있는 모든 문제의 집합이며, 귀납 언어에 해당[1] |
| RE | "YES"이면 정지하고 "NO"이면 정지하지 않는 튜링 머신이 존재하는 문제의 클래스. 귀납적 가산 언어에 해당한다. 해에 대해 증거(witness)가 존재하고, 해의 후보와 증거가 주어졌을 때 검증이 튜링 머신으로 풀 수 있는 문제의 클래스와 일치한다.[1] |
| RP | 난수 알고리즘으로 다항 시간 안에 풀 수 있는 문제의 클래스 (해의 NO인 경우에 옳지 않을 수 있지만, YES인 경우 옳다)[1] |
| UP | 비결정적 튜링 머신으로 다항 시간 안에 풀 수 있는 결정 문제의 클래스 (P와 NP의 중간)[1] |
| ZPP | 난수 알고리즘으로 풀 수 있는 문제의 클래스 (해는 항상 옳지만, 평균적으로 다항 시간이 걸린다)[1] |
각 복잡도 클래스에는 보문제의 집합인 'Co'가 붙은 클래스가 존재한다.[1] 예를 들어, 문제 L이 NP에 포함된다면, 그 보문제는 Co-NP에 속한다.[1]
3. 1. 시간 복잡도 종류
'''P'''는 결정적 튜링 기계로 다항 시간 내에 풀 수 있는 문제의 집합이며, 다음과 같이 정의된다.:
'''P'''는 결정적 컴퓨터로 "빠르게" 또는 "효율적으로" 풀 수 있는 문제의 집합이라고 할 수 있다. '''P'''에 속하는 문제를 푸는 시간 복잡도는 입력 크기에 따라 비교적 천천히 증가하기 때문이다.
'''NP'''는 비결정적 튜링 기계로 다항 시간 안에 풀 수 있는 문제의 집합이며, 다음과 같이 정의된다.
:
'''NP'''는 그 해답이 결정적 튜링 기계로 다항 시간 내에 ''확인 가능''한 문제의 집합으로 정의할 수도 있다. 즉, 어떤 입력 문자열 ''와'' 다항 크기의 증명서 문자열 를 입력으로 받아, 가 해당 문제에 속하면 수락하고 그렇지 않으면 거부하는, 검증자라고 불리는 ''결정적'' 다항 시간 튜링 기계가 존재한다는 것을 의미한다.
'''Co-NP'''는 NP 문제의 여집합 문제, 즉 "아니오"인 경우를 다항 시간 내에 확인할 수 있는 문제의 집합이다.
'''NP-완전'''은 NP에 속하고, NP의 모든 문제를 다항 시간 내에 해당 문제로 환원할 수 있는 문제의 집합이다. (NP-난해 문제 중 NP인 문제)
'''EXPTIME'''은 결정적 튜링 머신으로 지수 시간 안에 해결할 수 있는 문제의 집합이며, 다음과 같이 정의된다.
:
'''NEXPTIME'''은 비결정적 튜링 머신으로 지수 시간 안에 해결할 수 있는 문제의 집합이며, 다음과 같이 정의된다.
:
3. 2. 공간 복잡도 종류
'''L'''(또는 '''LOGSPACE''')은 결정적 튜링 기계에서 로그 공간으로 해결 가능한 문제의 집합이며, '''NL'''(또는 '''NLOGSPACE''')은 비결정적 튜링 기계에서 로그 공간으로 해결 가능한 문제의 집합이다. 공식적으로는 다음과 같이 표현한다.:
:
임이 알려져 있지만, 이 관계들이 실제로 포함관계인지는 아직 밝혀지지 않았다.
'''PSPACE'''와 '''NPSPACE'''는 각각 '''P'''와 '''NP'''의 공간 복잡도에 대응하는 개념이다. '''PSPACE'''는 결정적 튜링 기계로 다항식 공간 안에 풀 수 있는 문제들의 집합이며, '''NPSPACE'''는 비결정적 튜링 기계로 다항식 공간 안에 풀 수 있는 문제들의 집합이다. 공식적으로는 다음과 같다.
:
:
새비치의 정리에 의해 '''PSPACE'''='''NPSPACE'''임이 증명되었다. 또한 임이 알려져 있는데, 이는 튜링 기계가 테이프에 셀을 쓰는 데 1단위 시간이 걸린다고 가정하면, 다항 시간 내에 작동하는 튜링 기계는 다항식 개수의 셀에만 쓸 수 있기 때문이다. '''P'''가 '''PSPACE'''의 진부분집합일 것으로 추측되지만, 아직 증명되지는 않았다.
'''EXPSPACE'''와 '''NEXPSPACE'''는 각각 '''EXPTIME'''과 '''NEXPTIME'''의 공간 복잡도에 대응하는 개념이다. '''EXPSPACE'''는 결정적 튜링 기계로 지수 공간 안에 해결 가능한 문제들의 집합이며, '''NEXPSPACE'''는 비결정적 튜링 기계로 지수 공간 안에 해결 가능한 문제들의 집합이다. 공식적으로는 다음과 같다.
:
:
새비치 정리에 의해 '''EXPSPACE'''='''NEXPSPACE'''이다. 이 종류는 매우 광범위하며, '''PSPACE''', '''NP''', '''P'''의 진부분집합으로 알려져 있고, '''EXPTIME'''의 진부분집합일 것으로 예상된다.
3. 3. 확률적 복잡도 종류
확률적 튜링 기계를 사용하여 정의되는 중요한 복잡도 종류에는 ZPP, RP, co-RP, BPP, PP가 있다. 확률적 튜링 기계는 무작위 동전을 던질 수 있는 튜링 기계의 변형이다. 이러한 종류는 확률적 알고리즘의 복잡성을 더 잘 설명하는 데 도움이 된다.확률적 튜링 기계는 각 단계에서 여러 전이 함수 중 하나를 확률적으로 선택한다는 점을 제외하면 결정적 튜링 기계와 유사하다. 표준 정의에서는 두 개의 전이 함수를 사용하며, 이는 동전 던지기와 유사하게 각 단계에서 어떤 함수를 선택할지 결정한다. 계산 단계마다 무작위성이 도입되므로 오류가 발생할 수 있다. 즉, 튜링 기계가 받아들여야 하는 문자열이 거부되거나, 거부해야 하는 문자열이 받아들여질 수 있다. 따라서 확률적 튜링 기계를 기반으로 하는 복잡도 종류는 허용되는 오류의 양()을 중심으로 정의된다. 확률적 튜링 기계 이 언어 을 오류 확률 으로 인식한다는 것은 다음을 의미한다.
# 에 있는 문자열 에 대해,
# 에 없는 문자열 에 대해,
- '''ZPP''' (Zero-error Probabilistic Polynomial time): 오류 확률이 0인 확률적 튜링 머신으로 다항 시간에 풀 수 있는 문제의 집합이다. 어떠한 오류도 허용하지 않으므로 가장 엄격한 확률적 문제 클래스이다.
- '''RP''' (Randomized Polynomial time): 언어에 속하지 않는 문자열에 대해서는 오류가 없지만, 언어에 속하는 문자열에 대해서는 제한된 오류를 허용하는 문제의 집합이다. 문자열이 언어에 속하지 않으면 항상 거부하고, 속하면 최소 1/2의 확률로 허용하는 확률적 다항 시간 튜링 머신 이 존재한다.
- '''co-RP''': RP와 반대로, 언어에 속하는 문자열에 대해서는 오류가 없지만, 속하지 않는 문자열에 대해서는 오류를 허용한다.
'''RP'''와 '''co-RP'''는 일방적 오류를 가진 확률적 튜링 머신으로 해결 가능한 모든 문제를 포함한다.
- '''BPP''' (Bounded-error Probabilistic Polynomial time): 양방향 오류를 허용하며, 오류 확률이 1/3 미만인 확률적 튜링 머신으로 다항 시간에 해결 가능한 문제의 집합이다. '''BPP'''는 실제 컴퓨터에서 빠르게 실행 가능한 효율적인 랜덤화된 알고리즘을 가진다는 점에서 실용적인 관련성이 높다. '''P=BPP'''인지 여부는 컴퓨터 과학의 중요한 미해결 문제이며, 만약 참이라면 무작위성이 컴퓨터의 계산 능력을 증가시키지 않는다는 것을 의미한다.
- '''PP''' (Probabilistic Polynomial time): 모든 문자열에 대해 1/2 미만의 오류 확률로 다항 시간 내에 확률적 튜링 머신으로 해결 가능한 언어의 집합이다.
'''ZPP''', '''RP''', '''co-RP'''는 모두 '''BPP'''의 부분집합이며, '''BPP'''는 '''PP'''의 부분집합이다. '''ZPP'''는 '''RP'''와 '''co-RP''' 모두에 속하는 문제로 구성된다 (). 이는 '''RP'''와 '''co-RP'''가 일방적 오류만 허용하기 때문이다.
양자 정보 과학에서 중요한 '''BQP'''와 '''QMA''' 클래스는 양자 튜링 기계를 사용하여 정의된다.
3. 4. 기타 복잡도 종류
#P는 NP 문제의 해를 세는 문제의 집합이다. IP는 대화형 증명 시스템으로 다항 시간 안에 풀 수 있는 문제의 집합이다. NC는 병렬 컴퓨터에서 효율적으로 해결할 수 있는 문제의 집합이다.다음은 기타 복잡도 종류를 나열한 것이다.
| 복잡도 종류 | 설명 |
|---|---|
| #P | NP 문제의 해를 세는 문제[1] |
| #P-완전 | #P 중에서 가장 어려운 문제군[1] |
| AH | 산술적 계층[1] |
| AP | 교대 튜링 머신으로 다항 시간 안에 풀 수 있는 문제의 클래스[1] |
| BPP | 난수 알고리즘으로 다항 시간 안에 풀 수 있는 문제의 클래스 (해는 아마도 옳다)[1] |
| BQP | 양자 컴퓨터로 다항 시간 안에 풀 수 있는 문제의 클래스 (해는 아마도 옳다)[1] |
| Co-NP | 비결정적 기계로 "NO"임을 다항 시간 안에 결정할 수 있는 문제의 클래스[1] |
| Co-NP-완전 | Co-NP 중에서 가장 어려운 문제군[1] |
| DSPACE(f(n)) | 결정적 기계로 공간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| DTIME(f(n)) | 결정적 기계로 시간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| E | 선형 지수의 지수 함수 시간으로 풀 수 있는 문제의 클래스 (밑을 2로 하는 DTIME(2O(n))와 등가)[1] |
| ESPACE | 선형 지수의 지수 함수 영역으로 풀 수 있는 문제의 클래스[1] |
| EXPSPACE | 지수 함수 영역으로 풀 수 있는 문제의 클래스[1] |
| EXPTIME | 지수 함수 시간으로 풀 수 있는 문제의 클래스[1] |
| ELEMENTARY | 지수 계층에 속하는 문제의 클래스 (루프 깊이가 2 이하인 루프 프로그램으로 풀 수 있는 문제의 클래스)[1] |
| IP | 대화형 증명 시스템으로 다항 시간 안에 풀 수 있는 문제의 클래스[1] |
| L | 로그 영역으로 풀 수 있는 문제의 클래스[1] |
| LOGCFL | 문맥 자유 언어로 환원 가능한 로그 영역으로 풀 수 있는 문제의 클래스[1] |
| NC | 병렬 컴퓨터에서 효율적으로 풀 수 있는 문제의 클래스 (O((log n)c))[1] |
| NEXPTIME | 비결정적 기계로 지수 함수 시간으로 풀 수 있는 문제의 클래스[1] |
| NL | 비결정적 튜링 머신으로 로그 영역으로 풀 수 있는 문제의 클래스[1] |
| NP | 비결정적 튜링 머신으로 다항 시간 안에 풀 수 있는 문제의 클래스 (P≠NP 추측도 참조). 해에 대해 다항 길이의 증거(witness)가 존재하고, 해의 후보와 증거가 주어졌을 때 검증이 결정적 튜링 머신으로 다항 시간 안에 풀 수 있는 문제의 클래스와 일치한다.[1] |
| NP-완전 | NP 중에서 가장 어려운 문제의 클래스[1] |
| NP-hard | NP-완전보다 더 어려운 문제의 클래스[1] |
| NSPACE(f(n)) | 비결정적 기계로 공간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| NTIME(f(n)) | 비결정적 기계로 시간 복잡도 O(f(n))로 풀 수 있는 문제의 클래스[1] |
| P | 다항 시간 안에 풀 수 있는 문제의 클래스[1] |
| P-완전 | P 중에서 가장 어려운 문제의 클래스이며, 병렬 컴퓨터로 풀 수 있다.[1] |
| PH | 다항식 계층에 있는 클래스 군의 합집합[1] |
| PP | 확률적으로 다항 시간 안에 풀 수 있는 문제의 클래스 (해가 옳을 가능성이 2분의 1보다 약간 큼)[1] |
| PR | 원시 재귀 함수로 풀 수 있는 문제의 클래스[1] |
| PSPACE | 다항식 영역으로 풀 수 있는 문제의 클래스[1] |
| PSPACE-완전 | PSPACE 중에서 가장 어려운 문제군[1] |
| R | 유한 시간 안에 풀 수 있는 문제의 클래스. 튜링 머신으로 풀 수 있는 모든 문제의 집합이며, 귀납 언어에 해당[1] |
| RE | "YES"이면 정지하고 "NO"이면 정지하지 않는 튜링 머신이 존재하는 문제의 클래스. 귀납적 가산 언어에 해당한다. 해에 대해 증거(witness)가 존재하고, 해의 후보와 증거가 주어졌을 때 검증이 튜링 머신으로 풀 수 있는 문제의 클래스와 일치한다.[1] |
| RP | 난수 알고리즘으로 다항 시간 안에 풀 수 있는 문제의 클래스 (해의 NO인 경우에 옳지 않을 수 있지만, YES인 경우 옳다)[1] |
| UP | 비결정적 튜링 머신으로 다항 시간 안에 풀 수 있는 결정 문제의 클래스 (P와 NP의 중간)[1] |
| ZPP | 난수 알고리즘으로 풀 수 있는 문제의 클래스 (해는 항상 옳지만, 평균적으로 다항 시간이 걸린다)[1] |
각 복잡도 클래스에는 보문제의 집합인 'Co'가 붙은 클래스가 존재한다.[1] 예를 들어, 문제 L이 NP에 포함된다면, 그 보문제는 Co-NP에 속한다.[1]
4. 복잡도 종류 사이의 관계
복잡도 이론에서 다루는 문제(혹은 언어나 문법)의 종류는 아래 표와 같이 정리할 수 있다. 어떤 복잡도 종류 '''X'''가 '''Y'''의 진부분집합이면, '''X'''는 '''Y''' 아래에 검은 실선으로 연결했다. 만약 '''X'''가 '''Y'''의 부분집합이지만 두 집합이 같은지 아닌지 아직 알려지지 않았으면, 점선으로 연결했다.
엄밀하게 말하면, 풀 수 있는 문제와 풀 수 없는 문제를 구분하는 것은 계산 복잡도 이론이 아니라 계산 가능성 이론에 속하지만, 전체적인 관계를 설명하기 위해 아래 표에 포함시켰다.
| colspan="2" | | 판정 문제 | ||||||
|---|---|---|---|---|---|---|---|
| colspan="2" | | ]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]] | -- | |||||
| Type 0 (재귀 열거) | 판정 불가능 | ||||||
| -- | |||||||
| 판정 가능 | |||||||
| -- | |||||||
| EXPSPACE | |||||||
| --|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]]|]] | |||||||
| EXPTIME | |||||||
| -- | |||||||
| PSPACE | |||||||
| -- | -- | -- | -- | -- | -- | ||
| Type 1 (문맥민감) | -- | -- | -- | -- | PSPACE-완전 | ||
| -- | -- | -- | -- | -- | |||
| -- | -- | co-NP | -- | -- | NP | ||
| -- | -- | -- | -- | -- | -- | ||
| -- | -- | -- | BPP | width="10" | | BQP | width="10" | | NP-완전 |
| -- | -- | -- | -- | -- | |||
| -- | -- | P | |||||
| -- | -- | -- | colspan="4" | | -- | |||
| -- | NC | colspan="4" | | P-완전 | ||||
| -- | -- | ||||||
| Type 2 (문맥 자유) | |||||||
| -- | |||||||
| Type 3 (정규) | |||||||
복잡도 종류는 다양한 폐포 속성을 가진다. 예를 들어, 결정 종류는 부정, 논리합, 논리곱 또는 모든 불 연산에 대해 닫혀 있을 수 있다. 또한 다양한 양화 방식에 대해서도 닫혀 있을 수 있다. 예를 들어, '''P'''는 모든 불 연산과 다항식 크기 도메인에 대한 양화에 대해 닫혀 있다. 폐포 속성은 종류를 분리하는 데 유용할 수 있다. 두 복잡도 종류를 분리하는 한 가지 방법은 한 종류에는 있지만 다른 종류에는 없는 특정 폐포 속성을 찾는 것이다.
부정에 대해 닫혀 있지 않은 각 종류 '''X'''는 보완 종류 '''co-X'''를 갖는다. 이는 '''X'''에 포함된 언어의 보완 언어로 구성된다(즉, ). 예를 들어, '''co-NP'''는 중요한 보완 복잡도 종류 중 하나이며, '''co-NP'''='''NP'''인지에 대한 미해결 문제의 중심에 있다.
4. 1. 포함 관계
복잡도 종류 P, NP, PSPACE, EXPTIME, NEXPTIME, EXPSPACE의 포함 관계는 다음과 같다.'''P ⊆ NP ⊆ PSPACE ⊆ EXPTIME ⊆ NEXPTIME ⊆ EXPSPACE'''
- P는 NP의 부분집합이다. (P ⊆ NP)
- NP는 PSPACE의 부분집합이다. (NP ⊆ PSPACE)
- PSPACE는 EXPTIME의 부분집합이다. (PSPACE ⊆ EXPTIME)
- EXPTIME은 NEXPTIME의 부분집합이다. (EXPTIME ⊆ NEXPTIME)
- NEXPTIME은 EXPSPACE의 부분집합이다. (NEXPTIME ⊆ EXPSPACE)
NP와 co-NP의 관계는 아직 밝혀지지 않았지만, 같지 않을 것으로 추정된다.
위의 내용은 계산 복잡도 이론에서 다루는 내용이다. 계산 가능성 이론에서는 풀 수 있는 문제와 풀 수 없는 문제를 구분하며, 전체적인 관계를 설명하기 위해 위에 포함되었다.
4. 2. 계층 정리
시간 계층 정리와 공간 계층 정리는 더 많은 시간이나 공간을 허용하면 더 많은 문제를 해결할 수 있음을 보여준다.시간 계층 정리에 따르면 다음과 같다.
:
공간 계층 정리에 따르면 다음과 같다.
:
시간 및 공간 계층 정리는 복잡도 종류의 대부분의 분리 결과의 기초를 형성한다. 예를 들어, 시간 계층 정리는 P가 EXPTIME에 엄격하게 포함됨을 입증하고, 공간 계층 정리는 L이 PSPACE에 엄격하게 포함됨을 입증한다.
4. 3. 새비치의 정리
새비치의 정리는 결정적 공간 자원과 비결정적 공간 자원 간의 관계를 정립한다. 이는 비결정적 튜링 기계가 공간을 사용하여 문제를 해결할 수 있다면, 결정적 튜링 기계는 동일한 문제를 공간, 즉 공간의 제곱으로 해결할 수 있음을 보여준다. 공식적으로, 새비치의 정리는 모든 에 대해 다음과 같다.:
새비치의 정리의 중요한 결과는 '''PSPACE''' = '''NPSPACE''' (다항식의 제곱은 여전히 다항식이므로) 및 '''EXPSPACE''' = '''NEXPSPACE''' (지수 함수의 제곱은 여전히 지수 함수이므로)이다.
이러한 관계는 결정성에 비해 비결정성의 힘에 대한 근본적인 질문에 답한다. 구체적으로, 새비치의 정리는 비결정적 튜링 기계가 다항식 공간에서 해결할 수 있는 모든 문제는 결정적 튜링 기계도 다항식 공간에서 해결할 수 있음을 보여준다. 마찬가지로, 비결정적 튜링 기계가 지수 공간에서 해결할 수 있는 모든 문제는 결정적 튜링 기계도 지수 공간에서 해결할 수 있다.
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com


