Unisquads
로그인
홈
이용약관·개인정보처리방침·콘텐츠정책·© 2026 Unisquads
이용약관·개인정보처리방침·콘텐츠정책
© 2026 Unisquads. All rights reserved.

P (복잡도) (r1)

이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.22 13:32

P (복잡도)

정의

결정론적 튜링 기계로 다항 시간 안에 풀 수 있는 판정 문제의 집합

유형

복잡도 부류

관련 분야

계산 복잡도 이론

이론 컴퓨터 과학

주요 특징

실용적으로 '풀기 쉬운' 문제들의 부류로 간주됨

NP의 부분집합

대표 문제

최단 경로 문제

최소 신장 트리 문제

정렬 문제

상세 정보

형식적 정의

언어 L이 P에 속한다는 것은, 어떤 결정론적 튜링 기계 M과 다항식 p가 존재하여, 모든 입력 x에 대해 M이 x를 최대 p(|x|) 시간 안에 처리하고, x ∈ L일 때만 M이 받아들이는 것이다.

P 대 NP 문제

계산 복잡도 이론의 가장 중요한 미해결 문제 중 하나로, P와 NP가 같은지(P = NP) 다른지(P ≠ NP)를 묻는다.

P-완전

P 내에서 가장 어려운 문제들의 부류. 모든 P 문제를 로그 공간 환산을 통해 이 문제로 환원할 수 있다.

관련 복잡도 부류

NP

EXPTIME

BPP

NC

역사적 의의

1971년 스티븐 쿡과 리처드 카프가 현대적 복잡도 부류 이론의 기초를 마련하면서 명확히 정의되었다.

1. 개요

P는 계산 복잡도 이론에서 가장 기본적이고 중요한 복잡도 부류 중 하나이다. 이 부류는 결정론적 튜링 기계를 사용하여 입력 크기에 대한 다항 시간 안에 답을 '예' 또는 '아니오'로 결정할 수 있는 모든 판정 문제들의 집합으로 정의된다.

간단히 말해, P는 컴퓨터로 현실적인 시간 내에 해결 가능한 문제들의 모임을 의미한다. 여기서 '현실적인 시간'이란 문제의 크기 n이 커질 때, 필요한 계산 시간이 n의 다항식(예: n², n³)으로 표현될 수 있는 경우를 말한다. 이는 지수 시간(예: 2ⁿ)과 같은 비현실적인 계산 시간과 대비되는 개념이다.

따라서 P는 이론적으로나 실용적으로 모두 '풀기 쉬운' 문제들의 범주로 널리 인정받는다. 최단 경로 문제, 최소 신장 트리 문제, 그리고 정렬 문제 등이 P에 속하는 대표적인 예시이다. 이들은 알고리즘 설계와 분석의 근간을 이루며, 컴퓨터 과학 전반에 걸쳐 광범위하게 응용된다.

P는 다른 주요 복잡도 부류인 NP (복잡도)와의 관계 속에서 그 중요성이 더욱 부각된다. 모든 P 문제는 NP에도 속하므로, P는 NP의 부분집합이다. 'P 대 NP 문제'는 P와 NP가 같은지 다른지에 대한 근본적인 질문으로, 밀레니엄 문제 중 하나로 꼽힌다.

2. 정의와 의미

P는 계산 복잡도 이론에서 가장 기본적이고 중요한 복잡도 부류 중 하나이다. 이 부류는 결정론적 튜링 기계를 사용하여 다항 시간 안에 답을 '예' 또는 '아니오'로 결정할 수 있는 모든 판정 문제들의 집합으로 정의된다. 다항 시간이란 입력 크기 n에 대해 최대 n의 거듭제곱(예: n, n², n³)에 비례하는 시간 안에 문제를 해결할 수 있음을 의미한다. 이 정의는 계산 문제의 난이도를 분류하는 이론적 기준을 제공한다.

P 부류에 속하는 문제들은 일반적으로 실용적으로 '풀기 쉬운' 또는 '효율적으로 풀 수 있는' 문제로 간주된다. 이는 현실적인 시간 안에 해결책을 찾을 수 있다는 것을 의미하며, 알고리즘 설계의 핵심 목표가 된다. P는 NP (복잡도)라는 더 큰 부류의 부분집합이다. 즉, P에 속하는 모든 문제는 자동으로 NP에도 속하지만, 그 역(NP의 모든 문제가 P에 속한다)은 아직 증명되거나 반증되지 않은 상태로, 이는 유명한 P-NP 문제의 핵심이다.

이 개념의 중요성은 계산 가능성의 한계를 이해하고, 문제의 본질적 어려움을 규명하는 데 있다. 어떤 문제가 P에 속한다는 것이 확인되면, 그 문제는 이론적으로 효율적인 해법이 존재함을 보장한다. 따라서 이론 컴퓨터 과학과 알고리즘 분석에서 P 부류는 효율적 계산의 기준점 역할을 한다.

3. P에 속하는 문제의 예시

P에 속하는 문제는 결정론적 튜링 기계를 사용하여 입력 크기의 다항식 시간 안에 해를 구할 수 있는 판정 문제들이다. 이 부류는 실용적으로 '풀기 쉬운' 문제들의 집합으로 간주되며, 계산 복잡도 이론에서 가장 기본적이고 중요한 복잡도 부류 중 하나이다.

대표적인 P 문제의 예시로는 정렬 문제가 있다. 주어진 숫자나 문자열 리스트를 특정 순서(예: 오름차순)로 배열하는 문제로, 퀵 정렬이나 병합 정렬과 같은 효율적인 알고리즘이 존재하여 입력 크기 n에 대해 O(n log n) 시간 안에 해결할 수 있다. 또한 그래프 이론에서의 최단 경로 문제와 최소 신장 트리 문제도 P에 속한다. 예를 들어, 한 도시에서 다른 도시까지의 최단 거리를 찾는 문제는 다익스트라 알고리즘 등을 통해 다항 시간 안에 해결 가능하다.

이 외에도 두 수의 최대공약수를 구하는 문제(유클리드 알고리즘), 선형 계획법의 특정 형태, 그리고 이분 그래프에서의 매칭 문제 등이 P에 속하는 것으로 알려져 있다. 이러한 문제들은 컴퓨터 과학과 공학, 운영 연구 등 다양한 분야에서 빈번하게 응용된다.

P에 속하는 문제들은 그 해법이 효율적이어서 현실 세계의 대규모 입력에 대해서도 적용 가능하다는 점에서 큰 의미를 가진다. 따라서 어떤 문제가 P에 속한다는 것이 증명되면, 그 문제는 본질적으로 '쉬운' 문제이며 실용적인 알고리즘을 설계할 수 있다는 강력한 신호가 된다.

4. P와 NP의 관계

P는 NP와의 관계 속에서 그 중요성이 더욱 부각된다. P와 NP의 관계는 계산 복잡도 이론의 가장 근본적이고 유명한 난제인 P-NP 문제의 핵심이다. 이 문제는 "P가 NP와 같은가?" 즉, 다항 시간 내에 답을 검증할 수 있는 모든 문제가 다항 시간 내에 풀 수도 있는가 하는 질문이다. 만약 P=NP가 증명된다면, 현재 어렵다고 여겨지는 많은 문제들이 사실은 효율적으로 풀 수 있다는 의미가 되어 컴퓨터 과학과 수학, 그리고 실생활에 엄청난 파장을 일으킬 것이다.

반대로, P≠NP가 증명된다면, 우리가 현재 '어렵다'고 분류하는 많은 문제들은 본질적으로 빠른 알고리즘이 존재하지 않는다는 것이 확인되는 것이다. 현재 학계의 대다수는 P≠NP일 것이라고 믿고 있으며, 이는 NP-완전 문제들이 P에 속하지 않을 것임을 시사한다. NP-완전 문제는 NP 내에서 가장 어려운 문제들의 부류로, 만약 단 하나의 NP-완전 문제라도 P에 속한다면, 모든 NP 문제가 P에 속하게 되어 P=NP가 성립한다. 따라서 NP-완전 문제는 P와 NP의 관계를 연구하는 데 있어 핵심적인 역할을 한다.

P와 NP의 관계를 요약하면 다음과 같다. P는 NP의 부분집합이라는 것이 확실하다. 즉, 다항 시간에 풀 수 있는 문제는 당연히 다항 시간에 답을 검증할 수 있다. 그러나 그 역인 "NP가 P의 부분집합인가"가 바로 해결되지 않은 난제이다. 이 관계는 아래 표와 같이 정리할 수 있다.

관계

설명

현재 상태

P ⊆ NP

모든 P 문제는 NP 문제이다.

증명됨

P = NP ?

모든 NP 문제가 P 문제인지 (즉, NP ⊆ P인지)

미해결 (P-NP 문제)

P ≠ NP ?

P와 NP가 다른 부류인지

미해결 (대부분의 학자들이 이쪽으로 믿음)

이러한 관계 속에서 P의 위치는 '현실적으로 풀 수 있는 문제들의 안전한 영역'으로 자리 잡고 있다. 반면 NP, 특히 NP-완전은 이론적으로만 해결 가능하거나 근사해를 찾아야 하는 문제들의 영역으로 구분된다. 따라서 P와 NP의 경계를 이해하는 것은 어떤 문제를 접근할 때 실용적인 알고리즘을 설계할 수 있는지, 아니면 다른 전략(예: 근사 알고리즘 또는 휴리스틱)을 강구해야 하는지를 판단하는 중요한 기준이 된다.

5. P 문제의 중요성

P 부류는 계산 복잡도 이론에서 실용적으로 '풀기 쉬운' 문제들의 집합으로 간주된다. 이는 다항 시간 알고리즘이 존재하는 문제들을 의미하며, 입력 크기가 커질수록 실행 시간이 비교적 완만하게 증가한다는 점에서 실제 응용에 적합하다. 최단 경로 문제나 정렬 문제와 같은 많은 기본적이면서도 핵심적인 알고리즘 문제들이 P에 속하며, 이는 컴퓨터 과학의 기초를 이루고 있다.

P 부류의 중요성은 NP (복잡도)와의 관계에서 더욱 부각된다. P 대 NP 문제는 컴퓨터 과학의 가장 유명한 미해결 문제 중 하나로, P가 NP와 같은지 다른지를 묻는다. 만약 P와 NP가 같다면, 현재 어렵다고 여겨지는 많은 문제들도 효율적으로 해결할 수 있음을 의미하지만, 대부분의 학자들은 P와 NP가 다르다고 믿고 있다. 이 믿음은 현대 암호학과 같은 분야의 기반이 되기도 한다.

따라서 P는 계산 가능성의 실질적인 경계를 나타내는 기준점 역할을 한다. 어떤 문제가 P에 속한다는 것이 증명되면, 그 문제는 본질적으로 '쉽다'고 판단하여 다양한 소프트웨어 공학 및 시스템 설계에 활용할 수 있다. 반대로, NP-완전 문제들은 P에 속할 가능성이 낮아, 근사 알고리즘이나 휴리스틱 방법을 통해 접근하는 것이 일반적이다.

6. P에 대한 오해와 논란

P가 '풀기 쉬운' 문제들의 부류로 간주되지만, 이는 이론적 관점에서의 해석이며 실제 계산에서의 오해를 불러일으킬 수 있다. 다항 시간 알고리즘이 존재한다는 것은 입력 크기 n에 대해 n의 거듭제곱 형태(예: n^2, n^3)의 시간이 소요됨을 의미한다. 이론적으로는 지수 시간보다 효율적이지만, 차수가 매우 높은 다항 시간 알고리즘(예: n^100)은 실질적으로는 계산이 불가능할 정도로 느릴 수 있다. 따라서 P에 속한다고 해서 항상 실제 세계에서 빠르게 해결될 수 있다는 보장은 없다.

또 다른 주요 논란은 P 대 NP 문제와 깊이 연관되어 있다. 만약 P와 NP가 동일하다면(즉, P=NP), 현재 어렵다고 알려진 많은 NP-완전 문제들이 사실은 다항 시간 내에 풀릴 수 있음을 의미한다. 이는 암호학, 최적화, 인공지능 등 수많은 분야에 혁명적인 영향을 미칠 것이다. 그러나 대부분의 학계는 P≠NP일 것이라고 추측하고 있으며, 이 가설이 참이라면 NP-완전 문제들은 본질적으로 어려운 문제들이라는 결론이 난다. 이 문제는 클레이 수학연구소가 선정한 7대 밀레니엄 문제 중 하나로, 아직 해결되지 않은 상태이다.

P의 정의 자체도 논의의 대상이 된다. P는 결정론적 튜링 기계를 기준으로 하지만, 현대 컴퓨터는 양자 컴퓨터나 확률적 알고리즘과 같은 다른 계산 모델을 탐구하고 있다. 예를 들어, 양자 컴퓨터 이론상 쇼어 알고리즘과 같은 특정 문제에서는 기존의 다항 시간 개념을 넘어서는 성능을 보일 수 있다. 이는 '다항 시간'과 '풀기 쉬움'의 기준이 계산 모델에 따라 달라질 수 있음을 시사하며, P라는 부류가 미래의 계산 패러다임을 완전히 설명할 수 있는지에 대한 질문을 남긴다.

7. 관련 개념

7.1. NP (복잡도)

P는 계산 복잡도 이론에서 가장 기본적이고 중요한 복잡도 부류 중 하나이다. 이 부류는 결정론적 튜링 기계를 사용하여 다항 시간 안에 답을 '예' 또는 '아니오'로 결정할 수 있는 모든 판정 문제들의 집합으로 정의된다. 다항 시간이란 입력 크기 n에 대해 최대 n의 거듭제곱 형태(예: n^2, n^3)의 시간이 걸리는 알고리즘이 존재함을 의미한다.

이러한 정의는 P를 실용적으로 '풀기 쉬운' 문제들의 부류로 만든다. 최단 경로 문제, 최소 신장 트리 문제, 정렬 문제 등 컴퓨터 과학과 일상생활에서 널리 활용되는 많은 문제들이 P에 속한다. 이들은 입력 크기가 커져도 비교적 효율적으로 해결할 수 있어 실제 응용이 가능하다.

P는 다른 중요한 복잡도 부류인 NP (복잡도)와 밀접한 관계를 가진다. 모든 P 문제는 NP에도 속한다. 왜냐하면 다항 시간 안에 답을 구할 수 있다면, 그 답을 다항 시간 안에 검증하는 것은 자명하기 때문이다. 그러나 그 역, 즉 모든 NP 문제가 P에 속하는지(P=NP인지)는 컴퓨터 과학의 가장 유명한 미해결 문제로 남아있다.

P의 연구는 단순히 이론적인 의미를 넘어, 어떤 문제가 실제로 효율적으로 해결 가능한지를 판단하는 기준을 제공한다. 알고리즘 설계와 분석의 근간이 되며, 이론 컴퓨터 과학의 핵심 주제로서 계산 가능성의 한계를 탐구하는 데 중요한 역할을 한다.

7.2. NP-완전

NP-완전은 NP (복잡도)에 속하는 문제들 중 가장 어려운 문제들의 부류를 의미한다. 어떤 문제가 NP-완전이라는 것은 두 가지 조건을 충족함을 뜻한다. 첫째, 그 문제 자체가 NP (복잡도)에 속해야 한다. 둘째, NP에 속하는 모든 다른 문제가 그 문제로 다항 시간 내에 환원될 수 있어야 한다. 이 환원 가능성은 만약 그 NP-완전 문제를 다항 시간 안에 해결할 수 있는 알고리즘이 존재한다면, NP에 속하는 모든 문제도 다항 시간 안에 풀 수 있게 됨을 의미한다.

NP-완전 문제의 대표적인 예로는 충족 가능성 문제(SAT), 외판원 문제, 배낭 문제, 해밀턴 경로 문제 등이 있다. 이들은 이론적으로는 답을 검증하는 것은 쉽지만, 답을 찾아내는 효율적인 일반 해법은 아직 발견되지 않았다. NP-완전 문제 하나를 효율적으로 푸는 방법을 찾는다면, 그것은 NP에 속하는 거의 모든 난제를 해결하는 열쇠가 될 것이다.

대표적인 NP-완전 문제

설명

충족 가능성 문제(SAT)

주어진 불린 식이 참이 되게 할 수 있는지 판정하는 문제.

외판원 문제

모든 도시를 한 번씩만 방문하고 출발점으로 돌아오는 최단 경로를 찾는 문제.

배낭 문제

주어진 무게 제한 안에서 물건들의 가치 합을 최대화하는 문제.

NP-완전 개념의 중요성은 P-NP 문제라는 컴퓨터 과학의 미해결 난제와 깊이 연관되어 있다. P-NP 문제는 P (복잡도)와 NP가 같은지 다른지를 묻는다. 만약 하나의 NP-완전 문제라도 P에 속한다는 것이 증명된다면, 이는 모든 NP 문제가 P에 속함을 의미하게 되어 P=NP라는 결론에 도달한다. 반대로, 하나의 NP-완전 문제가 P에 속하지 않는다는 것이 증명되면 P≠NP가 된다. 현재까지는 이 문제가 해결되지 않은 채로 남아 있으며, 대부분의 학자들은 P≠NP일 것이라고 믿고 있다.

7.3. 다항 시간

다항 시간은 계산 복잡도 이론에서 알고리즘의 효율성을 평가하는 핵심 척도이다. 입력 크기에 대한 다항식 함수로 실행 시간이 표현될 수 있는 알고리즘을 '다항 시간 알고리즘'이라고 부른다. 예를 들어, 실행 시간이 입력 크기 n에 대해 n^2이나 n^3과 같이 표현된다면 이는 다항 시간에 속한다. 이는 실행 시간이 2^n이나 n!과 같이 지수 함수나 계승 함수로 폭발적으로 증가하는 경우와 대비되는 개념으로, 일반적으로 다항 시간 안에 해결 가능한 문제는 '효율적으로 풀 수 있는' 문제로 여겨진다.

복잡도 부류 P는 바로 이러한 다항 시간의 개념을 기반으로 정의된다. 즉, P는 결정론적 튜링 기계를 사용하여 다항 시간 안에 답을 '예' 또는 '아니오'로 결정할 수 있는 모든 판정 문제의 집합이다. 이 정의는 문제를 해결하는 구체적인 방법론보다는 문제 자체의 본질적인 난이도에 초점을 맞춘다. 다항 시간은 상수 차수나 계수에 구애받지 않는 점근적 표기법을 사용하여 정의되므로, 이론적으로는 매우 큰 지수를 가진 다항식도 포함하지만, 실제로는 낮은 차수의 다항식 시간 알고리즘이 존재하는 문제들이 P의 대표적인 예로 꼽힌다.

다항 시간의 중요성은 NP (복잡도)와의 관계에서 더욱 부각된다. P-NP 문제는 '다항 시간 안에 답을 검증할 수 있는 문제(NP)가 과연 다항 시간 안에 해결도 가능한가(P)'라는 근본적인 질문을 던진다. 만약 P와 NP가 같다면, 현재 어렵다고 알려진 수많은 최적화 문제와 NP-완전 문제들도 다항 시간 안에 풀 수 있게 된다는 의미가 되어 컴퓨터 과학의 패러다임을 바꿀 만한 중대한 결과가 될 것이다. 그러나 현재까지는 이 문제가 미해결 상태로 남아 있다.

따라서 다항 시간은 계산 이론의 근간을 이루는 개념으로, 어떤 문제가 다항 시간 알고리즘을 가지는지는 그 문제가 실용적으로 처리 가능한지 여부를 구분하는 중요한 기준이 된다. 정렬 문제, 최단 경로 문제, 최소 신장 트리 문제 등은 대표적인 다항 시간 문제이며, 우리가 일상적으로 사용하는 효율적인 소프트웨어의 대부분은 이러한 다항 시간 알고리즘에 기반하고 있다.

7.4. 결정론적 튜링 기계

P (복잡도) 부류의 정의는 결정론적 튜링 기계라는 계산 모델을 기반으로 한다. 결정론적 튜링 기계는 이론 컴퓨터 과학에서 가장 기본적이고 강력한 계산 모델 중 하나로, 테이프, 헤드, 상태 전이 규칙으로 구성된다. 이 모델에서 '결정론적'이란 특정 입력과 현재 상태가 주어지면 다음 동작이 유일하게 결정된다는 의미이다. 즉, 계산 경로가 단 하나만 존재하여, 기계의 동작이 완전히 예측 가능하다.

P는 이러한 결정론적 튜링 기계를 사용하여 문제를 해결하는 데 걸리는 시간에 따라 정의된다. 구체적으로, 어떤 판정 문제가 P에 속한다는 것은 그 문제를 해결하는 결정론적 튜링 기계 프로그램이 존재하며, 입력 크기 n에 대한 어떤 다항 시간 함수 f(n)에 대해서도 계산 시간이 O(f(n)) 이하라는 것을 의미한다. 이때 계산 시간은 기계의 단계 수로 측정된다. 이 정의는 현실의 컴퓨터가 다항 시간 안에 풀 수 있는 문제들의 집합을 이론적으로 포착하려는 시도이다.

결정론적 튜링 기계는 계산 복잡도 이론의 근간을 이루며, P 외의 다른 복잡도 부류를 정의하는 데도 핵심적인 역할을 한다. 예를 들어, NP (복잡도)는 비결정론적 튜링 기계로 다항 시간 안에 풀 수 있는 문제들의 집합으로 정의된다. 결정론적과 비결정론적 모델 사이의 관계, 특히 P와 NP가 같은지 다른지에 대한 질문은 밀레니엄 문제 중 하나로 남아 있다.

이러한 이론적 정의 덕분에 P는 '풀기 쉬운' 또는 '효율적으로 풀 수 있는' 문제들의 집합으로 널리 인식된다. 최단 경로 문제, 정렬 문제 등 많은 실용적인 알고리즘이 다항 시간 안에 실행되므로 P에 속하며, 이는 계산 이론이 실제 알고리즘 설계와 분석에 어떻게 연결되는지를 보여준다.

8. 여담

P는 계산 복잡도 이론의 핵심적인 개념으로, 이론적으로는 명확히 정의되어 있지만 실용적인 관점에서는 흥미로운 논의를 불러일으킨다. P를 '쉬운 문제'의 부류로 해석하는 것은 일반적이지만, 여기서 '쉬운'의 기준은 점근 표기법에 따른 입력 크기 증가에 따른 시간 증가율에 기반한다. 따라서 다항 시간 알고리즘이 존재하더라도 그 지수가 매우 크거나 상수 인자가 클 경우, 실제로는 계산이 불가능할 정도로 느려질 수 있다. 이는 P에 속하는 문제가 항상 실시간으로 풀릴 수 있음을 보장하지 않는다는 점을 시사한다.

한편, P 대 NP 문제는 컴퓨터 과학의 가장 유명한 미해결 문제 중 하나로, P와 NP (복잡도)가 같은지 다른지를 묻는다. 만약 P=NP가 증명된다면, 암호학의 기반이 흔들리고 최적화 문제를 효율적으로 해결할 수 있는 새로운 시대가 열릴 것이라는 전망이 있다. 반대로 P≠NP가 증명되더라도, NP에 속하는 많은 문제들이 여전히 근사 알고리즘을 통해 실용적으로 다루어지고 있다는 점에서 그 실질적 의미에 대한 논의는 계속된다.

P의 경계는 계산 이론의 발전과 함께 미묘하게 변화해 왔다. 예를 들어, 선형 계획법 문제는 한때 복잡한 문제로 여겨졌으나 카치안 알고리즘의 발견으로 P에 속함이 증명되었다. 이처럼 어떤 문제가 P에 속하는지를 증명하는 것은 새로운 알고리즘의 발견과 직결되며, 이는 이론 컴퓨터 과학의 주요 동력 중 하나이다. 결국 P는 단순한 분류를 넘어, 계산 가능성의 효율적 한계를 탐구하는 지속적인 여정의 출발점이라 할 수 있다.

리비전 정보

버전r1
수정일2026.02.22 13:32
편집자unisquads
편집 요약AI 자동 생성